Boost logo

Boost-Commit :

From: eric_at_[hidden]
Date: 2008-08-05 01:44:01


Author: eric_niebler
Date: 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
New Revision: 47983
URL: http://svn.boost.org/trac/boost/changeset/47983

Log:
merged from trunk
Added:
   branches/proto/v4/boost/spirit/home/support/detail/lexer/
      - copied from r47973, /trunk/boost/spirit/home/support/detail/lexer/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/char_traits.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/char_traits.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/consts.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/consts.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/containers/
      - copied from r47973, /trunk/boost/spirit/home/support/detail/lexer/containers/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/conversion/
      - copied from r47973, /trunk/boost/spirit/home/support/detail/lexer/conversion/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/conversion/char_state_machine.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/conversion/char_state_machine.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/debug.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/debug.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/file_input.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/file_input.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/generate_cpp.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/generate_cpp.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/generator.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/generator.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/input.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/input.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/
      - copied from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/parser.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/parser.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tokeniser/
      - copied from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tokeniser/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/
      - copied from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/node.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/partition/
      - copied from r47973, /trunk/boost/spirit/home/support/detail/lexer/partition/
   branches/proto/v4/boost/spirit/home/support/detail/lexer/partition/charset.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/partition/charset.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/partition/equivset.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/partition/equivset.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/rules.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/rules.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/runtime_error.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/runtime_error.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/serialise.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/serialise.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/size_t.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/size_t.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/state_machine.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/state_machine.hpp
   branches/proto/v4/boost/spirit/home/support/detail/lexer/string_token.hpp
      - copied unchanged from r47973, /trunk/boost/spirit/home/support/detail/lexer/string_token.hpp
   branches/proto/v4/libs/asio/doc/index.xml
      - copied unchanged from r47973, /trunk/libs/asio/doc/index.xml
   branches/proto/v4/libs/asio/doc/overview/
      - copied from r47973, /trunk/libs/asio/doc/overview/
   branches/proto/v4/libs/asio/doc/overview.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview.qbk
   branches/proto/v4/libs/asio/doc/overview/allocation.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/allocation.qbk
   branches/proto/v4/libs/asio/doc/overview/async.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/async.qbk
   branches/proto/v4/libs/asio/doc/overview/async_op1.dot
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/async_op1.dot
   branches/proto/v4/libs/asio/doc/overview/async_op1.png
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/async_op1.png
   branches/proto/v4/libs/asio/doc/overview/async_op2.dot
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/async_op2.dot
   branches/proto/v4/libs/asio/doc/overview/async_op2.png
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/async_op2.png
   branches/proto/v4/libs/asio/doc/overview/basics.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/basics.qbk
   branches/proto/v4/libs/asio/doc/overview/bsd_sockets.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/bsd_sockets.qbk
   branches/proto/v4/libs/asio/doc/overview/buffers.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/buffers.qbk
   branches/proto/v4/libs/asio/doc/overview/implementation.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/implementation.qbk
   branches/proto/v4/libs/asio/doc/overview/iostreams.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/iostreams.qbk
   branches/proto/v4/libs/asio/doc/overview/line_based.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/line_based.qbk
   branches/proto/v4/libs/asio/doc/overview/posix.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/posix.qbk
   branches/proto/v4/libs/asio/doc/overview/proactor.dot
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/proactor.dot
   branches/proto/v4/libs/asio/doc/overview/proactor.png
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/proactor.png
   branches/proto/v4/libs/asio/doc/overview/protocols.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/protocols.qbk
   branches/proto/v4/libs/asio/doc/overview/rationale.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/rationale.qbk
   branches/proto/v4/libs/asio/doc/overview/reactor.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/reactor.qbk
   branches/proto/v4/libs/asio/doc/overview/serial_ports.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/serial_ports.qbk
   branches/proto/v4/libs/asio/doc/overview/ssl.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/ssl.qbk
   branches/proto/v4/libs/asio/doc/overview/strands.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/strands.qbk
   branches/proto/v4/libs/asio/doc/overview/streams.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/streams.qbk
   branches/proto/v4/libs/asio/doc/overview/sync_op.dot
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/sync_op.dot
   branches/proto/v4/libs/asio/doc/overview/sync_op.png
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/sync_op.png
   branches/proto/v4/libs/asio/doc/overview/threads.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/threads.qbk
   branches/proto/v4/libs/asio/doc/overview/timers.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/timers.qbk
   branches/proto/v4/libs/asio/doc/overview/windows.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/overview/windows.qbk
   branches/proto/v4/libs/asio/doc/requirements/AsyncRandomAccessReadDevice.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/requirements/AsyncRandomAccessReadDevice.qbk
   branches/proto/v4/libs/asio/doc/requirements/AsyncRandomAccessWriteDevice.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/requirements/AsyncRandomAccessWriteDevice.qbk
   branches/proto/v4/libs/asio/doc/requirements/GettableSerialPortOption.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/requirements/GettableSerialPortOption.qbk
   branches/proto/v4/libs/asio/doc/requirements/RandomAccessHandleService.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/requirements/RandomAccessHandleService.qbk
   branches/proto/v4/libs/asio/doc/requirements/RawSocketService.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/requirements/RawSocketService.qbk
   branches/proto/v4/libs/asio/doc/requirements/SerialPortService.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/requirements/SerialPortService.qbk
   branches/proto/v4/libs/asio/doc/requirements/SettableSerialPortOption.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/requirements/SettableSerialPortOption.qbk
   branches/proto/v4/libs/asio/doc/requirements/SyncRandomAccessReadDevice.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/requirements/SyncRandomAccessReadDevice.qbk
   branches/proto/v4/libs/asio/doc/requirements/SyncRandomAccessWriteDevice.qbk
      - copied unchanged from r47973, /trunk/libs/asio/doc/requirements/SyncRandomAccessWriteDevice.qbk
   branches/proto/v4/libs/asio/example/local/
      - copied from r47973, /trunk/libs/asio/example/local/
   branches/proto/v4/libs/asio/example/local/Jamfile
      - copied unchanged from r47973, /trunk/libs/asio/example/local/Jamfile
   branches/proto/v4/libs/asio/example/local/Jamfile.v2
      - copied unchanged from r47973, /trunk/libs/asio/example/local/Jamfile.v2
   branches/proto/v4/libs/asio/example/local/connect_pair.cpp
      - copied unchanged from r47973, /trunk/libs/asio/example/local/connect_pair.cpp
   branches/proto/v4/libs/asio/example/local/stream_client.cpp
      - copied unchanged from r47973, /trunk/libs/asio/example/local/stream_client.cpp
   branches/proto/v4/libs/asio/example/local/stream_server.cpp
      - copied unchanged from r47973, /trunk/libs/asio/example/local/stream_server.cpp
   branches/proto/v4/libs/asio/test/buffers_iterator.cpp
      - copied unchanged from r46442, /trunk/libs/asio/test/buffers_iterator.cpp
   branches/proto/v4/libs/asio/test/windows/basic_random_access_handle.cpp
      - copied unchanged from r46442, /trunk/libs/asio/test/windows/basic_random_access_handle.cpp
   branches/proto/v4/libs/asio/test/windows/random_access_handle.cpp
      - copied unchanged from r46442, /trunk/libs/asio/test/windows/random_access_handle.cpp
   branches/proto/v4/libs/asio/test/windows/random_access_handle_service.cpp
      - copied unchanged from r46442, /trunk/libs/asio/test/windows/random_access_handle_service.cpp
   branches/proto/v4/libs/bind/doc/Jamfile.v2
      - copied unchanged from r47973, /trunk/libs/bind/doc/Jamfile.v2
   branches/proto/v4/libs/filesystem/test/msvc/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/
   branches/proto/v4/libs/filesystem/test/msvc/boost_filesystem.sln
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/boost_filesystem.sln
   branches/proto/v4/libs/filesystem/test/msvc/common.vsprops
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/common.vsprops
   branches/proto/v4/libs/filesystem/test/msvc/convenience_test/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/convenience_test/
   branches/proto/v4/libs/filesystem/test/msvc/convenience_test/convenience_test.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/convenience_test/convenience_test.vcproj
   branches/proto/v4/libs/filesystem/test/msvc/filesystem_dll/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/filesystem_dll/
   branches/proto/v4/libs/filesystem/test/msvc/filesystem_dll/filesystem_dll.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/filesystem_dll/filesystem_dll.vcproj
   branches/proto/v4/libs/filesystem/test/msvc/fstream_test/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/fstream_test/
   branches/proto/v4/libs/filesystem/test/msvc/fstream_test/fstream_test.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/fstream_test/fstream_test.vcproj
   branches/proto/v4/libs/filesystem/test/msvc/large_file_support_test/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/large_file_support_test/
   branches/proto/v4/libs/filesystem/test/msvc/large_file_support_test/large_file_support_test.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/large_file_support_test/large_file_support_test.vcproj
   branches/proto/v4/libs/filesystem/test/msvc/mbcopy/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/mbcopy/
   branches/proto/v4/libs/filesystem/test/msvc/mbcopy/mbcopy.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/mbcopy/mbcopy.vcproj
   branches/proto/v4/libs/filesystem/test/msvc/mbpath/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/mbpath/
   branches/proto/v4/libs/filesystem/test/msvc/mbpath/mbpath.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/mbpath/mbpath.vcproj
   branches/proto/v4/libs/filesystem/test/msvc/operations_test/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/operations_test/
   branches/proto/v4/libs/filesystem/test/msvc/operations_test/operations_test.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/operations_test/operations_test.vcproj
   branches/proto/v4/libs/filesystem/test/msvc/path_test/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/path_test/
   branches/proto/v4/libs/filesystem/test/msvc/path_test/path_test.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/path_test/path_test.vcproj
   branches/proto/v4/libs/filesystem/test/msvc/simple_ls/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/simple_ls/
   branches/proto/v4/libs/filesystem/test/msvc/simple_ls/simple_ls.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/simple_ls/simple_ls.vcproj
   branches/proto/v4/libs/filesystem/test/msvc/system_dll/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/system_dll/
   branches/proto/v4/libs/filesystem/test/msvc/system_dll/system_dll.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/system_dll/system_dll.vcproj
   branches/proto/v4/libs/filesystem/test/msvc/wide_test/
      - copied from r47973, /trunk/libs/filesystem/test/msvc/wide_test/
   branches/proto/v4/libs/filesystem/test/msvc/wide_test/wide_test.vcproj
      - copied unchanged from r47973, /trunk/libs/filesystem/test/msvc/wide_test/wide_test.vcproj
   branches/proto/v4/libs/intrusive/proj/vc7ide/any_test/
      - copied from r47973, /trunk/libs/intrusive/proj/vc7ide/any_test/
   branches/proto/v4/libs/iostreams/src/file_times.cpp
      - copied unchanged from r47973, /trunk/libs/iostreams/src/file_times.cpp
   branches/proto/v4/libs/mpl/doc/src/docutils/
      - copied from r47973, /trunk/libs/mpl/doc/src/docutils/
   branches/proto/v4/libs/mpl/doc/src/docutils/tools/
      - copied from r47973, /trunk/libs/mpl/doc/src/docutils/tools/
   branches/proto/v4/libs/mpl/doc/src/docutils/writers/
      - copied from r47973, /trunk/libs/mpl/doc/src/docutils/writers/
   branches/proto/v4/libs/mpl/doc/src/docutils/writers/html4_refdoc/
      - copied from r47973, /trunk/libs/mpl/doc/src/docutils/writers/html4_refdoc/
   branches/proto/v4/libs/ptr_container/doc/comp_ptr_inserter.sh
      - copied unchanged from r47973, /trunk/libs/ptr_container/doc/comp_ptr_inserter.sh
   branches/proto/v4/libs/ptr_container/doc/ptr_inserter.html
      - copied unchanged from r47973, /trunk/libs/ptr_container/doc/ptr_inserter.html
   branches/proto/v4/libs/ptr_container/doc/ptr_inserter.rst
      - copied unchanged from r47973, /trunk/libs/ptr_container/doc/ptr_inserter.rst
   branches/proto/v4/libs/spirit/classic/example/intermediate/simple_xml/tag.hpp
      - copied unchanged from r47973, /trunk/libs/spirit/classic/example/intermediate/simple_xml/tag.hpp
   branches/proto/v4/libs/spirit/doc/concepts_template.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/concepts_template.qbk
   branches/proto/v4/libs/spirit/doc/html/images/alert.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/alert.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/
      - copied from r47973, /trunk/libs/spirit/doc/html/images/callouts/
   branches/proto/v4/libs/spirit/doc/html/images/callouts/1.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/1.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/10.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/10.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/11.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/11.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/12.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/12.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/13.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/13.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/14.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/14.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/15.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/15.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/2.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/2.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/3.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/3.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/4.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/4.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/5.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/5.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/6.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/6.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/7.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/7.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/8.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/8.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/9.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/9.png
   branches/proto/v4/libs/spirit/doc/html/images/callouts/Thumbs.db
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/callouts/Thumbs.db
   branches/proto/v4/libs/spirit/doc/html/images/caution.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/caution.png
   branches/proto/v4/libs/spirit/doc/html/images/flowofcontrol.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/flowofcontrol.png
   branches/proto/v4/libs/spirit/doc/html/images/important.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/important.png
   branches/proto/v4/libs/spirit/doc/html/images/note.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/note.png
   branches/proto/v4/libs/spirit/doc/html/images/spiritkarmaflow.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/spiritkarmaflow.png
   branches/proto/v4/libs/spirit/doc/html/images/spiritstructure.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/spiritstructure.png
   branches/proto/v4/libs/spirit/doc/html/images/tip.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/tip.png
   branches/proto/v4/libs/spirit/doc/html/images/tokenstructure.png
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/images/tokenstructure.png
   branches/proto/v4/libs/spirit/doc/html/index.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/index.html
   branches/proto/v4/libs/spirit/doc/html/spirit/
      - copied from r47973, /trunk/libs/spirit/doc/html/spirit/
   branches/proto/v4/libs/spirit/doc/html/spirit/acknowledgments.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/acknowledgments.html
   branches/proto/v4/libs/spirit/doc/html/spirit/faq.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/faq.html
   branches/proto/v4/libs/spirit/doc/html/spirit/introduction.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/introduction.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/
      - copied from r47973, /trunk/libs/spirit/doc/html/spirit/lex/
   branches/proto/v4/libs/spirit/doc/html/spirit/lex.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/abstracts/
      - copied from r47973, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/abstracts.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/abstracts.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/abstracts/lexer_attributes.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_attributes.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/abstracts/lexer_parsing.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_parsing.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/quick_reference.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/quick_reference.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/reference/
      - copied from r47973, /trunk/libs/spirit/doc/html/spirit/lex/reference/
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/reference.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/reference.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/reference/lexer_class.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_class.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/reference/token_class.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/reference/token_class.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/reference/tokendef_class.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/reference/tokendef_class.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/reference/tokenset_class.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/reference/tokenset_class.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/tutorials/
      - copied from r47973, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/tutorials.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/tutorials.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html
   branches/proto/v4/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html
   branches/proto/v4/libs/spirit/doc/html/spirit/notes/
      - copied from r47973, /trunk/libs/spirit/doc/html/spirit/notes/
   branches/proto/v4/libs/spirit/doc/html/spirit/notes.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/notes.html
   branches/proto/v4/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html
   branches/proto/v4/libs/spirit/doc/html/spirit/notes/style_guide.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/notes/style_guide.html
   branches/proto/v4/libs/spirit/doc/html/spirit/notes/techniques.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/notes/techniques.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/
      - copied from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/
      - copied from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/attributes.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/attributes.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/debugging.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/debugging.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/directives.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/directives.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/error_handling.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/error_handling.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/grammars.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/grammars.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/mini_xml___error_handling.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/mini_xml___error_handling.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/operators.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/operators.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/parse_trees_and_asts.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/parse_trees_and_asts.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/parsing.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/parsing.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/parsing_and_generating.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/parsing_and_generating.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/primitives.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/primitives.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/rules.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/rules.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/semantic_actions.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/abstracts/semantic_actions.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/quick_reference.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/quick_reference.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/
      - copied from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/action.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/action.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/auxiliary.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/auxiliary.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/binary.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/binary.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/char.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/char.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/debug.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/debug.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/directive.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/directive.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/nonterminal.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/nonterminal.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/numeric.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/numeric.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/operators.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/operators.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/stream.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/stream.html
   branches/proto/v4/libs/spirit/doc/html/spirit/qi_and_karma/reference/string.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/qi_and_karma/reference/string.html
   branches/proto/v4/libs/spirit/doc/html/spirit/rationale.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/rationale.html
   branches/proto/v4/libs/spirit/doc/html/spirit/references.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/references.html
   branches/proto/v4/libs/spirit/doc/html/spirit/what_s_new.html
      - copied unchanged from r47973, /trunk/libs/spirit/doc/html/spirit/what_s_new.html
   branches/proto/v4/libs/spirit/doc/qi_and_karma/actions.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/actions.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/complex.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/complex.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/employee.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/employee.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/mini_xml.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/mini_xml.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/num_list2.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/num_list2.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/num_list3.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/num_list3.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/num_list4.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/num_list4.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/roman.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/roman.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/sum_tutorial.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/sum_tutorial.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/tutorial_intro.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/tutorial_intro.qbk
   branches/proto/v4/libs/spirit/doc/qi_and_karma/warming_up.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/qi_and_karma/warming_up.qbk
   branches/proto/v4/libs/spirit/doc/reference_template.qbk
      - copied unchanged from r47973, /trunk/libs/spirit/doc/reference_template.qbk
   branches/proto/v4/libs/spirit/example/qi/mini_xml3.cpp
      - copied unchanged from r47973, /trunk/libs/spirit/example/qi/mini_xml3.cpp
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/1.toyxml
      - copied unchanged from r47973, /trunk/libs/spirit/example/qi/mini_xml_samples/1.toyxml
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/2.toyxml
      - copied unchanged from r47973, /trunk/libs/spirit/example/qi/mini_xml_samples/2.toyxml
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/3.toyxml
      - copied unchanged from r47973, /trunk/libs/spirit/example/qi/mini_xml_samples/3.toyxml
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/4.toyxml
      - copied unchanged from r47973, /trunk/libs/spirit/example/qi/mini_xml_samples/4.toyxml
   branches/proto/v4/libs/spirit/example/qi/num_list1.cpp
      - copied unchanged from r47973, /trunk/libs/spirit/example/qi/num_list1.cpp
   branches/proto/v4/libs/spirit/example/qi/num_list4.cpp
      - copied unchanged from r47973, /trunk/libs/spirit/example/qi/num_list4.cpp
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/container.html
      - copied unchanged from r47973, /trunk/libs/spirit/phoenix/doc/html/phoenix/container.html
   branches/proto/v4/libs/spirit/test/karma/eol.cpp
      - copied unchanged from r47973, /trunk/libs/spirit/test/karma/eol.cpp
   branches/proto/v4/libs/spirit/test/karma/pattern2.cpp
      - copied unchanged from r47973, /trunk/libs/spirit/test/karma/pattern2.cpp
   branches/proto/v4/libs/test/doc/html/
      - copied from r47973, /trunk/libs/test/doc/html/
   branches/proto/v4/libs/test/doc/html/aknowledgements.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/aknowledgements.html
   branches/proto/v4/libs/test/doc/html/execution-monitor/
      - copied from r47973, /trunk/libs/test/doc/html/execution-monitor/
   branches/proto/v4/libs/test/doc/html/execution-monitor.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/execution-monitor.html
   branches/proto/v4/libs/test/doc/html/execution-monitor/compilation.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/execution-monitor/compilation.html
   branches/proto/v4/libs/test/doc/html/execution-monitor/reference.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/execution-monitor/reference.html
   branches/proto/v4/libs/test/doc/html/execution-monitor/user-guide.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/execution-monitor/user-guide.html
   branches/proto/v4/libs/test/doc/html/faq.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/faq.html
   branches/proto/v4/libs/test/doc/html/index.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/index.html
   branches/proto/v4/libs/test/doc/html/intro.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/intro.html
   branches/proto/v4/libs/test/doc/html/minimal.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/minimal.html
   branches/proto/v4/libs/test/doc/html/open-issues.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/open-issues.html
   branches/proto/v4/libs/test/doc/html/prg-exec-monitor/
      - copied from r47973, /trunk/libs/test/doc/html/prg-exec-monitor/
   branches/proto/v4/libs/test/doc/html/prg-exec-monitor.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/prg-exec-monitor.html
   branches/proto/v4/libs/test/doc/html/prg-exec-monitor/compilation.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/prg-exec-monitor/compilation.html
   branches/proto/v4/libs/test/doc/html/prg-exec-monitor/impl.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/prg-exec-monitor/impl.html
   branches/proto/v4/libs/test/doc/html/tutorials/
      - copied from r47973, /trunk/libs/test/doc/html/tutorials/
   branches/proto/v4/libs/test/doc/html/tutorials/hello-the-testing-world.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/tutorials/hello-the-testing-world.html
   branches/proto/v4/libs/test/doc/html/tutorials/intro-in-testing.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/tutorials/intro-in-testing.html
   branches/proto/v4/libs/test/doc/html/tutorials/new-year-resolution.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/tutorials/new-year-resolution.html
   branches/proto/v4/libs/test/doc/html/utf/
      - copied from r47973, /trunk/libs/test/doc/html/utf/
   branches/proto/v4/libs/test/doc/html/utf.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf.html
   branches/proto/v4/libs/test/doc/html/utf/compilation/
      - copied from r47973, /trunk/libs/test/doc/html/utf/compilation/
   branches/proto/v4/libs/test/doc/html/utf/compilation.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/compilation.html
   branches/proto/v4/libs/test/doc/html/utf/compilation/auto-linking.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/compilation/auto-linking.html
   branches/proto/v4/libs/test/doc/html/utf/compilation/direct-include.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/compilation/direct-include.html
   branches/proto/v4/libs/test/doc/html/utf/compilation/standalone.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/compilation/standalone.html
   branches/proto/v4/libs/test/doc/html/utf/intro.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/intro.html
   branches/proto/v4/libs/test/doc/html/utf/testing-tools/
      - copied from r47973, /trunk/libs/test/doc/html/utf/testing-tools/
   branches/proto/v4/libs/test/doc/html/utf/testing-tools.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/testing-tools.html
   branches/proto/v4/libs/test/doc/html/utf/testing-tools/custom-predicate.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/testing-tools/custom-predicate.html
   branches/proto/v4/libs/test/doc/html/utf/testing-tools/floating_point_comparison.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/testing-tools/floating_point_comparison.html
   branches/proto/v4/libs/test/doc/html/utf/testing-tools/output-test.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/testing-tools/output-test.html
   branches/proto/v4/libs/test/doc/html/utf/testing-tools/reference.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/testing-tools/reference.html
   branches/proto/v4/libs/test/doc/html/utf/tutorials.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/tutorials.html
   branches/proto/v4/libs/test/doc/html/utf/usage-recomendations/
      - copied from r47973, /trunk/libs/test/doc/html/utf/usage-recomendations/
   branches/proto/v4/libs/test/doc/html/utf/usage-recomendations.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/usage-recomendations.html
   branches/proto/v4/libs/test/doc/html/utf/usage-recomendations/command-line-specific.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/usage-recomendations/command-line-specific.html
   branches/proto/v4/libs/test/doc/html/utf/usage-recomendations/dot-net-specific.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/usage-recomendations/dot-net-specific.html
   branches/proto/v4/libs/test/doc/html/utf/usage-recomendations/generic.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/usage-recomendations/generic.html
   branches/proto/v4/libs/test/doc/html/utf/usage-recommendations/
      - copied from r47973, /trunk/libs/test/doc/html/utf/usage-recommendations/
   branches/proto/v4/libs/test/doc/html/utf/usage-recommendations.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/usage-recommendations.html
   branches/proto/v4/libs/test/doc/html/utf/usage-recommendations/command-line-specific.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/usage-recommendations/command-line-specific.html
   branches/proto/v4/libs/test/doc/html/utf/usage-recommendations/dot-net-specific.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/usage-recommendations/dot-net-specific.html
   branches/proto/v4/libs/test/doc/html/utf/usage-recommendations/generic.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/usage-recommendations/generic.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/
      - copied from r47973, /trunk/libs/test/doc/html/utf/user-guide/
   branches/proto/v4/libs/test/doc/html/utf/user-guide.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/fixture/
      - copied from r47973, /trunk/libs/test/doc/html/utf/user-guide/fixture/
   branches/proto/v4/libs/test/doc/html/utf/user-guide/fixture.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/fixture.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/fixture/global.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/fixture/global.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/fixture/model.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/fixture/model.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/fixture/per-test-case.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/fixture/per-test-case.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/fixture/test-suite-shared.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/fixture/test-suite-shared.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/initialization.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/initialization.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/runtime-config/
      - copied from r47973, /trunk/libs/test/doc/html/utf/user-guide/runtime-config/
   branches/proto/v4/libs/test/doc/html/utf/user-guide/runtime-config.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/runtime-config.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/runtime-config/reference.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/runtime-config/reference.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/runtime-config/run-by-name.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/runtime-config/run-by-name.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/
      - copied from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/auto-nullary-test-case.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-nullary-test-case.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/auto-test-case-template.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-test-case-template.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/auto-test-suite.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/auto-test-suite.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/expected-failures.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/expected-failures.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/manual-nullary-test-case.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-nullary-test-case.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/manual-test-case-template.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-test-case-template.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/manual-test-suite.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/manual-test-suite.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/master-test-suite.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/master-test-suite.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/nullary-test-case.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/nullary-test-case.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/test-case-template.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/test-case-template.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/test-suite.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/test-suite.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-organization/unary-test-case.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-organization/unary-test-case.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output/
      - copied from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output/
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_CHECKPOINT.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_CHECKPOINT.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_MESSAGE.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_MESSAGE.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_PASSPOINT.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output/BOOST_TEST_PASSPOINT.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output/log-ct-config.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output/log-ct-config.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output/log-hr-format.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output/log-hr-format.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output/log-xml-format.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output/log-xml-format.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output/results-report.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output/results-report.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output/test-log.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output/test-log.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-output/test-progress.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-output/test-progress.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/test-runners.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/test-runners.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/usage-variants/
      - copied from r47973, /trunk/libs/test/doc/html/utf/user-guide/usage-variants/
   branches/proto/v4/libs/test/doc/html/utf/user-guide/usage-variants.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/usage-variants.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/usage-variants/dynamic-lib-variant.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/usage-variants/dynamic-lib-variant.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/usage-variants/extern-test-runner-variant.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/usage-variants/extern-test-runner-variant.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/usage-variants/extern-test-runner.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/usage-variants/extern-test-runner.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/usage-variants/single-header-variant.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/usage-variants/single-header-variant.html
   branches/proto/v4/libs/test/doc/html/utf/user-guide/usage-variants/static-lib-variant.html
      - copied unchanged from r47973, /trunk/libs/test/doc/html/utf/user-guide/usage-variants/static-lib-variant.html
   branches/proto/v4/libs/test/doc/img/
      - copied from r47973, /trunk/libs/test/doc/img/
   branches/proto/v4/libs/test/doc/img/boost.test.logo.png
      - copied unchanged from r47973, /trunk/libs/test/doc/img/boost.test.logo.png
   branches/proto/v4/libs/test/doc/img/class-hier.jpg
      - copied unchanged from r47973, /trunk/libs/test/doc/img/class-hier.jpg
   branches/proto/v4/libs/test/doc/img/level.png
      - copied unchanged from r47973, /trunk/libs/test/doc/img/level.png
   branches/proto/v4/libs/test/doc/img/post_build_event.jpg
      - copied unchanged from r47973, /trunk/libs/test/doc/img/post_build_event.jpg
   branches/proto/v4/libs/test/doc/img/post_build_out.jpg
      - copied unchanged from r47973, /trunk/libs/test/doc/img/post_build_out.jpg
   branches/proto/v4/libs/test/doc/img/run_args.jpg
      - copied unchanged from r47973, /trunk/libs/test/doc/img/run_args.jpg
   branches/proto/v4/libs/test/doc/js/
      - copied from r47973, /trunk/libs/test/doc/js/
   branches/proto/v4/libs/test/doc/js/boost-test.js
      - copied unchanged from r47973, /trunk/libs/test/doc/js/boost-test.js
   branches/proto/v4/libs/test/doc/src/
      - copied from r47973, /trunk/libs/test/doc/src/
   branches/proto/v4/libs/test/doc/src/examples/
      - copied from r47973, /trunk/libs/test/doc/src/examples/
   branches/proto/v4/libs/test/doc/src/examples/example.sln
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example.sln
   branches/proto/v4/libs/test/doc/src/examples/example.vcproj
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example.vcproj
   branches/proto/v4/libs/test/doc/src/examples/example01.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example01.cpp
   branches/proto/v4/libs/test/doc/src/examples/example01.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example01.output
   branches/proto/v4/libs/test/doc/src/examples/example02.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example02.cpp
   branches/proto/v4/libs/test/doc/src/examples/example02.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example02.output
   branches/proto/v4/libs/test/doc/src/examples/example03.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example03.cpp
   branches/proto/v4/libs/test/doc/src/examples/example03.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example03.output
   branches/proto/v4/libs/test/doc/src/examples/example04.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example04.cpp
   branches/proto/v4/libs/test/doc/src/examples/example04.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example04.output
   branches/proto/v4/libs/test/doc/src/examples/example05.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example05.cpp
   branches/proto/v4/libs/test/doc/src/examples/example05.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example05.output
   branches/proto/v4/libs/test/doc/src/examples/example06.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example06.cpp
   branches/proto/v4/libs/test/doc/src/examples/example06.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example06.output
   branches/proto/v4/libs/test/doc/src/examples/example07.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example07.cpp
   branches/proto/v4/libs/test/doc/src/examples/example07.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example07.output
   branches/proto/v4/libs/test/doc/src/examples/example08.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example08.cpp
   branches/proto/v4/libs/test/doc/src/examples/example08.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example08.output
   branches/proto/v4/libs/test/doc/src/examples/example09.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example09.cpp
   branches/proto/v4/libs/test/doc/src/examples/example09.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example09.output
   branches/proto/v4/libs/test/doc/src/examples/example10.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example10.cpp
   branches/proto/v4/libs/test/doc/src/examples/example10.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example10.output
   branches/proto/v4/libs/test/doc/src/examples/example11.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example11.cpp
   branches/proto/v4/libs/test/doc/src/examples/example11.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example11.output
   branches/proto/v4/libs/test/doc/src/examples/example12.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example12.cpp
   branches/proto/v4/libs/test/doc/src/examples/example12.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example12.output
   branches/proto/v4/libs/test/doc/src/examples/example13.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example13.cpp
   branches/proto/v4/libs/test/doc/src/examples/example13.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example13.output
   branches/proto/v4/libs/test/doc/src/examples/example14.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example14.cpp
   branches/proto/v4/libs/test/doc/src/examples/example14.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example14.output
   branches/proto/v4/libs/test/doc/src/examples/example15.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example15.cpp
   branches/proto/v4/libs/test/doc/src/examples/example15.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example15.output
   branches/proto/v4/libs/test/doc/src/examples/example16.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example16.cpp
   branches/proto/v4/libs/test/doc/src/examples/example16.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example16.output
   branches/proto/v4/libs/test/doc/src/examples/example17.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example17.cpp
   branches/proto/v4/libs/test/doc/src/examples/example17.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example17.output
   branches/proto/v4/libs/test/doc/src/examples/example18.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example18.cpp
   branches/proto/v4/libs/test/doc/src/examples/example18.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example18.output
   branches/proto/v4/libs/test/doc/src/examples/example19.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example19.cpp
   branches/proto/v4/libs/test/doc/src/examples/example19.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example19.output
   branches/proto/v4/libs/test/doc/src/examples/example20.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example20.cpp
   branches/proto/v4/libs/test/doc/src/examples/example20.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example20.output
   branches/proto/v4/libs/test/doc/src/examples/example21.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example21.cpp
   branches/proto/v4/libs/test/doc/src/examples/example21.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example21.output
   branches/proto/v4/libs/test/doc/src/examples/example22.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example22.cpp
   branches/proto/v4/libs/test/doc/src/examples/example22.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example22.output
   branches/proto/v4/libs/test/doc/src/examples/example23.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example23.cpp
   branches/proto/v4/libs/test/doc/src/examples/example23.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example23.output
   branches/proto/v4/libs/test/doc/src/examples/example24.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example24.cpp
   branches/proto/v4/libs/test/doc/src/examples/example24.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example24.output
   branches/proto/v4/libs/test/doc/src/examples/example25.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example25.cpp
   branches/proto/v4/libs/test/doc/src/examples/example25.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example25.output
   branches/proto/v4/libs/test/doc/src/examples/example26.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example26.cpp
   branches/proto/v4/libs/test/doc/src/examples/example26.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example26.output
   branches/proto/v4/libs/test/doc/src/examples/example27.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example27.cpp
   branches/proto/v4/libs/test/doc/src/examples/example27.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example27.output
   branches/proto/v4/libs/test/doc/src/examples/example28.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example28.cpp
   branches/proto/v4/libs/test/doc/src/examples/example28.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example28.output
   branches/proto/v4/libs/test/doc/src/examples/example29.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example29.cpp
   branches/proto/v4/libs/test/doc/src/examples/example29.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example29.output
   branches/proto/v4/libs/test/doc/src/examples/example30.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example30.cpp
   branches/proto/v4/libs/test/doc/src/examples/example30.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example30.output
   branches/proto/v4/libs/test/doc/src/examples/example31.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example31.cpp
   branches/proto/v4/libs/test/doc/src/examples/example31.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example31.output
   branches/proto/v4/libs/test/doc/src/examples/example32.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example32.cpp
   branches/proto/v4/libs/test/doc/src/examples/example32.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example32.output
   branches/proto/v4/libs/test/doc/src/examples/example33.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example33.cpp
   branches/proto/v4/libs/test/doc/src/examples/example33.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example33.output
   branches/proto/v4/libs/test/doc/src/examples/example34.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example34.cpp
   branches/proto/v4/libs/test/doc/src/examples/example34.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example34.output
   branches/proto/v4/libs/test/doc/src/examples/example35.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example35.cpp
   branches/proto/v4/libs/test/doc/src/examples/example35.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example35.output
   branches/proto/v4/libs/test/doc/src/examples/example36.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example36.cpp
   branches/proto/v4/libs/test/doc/src/examples/example36.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example36.output
   branches/proto/v4/libs/test/doc/src/examples/example37.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example37.cpp
   branches/proto/v4/libs/test/doc/src/examples/example37.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example37.output
   branches/proto/v4/libs/test/doc/src/examples/example38.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example38.cpp
   branches/proto/v4/libs/test/doc/src/examples/example38.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example38.output
   branches/proto/v4/libs/test/doc/src/examples/example39.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example39.cpp
   branches/proto/v4/libs/test/doc/src/examples/example39.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example39.output
   branches/proto/v4/libs/test/doc/src/examples/example40.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example40.cpp
   branches/proto/v4/libs/test/doc/src/examples/example40.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example40.output
   branches/proto/v4/libs/test/doc/src/examples/example41.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example41.cpp
   branches/proto/v4/libs/test/doc/src/examples/example41.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example41.output
   branches/proto/v4/libs/test/doc/src/examples/example42.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example42.cpp
   branches/proto/v4/libs/test/doc/src/examples/example42.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example42.output
   branches/proto/v4/libs/test/doc/src/examples/example43.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example43.cpp
   branches/proto/v4/libs/test/doc/src/examples/example43.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example43.output
   branches/proto/v4/libs/test/doc/src/examples/example44.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example44.cpp
   branches/proto/v4/libs/test/doc/src/examples/example44.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example44.output
   branches/proto/v4/libs/test/doc/src/examples/example45.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example45.cpp
   branches/proto/v4/libs/test/doc/src/examples/example45.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example45.output
   branches/proto/v4/libs/test/doc/src/examples/example46.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example46.cpp
   branches/proto/v4/libs/test/doc/src/examples/example46.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example46.output
   branches/proto/v4/libs/test/doc/src/examples/example47.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example47.cpp
   branches/proto/v4/libs/test/doc/src/examples/example47.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example47.output
   branches/proto/v4/libs/test/doc/src/examples/example48.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example48.cpp
   branches/proto/v4/libs/test/doc/src/examples/example48.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example48.output
   branches/proto/v4/libs/test/doc/src/examples/example49.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example49.cpp
   branches/proto/v4/libs/test/doc/src/examples/example49.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example49.output
   branches/proto/v4/libs/test/doc/src/examples/example50.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example50.cpp
   branches/proto/v4/libs/test/doc/src/examples/example50.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example50.output
   branches/proto/v4/libs/test/doc/src/examples/example51.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example51.cpp
   branches/proto/v4/libs/test/doc/src/examples/example51.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example51.output
   branches/proto/v4/libs/test/doc/src/examples/example52.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example52.cpp
   branches/proto/v4/libs/test/doc/src/examples/example52.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example52.output
   branches/proto/v4/libs/test/doc/src/examples/example53.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example53.cpp
   branches/proto/v4/libs/test/doc/src/examples/example53.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example53.output
   branches/proto/v4/libs/test/doc/src/examples/example54.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example54.cpp
   branches/proto/v4/libs/test/doc/src/examples/example54.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example54.output
   branches/proto/v4/libs/test/doc/src/examples/example55.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example55.cpp
   branches/proto/v4/libs/test/doc/src/examples/example55.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example55.output
   branches/proto/v4/libs/test/doc/src/examples/example56.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example56.cpp
   branches/proto/v4/libs/test/doc/src/examples/example56.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example56.output
   branches/proto/v4/libs/test/doc/src/examples/example57.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example57.cpp
   branches/proto/v4/libs/test/doc/src/examples/example57.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example57.output
   branches/proto/v4/libs/test/doc/src/examples/example58.cpp
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example58.cpp
   branches/proto/v4/libs/test/doc/src/examples/example58.output
      - copied unchanged from r47973, /trunk/libs/test/doc/src/examples/example58.output
   branches/proto/v4/libs/test/doc/style/
      - copied from r47973, /trunk/libs/test/doc/style/
   branches/proto/v4/libs/test/doc/style/boostbook.css
      - copied unchanged from r47973, /trunk/libs/test/doc/style/boostbook.css
   branches/proto/v4/libs/test/doc/style/btl-headers.css
      - copied unchanged from r47973, /trunk/libs/test/doc/style/btl-headers.css
   branches/proto/v4/libs/test/doc/style/btl-inline.css
      - copied unchanged from r47973, /trunk/libs/test/doc/style/btl-inline.css
   branches/proto/v4/libs/test/doc/style/btl-links.css
      - copied unchanged from r47973, /trunk/libs/test/doc/style/btl-links.css
   branches/proto/v4/libs/test/doc/style/btl-lists.css
      - copied unchanged from r47973, /trunk/libs/test/doc/style/btl-lists.css
   branches/proto/v4/libs/test/doc/style/btl-paragraphs.css
      - copied unchanged from r47973, /trunk/libs/test/doc/style/btl-paragraphs.css
   branches/proto/v4/libs/test/doc/style/btl-structure.css
      - copied unchanged from r47973, /trunk/libs/test/doc/style/btl-structure.css
   branches/proto/v4/libs/test/doc/style/btl-tables.css
      - copied unchanged from r47973, /trunk/libs/test/doc/style/btl-tables.css
   branches/proto/v4/libs/test/doc/style/style.css
      - copied unchanged from r47973, /trunk/libs/test/doc/style/style.css
   branches/proto/v4/libs/test/example/const_string.hpp
      - copied unchanged from r47973, /trunk/libs/test/example/const_string.hpp
   branches/proto/v4/libs/test/example/const_string_test.cpp
      - copied unchanged from r47973, /trunk/libs/test/example/const_string_test.cpp
   branches/proto/v4/libs/test/example/unit_test_example_011.cpp
      - copied unchanged from r47973, /trunk/libs/test/example/unit_test_example_011.cpp
   branches/proto/v4/libs/test/example/unit_test_example_012.cpp
      - copied unchanged from r47973, /trunk/libs/test/example/unit_test_example_012.cpp
   branches/proto/v4/libs/test/test/sync_access_test.cpp
      - copied unchanged from r47973, /trunk/libs/test/test/sync_access_test.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/
      - copied from r47973, /trunk/libs/tr1/test/cyclic_depend/
   branches/proto/v4/libs/tr1/test/cyclic_depend/config.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/config.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function0.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function0.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function1.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function1.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function2.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function2.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function3.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function3.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function4.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function4.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function5.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function5.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function6.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function6.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function7.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function7.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function8.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function8.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/function9.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/function9.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/hash.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/hash.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/intrusive_ptr.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/intrusive_ptr.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/make_tuple.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/make_tuple.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/program_options.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/program_options.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/regex.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/regex.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/shared_count.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/shared_count.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/shared_ptr.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/shared_ptr.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/tuple.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/tuple.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/tuple_fwd.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/tuple_fwd.cpp
   branches/proto/v4/libs/tr1/test/cyclic_depend/tuple_tie.cpp
      - copied unchanged from r47973, /trunk/libs/tr1/test/cyclic_depend/tuple_tie.cpp
   branches/proto/v4/libs/utility/swap/
      - copied from r47973, /trunk/libs/utility/swap/
   branches/proto/v4/libs/utility/swap/test/
      - copied from r47973, /trunk/libs/utility/swap/test/
   branches/proto/v4/libs/xpressive/proto/doc/concepts/CallableTransform.xml (contents, props changed)
   branches/proto/v4/tools/build/v2/test/ordered_include.py
      - copied unchanged from r47973, /trunk/tools/build/v2/test/ordered_include.py
   branches/proto/v4/tools/build/v2/test/qt4/
      - copied from r47973, /trunk/tools/build/v2/test/qt4/
   branches/proto/v4/tools/build/v2/test/qt4.py
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4.py
   branches/proto/v4/tools/build/v2/test/qt4/Jamroot
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/Jamroot
   branches/proto/v4/tools/build/v2/test/qt4/phonon.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/phonon.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qt3support.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qt3support.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtassistant.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtassistant.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtcore.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtcore.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtcorefail.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtcorefail.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtgui.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtgui.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qthelp.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qthelp.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtnetwork.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtnetwork.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtscript.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtscript.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtsql.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtsql.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtsvg.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtsvg.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qttest.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qttest.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtwebkit.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtwebkit.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtxml.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtxml.cpp
   branches/proto/v4/tools/build/v2/test/qt4/qtxmlpatterns.cpp
      - copied unchanged from r47973, /trunk/tools/build/v2/test/qt4/qtxmlpatterns.cpp
   branches/proto/v4/tools/inspect/build/msvc/
      - copied from r47973, /trunk/tools/inspect/build/msvc/
   branches/proto/v4/tools/inspect/build/msvc/boost_inspect.sln
      - copied unchanged from r47973, /trunk/tools/inspect/build/msvc/boost_inspect.sln
   branches/proto/v4/tools/inspect/build/msvc/boost_inspect.vcproj
      - copied unchanged from r47973, /trunk/tools/inspect/build/msvc/boost_inspect.vcproj
   branches/proto/v4/tools/inspect/build/msvc/readme.txt
      - copied unchanged from r47973, /trunk/tools/inspect/build/msvc/readme.txt
   branches/proto/v4/tools/inspect/path_name_check.cpp
      - copied unchanged from r47973, /trunk/tools/inspect/path_name_check.cpp
   branches/proto/v4/tools/inspect/path_name_check.hpp
      - copied unchanged from r47973, /trunk/tools/inspect/path_name_check.hpp
   branches/proto/v4/tools/release/diff_trunk_release.bat
      - copied unchanged from r47973, /trunk/tools/release/diff_trunk_release.bat
   branches/proto/v4/tools/release/msvc/
      - copied from r47973, /trunk/tools/release/msvc/
   branches/proto/v4/tools/release/msvc/compare_trees/
      - copied from r47973, /trunk/tools/release/msvc/compare_trees/
   branches/proto/v4/tools/release/msvc/compare_trees/compare_trees.vcproj
      - copied unchanged from r47973, /trunk/tools/release/msvc/compare_trees/compare_trees.vcproj
   branches/proto/v4/tools/release/msvc/msvc.sln
      - copied unchanged from r47973, /trunk/tools/release/msvc/msvc.sln
Removed:
   branches/proto/v4/boost/archive/array/
   branches/proto/v4/libs/asio/doc/design/
   branches/proto/v4/libs/asio/doc/design.qbk
   branches/proto/v4/libs/exception/doc/cloning.html
   branches/proto/v4/libs/exception/doc/exception_what.html
   branches/proto/v4/libs/exception/doc/logging.html
   branches/proto/v4/libs/exception/doc/transporting_data.html
   branches/proto/v4/libs/exception/doc/using_enable_error_info.html
   branches/proto/v4/libs/exception/test/what_test.cpp
   branches/proto/v4/libs/interprocess/proj/to-do.txt
   branches/proto/v4/libs/intrusive/proj/vc7ide/to-do.txt
   branches/proto/v4/libs/spirit/doc/_concepts_template_.qbk
   branches/proto/v4/libs/spirit/doc/_reference_template_.qbk
   branches/proto/v4/libs/spirit/doc/html/images/FlowOfControl.png
   branches/proto/v4/libs/spirit/doc/html/images/Thumbs.db
   branches/proto/v4/libs/spirit/doc/html/images/TokenStructure.png
   branches/proto/v4/libs/spirit/doc/qi_and_karma/tutorials.qbk
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/1.xml
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/2.xml
   branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/3.xml
   branches/proto/v4/libs/spirit/example/qi/num_list.cpp
   branches/proto/v4/libs/spirit/phoenix/doc/html/boostbook.css
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/intrinsic.html
   branches/proto/v4/libs/test/build/msvc71_proj/
   branches/proto/v4/libs/test/doc/acknowledgements.html
   branches/proto/v4/libs/test/doc/btl1.gif
   branches/proto/v4/libs/test/doc/components/
   branches/proto/v4/libs/test/doc/examples/
   branches/proto/v4/libs/test/doc/faq.html
   branches/proto/v4/libs/test/doc/index.html
   branches/proto/v4/libs/test/doc/open_issues.html
   branches/proto/v4/libs/test/doc/portability.html
   branches/proto/v4/libs/test/doc/release_notes.html
   branches/proto/v4/libs/test/doc/tests/
   branches/proto/v4/libs/test/doc/tutorials/
   branches/proto/v4/libs/test/doc/usage/
   branches/proto/v4/libs/units/doc/generate_base_units.jam
   branches/proto/v4/libs/units/test_headers/generate_header.jam
   branches/proto/v4/libs/unordered/examples/hash_functions/
   branches/proto/v4/libs/unordered/test/objects/memory.hpp
   branches/proto/v4/regression/
   branches/proto/v4/tools/build/v2/generators_prototype.py
   branches/proto/v4/tools/inspect/long_name_check.cpp
   branches/proto/v4/tools/inspect/long_name_check.hpp
Properties modified:
   branches/proto/v4/ (props changed)
   branches/proto/v4/boost/dynamic_bitset/config.hpp (contents, props changed)
   branches/proto/v4/boost/dynamic_bitset/dynamic_bitset.hpp (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/bitset_test.hpp (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests1.cpp (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests2.cpp (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests3.cpp (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests4.cpp (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/dynamic_bitset.html (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/example/Jamfile (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/example/example1.cpp (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/example/example2.cpp (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/example/example3.cpp (contents, props changed)
   branches/proto/v4/libs/dynamic_bitset/example/timing_tests.cpp (contents, props changed)
   branches/proto/v4/libs/exception/doc/source/boost-exception.reno (contents, props changed)
   branches/proto/v4/libs/exception/doc/source/html_prefix.txt (props changed)
   branches/proto/v4/libs/exception/doc/source/html_suffix.txt (props changed)
   branches/proto/v4/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.err1 (props changed)
   branches/proto/v4/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.err2 (props changed)
   branches/proto/v4/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.err3 (props changed)
   branches/proto/v4/libs/spirit/classic/example/fundamental/position_iterator/position_iterator.ok (props changed)
   branches/proto/v4/libs/spirit/doc/html/ (props changed)
   branches/proto/v4/libs/spirit/doc/html/images/ (props changed)
   branches/proto/v4/libs/spirit/phoenix/doc/html/ (props changed)
   branches/proto/v4/tools/boostbook/setup_boostbook.sh (props changed)
Binary files modified:
   branches/proto/v4/boost/ptr_container/serialize_ptr_circular_buffer.hpp
   branches/proto/v4/boost/ptr_container/serialize_ptr_container.hpp
   branches/proto/v4/libs/ptr_container/test/ptr_circular_buffer.cpp
Text files modified:
   branches/proto/v4/Jamroot | 97
   branches/proto/v4/boost/accumulators/framework/accumulator_set.hpp | 4
   branches/proto/v4/boost/accumulators/statistics/error_of_mean.hpp | 8
   branches/proto/v4/boost/accumulators/statistics/tail.hpp | 6
   branches/proto/v4/boost/accumulators/statistics/variance.hpp | 43
   branches/proto/v4/boost/accumulators/statistics/weighted_variance.hpp | 31
   branches/proto/v4/boost/accumulators/statistics_fwd.hpp | 12
   branches/proto/v4/boost/algorithm/string/classification.hpp | 4
   branches/proto/v4/boost/algorithm/string/concept.hpp | 4
   branches/proto/v4/boost/algorithm/string/detail/case_conv.hpp | 23
   branches/proto/v4/boost/algorithm/string/detail/classification.hpp | 128
   branches/proto/v4/boost/algorithm/string/detail/find_format.hpp | 14
   branches/proto/v4/boost/algorithm/string/detail/find_format_all.hpp | 30
   branches/proto/v4/boost/algorithm/string/detail/find_format_store.hpp | 7
   branches/proto/v4/boost/algorithm/string/detail/finder.hpp | 12
   branches/proto/v4/boost/algorithm/string/detail/formatter.hpp | 4
   branches/proto/v4/boost/algorithm/string/detail/replace_storage.hpp | 2
   branches/proto/v4/boost/algorithm/string/detail/sequence.hpp | 6
   branches/proto/v4/boost/algorithm/string/find.hpp | 2
   branches/proto/v4/boost/algorithm/string/find_format.hpp | 12
   branches/proto/v4/boost/algorithm/string/find_iterator.hpp | 24
   branches/proto/v4/boost/algorithm/string/iter_find.hpp | 8
   branches/proto/v4/boost/algorithm/string/join.hpp | 20
   branches/proto/v4/boost/algorithm/string/predicate.hpp | 38
   branches/proto/v4/boost/algorithm/string/regex.hpp | 30
   branches/proto/v4/boost/algorithm/string/trim.hpp | 48
   branches/proto/v4/boost/archive/basic_binary_iarchive.hpp | 16
   branches/proto/v4/boost/archive/basic_binary_iprimitive.hpp | 8
   branches/proto/v4/boost/archive/basic_binary_oarchive.hpp | 20
   branches/proto/v4/boost/archive/basic_binary_oprimitive.hpp | 6
   branches/proto/v4/boost/archive/basic_text_oprimitive.hpp | 2
   branches/proto/v4/boost/archive/binary_iarchive.hpp | 1
   branches/proto/v4/boost/archive/binary_oarchive.hpp | 1
   branches/proto/v4/boost/archive/codecvt_null.hpp | 25
   branches/proto/v4/boost/archive/detail/archive_pointer_iserializer.hpp | 1
   branches/proto/v4/boost/archive/detail/basic_oarchive.hpp | 1
   branches/proto/v4/boost/archive/detail/basic_oserializer.hpp | 2
   branches/proto/v4/boost/archive/detail/basic_serializer.hpp | 1
   branches/proto/v4/boost/archive/detail/interface_iarchive.hpp | 1
   branches/proto/v4/boost/archive/detail/interface_oarchive.hpp | 1
   branches/proto/v4/boost/archive/detail/iserializer.hpp | 19
   branches/proto/v4/boost/archive/detail/oserializer.hpp | 34
   branches/proto/v4/boost/archive/detail/polymorphic_iarchive_route.hpp | 6
   branches/proto/v4/boost/archive/impl/archive_pointer_iserializer.ipp | 11
   branches/proto/v4/boost/archive/impl/basic_binary_iprimitive.ipp | 2
   branches/proto/v4/boost/archive/impl/basic_binary_oprimitive.ipp | 1
   branches/proto/v4/boost/archive/impl/basic_text_iprimitive.ipp | 1
   branches/proto/v4/boost/archive/impl/basic_text_oprimitive.ipp | 1
   branches/proto/v4/boost/archive/impl/basic_xml_iarchive.ipp | 1
   branches/proto/v4/boost/archive/impl/basic_xml_oarchive.ipp | 1
   branches/proto/v4/boost/archive/impl/text_iarchive_impl.ipp | 2
   branches/proto/v4/boost/archive/impl/text_wiarchive_impl.ipp | 2
   branches/proto/v4/boost/archive/impl/xml_iarchive_impl.ipp | 1
   branches/proto/v4/boost/archive/impl/xml_wiarchive_impl.ipp | 2
   branches/proto/v4/boost/archive/impl/xml_woarchive_impl.ipp | 7
   branches/proto/v4/boost/archive/iterators/escape.hpp | 1
   branches/proto/v4/boost/archive/iterators/istream_iterator.hpp | 1
   branches/proto/v4/boost/archive/shared_ptr_helper.hpp | 13
   branches/proto/v4/boost/archive/tmpdir.hpp | 1
   branches/proto/v4/boost/asio.hpp | 6
   branches/proto/v4/boost/asio/basic_socket.hpp | 6
   branches/proto/v4/boost/asio/buffer.hpp | 232
   branches/proto/v4/boost/asio/detail/reactive_serial_port_service.hpp | 9
   branches/proto/v4/boost/asio/detail/reactive_socket_service.hpp | 31
   branches/proto/v4/boost/asio/detail/socket_types.hpp | 5
   branches/proto/v4/boost/asio/detail/win_iocp_handle_service.hpp | 66
   branches/proto/v4/boost/asio/detail/win_iocp_serial_port_service.hpp | 2
   branches/proto/v4/boost/asio/detail/win_iocp_socket_service.hpp | 34
   branches/proto/v4/boost/asio/handler_alloc_hook.hpp | 2
   branches/proto/v4/boost/asio/impl/read_until.ipp | 374
   branches/proto/v4/boost/asio/impl/serial_port_base.ipp | 16
   branches/proto/v4/boost/asio/io_service.hpp | 32
   branches/proto/v4/boost/asio/local/basic_endpoint.hpp | 2
   branches/proto/v4/boost/asio/read.hpp | 6
   branches/proto/v4/boost/asio/read_until.hpp | 433
   branches/proto/v4/boost/asio/ssl/detail/openssl_init.hpp | 7
   branches/proto/v4/boost/asio/version.hpp | 2
   branches/proto/v4/boost/asio/write.hpp | 11
   branches/proto/v4/boost/circular_buffer.hpp | 12
   branches/proto/v4/boost/circular_buffer/base.hpp | 77
   branches/proto/v4/boost/circular_buffer/debug.hpp | 2
   branches/proto/v4/boost/circular_buffer/details.hpp | 68
   branches/proto/v4/boost/circular_buffer/space_optimized.hpp | 4
   branches/proto/v4/boost/circular_buffer_fwd.hpp | 2
   branches/proto/v4/boost/concept/detail/general.hpp | 12
   branches/proto/v4/boost/concept/detail/msvc.hpp | 25
   branches/proto/v4/boost/config/compiler/pgi.hpp | 2
   branches/proto/v4/boost/config/compiler/sunpro_cc.hpp | 2
   branches/proto/v4/boost/config/platform/bsd.hpp | 14
   branches/proto/v4/boost/config/stdlib/libstdcpp3.hpp | 9
   branches/proto/v4/boost/date_time/compiler_config.hpp | 2
   branches/proto/v4/boost/date_time/gregorian/greg_weekday.hpp | 2
   branches/proto/v4/boost/date_time/gregorian_calendar.ipp | 2
   branches/proto/v4/boost/date_time/string_parse_tree.hpp | 90
   branches/proto/v4/boost/date_time/time.hpp | 4
   branches/proto/v4/boost/detail/allocator_utilities.hpp | 2
   branches/proto/v4/boost/detail/utf8_codecvt_facet.hpp | 21
   branches/proto/v4/boost/dynamic_bitset/config.hpp | 10
   branches/proto/v4/boost/dynamic_bitset/dynamic_bitset.hpp | 41
   branches/proto/v4/boost/exception.hpp | 6
   branches/proto/v4/boost/exception/enable_current_exception.hpp | 10
   branches/proto/v4/boost/exception/enable_error_info.hpp | 7
   branches/proto/v4/boost/exception/exception.hpp | 32
   branches/proto/v4/boost/exception/info.hpp | 20
   branches/proto/v4/boost/exception/info_tuple.hpp | 3
   branches/proto/v4/boost/exception/to_string.hpp | 16
   branches/proto/v4/boost/exception/to_string_stub.hpp | 42
   branches/proto/v4/boost/exception_ptr.hpp | 14
   branches/proto/v4/boost/filesystem/convenience.hpp | 21
   branches/proto/v4/boost/filesystem/operations.hpp | 71
   branches/proto/v4/boost/filesystem/path.hpp | 140
   branches/proto/v4/boost/function/function_base.hpp | 4
   branches/proto/v4/boost/fusion/container/generation/ignore.hpp | 2
   branches/proto/v4/boost/fusion/container/list/detail/at_impl.hpp | 85
   branches/proto/v4/boost/fusion/container/vector/vector_fwd.hpp | 2
   branches/proto/v4/boost/fusion/functional/invocation/invoke.hpp | 28
   branches/proto/v4/boost/fusion/functional/invocation/invoke_function_object.hpp | 24
   branches/proto/v4/boost/fusion/functional/invocation/invoke_procedure.hpp | 12
   branches/proto/v4/boost/fusion/sequence/comparison/detail/equal_to.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/detail/greater.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/detail/greater_equal.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/detail/less.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/detail/less_equal.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/detail/not_equal_to.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/equal_to.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/greater.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/greater_equal.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/less.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/less_equal.hpp | 2
   branches/proto/v4/boost/fusion/sequence/comparison/not_equal_to.hpp | 2
   branches/proto/v4/boost/fusion/sequence/io/detail/in.hpp | 2
   branches/proto/v4/boost/fusion/sequence/io/detail/manip.hpp | 2
   branches/proto/v4/boost/fusion/sequence/io/detail/out.hpp | 2
   branches/proto/v4/boost/fusion/sequence/io/in.hpp | 2
   branches/proto/v4/boost/fusion/sequence/io/out.hpp | 2
   branches/proto/v4/boost/fusion/support/detail/as_fusion_element.hpp | 2
   branches/proto/v4/boost/graph/detail/read_graphviz_spirit.hpp | 5
   branches/proto/v4/boost/graph/reverse_graph.hpp | 4
   branches/proto/v4/boost/integer.hpp | 383
   branches/proto/v4/boost/integer/integer_mask.hpp | 201
   branches/proto/v4/boost/integer_fwd.hpp | 78
   branches/proto/v4/boost/integer_traits.hpp | 75
   branches/proto/v4/boost/interprocess/allocators/adaptive_pool.hpp | 2
   branches/proto/v4/boost/interprocess/allocators/cached_adaptive_pool.hpp | 9
   branches/proto/v4/boost/interprocess/allocators/cached_node_allocator.hpp | 9
   branches/proto/v4/boost/interprocess/allocators/detail/node_pool.hpp | 2
   branches/proto/v4/boost/interprocess/allocators/node_allocator.hpp | 2
   branches/proto/v4/boost/interprocess/allocators/private_adaptive_pool.hpp | 4
   branches/proto/v4/boost/interprocess/allocators/private_node_allocator.hpp | 4
   branches/proto/v4/boost/interprocess/anonymous_shared_memory.hpp | 18
   branches/proto/v4/boost/interprocess/containers/deque.hpp | 24
   branches/proto/v4/boost/interprocess/containers/detail/flat_tree.hpp | 18
   branches/proto/v4/boost/interprocess/containers/detail/node_alloc_holder.hpp | 16
   branches/proto/v4/boost/interprocess/containers/detail/tree.hpp | 23
   branches/proto/v4/boost/interprocess/containers/flat_map.hpp | 103
   branches/proto/v4/boost/interprocess/containers/flat_set.hpp | 35
   branches/proto/v4/boost/interprocess/containers/list.hpp | 35
   branches/proto/v4/boost/interprocess/containers/map.hpp | 50
   branches/proto/v4/boost/interprocess/containers/set.hpp | 24
   branches/proto/v4/boost/interprocess/containers/slist.hpp | 19
   branches/proto/v4/boost/interprocess/containers/string.hpp | 27
   branches/proto/v4/boost/interprocess/containers/vector.hpp | 38
   branches/proto/v4/boost/interprocess/detail/algorithms.hpp | 93
   branches/proto/v4/boost/interprocess/detail/config_begin.hpp | 25
   branches/proto/v4/boost/interprocess/detail/config_end.hpp | 9
   branches/proto/v4/boost/interprocess/detail/file_wrapper.hpp | 2
   branches/proto/v4/boost/interprocess/detail/managed_memory_impl.hpp | 14
   branches/proto/v4/boost/interprocess/detail/managed_multi_shared_memory.hpp | 14
   branches/proto/v4/boost/interprocess/detail/managed_open_or_create_impl.hpp | 6
   branches/proto/v4/boost/interprocess/detail/math_functions.hpp | 220
   branches/proto/v4/boost/interprocess/detail/move.hpp | 30
   branches/proto/v4/boost/interprocess/detail/move_iterator.hpp | 4
   branches/proto/v4/boost/interprocess/detail/mpl.hpp | 1
   branches/proto/v4/boost/interprocess/detail/os_file_functions.hpp | 4
   branches/proto/v4/boost/interprocess/detail/utilities.hpp | 62
   branches/proto/v4/boost/interprocess/detail/win32_api.hpp | 5
   branches/proto/v4/boost/interprocess/detail/workaround.hpp | 9
   branches/proto/v4/boost/interprocess/file_mapping.hpp | 21
   branches/proto/v4/boost/interprocess/indexes/unordered_map_index.hpp | 4
   branches/proto/v4/boost/interprocess/ipc/message_queue.hpp | 3
   branches/proto/v4/boost/interprocess/managed_mapped_file.hpp | 29
   branches/proto/v4/boost/interprocess/managed_shared_memory.hpp | 32
   branches/proto/v4/boost/interprocess/managed_windows_shared_memory.hpp | 39
   branches/proto/v4/boost/interprocess/mapped_region.hpp | 29
   branches/proto/v4/boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp | 14
   branches/proto/v4/boost/interprocess/mem_algo/rbtree_best_fit.hpp | 10
   branches/proto/v4/boost/interprocess/segment_manager.hpp | 87
   branches/proto/v4/boost/interprocess/shared_memory_object.hpp | 22
   branches/proto/v4/boost/interprocess/smart_ptr/detail/shared_count.hpp | 5
   branches/proto/v4/boost/interprocess/smart_ptr/detail/sp_counted_base.hpp | 11
   branches/proto/v4/boost/interprocess/smart_ptr/enable_shared_from_this.hpp | 5
   branches/proto/v4/boost/interprocess/smart_ptr/shared_ptr.hpp | 74
   branches/proto/v4/boost/interprocess/smart_ptr/unique_ptr.hpp | 28
   branches/proto/v4/boost/interprocess/smart_ptr/weak_ptr.hpp | 5
   branches/proto/v4/boost/interprocess/sync/emulation/interprocess_condition.hpp | 10
   branches/proto/v4/boost/interprocess/sync/file_lock.hpp | 2
   branches/proto/v4/boost/interprocess/sync/interprocess_condition.hpp | 2
   branches/proto/v4/boost/interprocess/sync/interprocess_upgradable_mutex.hpp | 5
   branches/proto/v4/boost/interprocess/sync/named_condition.hpp | 9
   branches/proto/v4/boost/interprocess/sync/named_recursive_mutex.hpp | 4
   branches/proto/v4/boost/interprocess/sync/named_upgradable_mutex.hpp | 5
   branches/proto/v4/boost/interprocess/sync/scoped_lock.hpp | 17
   branches/proto/v4/boost/interprocess/sync/sharable_lock.hpp | 18
   branches/proto/v4/boost/interprocess/sync/upgradable_lock.hpp | 12
   branches/proto/v4/boost/interprocess/windows_shared_memory.hpp | 6
   branches/proto/v4/boost/intrusive/avltree_algorithms.hpp | 3
   branches/proto/v4/boost/intrusive/circular_list_algorithms.hpp | 1
   branches/proto/v4/boost/intrusive/circular_slist_algorithms.hpp | 1
   branches/proto/v4/boost/intrusive/detail/common_slist_algorithms.hpp | 5
   branches/proto/v4/boost/intrusive/detail/generic_hook.hpp | 53
   branches/proto/v4/boost/intrusive/detail/hashtable_node.hpp | 12
   branches/proto/v4/boost/intrusive/detail/list_node.hpp | 1
   branches/proto/v4/boost/intrusive/detail/parent_from_member.hpp | 23
   branches/proto/v4/boost/intrusive/detail/slist_node.hpp | 1
   branches/proto/v4/boost/intrusive/detail/tree_algorithms.hpp | 7
   branches/proto/v4/boost/intrusive/detail/utilities.hpp | 21
   branches/proto/v4/boost/intrusive/hashtable.hpp | 199
   branches/proto/v4/boost/intrusive/intrusive_fwd.hpp | 17
   branches/proto/v4/boost/intrusive/linear_slist_algorithms.hpp | 1
   branches/proto/v4/boost/intrusive/options.hpp | 94
   branches/proto/v4/boost/intrusive/rbtree_algorithms.hpp | 2
   branches/proto/v4/boost/intrusive/sgtree_algorithms.hpp | 2
   branches/proto/v4/boost/intrusive/slist.hpp | 2
   branches/proto/v4/boost/intrusive/splaytree_algorithms.hpp | 2
   branches/proto/v4/boost/intrusive/unordered_set.hpp | 18
   branches/proto/v4/boost/intrusive/unordered_set_hook.hpp | 29
   branches/proto/v4/boost/iostreams/detail/config/disable_warnings.hpp | 4
   branches/proto/v4/boost/iostreams/detail/config/rtl.hpp | 4
   branches/proto/v4/boost/iostreams/device/file.hpp | 8
   branches/proto/v4/boost/iostreams/device/file_descriptor.hpp | 240
   branches/proto/v4/boost/iostreams/device/mapped_file.hpp | 562
   branches/proto/v4/boost/lambda/algorithm.hpp | 2
   branches/proto/v4/boost/lambda/bind.hpp | 2
   branches/proto/v4/boost/lambda/casts.hpp | 2
   branches/proto/v4/boost/lambda/construct.hpp | 2
   branches/proto/v4/boost/lambda/control_structures.hpp | 2
   branches/proto/v4/boost/lambda/core.hpp | 2
   branches/proto/v4/boost/lambda/detail/actions.hpp | 2
   branches/proto/v4/boost/lambda/detail/arity_code.hpp | 2
   branches/proto/v4/boost/lambda/detail/bind_functions.hpp | 2
   branches/proto/v4/boost/lambda/detail/control_constructs_common.hpp | 2
   branches/proto/v4/boost/lambda/detail/control_structures_impl.hpp | 2
   branches/proto/v4/boost/lambda/detail/function_adaptors.hpp | 2
   branches/proto/v4/boost/lambda/detail/is_instance_of.hpp | 2
   branches/proto/v4/boost/lambda/detail/lambda_config.hpp | 2
   branches/proto/v4/boost/lambda/detail/lambda_functor_base.hpp | 2
   branches/proto/v4/boost/lambda/detail/lambda_functors.hpp | 2
   branches/proto/v4/boost/lambda/detail/lambda_fwd.hpp | 2
   branches/proto/v4/boost/lambda/detail/lambda_traits.hpp | 2
   branches/proto/v4/boost/lambda/detail/member_ptr.hpp | 2
   branches/proto/v4/boost/lambda/detail/operator_actions.hpp | 2
   branches/proto/v4/boost/lambda/detail/operator_lambda_func_base.hpp | 2
   branches/proto/v4/boost/lambda/detail/operator_return_type_traits.hpp | 2
   branches/proto/v4/boost/lambda/detail/operators.hpp | 2
   branches/proto/v4/boost/lambda/detail/ret.hpp | 2
   branches/proto/v4/boost/lambda/detail/return_type_traits.hpp | 2
   branches/proto/v4/boost/lambda/detail/select_functions.hpp | 2
   branches/proto/v4/boost/lambda/exceptions.hpp | 2
   branches/proto/v4/boost/lambda/if.hpp | 2
   branches/proto/v4/boost/lambda/lambda.hpp | 2
   branches/proto/v4/boost/lambda/loops.hpp | 2
   branches/proto/v4/boost/lambda/numeric.hpp | 2
   branches/proto/v4/boost/lambda/switch.hpp | 2
   branches/proto/v4/boost/limits.hpp | 46
   branches/proto/v4/boost/math/common_factor_rt.hpp | 4
   branches/proto/v4/boost/math/concepts/real_concept.hpp | 2
   branches/proto/v4/boost/math/distributions/detail/generic_quantile.hpp | 4
   branches/proto/v4/boost/math/distributions/non_central_chi_squared.hpp | 4
   branches/proto/v4/boost/math/distributions/poisson.hpp | 2
   branches/proto/v4/boost/math/policies/error_handling.hpp | 62
   branches/proto/v4/boost/math/policies/policy.hpp | 16
   branches/proto/v4/boost/math/special_functions/detail/t_distribution_inv.hpp | 6
   branches/proto/v4/boost/math/special_functions/fpclassify.hpp | 16
   branches/proto/v4/boost/math/special_functions/gamma.hpp | 39
   branches/proto/v4/boost/math/special_functions/lanczos.hpp | 4
   branches/proto/v4/boost/math/special_functions/log1p.hpp | 192
   branches/proto/v4/boost/math/special_functions/next.hpp | 6
   branches/proto/v4/boost/math/special_functions/pow.hpp | 73
   branches/proto/v4/boost/math/tools/config.hpp | 2
   branches/proto/v4/boost/math/tools/rational.hpp | 122
   branches/proto/v4/boost/math/tr1.hpp | 1104
   branches/proto/v4/boost/mpi/collectives/scatter.hpp | 2
   branches/proto/v4/boost/mpi/communicator.hpp | 18
   branches/proto/v4/boost/mpi/detail/content_oarchive.hpp | 2
   branches/proto/v4/boost/mpi/detail/forward_iprimitive.hpp | 26
   branches/proto/v4/boost/mpi/detail/forward_oprimitive.hpp | 26
   branches/proto/v4/boost/mpi/detail/forward_skeleton_iarchive.hpp | 25
   branches/proto/v4/boost/mpi/detail/forward_skeleton_oarchive.hpp | 25
   branches/proto/v4/boost/mpi/detail/ignore_skeleton_oarchive.hpp | 17
   branches/proto/v4/boost/mpi/detail/mpi_datatype_cache.hpp | 8
   branches/proto/v4/boost/mpi/detail/mpi_datatype_oarchive.hpp | 1
   branches/proto/v4/boost/mpi/detail/text_skeleton_oarchive.hpp | 5
   branches/proto/v4/boost/mpi/packed_iarchive.hpp | 1
   branches/proto/v4/boost/mpi/packed_oarchive.hpp | 1
   branches/proto/v4/boost/mpi/skeleton_and_content.hpp | 3
   branches/proto/v4/boost/mpl/aux_/begin_end_impl.hpp | 4
   branches/proto/v4/boost/mpl/aux_/push_back_impl.hpp | 26
   branches/proto/v4/boost/mpl/aux_/push_front_impl.hpp | 26
   branches/proto/v4/boost/mpl/aux_/traits_lambda_spec.hpp | 15
   branches/proto/v4/boost/mpl/for_each.hpp | 6
   branches/proto/v4/boost/mpl/min_max.hpp | 8
   branches/proto/v4/boost/mpl/vector/aux_/front.hpp | 8
   branches/proto/v4/boost/mpl/zip_view.hpp | 6
   branches/proto/v4/boost/multi_index/composite_key.hpp | 2
   branches/proto/v4/boost/multi_index/detail/access_specifier.hpp | 2
   branches/proto/v4/boost/multi_index/detail/adl_swap.hpp | 2
   branches/proto/v4/boost/multi_index/detail/archive_constructed.hpp | 2
   branches/proto/v4/boost/multi_index/detail/auto_space.hpp | 2
   branches/proto/v4/boost/multi_index/detail/base_type.hpp | 2
   branches/proto/v4/boost/multi_index/detail/bidir_node_iterator.hpp | 12
   branches/proto/v4/boost/multi_index/detail/bucket_array.hpp | 4
   branches/proto/v4/boost/multi_index/detail/converter.hpp | 2
   branches/proto/v4/boost/multi_index/detail/copy_map.hpp | 2
   branches/proto/v4/boost/multi_index/detail/duplicates_iterator.hpp | 2
   branches/proto/v4/boost/multi_index/detail/has_tag.hpp | 2
   branches/proto/v4/boost/multi_index/detail/hash_index_args.hpp | 2
   branches/proto/v4/boost/multi_index/detail/hash_index_iterator.hpp | 12
   branches/proto/v4/boost/multi_index/detail/hash_index_node.hpp | 10
   branches/proto/v4/boost/multi_index/detail/header_holder.hpp | 2
   branches/proto/v4/boost/multi_index/detail/index_base.hpp | 2
   branches/proto/v4/boost/multi_index/detail/index_loader.hpp | 2
   branches/proto/v4/boost/multi_index/detail/index_matcher.hpp | 2
   branches/proto/v4/boost/multi_index/detail/index_node_base.hpp | 2
   branches/proto/v4/boost/multi_index/detail/index_saver.hpp | 2
   branches/proto/v4/boost/multi_index/detail/invariant_assert.hpp | 2
   branches/proto/v4/boost/multi_index/detail/is_index_list.hpp | 2
   branches/proto/v4/boost/multi_index/detail/iter_adaptor.hpp | 2
   branches/proto/v4/boost/multi_index/detail/modify_key_adaptor.hpp | 2
   branches/proto/v4/boost/multi_index/detail/msvc_index_specifier.hpp | 2
   branches/proto/v4/boost/multi_index/detail/no_duplicate_tags.hpp | 2
   branches/proto/v4/boost/multi_index/detail/node_type.hpp | 2
   branches/proto/v4/boost/multi_index/detail/ord_index_args.hpp | 2
   branches/proto/v4/boost/multi_index/detail/ord_index_node.hpp | 6
   branches/proto/v4/boost/multi_index/detail/ord_index_ops.hpp | 2
   branches/proto/v4/boost/multi_index/detail/prevent_eti.hpp | 2
   branches/proto/v4/boost/multi_index/detail/rnd_index_loader.hpp | 4
   branches/proto/v4/boost/multi_index/detail/rnd_index_node.hpp | 6
   branches/proto/v4/boost/multi_index/detail/rnd_index_ops.hpp | 2
   branches/proto/v4/boost/multi_index/detail/rnd_index_ptr_array.hpp | 4
   branches/proto/v4/boost/multi_index/detail/rnd_node_iterator.hpp | 24
   branches/proto/v4/boost/multi_index/detail/safe_ctr_proxy.hpp | 2
   branches/proto/v4/boost/multi_index/detail/safe_mode.hpp | 2
   branches/proto/v4/boost/multi_index/detail/scope_guard.hpp | 2
   branches/proto/v4/boost/multi_index/detail/seq_index_node.hpp | 6
   branches/proto/v4/boost/multi_index/detail/seq_index_ops.hpp | 2
   branches/proto/v4/boost/multi_index/detail/uintptr_type.hpp | 2
   branches/proto/v4/boost/multi_index/detail/unbounded.hpp | 2
   branches/proto/v4/boost/multi_index/detail/value_compare.hpp | 2
   branches/proto/v4/boost/multi_index/global_fun.hpp | 2
   branches/proto/v4/boost/multi_index/hashed_index.hpp | 148
   branches/proto/v4/boost/multi_index/hashed_index_fwd.hpp | 2
   branches/proto/v4/boost/multi_index/identity.hpp | 2
   branches/proto/v4/boost/multi_index/identity_fwd.hpp | 2
   branches/proto/v4/boost/multi_index/indexed_by.hpp | 2
   branches/proto/v4/boost/multi_index/key_extractors.hpp | 2
   branches/proto/v4/boost/multi_index/mem_fun.hpp | 2
   branches/proto/v4/boost/multi_index/member.hpp | 2
   branches/proto/v4/boost/multi_index/ordered_index.hpp | 2
   branches/proto/v4/boost/multi_index/ordered_index_fwd.hpp | 2
   branches/proto/v4/boost/multi_index/random_access_index.hpp | 2
   branches/proto/v4/boost/multi_index/random_access_index_fwd.hpp | 2
   branches/proto/v4/boost/multi_index/safe_mode_errors.hpp | 2
   branches/proto/v4/boost/multi_index/sequenced_index.hpp | 2
   branches/proto/v4/boost/multi_index/sequenced_index_fwd.hpp | 2
   branches/proto/v4/boost/multi_index/tag.hpp | 2
   branches/proto/v4/boost/multi_index_container.hpp | 10
   branches/proto/v4/boost/multi_index_container_fwd.hpp | 2
   branches/proto/v4/boost/numeric/ublas/vector_expression.hpp | 2
   branches/proto/v4/boost/progress.hpp | 2
   branches/proto/v4/boost/ptr_container/clone_allocator.hpp | 2
   branches/proto/v4/boost/ptr_container/detail/associative_ptr_container.hpp | 64
   branches/proto/v4/boost/ptr_container/detail/map_iterator.hpp | 9
   branches/proto/v4/boost/ptr_container/detail/reversible_ptr_container.hpp | 95
   branches/proto/v4/boost/ptr_container/detail/serialize_ptr_map_adapter.hpp | 6
   branches/proto/v4/boost/ptr_container/detail/serialize_reversible_cont.hpp | 10
   branches/proto/v4/boost/ptr_container/detail/serialize_xml_names.hpp | 6
   branches/proto/v4/boost/ptr_container/ptr_array.hpp | 29
   branches/proto/v4/boost/ptr_container/ptr_circular_buffer.hpp | 289
   branches/proto/v4/boost/ptr_container/ptr_container.hpp | 1
   branches/proto/v4/boost/ptr_container/ptr_deque.hpp | 2
   branches/proto/v4/boost/ptr_container/ptr_list.hpp | 20
   branches/proto/v4/boost/ptr_container/ptr_map.hpp | 14
   branches/proto/v4/boost/ptr_container/ptr_map_adapter.hpp | 39
   branches/proto/v4/boost/ptr_container/ptr_sequence_adapter.hpp | 87
   branches/proto/v4/boost/ptr_container/ptr_set.hpp | 8
   branches/proto/v4/boost/ptr_container/ptr_set_adapter.hpp | 16
   branches/proto/v4/boost/ptr_container/ptr_unordered_map.hpp | 14
   branches/proto/v4/boost/ptr_container/ptr_unordered_set.hpp | 12
   branches/proto/v4/boost/ptr_container/ptr_vector.hpp | 2
   branches/proto/v4/boost/ptr_container/serialize_ptr_array.hpp | 4
   branches/proto/v4/boost/ptr_container/serialize_ptr_vector.hpp | 2
   branches/proto/v4/boost/python/object_core.hpp | 67
   branches/proto/v4/boost/python/ptr.hpp | 2
   branches/proto/v4/boost/random/detail/signed_unsigned_tools.hpp | 77
   branches/proto/v4/boost/random/uniform_int.hpp | 5
   branches/proto/v4/boost/range/as_literal.hpp | 7
   branches/proto/v4/boost/range/begin.hpp | 8
   branches/proto/v4/boost/range/end.hpp | 8
   branches/proto/v4/boost/range/iterator_range.hpp | 12
   branches/proto/v4/boost/range/sub_range.hpp | 14
   branches/proto/v4/boost/rational.hpp | 4
   branches/proto/v4/boost/ref.hpp | 8
   branches/proto/v4/boost/regex/v4/cpp_regex_traits.hpp | 5
   branches/proto/v4/boost/serialization/array.hpp | 115
   branches/proto/v4/boost/serialization/collections_load_imp.hpp | 69
   branches/proto/v4/boost/serialization/detail/shared_count_132.hpp | 7
   branches/proto/v4/boost/serialization/export.hpp | 26
   branches/proto/v4/boost/serialization/extended_type_info.hpp | 1
   branches/proto/v4/boost/serialization/factory.hpp | 1
   branches/proto/v4/boost/serialization/hash_map.hpp | 4
   branches/proto/v4/boost/serialization/hash_set.hpp | 4
   branches/proto/v4/boost/serialization/map.hpp | 4
   branches/proto/v4/boost/serialization/serialization.hpp | 7
   branches/proto/v4/boost/serialization/set.hpp | 4
   branches/proto/v4/boost/serialization/shared_ptr.hpp | 1
   branches/proto/v4/boost/serialization/shared_ptr_132.hpp | 1
   branches/proto/v4/boost/serialization/singleton.hpp | 11
   branches/proto/v4/boost/serialization/slist.hpp | 9
   branches/proto/v4/boost/serialization/utility.hpp | 4
   branches/proto/v4/boost/serialization/valarray.hpp | 2
   branches/proto/v4/boost/serialization/vector.hpp | 20
   branches/proto/v4/boost/serialization/void_cast.hpp | 7
   branches/proto/v4/boost/serialization/void_cast_fwd.hpp | 1
   branches/proto/v4/boost/shared_ptr.hpp | 139
   branches/proto/v4/boost/signals/signal1.hpp | 2
   branches/proto/v4/boost/signals/signal10.hpp | 2
   branches/proto/v4/boost/signals/signal2.hpp | 2
   branches/proto/v4/boost/signals/signal3.hpp | 2
   branches/proto/v4/boost/signals/signal4.hpp | 2
   branches/proto/v4/boost/signals/signal5.hpp | 2
   branches/proto/v4/boost/signals/signal6.hpp | 2
   branches/proto/v4/boost/signals/signal7.hpp | 2
   branches/proto/v4/boost/signals/signal8.hpp | 2
   branches/proto/v4/boost/signals/signal9.hpp | 2
   branches/proto/v4/boost/smart_cast.hpp | 1
   branches/proto/v4/boost/spirit.hpp | 4
   branches/proto/v4/boost/spirit/actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/assign_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/assign_key_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/clear_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/decrement_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/erase_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/increment_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/insert_at_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/insert_key_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/push_back_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/push_front_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/ref_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/ref_const_ref_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/ref_const_ref_const_ref_a.hpp | 4
   branches/proto/v4/boost/spirit/actor/ref_const_ref_value_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/ref_value_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/swap_actor.hpp | 4
   branches/proto/v4/boost/spirit/actor/typeof.hpp | 4
   branches/proto/v4/boost/spirit/attribute.hpp | 4
   branches/proto/v4/boost/spirit/attribute/closure.hpp | 4
   branches/proto/v4/boost/spirit/attribute/closure_context.hpp | 4
   branches/proto/v4/boost/spirit/attribute/closure_fwd.hpp | 4
   branches/proto/v4/boost/spirit/attribute/parametric.hpp | 4
   branches/proto/v4/boost/spirit/attribute/typeof.hpp | 4
   branches/proto/v4/boost/spirit/core.hpp | 4
   branches/proto/v4/boost/spirit/core/assert.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/actions.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/alternative.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/composite.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/difference.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/directives.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/epsilon.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/exclusive_or.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/intersection.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/kleene_star.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/list.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/no_actions.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/operators.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/optional.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/positive.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/sequence.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/sequential_and.hpp | 4
   branches/proto/v4/boost/spirit/core/composite/sequential_or.hpp | 4
   branches/proto/v4/boost/spirit/core/config.hpp | 4
   branches/proto/v4/boost/spirit/core/match.hpp | 4
   branches/proto/v4/boost/spirit/core/nil.hpp | 4
   branches/proto/v4/boost/spirit/core/non_terminal/grammar.hpp | 4
   branches/proto/v4/boost/spirit/core/non_terminal/parser_context.hpp | 4
   branches/proto/v4/boost/spirit/core/non_terminal/parser_id.hpp | 4
   branches/proto/v4/boost/spirit/core/non_terminal/rule.hpp | 4
   branches/proto/v4/boost/spirit/core/non_terminal/subrule.hpp | 4
   branches/proto/v4/boost/spirit/core/non_terminal/subrule_fwd.hpp | 4
   branches/proto/v4/boost/spirit/core/parser.hpp | 4
   branches/proto/v4/boost/spirit/core/primitives/numerics.hpp | 4
   branches/proto/v4/boost/spirit/core/primitives/numerics_fwd.hpp | 4
   branches/proto/v4/boost/spirit/core/primitives/primitives.hpp | 4
   branches/proto/v4/boost/spirit/core/safe_bool.hpp | 4
   branches/proto/v4/boost/spirit/core/scanner/scanner.hpp | 4
   branches/proto/v4/boost/spirit/core/scanner/scanner_fwd.hpp | 4
   branches/proto/v4/boost/spirit/core/scanner/skipper.hpp | 4
   branches/proto/v4/boost/spirit/core/scanner/skipper_fwd.hpp | 4
   branches/proto/v4/boost/spirit/core/typeof.hpp | 4
   branches/proto/v4/boost/spirit/debug.hpp | 4
   branches/proto/v4/boost/spirit/debug/debug_node.hpp | 4
   branches/proto/v4/boost/spirit/debug/minimal.hpp | 4
   branches/proto/v4/boost/spirit/debug/parser_names.hpp | 4
   branches/proto/v4/boost/spirit/debug/typeof.hpp | 4
   branches/proto/v4/boost/spirit/dynamic.hpp | 4
   branches/proto/v4/boost/spirit/dynamic/for.hpp | 4
   branches/proto/v4/boost/spirit/dynamic/if.hpp | 4
   branches/proto/v4/boost/spirit/dynamic/lazy.hpp | 4
   branches/proto/v4/boost/spirit/dynamic/rule_alias.hpp | 4
   branches/proto/v4/boost/spirit/dynamic/select.hpp | 4
   branches/proto/v4/boost/spirit/dynamic/stored_rule.hpp | 4
   branches/proto/v4/boost/spirit/dynamic/stored_rule_fwd.hpp | 4
   branches/proto/v4/boost/spirit/dynamic/switch.hpp | 4
   branches/proto/v4/boost/spirit/dynamic/typeof.hpp | 4
   branches/proto/v4/boost/spirit/dynamic/while.hpp | 4
   branches/proto/v4/boost/spirit/error_handling.hpp | 4
   branches/proto/v4/boost/spirit/error_handling/exceptions.hpp | 4
   branches/proto/v4/boost/spirit/error_handling/exceptions_fwd.hpp | 4
   branches/proto/v4/boost/spirit/error_handling/typeof.hpp | 4
   branches/proto/v4/boost/spirit/home/classic/core/non_terminal/impl/static.hpp | 42
   branches/proto/v4/boost/spirit/home/classic/phoenix/closures.hpp | 2
   branches/proto/v4/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp | 151
   branches/proto/v4/boost/spirit/home/karma/action/action.hpp | 11
   branches/proto/v4/boost/spirit/home/karma/auxiliary.hpp | 1
   branches/proto/v4/boost/spirit/home/karma/auxiliary/eps.hpp | 28
   branches/proto/v4/boost/spirit/home/karma/auxiliary/functor_director.hpp | 4
   branches/proto/v4/boost/spirit/home/karma/auxiliary/lazy.hpp | 4
   branches/proto/v4/boost/spirit/home/karma/auxiliary/meta_grammar.hpp | 3
   branches/proto/v4/boost/spirit/home/karma/auxiliary/none.hpp | 4
   branches/proto/v4/boost/spirit/home/karma/binary/binary.hpp | 8
   branches/proto/v4/boost/spirit/home/karma/binary/padding.hpp | 6
   branches/proto/v4/boost/spirit/home/karma/char/char.hpp | 138
   branches/proto/v4/boost/spirit/home/karma/char/space.hpp | 52
   branches/proto/v4/boost/spirit/home/karma/detail/output_iterator.hpp | 12
   branches/proto/v4/boost/spirit/home/karma/directive/center_alignment.hpp | 116
   branches/proto/v4/boost/spirit/home/karma/directive/delimit.hpp | 60
   branches/proto/v4/boost/spirit/home/karma/directive/left_alignment.hpp | 116
   branches/proto/v4/boost/spirit/home/karma/directive/right_alignment.hpp | 116
   branches/proto/v4/boost/spirit/home/karma/directive/verbatim.hpp | 6
   branches/proto/v4/boost/spirit/home/karma/nonterminal/grammar.hpp | 94
   branches/proto/v4/boost/spirit/home/karma/nonterminal/nonterminal_director.hpp | 8
   branches/proto/v4/boost/spirit/home/karma/nonterminal/rule.hpp | 6
   branches/proto/v4/boost/spirit/home/karma/numeric/int.hpp | 74
   branches/proto/v4/boost/spirit/home/karma/numeric/real.hpp | 80
   branches/proto/v4/boost/spirit/home/karma/numeric/uint.hpp | 62
   branches/proto/v4/boost/spirit/home/karma/operator/alternative.hpp | 6
   branches/proto/v4/boost/spirit/home/karma/operator/detail/alternative.hpp | 19
   branches/proto/v4/boost/spirit/home/karma/operator/karma-alt/alternative.hpp | 6
   branches/proto/v4/boost/spirit/home/karma/operator/kleene.hpp | 6
   branches/proto/v4/boost/spirit/home/karma/operator/list.hpp | 8
   branches/proto/v4/boost/spirit/home/karma/operator/optional.hpp | 6
   branches/proto/v4/boost/spirit/home/karma/operator/plus.hpp | 6
   branches/proto/v4/boost/spirit/home/karma/operator/sequence.hpp | 6
   branches/proto/v4/boost/spirit/home/karma/stream/stream.hpp | 114
   branches/proto/v4/boost/spirit/home/karma/string/lit.hpp | 114
   branches/proto/v4/boost/spirit/home/karma/what.hpp | 2
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp | 9
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp | 12
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_generate_static.hpp | 556
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp | 5
   branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_static_functor.hpp | 10
   branches/proto/v4/boost/spirit/home/lex/lexer/terminal_director.hpp | 4
   branches/proto/v4/boost/spirit/home/lex/qi/state/state_switcher.hpp | 10
   branches/proto/v4/boost/spirit/home/lex/qi/utility/plain_token.hpp | 4
   branches/proto/v4/boost/spirit/home/lex/tokenize_and_parse.hpp | 62
   branches/proto/v4/boost/spirit/home/phoenix/detail/type_deduction.hpp | 2
   branches/proto/v4/boost/spirit/home/phoenix/statement/detail/switch.hpp | 6
   branches/proto/v4/boost/spirit/home/phoenix/statement/for.hpp | 2
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_equal_range.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_find.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_lower_bound.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove_if.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_reverse.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_sort.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_unique.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_upper_bound.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_map.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_set.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_list.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_map.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_set.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_list_fwd.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_map_fwd.hpp | 8
   branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_set_fwd.hpp | 12
   branches/proto/v4/boost/spirit/home/phoenix/stl/container/container.hpp | 16
   branches/proto/v4/boost/spirit/home/qi/action/action.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/auxiliary/eps.hpp | 8
   branches/proto/v4/boost/spirit/home/qi/auxiliary/functor_director.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/auxiliary/lazy.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/auxiliary/none.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/auxiliary/primitives.hpp | 34
   branches/proto/v4/boost/spirit/home/qi/binary/binary.hpp | 8
   branches/proto/v4/boost/spirit/home/qi/char/char.hpp | 37
   branches/proto/v4/boost/spirit/home/qi/char/char_class.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/char/char_parser.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/detail/expect_function.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/directive/lexeme.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/directive/omit.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/directive/raw.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/nonterminal/grammar.hpp | 175
   branches/proto/v4/boost/spirit/home/qi/nonterminal/nonterminal_director.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/nonterminal/rule.hpp | 15
   branches/proto/v4/boost/spirit/home/qi/numeric/int.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/numeric/real.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/numeric/uint.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/operator/alternative.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/operator/and_predicate.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/operator/difference.hpp | 8
   branches/proto/v4/boost/spirit/home/qi/operator/kleene.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/operator/list.hpp | 8
   branches/proto/v4/boost/spirit/home/qi/operator/not_predicate.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/operator/optional.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/operator/permutation.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/operator/plus.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/operator/sequence_base.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/operator/sequential_or.hpp | 6
   branches/proto/v4/boost/spirit/home/qi/stream/detail/match_manip.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/stream/stream.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/string/lit.hpp | 18
   branches/proto/v4/boost/spirit/home/qi/string/symbols.hpp | 4
   branches/proto/v4/boost/spirit/home/qi/what.hpp | 2
   branches/proto/v4/boost/spirit/home/support/char_class/iso8859_1.hpp | 3
   branches/proto/v4/boost/spirit/home/support/detail/action_dispatch.hpp | 27
   branches/proto/v4/boost/spirit/home/support/detail/hold_any.hpp | 2
   branches/proto/v4/boost/spirit/home/support/detail/integer/endian.hpp | 10
   branches/proto/v4/boost/spirit/home/support/detail/what_function.hpp | 8
   branches/proto/v4/boost/spirit/iterator.hpp | 4
   branches/proto/v4/boost/spirit/iterator/file_iterator.hpp | 4
   branches/proto/v4/boost/spirit/iterator/file_iterator_fwd.hpp | 4
   branches/proto/v4/boost/spirit/iterator/fixed_size_queue.hpp | 4
   branches/proto/v4/boost/spirit/iterator/multi_pass.hpp | 4
   branches/proto/v4/boost/spirit/iterator/multi_pass_fwd.hpp | 4
   branches/proto/v4/boost/spirit/iterator/position_iterator.hpp | 4
   branches/proto/v4/boost/spirit/iterator/position_iterator_fwd.hpp | 4
   branches/proto/v4/boost/spirit/iterator/typeof.hpp | 4
   branches/proto/v4/boost/spirit/meta.hpp | 4
   branches/proto/v4/boost/spirit/meta/as_parser.hpp | 4
   branches/proto/v4/boost/spirit/meta/fundamental.hpp | 4
   branches/proto/v4/boost/spirit/meta/parser_traits.hpp | 4
   branches/proto/v4/boost/spirit/meta/refactoring.hpp | 4
   branches/proto/v4/boost/spirit/meta/traverse.hpp | 4
   branches/proto/v4/boost/spirit/phoenix.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/actor.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/binders.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/casts.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/closures.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/composite.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/functions.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/new.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/operators.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/primitives.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/special_ops.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/statements.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/tuple_helpers.hpp | 4
   branches/proto/v4/boost/spirit/phoenix/tuples.hpp | 4
   branches/proto/v4/boost/spirit/symbols.hpp | 4
   branches/proto/v4/boost/spirit/symbols/symbols.hpp | 4
   branches/proto/v4/boost/spirit/symbols/symbols_fwd.hpp | 4
   branches/proto/v4/boost/spirit/symbols/typeof.hpp | 4
   branches/proto/v4/boost/spirit/tree/ast.hpp | 4
   branches/proto/v4/boost/spirit/tree/ast_fwd.hpp | 4
   branches/proto/v4/boost/spirit/tree/common.hpp | 4
   branches/proto/v4/boost/spirit/tree/common_fwd.hpp | 4
   branches/proto/v4/boost/spirit/tree/parse_tree.hpp | 4
   branches/proto/v4/boost/spirit/tree/parse_tree_fwd.hpp | 4
   branches/proto/v4/boost/spirit/tree/parse_tree_utils.hpp | 4
   branches/proto/v4/boost/spirit/tree/tree_to_xml.hpp | 4
   branches/proto/v4/boost/spirit/tree/typeof.hpp | 4
   branches/proto/v4/boost/spirit/utility.hpp | 4
   branches/proto/v4/boost/spirit/utility/chset.hpp | 4
   branches/proto/v4/boost/spirit/utility/chset_operators.hpp | 4
   branches/proto/v4/boost/spirit/utility/confix.hpp | 4
   branches/proto/v4/boost/spirit/utility/confix_fwd.hpp | 4
   branches/proto/v4/boost/spirit/utility/distinct.hpp | 4
   branches/proto/v4/boost/spirit/utility/distinct_fwd.hpp | 4
   branches/proto/v4/boost/spirit/utility/escape_char.hpp | 4
   branches/proto/v4/boost/spirit/utility/escape_char_fwd.hpp | 4
   branches/proto/v4/boost/spirit/utility/flush_multi_pass.hpp | 4
   branches/proto/v4/boost/spirit/utility/functor_parser.hpp | 4
   branches/proto/v4/boost/spirit/utility/grammar_def.hpp | 4
   branches/proto/v4/boost/spirit/utility/grammar_def_fwd.hpp | 4
   branches/proto/v4/boost/spirit/utility/lists.hpp | 4
   branches/proto/v4/boost/spirit/utility/lists_fwd.hpp | 4
   branches/proto/v4/boost/spirit/utility/loops.hpp | 4
   branches/proto/v4/boost/spirit/utility/regex.hpp | 4
   branches/proto/v4/boost/spirit/utility/rule_parser.hpp | 4
   branches/proto/v4/boost/spirit/utility/scoped_lock.hpp | 4
   branches/proto/v4/boost/spirit/utility/typeof.hpp | 4
   branches/proto/v4/boost/spirit/version.hpp | 4
   branches/proto/v4/boost/system/error_code.hpp | 38
   branches/proto/v4/boost/system/system_error.hpp | 14
   branches/proto/v4/boost/test/auto_unit_test.hpp | 2
   branches/proto/v4/boost/test/debug.hpp | 2
   branches/proto/v4/boost/test/debug_config.hpp | 2
   branches/proto/v4/boost/test/detail/config.hpp | 35
   branches/proto/v4/boost/test/detail/enable_warnings.hpp | 3
   branches/proto/v4/boost/test/detail/fwd_decl.hpp | 3
   branches/proto/v4/boost/test/detail/global_typedef.hpp | 2
   branches/proto/v4/boost/test/detail/log_level.hpp | 2
   branches/proto/v4/boost/test/detail/suppress_warnings.hpp | 3
   branches/proto/v4/boost/test/detail/unit_test_parameters.hpp | 2
   branches/proto/v4/boost/test/detail/workaround.hpp | 2
   branches/proto/v4/boost/test/exception_safety.hpp | 4
   branches/proto/v4/boost/test/execution_monitor.hpp | 2
   branches/proto/v4/boost/test/floating_point_comparison.hpp | 2
   branches/proto/v4/boost/test/framework.hpp | 2
   branches/proto/v4/boost/test/impl/compiler_log_formatter.ipp | 11
   branches/proto/v4/boost/test/impl/cpp_main.ipp | 2
   branches/proto/v4/boost/test/impl/debug.ipp | 43
   branches/proto/v4/boost/test/impl/exception_safety.ipp | 9
   branches/proto/v4/boost/test/impl/execution_monitor.ipp | 7
   branches/proto/v4/boost/test/impl/framework.ipp | 4
   branches/proto/v4/boost/test/impl/interaction_based.ipp | 7
   branches/proto/v4/boost/test/impl/logged_expectations.ipp | 7
   branches/proto/v4/boost/test/impl/plain_report_formatter.ipp | 2
   branches/proto/v4/boost/test/impl/progress_monitor.ipp | 2
   branches/proto/v4/boost/test/impl/results_collector.ipp | 2
   branches/proto/v4/boost/test/impl/results_reporter.ipp | 2
   branches/proto/v4/boost/test/impl/test_main.ipp | 2
   branches/proto/v4/boost/test/impl/test_tools.ipp | 177
   branches/proto/v4/boost/test/impl/unit_test_log.ipp | 121
   branches/proto/v4/boost/test/impl/unit_test_main.ipp | 15
   branches/proto/v4/boost/test/impl/unit_test_monitor.ipp | 2
   branches/proto/v4/boost/test/impl/unit_test_parameters.ipp | 2
   branches/proto/v4/boost/test/impl/unit_test_suite.ipp | 2
   branches/proto/v4/boost/test/impl/xml_log_formatter.ipp | 2
   branches/proto/v4/boost/test/impl/xml_report_formatter.ipp | 2
   branches/proto/v4/boost/test/included/prg_exec_monitor.hpp | 2
   branches/proto/v4/boost/test/included/test_exec_monitor.hpp | 2
   branches/proto/v4/boost/test/included/unit_test.hpp | 2
   branches/proto/v4/boost/test/interaction_based.hpp | 5
   branches/proto/v4/boost/test/logged_expectations.hpp | 4
   branches/proto/v4/boost/test/minimal.hpp | 2
   branches/proto/v4/boost/test/mock_object.hpp | 2
   branches/proto/v4/boost/test/output/compiler_log_formatter.hpp | 3
   branches/proto/v4/boost/test/output/plain_report_formatter.hpp | 2
   branches/proto/v4/boost/test/output/xml_log_formatter.hpp | 2
   branches/proto/v4/boost/test/output/xml_report_formatter.hpp | 2
   branches/proto/v4/boost/test/output_test_stream.hpp | 2
   branches/proto/v4/boost/test/parameterized_test.hpp | 2
   branches/proto/v4/boost/test/predicate_result.hpp | 2
   branches/proto/v4/boost/test/prg_exec_monitor.hpp | 2
   branches/proto/v4/boost/test/progress_monitor.hpp | 2
   branches/proto/v4/boost/test/results_collector.hpp | 2
   branches/proto/v4/boost/test/results_reporter.hpp | 2
   branches/proto/v4/boost/test/test_case_template.hpp | 2
   branches/proto/v4/boost/test/test_exec_monitor.hpp | 2
   branches/proto/v4/boost/test/test_observer.hpp | 2
   branches/proto/v4/boost/test/test_tools.hpp | 116
   branches/proto/v4/boost/test/unit_test.hpp | 2
   branches/proto/v4/boost/test/unit_test_log.hpp | 33
   branches/proto/v4/boost/test/unit_test_log_formatter.hpp | 3
   branches/proto/v4/boost/test/unit_test_monitor.hpp | 2
   branches/proto/v4/boost/test/unit_test_suite.hpp | 3
   branches/proto/v4/boost/test/unit_test_suite_impl.hpp | 2
   branches/proto/v4/boost/test/utils/algorithm.hpp | 2
   branches/proto/v4/boost/test/utils/assign_op.hpp | 2
   branches/proto/v4/boost/test/utils/basic_cstring/basic_cstring.hpp | 2
   branches/proto/v4/boost/test/utils/basic_cstring/basic_cstring_fwd.hpp | 2
   branches/proto/v4/boost/test/utils/basic_cstring/bcs_char_traits.hpp | 2
   branches/proto/v4/boost/test/utils/basic_cstring/compare.hpp | 4
   branches/proto/v4/boost/test/utils/basic_cstring/io.hpp | 2
   branches/proto/v4/boost/test/utils/callback.hpp | 2
   branches/proto/v4/boost/test/utils/class_properties.hpp | 2
   branches/proto/v4/boost/test/utils/custom_manip.hpp | 2
   branches/proto/v4/boost/test/utils/fixed_mapping.hpp | 2
   branches/proto/v4/boost/test/utils/foreach.hpp | 26
   branches/proto/v4/boost/test/utils/iterator/ifstream_line_iterator.hpp | 2
   branches/proto/v4/boost/test/utils/iterator/input_iterator_facade.hpp | 2
   branches/proto/v4/boost/test/utils/iterator/istream_line_iterator.hpp | 8
   branches/proto/v4/boost/test/utils/iterator/token_iterator.hpp | 2
   branches/proto/v4/boost/test/utils/named_params.hpp | 2
   branches/proto/v4/boost/test/utils/nullstream.hpp | 2
   branches/proto/v4/boost/test/utils/rtti.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/argument.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/argument_factory.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.cpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.ipp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/basic_parameter.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.cpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.ipp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/detail/argument_value_usage.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.cpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.ipp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/fwd.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/id_policy.cpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/id_policy.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/id_policy.ipp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/iface/argument_factory.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/iface/id_policy.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/modifier.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.cpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.ipp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/parameter.hpp | 4
   branches/proto/v4/boost/test/utils/runtime/cla/parser.cpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/parser.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/parser.ipp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/positional_parameter.hpp | 8
   branches/proto/v4/boost/test/utils/runtime/cla/typed_parameter.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/validation.cpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/validation.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/validation.ipp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/value_generator.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/cla/value_handler.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/config.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/configuration.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/env/environment.cpp | 2
   branches/proto/v4/boost/test/utils/runtime/env/environment.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/env/environment.ipp | 2
   branches/proto/v4/boost/test/utils/runtime/env/fwd.hpp | 6
   branches/proto/v4/boost/test/utils/runtime/env/modifier.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/env/variable.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/file/config_file.cpp | 2
   branches/proto/v4/boost/test/utils/runtime/file/config_file.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/file/config_file_iterator.cpp | 2
   branches/proto/v4/boost/test/utils/runtime/file/config_file_iterator.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/fwd.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/interpret_argument_value.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/parameter.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/trace.hpp | 2
   branches/proto/v4/boost/test/utils/runtime/validation.hpp | 2
   branches/proto/v4/boost/test/utils/trivial_singleton.hpp | 2
   branches/proto/v4/boost/test/utils/wrap_stringstream.hpp | 6
   branches/proto/v4/boost/test/utils/xml_printer.hpp | 14
   branches/proto/v4/boost/thread/detail/move.hpp | 4
   branches/proto/v4/boost/thread/detail/platform.hpp | 6
   branches/proto/v4/boost/thread/detail/thread.hpp | 11
   branches/proto/v4/boost/thread/locks.hpp | 451
   branches/proto/v4/boost/thread/pthread/condition_variable.hpp | 11
   branches/proto/v4/boost/thread/pthread/condition_variable_fwd.hpp | 10
   branches/proto/v4/boost/thread/pthread/mutex.hpp | 5
   branches/proto/v4/boost/thread/tss.hpp | 1
   branches/proto/v4/boost/thread/win32/basic_timed_mutex.hpp | 6
   branches/proto/v4/boost/thread/win32/mutex.hpp | 2
   branches/proto/v4/boost/thread/win32/shared_mutex.hpp | 209
   branches/proto/v4/boost/thread/win32/thread_primitives.hpp | 23
   branches/proto/v4/boost/throw_exception.hpp | 4
   branches/proto/v4/boost/tuple/detail/tuple_basic.hpp | 2
   branches/proto/v4/boost/tuple/detail/tuple_basic_no_partial_spec.hpp | 2
   branches/proto/v4/boost/tuple/tuple.hpp | 2
   branches/proto/v4/boost/tuple/tuple_comparison.hpp | 2
   branches/proto/v4/boost/tuple/tuple_io.hpp | 2
   branches/proto/v4/boost/type_traits/conversion_traits.hpp | 2
   branches/proto/v4/boost/type_traits/is_convertible.hpp | 2
   branches/proto/v4/boost/units/absolute.hpp | 1
   branches/proto/v4/boost/units/base_dimension.hpp | 4
   branches/proto/v4/boost/units/base_unit.hpp | 4
   branches/proto/v4/boost/units/base_units/metric/angstrom.hpp | 2
   branches/proto/v4/boost/units/base_units/metric/micron.hpp | 2
   branches/proto/v4/boost/units/base_units/temperature/fahrenheit.hpp | 2
   branches/proto/v4/boost/units/conversion.hpp | 4
   branches/proto/v4/boost/units/derived_dimension.hpp | 74
   branches/proto/v4/boost/units/detail/absolute_impl.hpp | 16
   branches/proto/v4/boost/units/detail/cmath_impl.hpp | 21
   branches/proto/v4/boost/units/detail/conversion_impl.hpp | 198
   branches/proto/v4/boost/units/detail/dimension_impl.hpp | 209
   branches/proto/v4/boost/units/detail/heterogeneous_conversion.hpp | 104
   branches/proto/v4/boost/units/detail/linear_algebra.hpp | 1069
   branches/proto/v4/boost/units/detail/one.hpp | 8
   branches/proto/v4/boost/units/detail/prevent_redefinition.hpp | 6
   branches/proto/v4/boost/units/detail/push_front_if.hpp | 7
   branches/proto/v4/boost/units/detail/push_front_or_add.hpp | 13
   branches/proto/v4/boost/units/detail/sort.hpp | 127
   branches/proto/v4/boost/units/detail/static_rational_power.hpp | 14
   branches/proto/v4/boost/units/detail/unscale.hpp | 13
   branches/proto/v4/boost/units/detail/utility.hpp | 2
   branches/proto/v4/boost/units/dimension.hpp | 14
   branches/proto/v4/boost/units/heterogeneous_system.hpp | 28
   branches/proto/v4/boost/units/io.hpp | 32
   branches/proto/v4/boost/units/make_system.hpp | 20
   branches/proto/v4/boost/units/quantity.hpp | 100
   branches/proto/v4/boost/units/scale.hpp | 6
   branches/proto/v4/boost/units/static_rational.hpp | 54
   branches/proto/v4/boost/units/unit.hpp | 36
   branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp | 182
   branches/proto/v4/boost/unordered_map.hpp | 113
   branches/proto/v4/boost/unordered_set.hpp | 112
   branches/proto/v4/boost/utility/enable_if.hpp | 2
   branches/proto/v4/boost/version.hpp | 12
   branches/proto/v4/boost/wave/cpplexer/cpp_lex_token.hpp | 3
   branches/proto/v4/boost/wave/grammars/cpp_expression_grammar.hpp | 14
   branches/proto/v4/boost/wave/util/cpp_include_paths.hpp | 6
   branches/proto/v4/boost/wave/util/cpp_macromap.hpp | 4
   branches/proto/v4/boost/wave/util/macro_helpers.hpp | 6
   branches/proto/v4/boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp | 18
   branches/proto/v4/boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp | 18
   branches/proto/v4/boost/xpressive/detail/core/matcher/assert_line_base.hpp | 20
   branches/proto/v4/boost/xpressive/detail/dynamic/parser_traits.hpp | 2
   branches/proto/v4/boost/xpressive/detail/static/is_pure.hpp | 8
   branches/proto/v4/boost/xpressive/detail/static/transforms/as_action.hpp | 7
   branches/proto/v4/boost/xpressive/detail/static/width_of.hpp | 12
   branches/proto/v4/boost/xpressive/match_results.hpp | 14
   branches/proto/v4/boost/xpressive/regex_iterator.hpp | 28
   branches/proto/v4/boost/xpressive/regex_token_iterator.hpp | 10
   branches/proto/v4/boost/xpressive/traits/c_regex_traits.hpp | 6
   branches/proto/v4/boost/xpressive/traits/cpp_regex_traits.hpp | 6
   branches/proto/v4/boost/xpressive/traits/null_regex_traits.hpp | 6
   branches/proto/v4/doc/Jamfile.v2 | 5
   branches/proto/v4/doc/html/minimal.css | 2
   branches/proto/v4/doc/src/boost.xml | 14
   branches/proto/v4/index.html | 8
   branches/proto/v4/libs/accumulators/doc/Jamfile.v2 | 18
   branches/proto/v4/libs/accumulators/doc/accumulators.qbk | 743
   branches/proto/v4/libs/accumulators/example/main.cpp | 9
   branches/proto/v4/libs/accumulators/test/variance.cpp | 8
   branches/proto/v4/libs/accumulators/test/weighted_variance.cpp | 10
   branches/proto/v4/libs/algorithm/string/doc/concept.xml | 2
   branches/proto/v4/libs/algorithm/string/example/rle_example.cpp | 29
   branches/proto/v4/libs/algorithm/string/test/predicate_test.cpp | 8
   branches/proto/v4/libs/algorithm/string/test/replace_test.cpp | 1
   branches/proto/v4/libs/asio/doc/Jamfile.v2 | 14
   branches/proto/v4/libs/asio/doc/asio.qbk | 23
   branches/proto/v4/libs/asio/doc/examples.qbk | 27
   branches/proto/v4/libs/asio/doc/quickref.xml | 547
   branches/proto/v4/libs/asio/doc/reference.dox | 2
   branches/proto/v4/libs/asio/doc/reference.qbk | 47424 ++++++++++++++++++++++-----------------
   branches/proto/v4/libs/asio/doc/reference.xsl | 88
   branches/proto/v4/libs/asio/doc/requirements/StreamDescriptorService.qbk | 4
   branches/proto/v4/libs/asio/doc/requirements/StreamHandleService.qbk | 4
   branches/proto/v4/libs/asio/doc/tutorial.dox | 2
   branches/proto/v4/libs/asio/doc/tutorial.qbk | 80
   branches/proto/v4/libs/asio/doc/tutorial.xsl | 168
   branches/proto/v4/libs/asio/doc/using.qbk | 7
   branches/proto/v4/libs/asio/example/porthopper/client.cpp | 10
   branches/proto/v4/libs/asio/example/porthopper/protocol.hpp | 10
   branches/proto/v4/libs/asio/example/porthopper/server.cpp | 10
   branches/proto/v4/libs/asio/test/Jamfile | 4
   branches/proto/v4/libs/asio/test/Jamfile.v2 | 10
   branches/proto/v4/libs/asio/test/read_until.cpp | 179
   branches/proto/v4/libs/assign/doc/index.html | 32
   branches/proto/v4/libs/bind/doc/ref.xml | 30
   branches/proto/v4/libs/circular_buffer/doc/Doxyfile | 2
   branches/proto/v4/libs/circular_buffer/doc/HOWTO-srcdoc | 2
   branches/proto/v4/libs/circular_buffer/doc/Tidy.conf | 2
   branches/proto/v4/libs/circular_buffer/doc/circular_buffer.html | 347
   branches/proto/v4/libs/circular_buffer/doc/circular_buffer.xslt | 2
   branches/proto/v4/libs/circular_buffer/doc/copy.xslt | 2
   branches/proto/v4/libs/circular_buffer/doc/doxygen2html.xslt | 2
   branches/proto/v4/libs/circular_buffer/doc/html2xhtml.xslt | 2
   branches/proto/v4/libs/circular_buffer/doc/space_optimized.html | 36
   branches/proto/v4/libs/circular_buffer/doc/space_optimized.xslt | 2
   branches/proto/v4/libs/circular_buffer/doc/update_srcdoc.sh | 2
   branches/proto/v4/libs/circular_buffer/doc/update_srcdoc.xslt | 2
   branches/proto/v4/libs/circular_buffer/index.html | 2
   branches/proto/v4/libs/circular_buffer/test/Jamfile.v2 | 2
   branches/proto/v4/libs/circular_buffer/test/base_test.cpp | 59
   branches/proto/v4/libs/circular_buffer/test/bounded_buffer_comparison.cpp | 2
   branches/proto/v4/libs/circular_buffer/test/common.ipp | 136
   branches/proto/v4/libs/circular_buffer/test/soft_iterator_invalidation.cpp | 2
   branches/proto/v4/libs/circular_buffer/test/space_optimized_test.cpp | 2
   branches/proto/v4/libs/circular_buffer/test/test.hpp | 2
   branches/proto/v4/libs/config/doc/guidelines.qbk | 8
   branches/proto/v4/libs/config/doc/html/boost_config/acknowledgements.html | 6
   branches/proto/v4/libs/config/doc/html/boost_config/boost_macro_reference.html | 210
   branches/proto/v4/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html | 25
   branches/proto/v4/libs/config/doc/html/boost_config/rationale.html | 8
   branches/proto/v4/libs/config/doc/html/index.html | 44
   branches/proto/v4/libs/config/doc/macro_reference.qbk | 77
   branches/proto/v4/libs/config/test/all/Jamfile.v2 | 2
   branches/proto/v4/libs/config/test/boost_has_tr1_result_of.ipp | 2
   branches/proto/v4/libs/config/test/boost_no_bcb_partial_spec.ipp | 2
   branches/proto/v4/libs/config/test/boost_no_mem_tem_pnts.ipp | 2
   branches/proto/v4/libs/config/test/boost_no_sfinae.ipp | 2
   branches/proto/v4/libs/config/test/config_info.cpp | 1
   branches/proto/v4/libs/config/test/config_test.cpp | 2
   branches/proto/v4/libs/config/test/has_tr1_array_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_array_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_bind_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_bind_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_complex_over_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_complex_over_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_complex_trig_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_complex_trig_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_function_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_function_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_hash_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_hash_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_mem_fn_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_mem_fn_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_random_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_random_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_ref_wrap_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_ref_wrap_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_regex_fail.cpp | 3
   branches/proto/v4/libs/config/test/has_tr1_regex_pass.cpp | 3
   branches/proto/v4/libs/config/test/has_tr1_result_of_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_result_of_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_shared_ptr_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_shared_ptr_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_tuple_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_tuple_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_type_traits_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_type_traits_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_unordered_map_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_unordered_map_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_unordered_set_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_unordered_set_pass.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_utility_fail.cpp | 8
   branches/proto/v4/libs/config/test/has_tr1_utility_pass.cpp | 8
   branches/proto/v4/libs/config/tools/generate.cpp | 12
   branches/proto/v4/libs/dynamic_bitset/bitset_test.hpp | 8
   branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests1.cpp | 8
   branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests2.cpp | 8
   branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests3.cpp | 8
   branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests4.cpp | 8
   branches/proto/v4/libs/dynamic_bitset/dynamic_bitset.html | 910
   branches/proto/v4/libs/dynamic_bitset/example/Jamfile | 8
   branches/proto/v4/libs/dynamic_bitset/example/example1.cpp | 42
   branches/proto/v4/libs/dynamic_bitset/example/example2.cpp | 15
   branches/proto/v4/libs/dynamic_bitset/example/example3.cpp | 88
   branches/proto/v4/libs/dynamic_bitset/example/timing_tests.cpp | 10
   branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html | 14
   branches/proto/v4/libs/exception/doc/boost-exception.html | 435
   branches/proto/v4/libs/exception/doc/copy_exception.html | 13
   branches/proto/v4/libs/exception/doc/current_exception.html | 23
   branches/proto/v4/libs/exception/doc/enable_current_exception.html | 22
   branches/proto/v4/libs/exception/doc/enable_error_info.html | 18
   branches/proto/v4/libs/exception/doc/error_info.html | 31
   branches/proto/v4/libs/exception/doc/exception.html | 78
   branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html | 34
   branches/proto/v4/libs/exception/doc/exception_constructors.html | 15
   branches/proto/v4/libs/exception/doc/exception_destructor.html | 11
   branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html | 20
   branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html | 20
   branches/proto/v4/libs/exception/doc/exception_error_info_group_hpp.html | 24
   branches/proto/v4/libs/exception/doc/exception_error_info_hpp.html | 43
   branches/proto/v4/libs/exception/doc/exception_error_info_value_hpp.html | 17
   branches/proto/v4/libs/exception/doc/exception_exception_hpp.html | 32
   branches/proto/v4/libs/exception/doc/exception_hpp.html | 25
   branches/proto/v4/libs/exception/doc/exception_ptr.html | 19
   branches/proto/v4/libs/exception/doc/get_error_info.html | 18
   branches/proto/v4/libs/exception/doc/name_idx.html | 17
   branches/proto/v4/libs/exception/doc/operator_shl_exception.html | 37
   branches/proto/v4/libs/exception/doc/reno.css | 2
   branches/proto/v4/libs/exception/doc/rethrow_exception.html | 14
   branches/proto/v4/libs/exception/doc/source/boost-exception.reno | 7729 +++---
   branches/proto/v4/libs/exception/doc/throw_exception.html | 28
   branches/proto/v4/libs/exception/doc/throw_exception_hpp.html | 30
   branches/proto/v4/libs/exception/doc/unknown_exception.html | 14
   branches/proto/v4/libs/exception/example/Jamfile | 2
   branches/proto/v4/libs/exception/example/example_io.cpp | 6
   branches/proto/v4/libs/exception/example/logging.cpp | 2
   branches/proto/v4/libs/exception/test/Jamfile.v2 | 9
   branches/proto/v4/libs/exception/test/enable_error_info_test.cpp | 7
   branches/proto/v4/libs/exception/test/error_info_test.cpp | 43
   branches/proto/v4/libs/exception/test/helper1.cpp | 2
   branches/proto/v4/libs/exception/test/helper2.cpp | 43
   branches/proto/v4/libs/exception/test/helper2.hpp | 29
   branches/proto/v4/libs/exception/test/throw_exception_test.cpp | 13
   branches/proto/v4/libs/exception/test/unknown_exception_test.cpp | 10
   branches/proto/v4/libs/filesystem/doc/do-list.htm | 4
   branches/proto/v4/libs/filesystem/doc/reference.html | 233
   branches/proto/v4/libs/filesystem/example/mbcopy.cpp | 4
   branches/proto/v4/libs/filesystem/example/mbpath.cpp | 2
   branches/proto/v4/libs/filesystem/example/simple_ls.cpp | 10
   branches/proto/v4/libs/filesystem/index.html | 4
   branches/proto/v4/libs/filesystem/src/operations.cpp | 131
   branches/proto/v4/libs/filesystem/src/path.cpp | 2
   branches/proto/v4/libs/filesystem/test/fstream_test.cpp | 2
   branches/proto/v4/libs/filesystem/test/lpath.hpp | 1
   branches/proto/v4/libs/filesystem/test/operations_test.cpp | 173
   branches/proto/v4/libs/filesystem/test/path_test.cpp | 280
   branches/proto/v4/libs/filesystem/test/wide_test.cpp | 1
   branches/proto/v4/libs/functional/hash/test/container_fwd_test.cpp | 2
   branches/proto/v4/libs/functional/hash/test/hash_built_in_array_test.cpp | 16
   branches/proto/v4/libs/functional/hash/test/hash_complex_test.cpp | 10
   branches/proto/v4/libs/functional/hash/test/hash_custom_test.cpp | 16
   branches/proto/v4/libs/functional/hash/test/hash_deprecated_headers.cpp | 2
   branches/proto/v4/libs/functional/hash/test/hash_deque_test.cpp | 6
   branches/proto/v4/libs/functional/hash/test/hash_float_test.cpp | 4
   branches/proto/v4/libs/functional/hash/test/hash_float_test.hpp | 76
   branches/proto/v4/libs/functional/hash/test/hash_friend_test.cpp | 16
   branches/proto/v4/libs/functional/hash/test/hash_function_pointer_test.cpp | 32
   branches/proto/v4/libs/functional/hash/test/hash_fwd_test_1.cpp | 18
   branches/proto/v4/libs/functional/hash/test/hash_fwd_test_2.cpp | 6
   branches/proto/v4/libs/functional/hash/test/hash_global_namespace_test.cpp | 16
   branches/proto/v4/libs/functional/hash/test/hash_list_test.cpp | 6
   branches/proto/v4/libs/functional/hash/test/hash_long_double_test.cpp | 4
   branches/proto/v4/libs/functional/hash/test/hash_map_test.cpp | 6
   branches/proto/v4/libs/functional/hash/test/hash_map_test.hpp | 8
   branches/proto/v4/libs/functional/hash/test/hash_no_ext_fail_test.cpp | 2
   branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_1.cpp | 8
   branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_2.cpp | 8
   branches/proto/v4/libs/functional/hash/test/hash_number_test.cpp | 62
   branches/proto/v4/libs/functional/hash/test/hash_pointer_test.cpp | 18
   branches/proto/v4/libs/functional/hash/test/hash_range_test.cpp | 28
   branches/proto/v4/libs/functional/hash/test/hash_sequence_test.hpp | 8
   branches/proto/v4/libs/functional/hash/test/hash_set_test.cpp | 6
   branches/proto/v4/libs/functional/hash/test/hash_set_test.hpp | 8
   branches/proto/v4/libs/functional/hash/test/hash_string_test.cpp | 30
   branches/proto/v4/libs/functional/hash/test/hash_value_array_test.cpp | 14
   branches/proto/v4/libs/functional/hash/test/hash_vector_test.cpp | 6
   branches/proto/v4/libs/functional/hash/test/link_ext_test.cpp | 4
   branches/proto/v4/libs/functional/hash/test/link_no_ext_test.cpp | 9
   branches/proto/v4/libs/functional/hash/test/link_test.cpp | 2
   branches/proto/v4/libs/fusion/doc/adapted.qbk | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/acknowledgements.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/adapted.html | 41
   branches/proto/v4/libs/fusion/doc/html/fusion/adapted/adapt_assoc.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/adapted/adapt_struct.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/adapted/boost__array.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/adapted/boost__tuple.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/adapted/mpl_sequence.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/adapted/std__pair.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm.html | 12
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/accumulate.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/fold.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/for_each.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/fold.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/all.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/any.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/count.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/count_if.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/find.html | 12
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/find_if.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/none.html | 10
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/all.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/any.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/count.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/count_if.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/find.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/find_if.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/none.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/clear.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/erase.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/erase_key.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/filter.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/filter_if.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/insert.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/insert_range.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/join.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/pop_back.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/pop_front.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/push_back.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/push_front.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/remove.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/remove_if.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/replace.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/replace_if.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/reverse.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/transform.html | 24
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/zip.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/clear.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/erase.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/filter.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/insert.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/join.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/remove.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/replace.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/transform.html | 24
   branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/zip.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/change_log.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/container.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/container/cons.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_list.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_map.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_set.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_vector.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_list.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_map.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_set.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_vector.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/list_tie.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_cons.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_list.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_map.html | 24
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_set.html | 24
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_vector.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/map_tie.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/tiers.html | 12
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/vector_tie.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/list_tie.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_cons.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_list.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_map.html | 24
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_set.html | 22
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_vector.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/map_tie.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/vector_tie.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/container/list.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/container/map.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/container/set.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/container/vector.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/extension.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/extension/ext_full.html | 22
   branches/proto/v4/libs/fusion/doc/html/fusion/extension/iterator_facade.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/extension/sequence_facade.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional.html | 12
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused_function_object.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused_procedure.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_generic.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_lvalue_args.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_rvalue_args.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_typed.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/callable.html | 12
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/def_callable.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/poly.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/reg_callable.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused_proc.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke_fobj.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke_proc.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke.html | 12
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html | 12
   branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html | 12
   branches/proto/v4/libs/fusion/doc/html/fusion/introduction.html | 21
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/bidirectional_iterator.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/forward_iterator.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/random_access_iterator.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/advance.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/advance_c.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/deref.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/distance.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/next.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/prior.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/advance.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/advance_c.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/deref.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/distance.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/equal_to.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/next.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/prior.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/value_of.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_equality.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_inequality.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_unary_star.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/notes.html | 22
   branches/proto/v4/libs/fusion/doc/html/fusion/organization.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/preface.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/quick_start.html | 22
   branches/proto/v4/libs/fusion/doc/html/fusion/references.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts.html | 10
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/associative_sequence.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/bidirectional_sequence.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/forward_sequence.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/random_access_sequence.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic.html | 12
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at_c.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at_key.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/back.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/begin.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/empty.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/end.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/front.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/has_key.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/size.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/swap.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/back.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/end.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/front.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/size.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html | 14
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/equal.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/greater_than.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/less_than.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/less_than_equal.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/not_equal.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o/in.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o/out.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/support.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/support/category_of.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/support/deduce.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/support/deduce_sequence.html | 16
   branches/proto/v4/libs/fusion/doc/html/fusion/support/is_sequence.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/support/is_view.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/support/pair.html | 133
   branches/proto/v4/libs/fusion/doc/html/fusion/support/tag_of.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/tuple.html | 6
   branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/construction.html | 10
   branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/element_access.html | 10
   branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/relational_operators.html | 10
   branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html | 10
   branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html | 10
   branches/proto/v4/libs/fusion/doc/html/fusion/tuple/pairs.html | 10
   branches/proto/v4/libs/fusion/doc/html/fusion/view.html | 8
   branches/proto/v4/libs/fusion/doc/html/fusion/view/filter_view.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/view/iterator_range.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/view/joint_view.html | 20
   branches/proto/v4/libs/fusion/doc/html/fusion/view/reverse_view.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/view/single_view.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/view/transform_view.html | 18
   branches/proto/v4/libs/fusion/doc/html/fusion/view/zip_view.html | 20
   branches/proto/v4/libs/fusion/doc/html/index.html | 10
   branches/proto/v4/libs/fusion/doc/introduction.qbk | 22
   branches/proto/v4/libs/fusion/doc/support.qbk | 78
   branches/proto/v4/libs/fusion/test/functional/invoke.cpp | 20
   branches/proto/v4/libs/fusion/test/functional/invoke_function_object.cpp | 10
   branches/proto/v4/libs/fusion/test/functional/invoke_procedure.cpp | 10
   branches/proto/v4/libs/fusion/test/sequence/back_extended_deque.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/comparison.hpp | 2
   branches/proto/v4/libs/fusion/test/sequence/construction.hpp | 2
   branches/proto/v4/libs/fusion/test/sequence/copy.hpp | 2
   branches/proto/v4/libs/fusion/test/sequence/deque_comparison.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/deque_construction.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/deque_copy.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/deque_make.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/deque_misc.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/deque_mutate.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/deque_tie.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/deque_value_at.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/front_extended_deque.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/io.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/list_comparison.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/list_construction.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/list_copy.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/list_make.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/list_misc.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/list_mutate.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/list_tie.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/list_value_at.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/make.hpp | 2
   branches/proto/v4/libs/fusion/test/sequence/make_list.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/make_vector.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/misc.hpp | 2
   branches/proto/v4/libs/fusion/test/sequence/mutate.hpp | 2
   branches/proto/v4/libs/fusion/test/sequence/tie.hpp | 2
   branches/proto/v4/libs/fusion/test/sequence/tuple_comparison.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/tuple_construction.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/tuple_copy.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/tuple_element.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/tuple_make.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/tuple_misc.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/tuple_mutate.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/tuple_tie.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/value_at.hpp | 2
   branches/proto/v4/libs/fusion/test/sequence/vector_comparison.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/vector_construction.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/vector_copy.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/vector_make.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/vector_misc.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/vector_mutate.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/vector_tie.cpp | 2
   branches/proto/v4/libs/fusion/test/sequence/vector_value_at.cpp | 2
   branches/proto/v4/libs/graph/build/Jamfile.v2 | 2
   branches/proto/v4/libs/graph/doc/cuthill_mckee_ordering.html | 12
   branches/proto/v4/libs/graph/doc/topological_sort.html | 3
   branches/proto/v4/libs/integer/cstdint.htm | 2
   branches/proto/v4/libs/integer/doc/integer_mask.html | 209
   branches/proto/v4/libs/integer/integer.htm | 391
   branches/proto/v4/libs/integer/test/Jamfile.v2 | 10
   branches/proto/v4/libs/integer/test/integer_mask_test.cpp | 244
   branches/proto/v4/libs/integer/test/integer_test.cpp | 894
   branches/proto/v4/libs/interprocess/doc/interprocess.qbk | 110
   branches/proto/v4/libs/interprocess/example/doc_managed_copy_on_write.cpp | 25
   branches/proto/v4/libs/interprocess/example/doc_move_containers.cpp | 4
   branches/proto/v4/libs/interprocess/example/doc_shared_memory2.cpp | 2
   branches/proto/v4/libs/interprocess/index.html | 5
   branches/proto/v4/libs/interprocess/proj/vc7ide/Interprocess.sln | 1854
   branches/proto/v4/libs/interprocess/test/adaptive_node_pool_test.cpp | 12
   branches/proto/v4/libs/interprocess/test/adaptive_pool_test.cpp | 2
   branches/proto/v4/libs/interprocess/test/cached_adaptive_pool_test.cpp | 3
   branches/proto/v4/libs/interprocess/test/cached_node_allocator_test.cpp | 2
   branches/proto/v4/libs/interprocess/test/deque_test.cpp | 12
   branches/proto/v4/libs/interprocess/test/dummy_test_allocator.hpp | 2
   branches/proto/v4/libs/interprocess/test/file_mapping_test.cpp | 4
   branches/proto/v4/libs/interprocess/test/iset_index_allocation_test.cpp | 1
   branches/proto/v4/libs/interprocess/test/list_test.hpp | 8
   branches/proto/v4/libs/interprocess/test/managed_mapped_file_test.cpp | 13
   branches/proto/v4/libs/interprocess/test/managed_shared_memory_test.cpp | 13
   branches/proto/v4/libs/interprocess/test/managed_windows_shared_memory_test.cpp | 13
   branches/proto/v4/libs/interprocess/test/map_test.hpp | 32
   branches/proto/v4/libs/interprocess/test/mapped_file_test.cpp | 4
   branches/proto/v4/libs/interprocess/test/node_allocator_test.cpp | 2
   branches/proto/v4/libs/interprocess/test/node_pool_test.cpp | 7
   branches/proto/v4/libs/interprocess/test/private_adaptive_pool_test.cpp | 2
   branches/proto/v4/libs/interprocess/test/private_node_allocator_test.cpp | 2
   branches/proto/v4/libs/interprocess/test/set_test.hpp | 72
   branches/proto/v4/libs/interprocess/test/shared_memory_mapping_test.cpp | 4
   branches/proto/v4/libs/interprocess/test/shared_memory_test.cpp | 4
   branches/proto/v4/libs/interprocess/test/shared_ptr_test.cpp | 83
   branches/proto/v4/libs/interprocess/test/string_test.cpp | 4
   branches/proto/v4/libs/interprocess/test/unique_ptr_test.cpp | 28
   branches/proto/v4/libs/interprocess/test/upgradable_mutex_test.cpp | 70
   branches/proto/v4/libs/interprocess/test/user_buffer_test.cpp | 12
   branches/proto/v4/libs/interprocess/test/vector_test.hpp | 16
   branches/proto/v4/libs/intrusive/doc/intrusive.qbk | 100
   branches/proto/v4/libs/intrusive/index.html | 9
   branches/proto/v4/libs/intrusive/proj/vc7ide/Intrusive.sln | 358
   branches/proto/v4/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj | 9
   branches/proto/v4/libs/intrusive/proj/vc7ide/list/list.vcproj | 10
   branches/proto/v4/libs/intrusive/proj/vc7ide/multiset/multiset.vcproj | 10
   branches/proto/v4/libs/intrusive/proj/vc7ide/perf_test/perf_test.vcproj | 10
   branches/proto/v4/libs/intrusive/proj/vc7ide/set/set.vcproj | 10
   branches/proto/v4/libs/intrusive/proj/vc7ide/slist/slist.vcproj | 10
   branches/proto/v4/libs/intrusive/proj/vc7ide/unordered_multiset/unordered_multiset.vcproj | 10
   branches/proto/v4/libs/intrusive/proj/vc7ide/unordered_set/unordered_set.vcproj | 10
   branches/proto/v4/libs/intrusive/test/common_functors.hpp | 8
   branches/proto/v4/libs/intrusive/test/itestvalue.hpp | 9
   branches/proto/v4/libs/intrusive/test/list_test.cpp | 1
   branches/proto/v4/libs/intrusive/test/slist_test.cpp | 2
   branches/proto/v4/libs/intrusive/test/unordered_multiset_test.cpp | 48
   branches/proto/v4/libs/intrusive/test/unordered_set_test.cpp | 48
   branches/proto/v4/libs/iostreams/src/file_descriptor.cpp | 397
   branches/proto/v4/libs/iostreams/src/mapped_file.cpp | 695
   branches/proto/v4/libs/iostreams/test/mapped_file_test.cpp | 188
   branches/proto/v4/libs/lambda/test/algorithm_test.cpp | 2
   branches/proto/v4/libs/lambda/test/bind_tests_advanced.cpp | 2
   branches/proto/v4/libs/lambda/test/bind_tests_simple.cpp | 2
   branches/proto/v4/libs/lambda/test/bind_tests_simple_f_refs.cpp | 2
   branches/proto/v4/libs/lambda/test/bll_and_function.cpp | 2
   branches/proto/v4/libs/lambda/test/cast_test.cpp | 2
   branches/proto/v4/libs/lambda/test/constructor_tests.cpp | 2
   branches/proto/v4/libs/lambda/test/control_structures.cpp | 2
   branches/proto/v4/libs/lambda/test/exception_test.cpp | 2
   branches/proto/v4/libs/lambda/test/extending_rt_traits.cpp | 2
   branches/proto/v4/libs/lambda/test/is_instance_of_test.cpp | 2
   branches/proto/v4/libs/lambda/test/member_pointer_test.cpp | 2
   branches/proto/v4/libs/lambda/test/operator_tests_simple.cpp | 2
   branches/proto/v4/libs/lambda/test/phoenix_control_structures.cpp | 2
   branches/proto/v4/libs/lambda/test/switch_construct.cpp | 2
   branches/proto/v4/libs/libraries.htm | 39
   branches/proto/v4/libs/maintainers.txt | 4
   branches/proto/v4/libs/math/build/has_long_double_support.cpp | 6
   branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex.html | 6
   branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acos.html | 10
   branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acosh.html | 10
   branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asin.html | 10
   branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asinh.html | 10
   branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atan.html | 10
   branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atanh.html | 10
   branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/history.html | 6
   branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/implementation.html | 6
   branches/proto/v4/libs/math/doc/complex/html/index.html | 10
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/compile_time.html | 8
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/credits.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/demo.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/gcd_function_object.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/header.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/history.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/introduction.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/lcm_function_object.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/rationale.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/run_time.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/synopsis.html | 6
   branches/proto/v4/libs/math/doc/gcd/html/index.html | 10
   branches/proto/v4/libs/math/doc/html/index.html | 22
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/acknowledgements.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/header_file.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/history.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/non_mem.html | 24
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/oct_create.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html | 24
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_specializations.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html | 18
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html | 22
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/overview.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/synopsis.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/template_class_octonion.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/test_program.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/to_do.html | 6
   branches/proto/v4/libs/math/doc/octonion/html/index.html | 10
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/create.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/exp.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/header_file.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/history.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html | 28
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/non_mem.html | 26
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/overview.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/quat.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/spec.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/synopsis.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/test_program.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/to_do.html | 6
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/trans.html | 22
   branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/value_op.html | 18
   branches/proto/v4/libs/math/doc/quaternion/html/index.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/equations/generate.sh | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/error_handling.qbk | 37
   branches/proto/v4/libs/math/doc/sf_and_dist/graphs/generate.sh | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/index.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html | 34
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html | 18
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html | 20
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dist_algorithms.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/bernoulli_dist.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/beta_dist.html | 24
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/binomial_dist.html | 30
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/cauchy_dist.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/chi_squared_dist.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/exp_dist.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/extreme_dist.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/f_dist.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/gamma_dist.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/lognormal_dist.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_beta_dist.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_chi_squared_dist.html | 18
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_f_dist.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_t_dist.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/negative_binomial_dist.html | 28
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/normal_dist.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/pareto.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/poisson_dist.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/rayleigh.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/students_t_dist.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/triangular_dist.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/uniform_dist.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/weibull.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/nmp.html | 58
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/future.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/dist_params.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/overview.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/variates.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_conf.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_size_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_coinflip_example.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_quiz_example.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_intervals.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_size.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_test.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/dist_construct_eg.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/error_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/f_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_location_eg.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_mean_and_sd_eg.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_scale_eg.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nag_library.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg/nccs_power_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_conf.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html | 18
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/paired_st.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_intervals.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_size.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_test.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/two_sample_students_t.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/compilers_overview.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/contact.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/directories.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/error_handling.html | 154
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html | 48
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/intro.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/namespaces.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/perf_over.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/pol_overview.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/result_type.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/threads.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/tr1.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html | 34
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/interp.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/perf_over.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/perf_test_app.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/tuning.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_overview.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/assert_undefined.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html | 86
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/iteration_pol.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/namespace_pol.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/pol_ref_ref.html | 26
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html | 45
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/precision_pol.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_dist_policies.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_sf_policies.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/changing_policy_defaults.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/namespace_policies.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_tut_defaults.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_usage.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/user_def_err_pol.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/what_is_a_policy.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html | 18
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html | 18
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_i.html | 20
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_n.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/c99.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/tr1.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/tr1_ref.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_binomial.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_double_factorial.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_factorial.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_falling_factorial.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_rising_factorial.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/fpclass.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/acosh.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/asinh.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/atanh.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/inv_hyper_over.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_advance.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_distance.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_next.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_prior.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/nextafter.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/ct_pow.html | 61
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/modf.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/round.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/trunc.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_derivative.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_function.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_function.html | 22
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_inv_function.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html | 18
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/digamma.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_derivatives.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_ratios.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html | 24
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma_inv.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/lgamma.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/tgamma.html | 14
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html | 18
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html | 20
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_overview.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_pi.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinhc_pi.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/compilers.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/credits.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/history1.html | 48
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/issues.html | 20
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit.html | 6
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html | 12
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html | 10
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/minimax.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html | 16
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals_overview.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/archetypes.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html | 8
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/dist_concept.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/use_ntl.html | 4
   branches/proto/v4/libs/math/doc/sf_and_dist/math.qbk | 2
   branches/proto/v4/libs/math/doc/sf_and_dist/policy.qbk | 62
   branches/proto/v4/libs/math/doc/sf_and_dist/policy_tutorial.qbk | 1
   branches/proto/v4/libs/math/doc/sf_and_dist/pow.qbk | 25
   branches/proto/v4/libs/math/doc/sf_and_dist/roadmap.qbk | 21
   branches/proto/v4/libs/math/example/policy_eg_8.cpp | 2
   branches/proto/v4/libs/math/minimax/f.cpp | 8
   branches/proto/v4/libs/math/performance/performance_measure.hpp | 13
   branches/proto/v4/libs/math/src/tr1/acosh.cpp | 6
   branches/proto/v4/libs/math/src/tr1/acoshf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/acoshl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/asinh.cpp | 6
   branches/proto/v4/libs/math/src/tr1/asinhf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/asinhl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/assoc_laguerre.cpp | 6
   branches/proto/v4/libs/math/src/tr1/assoc_laguerref.cpp | 6
   branches/proto/v4/libs/math/src/tr1/assoc_laguerrel.cpp | 6
   branches/proto/v4/libs/math/src/tr1/assoc_legendre.cpp | 6
   branches/proto/v4/libs/math/src/tr1/assoc_legendref.cpp | 6
   branches/proto/v4/libs/math/src/tr1/assoc_legendrel.cpp | 4
   branches/proto/v4/libs/math/src/tr1/atanh.cpp | 6
   branches/proto/v4/libs/math/src/tr1/atanhf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/atanhl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/beta.cpp | 6
   branches/proto/v4/libs/math/src/tr1/betaf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/betal.cpp | 6
   branches/proto/v4/libs/math/src/tr1/c_policy.hpp | 2
   branches/proto/v4/libs/math/src/tr1/cbrt.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cbrtf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cbrtl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/comp_ellint_1.cpp | 6
   branches/proto/v4/libs/math/src/tr1/comp_ellint_1f.cpp | 6
   branches/proto/v4/libs/math/src/tr1/comp_ellint_1l.cpp | 6
   branches/proto/v4/libs/math/src/tr1/comp_ellint_2.cpp | 6
   branches/proto/v4/libs/math/src/tr1/comp_ellint_2f.cpp | 6
   branches/proto/v4/libs/math/src/tr1/comp_ellint_2l.cpp | 6
   branches/proto/v4/libs/math/src/tr1/comp_ellint_3.cpp | 6
   branches/proto/v4/libs/math/src/tr1/comp_ellint_3f.cpp | 6
   branches/proto/v4/libs/math/src/tr1/comp_ellint_3l.cpp | 6
   branches/proto/v4/libs/math/src/tr1/copysign.cpp | 10
   branches/proto/v4/libs/math/src/tr1/copysignf.cpp | 10
   branches/proto/v4/libs/math/src/tr1/copysignl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_bessel_i.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_bessel_if.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_bessel_il.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_bessel_j.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_bessel_jf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_bessel_jl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_bessel_k.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_bessel_kf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_bessel_kl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_neumann.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_neumannf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/cyl_neumannl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/ellint_1.cpp | 6
   branches/proto/v4/libs/math/src/tr1/ellint_1f.cpp | 6
   branches/proto/v4/libs/math/src/tr1/ellint_1l.cpp | 6
   branches/proto/v4/libs/math/src/tr1/ellint_2.cpp | 6
   branches/proto/v4/libs/math/src/tr1/ellint_2f.cpp | 6
   branches/proto/v4/libs/math/src/tr1/ellint_2l.cpp | 6
   branches/proto/v4/libs/math/src/tr1/ellint_3.cpp | 6
   branches/proto/v4/libs/math/src/tr1/ellint_3f.cpp | 6
   branches/proto/v4/libs/math/src/tr1/ellint_3l.cpp | 6
   branches/proto/v4/libs/math/src/tr1/erf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/erfc.cpp | 6
   branches/proto/v4/libs/math/src/tr1/erfcf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/erfcl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/erff.cpp | 6
   branches/proto/v4/libs/math/src/tr1/erfl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/expint.cpp | 6
   branches/proto/v4/libs/math/src/tr1/expintf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/expintl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/expm1.cpp | 6
   branches/proto/v4/libs/math/src/tr1/expm1f.cpp | 6
   branches/proto/v4/libs/math/src/tr1/expm1l.cpp | 6
   branches/proto/v4/libs/math/src/tr1/fmax.cpp | 6
   branches/proto/v4/libs/math/src/tr1/fmaxf.cpp | 8
   branches/proto/v4/libs/math/src/tr1/fmaxl.cpp | 4
   branches/proto/v4/libs/math/src/tr1/fmin.cpp | 4
   branches/proto/v4/libs/math/src/tr1/fminf.cpp | 8
   branches/proto/v4/libs/math/src/tr1/fminl.cpp | 4
   branches/proto/v4/libs/math/src/tr1/fpclassify.cpp | 28
   branches/proto/v4/libs/math/src/tr1/fpclassifyf.cpp | 28
   branches/proto/v4/libs/math/src/tr1/fpclassifyl.cpp | 28
   branches/proto/v4/libs/math/src/tr1/hermite.cpp | 6
   branches/proto/v4/libs/math/src/tr1/hermitef.cpp | 6
   branches/proto/v4/libs/math/src/tr1/hermitel.cpp | 6
   branches/proto/v4/libs/math/src/tr1/hypot.cpp | 6
   branches/proto/v4/libs/math/src/tr1/hypotf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/hypotl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/laguerre.cpp | 6
   branches/proto/v4/libs/math/src/tr1/laguerref.cpp | 6
   branches/proto/v4/libs/math/src/tr1/laguerrel.cpp | 6
   branches/proto/v4/libs/math/src/tr1/legendre.cpp | 6
   branches/proto/v4/libs/math/src/tr1/legendref.cpp | 6
   branches/proto/v4/libs/math/src/tr1/legendrel.cpp | 6
   branches/proto/v4/libs/math/src/tr1/lgamma.cpp | 6
   branches/proto/v4/libs/math/src/tr1/lgammaf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/lgammal.cpp | 6
   branches/proto/v4/libs/math/src/tr1/llround.cpp | 6
   branches/proto/v4/libs/math/src/tr1/llroundf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/llroundl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/log1p.cpp | 6
   branches/proto/v4/libs/math/src/tr1/log1pf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/log1pl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/lround.cpp | 6
   branches/proto/v4/libs/math/src/tr1/lroundf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/lroundl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/nextafter.cpp | 6
   branches/proto/v4/libs/math/src/tr1/nextafterf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/nextafterl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/nexttoward.cpp | 6
   branches/proto/v4/libs/math/src/tr1/nexttowardf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/nexttowardl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/riemann_zeta.cpp | 6
   branches/proto/v4/libs/math/src/tr1/riemann_zetaf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/riemann_zetal.cpp | 6
   branches/proto/v4/libs/math/src/tr1/round.cpp | 6
   branches/proto/v4/libs/math/src/tr1/roundf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/roundl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/sph_bessel.cpp | 6
   branches/proto/v4/libs/math/src/tr1/sph_besself.cpp | 6
   branches/proto/v4/libs/math/src/tr1/sph_bessell.cpp | 6
   branches/proto/v4/libs/math/src/tr1/sph_legendre.cpp | 6
   branches/proto/v4/libs/math/src/tr1/sph_legendref.cpp | 6
   branches/proto/v4/libs/math/src/tr1/sph_legendrel.cpp | 6
   branches/proto/v4/libs/math/src/tr1/sph_neumann.cpp | 6
   branches/proto/v4/libs/math/src/tr1/sph_neumannf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/sph_neumannl.cpp | 6
   branches/proto/v4/libs/math/src/tr1/tgamma.cpp | 6
   branches/proto/v4/libs/math/src/tr1/tgammaf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/tgammal.cpp | 6
   branches/proto/v4/libs/math/src/tr1/trunc.cpp | 6
   branches/proto/v4/libs/math/src/tr1/truncf.cpp | 6
   branches/proto/v4/libs/math/src/tr1/truncl.cpp | 6
   branches/proto/v4/libs/math/test/common_factor_test.cpp | 2
   branches/proto/v4/libs/math/test/expint_1_data.ipp | 5
   branches/proto/v4/libs/math/test/expint_data.ipp | 5
   branches/proto/v4/libs/math/test/expint_small_data.ipp | 5
   branches/proto/v4/libs/math/test/expinti_data.ipp | 5
   branches/proto/v4/libs/math/test/expinti_data_double.ipp | 5
   branches/proto/v4/libs/math/test/expinti_data_long.ipp | 5
   branches/proto/v4/libs/math/test/ncbeta.ipp | 5
   branches/proto/v4/libs/math/test/ncbeta_big.ipp | 5
   branches/proto/v4/libs/math/test/nccs.ipp | 5
   branches/proto/v4/libs/math/test/pow_test.cpp | 19
   branches/proto/v4/libs/math/test/test_error_handling.cpp | 59
   branches/proto/v4/libs/math/test/test_igamma_inv.cpp | 4
   branches/proto/v4/libs/math/test/test_nc_t.cpp | 2
   branches/proto/v4/libs/math/test/test_next.cpp | 11
   branches/proto/v4/libs/math/test/test_policy.cpp | 42
   branches/proto/v4/libs/math/test/test_policy_2.cpp | 25
   branches/proto/v4/libs/math/test/test_tr1.cpp | 6
   branches/proto/v4/libs/math/test/zeta_1_below_data.ipp | 5
   branches/proto/v4/libs/math/test/zeta_1_up_data.ipp | 5
   branches/proto/v4/libs/math/test/zeta_data.ipp | 5
   branches/proto/v4/libs/math/test/zeta_neg_data.ipp | 5
   branches/proto/v4/libs/mpi/doc/mpi.qbk | 19
   branches/proto/v4/libs/mpi/src/content_oarchive.cpp | 3
   branches/proto/v4/libs/mpi/src/mpi_datatype_cache.cpp | 35
   branches/proto/v4/libs/mpi/src/packed_skeleton_iarchive.cpp | 4
   branches/proto/v4/libs/mpi/src/packed_skeleton_oarchive.cpp | 3
   branches/proto/v4/libs/mpi/src/point_to_point.cpp | 2
   branches/proto/v4/libs/mpi/test/broadcast_test.cpp | 1
   branches/proto/v4/libs/mpl/doc/src/refmanual/AUX_LAMBDA_SUPPORT.rst | 3
   branches/proto/v4/libs/mpl/doc/src/refmanual/Acknowledgements.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Iteration.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Querying.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Runtime.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Transformation.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms.rst | 7
   branches/proto/v4/libs/mpl/doc/src/refmanual/AssociativeSequence.rst | 8
   branches/proto/v4/libs/mpl/doc/src/refmanual/CFG_NO_PREPROCESSED.rst | 3
   branches/proto/v4/libs/mpl/doc/src/refmanual/Categorized.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Data.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators-Concepts.rst | 1
   branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators-Metafunctions.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Macros-Asserts.rst | 1
   branches/proto/v4/libs/mpl/doc/src/refmanual/Macros-Configuration.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Macros.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Arithmetic.rst | 6
   branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Bitwise.rst | 6
   branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Comparisons.rst | 6
   branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Composition.rst | 7
   branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Conditional.rst | 5
   branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Invocation.rst | 5
   branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Logical.rst | 4
   branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Trivial.rst | 28
   branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Type.rst | 5
   branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Classes.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Concepts.rst | 5
   branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Intrinsic.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Views.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences.rst | 2
   branches/proto/v4/libs/mpl/doc/src/refmanual/TagDispatchedMetafunction.rst | 7
   branches/proto/v4/libs/mpl/doc/src/refmanual/VariadicSequence.rst | 12
   branches/proto/v4/libs/mpl/doc/src/refmanual/bool_.rst | 9
   branches/proto/v4/libs/mpl/doc/src/refmanual/for_each.rst | 4
   branches/proto/v4/libs/mpl/doc/src/refmanual/inserter_.rst | 4
   branches/proto/v4/libs/mpl/doc/src/refmanual/refmanual.py | 10
   branches/proto/v4/libs/mpl/doc/src/refmanual/refmanual.rst | 48
   branches/proto/v4/libs/mpl/doc/src/refmanual/terminology.rst | 20
   branches/proto/v4/libs/multi_array/doc/reference.html | 34
   branches/proto/v4/libs/multi_array/doc/xml/MultiArray.xml | 2
   branches/proto/v4/libs/multi_array/doc/xml/reference.xml | 2
   branches/proto/v4/libs/multi_index/doc/acknowledgements.html | 16
   branches/proto/v4/libs/multi_index/doc/compiler_specifics.html | 154
   branches/proto/v4/libs/multi_index/doc/reference/hash_indices.html | 51
   branches/proto/v4/libs/multi_index/doc/reference/key_extraction.html | 14
   branches/proto/v4/libs/multi_index/doc/reference/multi_index_container.html | 19
   branches/proto/v4/libs/multi_index/doc/reference/ord_indices.html | 58
   branches/proto/v4/libs/multi_index/doc/reference/rnd_indices.html | 26
   branches/proto/v4/libs/multi_index/doc/reference/seq_indices.html | 26
   branches/proto/v4/libs/multi_index/doc/release_notes.html | 22
   branches/proto/v4/libs/multi_index/example/basic.cpp | 2
   branches/proto/v4/libs/multi_index/example/bimap.cpp | 2
   branches/proto/v4/libs/multi_index/example/complex_structs.cpp | 2
   branches/proto/v4/libs/multi_index/example/composite_keys.cpp | 2
   branches/proto/v4/libs/multi_index/example/fun_key.cpp | 2
   branches/proto/v4/libs/multi_index/example/hashed.cpp | 4
   branches/proto/v4/libs/multi_index/example/ip_allocator.cpp | 2
   branches/proto/v4/libs/multi_index/example/non_default_ctor.cpp | 2
   branches/proto/v4/libs/multi_index/example/random_access.cpp | 2
   branches/proto/v4/libs/multi_index/example/rearrange.cpp | 2
   branches/proto/v4/libs/multi_index/example/sequenced.cpp | 2
   branches/proto/v4/libs/multi_index/example/serialization.cpp | 2
   branches/proto/v4/libs/multi_index/perf/test_perf.cpp | 2
   branches/proto/v4/libs/multi_index/test/employee.hpp | 2
   branches/proto/v4/libs/multi_index/test/non_std_allocator.hpp | 12
   branches/proto/v4/libs/multi_index/test/pair_of_ints.hpp | 2
   branches/proto/v4/libs/multi_index/test/pre_multi_index.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_all_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_basic.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_basic.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_basic_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_capacity.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_capacity.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_capacity_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_comparison.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_comparison.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_comparison_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_composite_key.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_composite_key.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_composite_key_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_conv_iterators.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_conv_iterators.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_conv_iterators_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_copy_assignment.cpp | 4
   branches/proto/v4/libs/multi_index/test/test_copy_assignment.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_copy_assignment_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_hash_ops.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_hash_ops.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_hash_ops_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_iterators.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_iterators.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_iterators_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_key_extractors.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_key_extractors.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_key_extractors_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_list_ops.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_list_ops.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_list_ops_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_modifiers.cpp | 3
   branches/proto/v4/libs/multi_index/test/test_modifiers.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_modifiers_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_mpl_ops.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_mpl_ops.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_mpl_ops_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_observers.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_observers.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_observers_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_projection.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_projection.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_projection_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_range.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_range.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_range_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_rearrange.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_rearrange.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_rearrange_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_safe_mode.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_safe_mode.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_safe_mode_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_serialization.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_serialization.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_serialization1.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_serialization1.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_serialization2.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_serialization2.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_serialization3.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_serialization3.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_serialization_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_serialization_template.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_set_ops.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_set_ops.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_set_ops_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_special_set_ops.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_special_set_ops.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_special_set_ops_main.cpp | 2
   branches/proto/v4/libs/multi_index/test/test_update.cpp | 93
   branches/proto/v4/libs/multi_index/test/test_update.hpp | 2
   branches/proto/v4/libs/multi_index/test/test_update_main.cpp | 2
   branches/proto/v4/libs/parameter/doc/html/index.html | 419
   branches/proto/v4/libs/parameter/doc/html/python.html | 146
   branches/proto/v4/libs/parameter/doc/html/reference.html | 412
   branches/proto/v4/libs/parameter/doc/index.rst | 5
   branches/proto/v4/libs/parameter/doc/reference.rst | 8
   branches/proto/v4/libs/ptr_container/doc/examples.html | 5
   branches/proto/v4/libs/ptr_container/doc/examples.rst | 3
   branches/proto/v4/libs/ptr_container/doc/guidelines.html | 2
   branches/proto/v4/libs/ptr_container/doc/guidelines.rst | 2
   branches/proto/v4/libs/ptr_container/doc/headers.html | 7
   branches/proto/v4/libs/ptr_container/doc/headers.rst | 2
   branches/proto/v4/libs/ptr_container/doc/ptr_container.html | 37
   branches/proto/v4/libs/ptr_container/doc/ptr_container.rst | 47
   branches/proto/v4/libs/ptr_container/doc/ptr_sequence_adapter.html | 4
   branches/proto/v4/libs/ptr_container/doc/ptr_sequence_adapter.rst | 5
   branches/proto/v4/libs/ptr_container/doc/reference.html | 23
   branches/proto/v4/libs/ptr_container/doc/reference.rst | 25
   branches/proto/v4/libs/ptr_container/test/Jamfile.v2 | 2
   branches/proto/v4/libs/ptr_container/test/sequence_test_data.hpp | 33
   branches/proto/v4/libs/ptr_container/test/serialization.cpp | 75
   branches/proto/v4/libs/ptr_container/test/test_data.hpp | 27
   branches/proto/v4/libs/python/doc/tutorial/doc/tutorial.qbk | 4
   branches/proto/v4/libs/python/doc/v2/object.html | 24
   branches/proto/v4/libs/python/doc/v2/pickle.html | 457
   branches/proto/v4/libs/python/test/module_tail.cpp | 1
   branches/proto/v4/libs/python/test/object.cpp | 6
   branches/proto/v4/libs/python/test/object.py | 7
   branches/proto/v4/libs/range/doc/boost_range.html | 110
   branches/proto/v4/libs/range/doc/examples.html | 8
   branches/proto/v4/libs/range/doc/faq.html | 4
   branches/proto/v4/libs/range/doc/headers.html | 2
   branches/proto/v4/libs/range/doc/intro.html | 2
   branches/proto/v4/libs/range/doc/portability.html | 5
   branches/proto/v4/libs/range/doc/range.html | 14
   branches/proto/v4/libs/range/doc/utility_class.html | 27
   branches/proto/v4/libs/range/index.html | 4
   branches/proto/v4/libs/range/test/Jamfile.v2 | 4
   branches/proto/v4/libs/rational/index.html | 3
   branches/proto/v4/libs/rational/rational.html | 5
   branches/proto/v4/libs/rational/test/rational_example.cpp | 4
   branches/proto/v4/libs/rational/test/rational_test.cpp | 20
   branches/proto/v4/libs/regex/doc/examples.qbk | 33
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/acknowledgements.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/examples.html | 51
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/faq.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/futher.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/headers.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/history.html | 14
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/locale.html | 12
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/performance.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/redist.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/standards.html | 14
   branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/thread_safety.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/captures.html | 10
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/algorithm.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/compiler.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/linkage.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/locale.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/tuning.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/format.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html | 12
   branches/proto/v4/libs/regex/doc/html/boost_regex/format/perl_format.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/format/sed_format.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/install.html | 20
   branches/proto/v4/libs/regex/doc/html/boost_regex/introduction_and_overview.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/partial_matches.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/bad_expression.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/basic_regex.html | 22
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/charT_concept.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/iterator_concepts.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/traits_concept.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/old_regex.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_format.html | 6
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_grep.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_split.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/error_type.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_flag_type.html | 6
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_results.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/intro.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_algo.html | 10
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_iter.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_types.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_algo.html | 14
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_intro.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_iter.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_create.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_types.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/posix.html | 12
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_iterator.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_match.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_replace.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_search.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_token_iterator.html | 8
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_traits.html | 6
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/sub_match.html | 12
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_basic.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_extended.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_literal.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_overview.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_perl.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_synopsis.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_extended.html | 70
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_syntax.html | 48
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/optional_char_class_names.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/std_char_clases.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/digraphs.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/named_unicode.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/posix_symbolic_names.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/leftmost_longest_rule.html | 4
   branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html | 88
   branches/proto/v4/libs/regex/doc/html/boost_regex/unicode.html | 8
   branches/proto/v4/libs/regex/doc/html/index.html | 8
   branches/proto/v4/libs/regex/example/snippets/icu_example.cpp | 2
   branches/proto/v4/libs/regex/src/wc_regex_traits.cpp | 45
   branches/proto/v4/libs/serialization/doc/headers.html | 13
   branches/proto/v4/libs/serialization/doc/performance_status.html | 2
   branches/proto/v4/libs/serialization/doc/release.html | 1
   branches/proto/v4/libs/serialization/doc/special.html | 4
   branches/proto/v4/libs/serialization/doc/style.css | 7
   branches/proto/v4/libs/serialization/doc/todo.html | 2
   branches/proto/v4/libs/serialization/example/demo.cpp | 1
   branches/proto/v4/libs/serialization/example/demo_dll.cpp | 1
   branches/proto/v4/libs/serialization/example/demo_dll_a.hpp | 2
   branches/proto/v4/libs/serialization/example/demo_dll_a.ipp | 2
   branches/proto/v4/libs/serialization/example/demo_exception.cpp | 1
   branches/proto/v4/libs/serialization/example/demo_shared_ptr.cpp | 1
   branches/proto/v4/libs/serialization/example/portable_binary_archive.hpp | 5
   branches/proto/v4/libs/serialization/performance/profile.sh | 5
   branches/proto/v4/libs/serialization/src/basic_archive.cpp | 6
   branches/proto/v4/libs/serialization/src/basic_iarchive.cpp | 23
   branches/proto/v4/libs/serialization/src/basic_iserializer.cpp | 2
   branches/proto/v4/libs/serialization/src/basic_oarchive.cpp | 1
   branches/proto/v4/libs/serialization/src/basic_oserializer.cpp | 2
   branches/proto/v4/libs/serialization/src/extended_type_info.cpp | 1
   branches/proto/v4/libs/serialization/src/extended_type_info_no_rtti.cpp | 4
   branches/proto/v4/libs/serialization/src/extended_type_info_typeid.cpp | 1
   branches/proto/v4/libs/serialization/src/void_cast.cpp | 1
   branches/proto/v4/libs/serialization/test/A.hpp | 9
   branches/proto/v4/libs/serialization/test/A.ipp | 2
   branches/proto/v4/libs/serialization/test/B.hpp | 1
   branches/proto/v4/libs/serialization/test/D.hpp | 2
   branches/proto/v4/libs/serialization/test/test_array.cpp | 14
   branches/proto/v4/libs/serialization/test/test_binary.cpp | 5
   branches/proto/v4/libs/serialization/test/test_codecvt_null.cpp | 4
   branches/proto/v4/libs/serialization/test/test_complex.cpp | 4
   branches/proto/v4/libs/serialization/test/test_contained_class.cpp | 1
   branches/proto/v4/libs/serialization/test/test_cyclic_ptrs.cpp | 1
   branches/proto/v4/libs/serialization/test/test_delete_pointer.cpp | 1
   branches/proto/v4/libs/serialization/test/test_deque.cpp | 1
   branches/proto/v4/libs/serialization/test/test_derived.cpp | 1
   branches/proto/v4/libs/serialization/test/test_derived_class_ptr.cpp | 1
   branches/proto/v4/libs/serialization/test/test_diamond.cpp | 3
   branches/proto/v4/libs/serialization/test/test_dll_exported.cpp | 1
   branches/proto/v4/libs/serialization/test/test_dll_simple.cpp | 1
   branches/proto/v4/libs/serialization/test/test_exported.cpp | 7
   branches/proto/v4/libs/serialization/test/test_list.cpp | 3
   branches/proto/v4/libs/serialization/test/test_list_ptrs.cpp | 3
   branches/proto/v4/libs/serialization/test/test_map.cpp | 2
   branches/proto/v4/libs/serialization/test/test_mi.cpp | 3
   branches/proto/v4/libs/serialization/test/test_mult_archive_types.cpp | 3
   branches/proto/v4/libs/serialization/test/test_multiple_ptrs.cpp | 3
   branches/proto/v4/libs/serialization/test/test_no_rtti.cpp | 3
   branches/proto/v4/libs/serialization/test/test_non_default_ctor.cpp | 3
   branches/proto/v4/libs/serialization/test/test_null_ptr.cpp | 3
   branches/proto/v4/libs/serialization/test/test_nvp.cpp | 3
   branches/proto/v4/libs/serialization/test/test_object.cpp | 3
   branches/proto/v4/libs/serialization/test/test_optional.cpp | 4
   branches/proto/v4/libs/serialization/test/test_polymorphic.cpp | 3
   branches/proto/v4/libs/serialization/test/test_primitive.cpp | 1
   branches/proto/v4/libs/serialization/test/test_recursion.cpp | 3
   branches/proto/v4/libs/serialization/test/test_registered.cpp | 3
   branches/proto/v4/libs/serialization/test/test_set.cpp | 11
   branches/proto/v4/libs/serialization/test/test_shared_ptr.cpp | 3
   branches/proto/v4/libs/serialization/test/test_shared_ptr_132.cpp | 1
   branches/proto/v4/libs/serialization/test/test_simple_class.cpp | 3
   branches/proto/v4/libs/serialization/test/test_simple_class_ptr.cpp | 3
   branches/proto/v4/libs/serialization/test/test_split.cpp | 3
   branches/proto/v4/libs/serialization/test/test_tracking.cpp | 3
   branches/proto/v4/libs/serialization/test/test_unregistered.cpp | 1
   branches/proto/v4/libs/serialization/test/test_valarray.cpp | 1
   branches/proto/v4/libs/serialization/test/test_variant.cpp | 3
   branches/proto/v4/libs/serialization/test/test_vector.cpp | 1
   branches/proto/v4/libs/serialization/test/test_void_cast.cpp | 1
   branches/proto/v4/libs/serialization/vc7ide/readme.txt | 7
   branches/proto/v4/libs/smart_ptr/test/sp_atomic_mt2_test.cpp | 6
   branches/proto/v4/libs/smart_ptr/test/sp_atomic_mt_test.cpp | 4
   branches/proto/v4/libs/smart_ptr/test/sp_atomic_test.cpp | 22
   branches/proto/v4/libs/smart_ptr/test/spinlock_pool_test.cpp | 2
   branches/proto/v4/libs/spirit/classic/doc/closures.html | 2
   branches/proto/v4/libs/spirit/classic/example/Jamfile | 9
   branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/distinct_parser.cpp | 2
   branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/distinct_parser_dynamic.cpp | 2
   branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/primitive_calc.cpp | 4
   branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/rpn_calc.cpp | 2
   branches/proto/v4/libs/spirit/classic/example/fundamental/no_actions.cpp | 4
   branches/proto/v4/libs/spirit/classic/example/fundamental/parser_context.cpp | 8
   branches/proto/v4/libs/spirit/classic/example/fundamental/stuff_vector.cpp | 4
   branches/proto/v4/libs/spirit/classic/example/fundamental/stuff_vector2.cpp | 6
   branches/proto/v4/libs/spirit/classic/example/fundamental/sum.cpp | 4
   branches/proto/v4/libs/spirit/classic/example/intermediate/ipv4_opt.cpp | 2
   branches/proto/v4/libs/spirit/classic/example/intermediate/lazy_parser.cpp | 6
   branches/proto/v4/libs/spirit/classic/example/intermediate/parameters.cpp | 8
   branches/proto/v4/libs/spirit/classic/example/techniques/epsilon.cpp | 4
   branches/proto/v4/libs/spirit/classic/example/techniques/no_rules/no_rule3.cpp | 2
   branches/proto/v4/libs/spirit/classic/test/grammar_def_test.cpp | 2
   branches/proto/v4/libs/spirit/classic/test/mix_and_match_trees.cpp | 2
   branches/proto/v4/libs/spirit/classic/test/negated_eps_p_test.cpp | 2
   branches/proto/v4/libs/spirit/classic/test/symbols_add_null.cpp | 11
   branches/proto/v4/libs/spirit/doc/Jamfile | 9
   branches/proto/v4/libs/spirit/doc/introduction.qbk | 187
   branches/proto/v4/libs/spirit/doc/lex.qbk | 12
   branches/proto/v4/libs/spirit/doc/lex/introduction.qbk | 23
   branches/proto/v4/libs/spirit/doc/lex/lexer_attributes.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/lexer_primitives.qbk | 3
   branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart1.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart2.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart3.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/lexer_semantic_actions.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/lexer_states.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/lexer_static_model.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/lexer_tutorials.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/parsing_using_a_lexer.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/token_definition.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/tokenizing.qbk | 2
   branches/proto/v4/libs/spirit/doc/lex/tokens_values.qbk | 2
   branches/proto/v4/libs/spirit/doc/qi_and_karma.qbk | 15
   branches/proto/v4/libs/spirit/doc/qi_and_karma/error_handling.qbk | 113
   branches/proto/v4/libs/spirit/doc/spirit2.qbk | 64
   branches/proto/v4/libs/spirit/doc/what_s_new.qbk | 42
   branches/proto/v4/libs/spirit/example/karma/actions.cpp | 2
   branches/proto/v4/libs/spirit/example/karma/calc2_ast_dump.cpp | 16
   branches/proto/v4/libs/spirit/example/karma/calc2_ast_rpn.cpp | 14
   branches/proto/v4/libs/spirit/example/karma/calc2_ast_vm.cpp | 16
   branches/proto/v4/libs/spirit/example/karma/mini_xml_karma.cpp | 14
   branches/proto/v4/libs/spirit/example/lex/example1.cpp | 6
   branches/proto/v4/libs/spirit/example/lex/example2.cpp | 14
   branches/proto/v4/libs/spirit/example/lex/example3.cpp | 16
   branches/proto/v4/libs/spirit/example/lex/example4.cpp | 6
   branches/proto/v4/libs/spirit/example/lex/example5.cpp | 8
   branches/proto/v4/libs/spirit/example/lex/example6.cpp | 6
   branches/proto/v4/libs/spirit/example/lex/print_numbers.cpp | 10
   branches/proto/v4/libs/spirit/example/lex/static_lexer/word_count_static.cpp | 13
   branches/proto/v4/libs/spirit/example/lex/strip_comments.cpp | 12
   branches/proto/v4/libs/spirit/example/lex/word_count.cpp | 19
   branches/proto/v4/libs/spirit/example/lex/word_count_functor.flex | 5
   branches/proto/v4/libs/spirit/example/lex/word_count_functor_flex.cpp | 1605
   branches/proto/v4/libs/spirit/example/qi/Jamfile | 15
   branches/proto/v4/libs/spirit/example/qi/actions.cpp | 52
   branches/proto/v4/libs/spirit/example/qi/calc1.cpp | 7
   branches/proto/v4/libs/spirit/example/qi/calc2.cpp | 7
   branches/proto/v4/libs/spirit/example/qi/calc2_ast.cpp | 7
   branches/proto/v4/libs/spirit/example/qi/calc3.cpp | 7
   branches/proto/v4/libs/spirit/example/qi/calc3_lexer.cpp | 10
   branches/proto/v4/libs/spirit/example/qi/calc4.cpp | 6
   branches/proto/v4/libs/spirit/example/qi/calc5.cpp | 9
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6.cpp | 7
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6.hpp | 7
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6b.hpp | 3
   branches/proto/v4/libs/spirit/example/qi/calc6/calc6c.hpp | 6
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7.cpp | 8
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7.hpp | 7
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7b.hpp | 3
   branches/proto/v4/libs/spirit/example/qi/calc7/calc7c.hpp | 6
   branches/proto/v4/libs/spirit/example/qi/complex_number.cpp | 2
   branches/proto/v4/libs/spirit/example/qi/employee.cpp | 13
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_c.cpp | 12
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_c.hpp | 22
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cb.hpp | 3
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cc.hpp | 6
   branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cd.hpp | 14
   branches/proto/v4/libs/spirit/example/qi/mini_xml1.cpp | 16
   branches/proto/v4/libs/spirit/example/qi/mini_xml2.cpp | 15
   branches/proto/v4/libs/spirit/example/qi/num_list2.cpp | 5
   branches/proto/v4/libs/spirit/example/qi/num_list3.cpp | 6
   branches/proto/v4/libs/spirit/example/qi/roman.cpp | 46
   branches/proto/v4/libs/spirit/example/qi/sum.cpp | 8
   branches/proto/v4/libs/spirit/phoenix/doc/Jamfile.v2 | 9
   branches/proto/v4/libs/spirit/phoenix/doc/html/index.html | 168
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/acknowledgement.html | 26
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/actors.html | 39
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/algorithm.html | 1148
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/basics.html | 112
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/composite.html | 561
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/inside_phoenix.html | 507
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/introduction.html | 26
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/organization.html | 356
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/primitives.html | 140
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/references.html | 26
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/starter_kit.html | 209
   branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/wrap_up.html | 50
   branches/proto/v4/libs/spirit/phoenix/doc/users_manual.qbk | 1121
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests.hpp | 16
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests1a.cpp | 2
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests3a.cpp | 6
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests3b.cpp | 4
   branches/proto/v4/libs/spirit/phoenix/test/container/container_tests6b.cpp | 6
   branches/proto/v4/libs/spirit/test/Jamfile | 9
   branches/proto/v4/libs/spirit/test/karma/actions.cpp | 2
   branches/proto/v4/libs/spirit/test/karma/char.cpp | 4
   branches/proto/v4/libs/spirit/test/karma/grammar.cpp | 7
   branches/proto/v4/libs/spirit/test/karma/grammar_fail.cpp | 2
   branches/proto/v4/libs/spirit/test/karma/pattern.cpp | 56
   branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp | 11
   branches/proto/v4/libs/spirit/test/karma/test.hpp | 8
   branches/proto/v4/libs/spirit/test/qi/grammar.cpp | 59
   branches/proto/v4/libs/spirit/test/qi/grammar_fail.cpp | 7
   branches/proto/v4/libs/spirit/test/qi/range_run.cpp | 17
   branches/proto/v4/libs/statechart/doc/future_and_history.html | 2
   branches/proto/v4/libs/statechart/doc/index.html | 2
   branches/proto/v4/libs/statechart/example/PingPong/Player.cpp | 2
   branches/proto/v4/libs/statechart/example/PingPong/Player.hpp | 26
   branches/proto/v4/libs/static_assert/doc/static_assert.qbk | 2
   branches/proto/v4/libs/system/doc/reference.html | 58
   branches/proto/v4/libs/system/src/error_code.cpp | 22
   branches/proto/v4/libs/system/test/system_error_test.cpp | 59
   branches/proto/v4/libs/test/example/Jamfile.v2 | 4
   branches/proto/v4/libs/test/example/cla/assign_to.cpp | 2
   branches/proto/v4/libs/test/example/cla/basic_float.cpp | 2
   branches/proto/v4/libs/test/example/cla/basic_int.cpp | 2
   branches/proto/v4/libs/test/example/cla/basic_list.cpp | 2
   branches/proto/v4/libs/test/example/cla/basic_string.cpp | 2
   branches/proto/v4/libs/test/example/cla/basic_udt.cpp | 2
   branches/proto/v4/libs/test/example/cla/char_parameter.cpp | 2
   branches/proto/v4/libs/test/example/cla/custom_handler.cpp | 2
   branches/proto/v4/libs/test/example/cla/custom_interpreter.cpp | 2
   branches/proto/v4/libs/test/example/cla/custom_parameter.cpp | 2
   branches/proto/v4/libs/test/example/cla/default_value.cpp | 2
   branches/proto/v4/libs/test/example/cla/dual_name.cpp | 2
   branches/proto/v4/libs/test/example/cla/global.cpp | 2
   branches/proto/v4/libs/test/example/cla/guess_name.cpp | 2
   branches/proto/v4/libs/test/example/cla/help.cpp | 2
   branches/proto/v4/libs/test/example/cla/ignore_mismatch.cpp | 2
   branches/proto/v4/libs/test/example/cla/input_separator.cpp | 2
   branches/proto/v4/libs/test/example/cla/multiplicable.cpp | 2
   branches/proto/v4/libs/test/example/cla/name.cpp | 2
   branches/proto/v4/libs/test/example/cla/optional.cpp | 2
   branches/proto/v4/libs/test/example/cla/optional_value.cpp | 2
   branches/proto/v4/libs/test/example/cla/positional.cpp | 2
   branches/proto/v4/libs/test/example/cla/prefix.cpp | 2
   branches/proto/v4/libs/test/example/cla/reference.cpp | 2
   branches/proto/v4/libs/test/example/cla/remainder.cpp | 2
   branches/proto/v4/libs/test/example/cla/separator.cpp | 2
   branches/proto/v4/libs/test/example/cla/usage.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/access_unknown.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/ambiguous_access.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/ambiguous_input.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/definition_conflict.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/invalid_short_name.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/multiple_generators.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/multiple_value_handlers.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/opt_with_default_value.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/optional_plus_multiplicable.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/required_missing.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/unexpected_input.cpp | 2
   branches/proto/v4/libs/test/example/cla/validation/unexpected_repetition.cpp | 2
   branches/proto/v4/libs/test/example/cla/wide_string.cpp | 2
   branches/proto/v4/libs/test/example/env/custom_interpreter_env.cpp | 2
   branches/proto/v4/libs/test/example/env/env_var_default_value.cpp | 2
   branches/proto/v4/libs/test/example/env/environment_ex.cpp | 2
   branches/proto/v4/libs/test/example/env/global_id.cpp | 2
   branches/proto/v4/libs/test/example/env/modifier_combination.cpp | 2
   branches/proto/v4/libs/test/example/env/validation/need_typed_access.cpp | 2
   branches/proto/v4/libs/test/example/env/variable_ex.cpp | 2
   branches/proto/v4/libs/test/example/est_example1.cpp | 2
   branches/proto/v4/libs/test/example/est_example2.cpp | 2
   branches/proto/v4/libs/test/example/exec_mon_example.cpp | 2
   branches/proto/v4/libs/test/example/logged_exp_example.cpp | 2
   branches/proto/v4/libs/test/example/named_param_example.cpp | 2
   branches/proto/v4/libs/test/example/prg_exec_example.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_02.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_03.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_04.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_05.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_06.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_07.cpp | 4
   branches/proto/v4/libs/test/example/unit_test_example_08.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_09_1.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_09_2.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_10.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_11.cpp | 2
   branches/proto/v4/libs/test/example/unit_test_example_12.cpp | 2
   branches/proto/v4/libs/test/index.html | 4
   branches/proto/v4/libs/test/src/compiler_log_formatter.cpp | 2
   branches/proto/v4/libs/test/src/cpp_main.cpp | 2
   branches/proto/v4/libs/test/src/debug.cpp | 2
   branches/proto/v4/libs/test/src/exception_safety.cpp | 2
   branches/proto/v4/libs/test/src/execution_monitor.cpp | 2
   branches/proto/v4/libs/test/src/framework.cpp | 2
   branches/proto/v4/libs/test/src/interaction_based.cpp | 2
   branches/proto/v4/libs/test/src/logged_expectations.cpp | 2
   branches/proto/v4/libs/test/src/plain_report_formatter.cpp | 2
   branches/proto/v4/libs/test/src/progress_monitor.cpp | 2
   branches/proto/v4/libs/test/src/results_collector.cpp | 2
   branches/proto/v4/libs/test/src/results_reporter.cpp | 2
   branches/proto/v4/libs/test/src/test_main.cpp | 2
   branches/proto/v4/libs/test/src/test_tools.cpp | 2
   branches/proto/v4/libs/test/src/unit_test_log.cpp | 2
   branches/proto/v4/libs/test/src/unit_test_main.cpp | 2
   branches/proto/v4/libs/test/src/unit_test_monitor.cpp | 2
   branches/proto/v4/libs/test/src/unit_test_parameters.cpp | 2
   branches/proto/v4/libs/test/src/unit_test_suite.cpp | 2
   branches/proto/v4/libs/test/src/xml_log_formatter.cpp | 2
   branches/proto/v4/libs/test/src/xml_report_formatter.cpp | 2
   branches/proto/v4/libs/test/test/Jamfile.v2 | 11
   branches/proto/v4/libs/test/test/algorithms_test.cpp | 2
   branches/proto/v4/libs/test/test/basic_cstring_test.cpp | 68
   branches/proto/v4/libs/test/test/boost_check_equal_str.cpp | 2
   branches/proto/v4/libs/test/test/class_properties_test.cpp | 3
   branches/proto/v4/libs/test/test/config_file_iterator_test.cpp | 2
   branches/proto/v4/libs/test/test/config_file_test.cpp | 2
   branches/proto/v4/libs/test/test/custom_exception_test.cpp | 2
   branches/proto/v4/libs/test/test/errors_handling_test.cpp | 4
   branches/proto/v4/libs/test/test/fixed_mapping_test.cpp | 2
   branches/proto/v4/libs/test/test/foreach_test.cpp | 2
   branches/proto/v4/libs/test/test/ifstream_line_iterator_test.cpp | 2
   branches/proto/v4/libs/test/test/minimal_test.cpp | 2
   branches/proto/v4/libs/test/test/online_test.cpp | 2
   branches/proto/v4/libs/test/test/output_test_stream_test.cpp | 2
   branches/proto/v4/libs/test/test/parameterized_test_test.cpp | 2
   branches/proto/v4/libs/test/test/prg_exec_fail1.cpp | 2
   branches/proto/v4/libs/test/test/prg_exec_fail2.cpp | 7
   branches/proto/v4/libs/test/test/prg_exec_fail3.cpp | 2
   branches/proto/v4/libs/test/test/prg_exec_fail4.cpp | 2
   branches/proto/v4/libs/test/test/result_report_test.cpp | 2
   branches/proto/v4/libs/test/test/test_case_template_test.cpp | 2
   branches/proto/v4/libs/test/test/test_files/test_tools_test.pattern | 141
   branches/proto/v4/libs/test/test/test_fp_comparisons.cpp | 2
   branches/proto/v4/libs/test/test/test_tools_test.cpp | 9
   branches/proto/v4/libs/test/test/test_tree_management_test.cpp | 81
   branches/proto/v4/libs/test/test/token_iterator_test.cpp | 2
   branches/proto/v4/libs/test/tools/console_test_runner/src/console_test_runner.cpp | 2
   branches/proto/v4/libs/test/tools/console_test_runner/test/test_runner_test.cpp | 2
   branches/proto/v4/libs/thread/doc/acknowledgements.qbk | 7
   branches/proto/v4/libs/thread/doc/barrier.qbk | 7
   branches/proto/v4/libs/thread/doc/changes.qbk | 7
   branches/proto/v4/libs/thread/doc/condition_variables.qbk | 19
   branches/proto/v4/libs/thread/doc/mutex_concepts.qbk | 202
   branches/proto/v4/libs/thread/doc/mutexes.qbk | 27
   branches/proto/v4/libs/thread/doc/once.qbk | 15
   branches/proto/v4/libs/thread/doc/overview.qbk | 15
   branches/proto/v4/libs/thread/doc/shared_mutex_ref.qbk | 9
   branches/proto/v4/libs/thread/doc/thread.qbk | 11
   branches/proto/v4/libs/thread/doc/thread_ref.qbk | 64
   branches/proto/v4/libs/thread/doc/time.qbk | 11
   branches/proto/v4/libs/thread/doc/tss.qbk | 9
   branches/proto/v4/libs/thread/src/pthread/thread.cpp | 4
   branches/proto/v4/libs/thread/test/test_condition_timed_wait_times_out.cpp | 88
   branches/proto/v4/libs/thread/test/test_generic_locks.cpp | 10
   branches/proto/v4/libs/thread/test/test_lock_concept.cpp | 310
   branches/proto/v4/libs/thread/test/test_shared_mutex.cpp | 10
   branches/proto/v4/libs/thread/test/test_shared_mutex_part_2.cpp | 115
   branches/proto/v4/libs/thread/test/test_thread_mf.cpp | 94
   branches/proto/v4/libs/thread/test/test_xtime.cpp | 44
   branches/proto/v4/libs/tr1/doc/tr1.qbk | 38
   branches/proto/v4/libs/tr1/test/Jamfile.v2 | 11
   branches/proto/v4/libs/tuple/test/another_tuple_test_bench.cpp | 2
   branches/proto/v4/libs/tuple/test/io_test.cpp | 2
   branches/proto/v4/libs/tuple/test/tuple_test_bench.cpp | 2
   branches/proto/v4/libs/units/doc/Jamfile.v2 | 79
   branches/proto/v4/libs/units/doc/units.qbk | 95
   branches/proto/v4/libs/units/example/kitchen_sink.cpp | 2
   branches/proto/v4/libs/units/example/temperature.cpp | 4
   branches/proto/v4/libs/units/index.html | 10
   branches/proto/v4/libs/units/test/Jamfile.v2 | 4
   branches/proto/v4/libs/units/test_headers/Jamfile.v2 | 31
   branches/proto/v4/libs/unordered/doc/bibliography.xml | 5
   branches/proto/v4/libs/unordered/doc/changes.qbk | 5
   branches/proto/v4/libs/unordered/doc/comparison.qbk | 2
   branches/proto/v4/libs/unordered/doc/hash_equality.qbk | 4
   branches/proto/v4/libs/unordered/doc/intro.qbk | 4
   branches/proto/v4/libs/unordered/doc/rationale.qbk | 35
   branches/proto/v4/libs/unordered/doc/ref.xml | 122
   branches/proto/v4/libs/unordered/doc/src_code/dictionary.cpp | 2
   branches/proto/v4/libs/unordered/test/helpers/count.hpp | 5
   branches/proto/v4/libs/unordered/test/helpers/equivalent.hpp | 5
   branches/proto/v4/libs/unordered/test/objects/exception.hpp | 2
   branches/proto/v4/libs/unordered/test/objects/test.hpp | 7
   branches/proto/v4/libs/unordered/test/unordered/compile_map.cpp | 15
   branches/proto/v4/libs/unordered/test/unordered/compile_set.cpp | 13
   branches/proto/v4/libs/unordered/test/unordered/compile_tests.hpp | 5
   branches/proto/v4/libs/unordered/test/unordered/equality_tests.cpp | 186
   branches/proto/v4/libs/unordered/test/unordered/unnecessary_copy_tests.cpp | 5
   branches/proto/v4/libs/utility/enable_if/test/constructors.cpp | 2
   branches/proto/v4/libs/utility/enable_if/test/dummy_arg_disambiguation.cpp | 2
   branches/proto/v4/libs/utility/enable_if/test/lazy.cpp | 2
   branches/proto/v4/libs/utility/enable_if/test/lazy_test.cpp | 2
   branches/proto/v4/libs/utility/enable_if/test/member_templates.cpp | 2
   branches/proto/v4/libs/utility/enable_if/test/namespace_disambiguation.cpp | 2
   branches/proto/v4/libs/utility/enable_if/test/no_disambiguation.cpp | 2
   branches/proto/v4/libs/utility/enable_if/test/partial_specializations.cpp | 2
   branches/proto/v4/libs/utility/index.html | 3
   branches/proto/v4/libs/utility/ref_test.cpp | 43
   branches/proto/v4/libs/wave/test/testwave/testfiles/t_1_034.cpp | 2
   branches/proto/v4/libs/wave/test/testwave/testfiles/t_1_035.cpp | 2
   branches/proto/v4/libs/xpressive/doc/actions.qbk | 31
   branches/proto/v4/libs/xpressive/doc/history.qbk | 21
   branches/proto/v4/libs/xpressive/doc/substitutions.qbk | 171
   branches/proto/v4/libs/xpressive/doc/xpressive.qbk | 6
   branches/proto/v4/libs/xpressive/test/Jamfile.v2 | 4
   branches/proto/v4/libs/xpressive/test/misc2.cpp | 9
   branches/proto/v4/libs/xpressive/test/regress.ipp | 5
   branches/proto/v4/libs/xpressive/test/regress.txt | 41
   branches/proto/v4/more/getting_started/detail/release-variables.rst | 6
   branches/proto/v4/more/getting_started/unix-variants.rst | 4
   branches/proto/v4/status/Jamfile.v2 | 1
   branches/proto/v4/status/explicit-failures-markup.xml | 156
   branches/proto/v4/tools/boostbook/doc/boostbook.xml | 6
   branches/proto/v4/tools/boostbook/doc/documenting.xml | 2
   branches/proto/v4/tools/boostbook/dtd/boostbook.dtd | 7
   branches/proto/v4/tools/boostbook/xsl/annotation.xsl | 31
   branches/proto/v4/tools/boostbook/xsl/chunk-common.xsl | 2
   branches/proto/v4/tools/boostbook/xsl/docbook.xsl | 2
   branches/proto/v4/tools/boostbook/xsl/doxygen/collect.xsl | 8
   branches/proto/v4/tools/boostbook/xsl/source-highlight.xsl | 2
   branches/proto/v4/tools/build/v2/build/feature.jam | 6
   branches/proto/v4/tools/build/v2/build/generators.jam | 10
   branches/proto/v4/tools/build/v2/build/project.jam | 4
   branches/proto/v4/tools/build/v2/build/property-set.jam | 2
   branches/proto/v4/tools/build/v2/build/property.jam | 25
   branches/proto/v4/tools/build/v2/build/toolset.jam | 21
   branches/proto/v4/tools/build/v2/build/virtual-target.jam | 2
   branches/proto/v4/tools/build/v2/doc/src/fragments.xml | 59
   branches/proto/v4/tools/build/v2/doc/src/reference.xml | 796
   branches/proto/v4/tools/build/v2/doc/src/tasks.xml | 38
   branches/proto/v4/tools/build/v2/test/clean.py | 50
   branches/proto/v4/tools/build/v2/test/conditionals_multiple.py | 2
   branches/proto/v4/tools/build/v2/test/example_qt4.py | 6
   branches/proto/v4/tools/build/v2/test/test_all.py | 4
   branches/proto/v4/tools/build/v2/tools/acc.jam | 15
   branches/proto/v4/tools/build/v2/tools/builtin.jam | 46
   branches/proto/v4/tools/build/v2/tools/common.jam | 136
   branches/proto/v4/tools/build/v2/tools/como-linux.jam | 30
   branches/proto/v4/tools/build/v2/tools/como-win.jam | 65
   branches/proto/v4/tools/build/v2/tools/como.jam | 5
   branches/proto/v4/tools/build/v2/tools/darwin.jam | 210
   branches/proto/v4/tools/build/v2/tools/doxygen.jam | 198
   branches/proto/v4/tools/build/v2/tools/gcc.jam | 125
   branches/proto/v4/tools/build/v2/tools/hp_cxx.jam | 15
   branches/proto/v4/tools/build/v2/tools/msvc.jam | 26
   branches/proto/v4/tools/build/v2/tools/python.jam | 77
   branches/proto/v4/tools/build/v2/tools/qcc.jam | 152
   branches/proto/v4/tools/build/v2/tools/qt4.jam | 459
   branches/proto/v4/tools/build/v2/tools/quickbook.jam | 54
   branches/proto/v4/tools/build/v2/tools/stage.jam | 12
   branches/proto/v4/tools/build/v2/tools/testing.jam | 6
   branches/proto/v4/tools/build/v2/tools/xsltproc.jam | 128
   branches/proto/v4/tools/build/v2/util/numbers.jam | 2
   branches/proto/v4/tools/build/v2/util/path.jam | 16
   branches/proto/v4/tools/build/v2/util/regex.jam | 133
   branches/proto/v4/tools/build/v2/util/sequence.jam | 4
   branches/proto/v4/tools/build/v2/util/set.jam | 47
   branches/proto/v4/tools/inspect/ascii_check.cpp | 47
   branches/proto/v4/tools/inspect/ascii_check.hpp | 6
   branches/proto/v4/tools/inspect/build/Jamfile.v2 | 2
   branches/proto/v4/tools/inspect/copyright_check.hpp | 2
   branches/proto/v4/tools/inspect/crlf_check.hpp | 4
   branches/proto/v4/tools/inspect/index.html | 11
   branches/proto/v4/tools/inspect/inspect.cpp | 173
   branches/proto/v4/tools/inspect/inspector.hpp | 2
   branches/proto/v4/tools/inspect/license_check.hpp | 4
   branches/proto/v4/tools/inspect/link_check.cpp | 11
   branches/proto/v4/tools/inspect/link_check.hpp | 10
   branches/proto/v4/tools/inspect/minmax_check.hpp | 2
   branches/proto/v4/tools/inspect/tab_check.hpp | 4
   branches/proto/v4/tools/inspect/time_string.hpp | 2
   branches/proto/v4/tools/inspect/unnamed_namespace_check.hpp | 2
   branches/proto/v4/tools/jam/src/execnt.c | 12
   branches/proto/v4/tools/quickbook/detail/actions_class.cpp | 2
   branches/proto/v4/tools/quickbook/detail/actions_class.hpp | 2
   branches/proto/v4/tools/quickbook/detail/markups.hpp | 2
   branches/proto/v4/tools/quickbook/doc/html/index.html | 12
   branches/proto/v4/tools/quickbook/doc/html/quickbook/change_log.html | 52
   branches/proto/v4/tools/quickbook/doc/html/quickbook/editors.html | 22
   branches/proto/v4/tools/quickbook/doc/html/quickbook/editors/kde_support.html | 117
   branches/proto/v4/tools/quickbook/doc/html/quickbook/editors/scite.html | 29
   branches/proto/v4/tools/quickbook/doc/html/quickbook/faq.html | 33
   branches/proto/v4/tools/quickbook/doc/html/quickbook/install.html | 19
   branches/proto/v4/tools/quickbook/doc/html/quickbook/install/linux.html | 52
   branches/proto/v4/tools/quickbook/doc/html/quickbook/install/macosx.html | 60
   branches/proto/v4/tools/quickbook/doc/html/quickbook/install/windows.html | 61
   branches/proto/v4/tools/quickbook/doc/html/quickbook/intro.html | 17
   branches/proto/v4/tools/quickbook/doc/html/quickbook/ref.html | 242
   branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax.html | 13
   branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/block.html | 505
   branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/comments.html | 15
   branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/phrase.html | 287
   branches/proto/v4/tools/quickbook/doc/quickbook.qbk | 9
   branches/proto/v4/tools/quickbook/phrase.hpp | 14
   branches/proto/v4/tools/regression/src/compiler_status.cpp | 163
   branches/proto/v4/tools/regression/src/library_status.cpp | 10
   branches/proto/v4/tools/regression/src/process_jam_log.cpp | 144
   2675 files changed, 67727 insertions(+), 47384 deletions(-)

Modified: branches/proto/v4/Jamroot
==============================================================================
--- branches/proto/v4/Jamroot (original)
+++ branches/proto/v4/Jamroot 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -47,8 +47,8 @@
 # "release" version of the libraries. This
 # release corresponds to specifying:
 # "release <threading>multi <link>shared
-# <runtime-link>shared" as the Boost.Build
-# variant to build.
+# <link>static <runtime-link>shared" as the
+# Boost.Build variant to build.
 #
 # complete - Attempts to build all possible
 # variations.
@@ -61,8 +61,8 @@
 # --show-libraries Displays the list of Boost libraries that require
 # build and installation steps, then exit.
 #
-# --layout=<layout> Determines whether to choose library names
-# and header locations such that multiple
+# --layout=<layout> Determines whether to choose library names
+# and header locations such that multiple
 # versions of Boost or multiple compilers can
 # be used on the same system.
 #
@@ -98,6 +98,7 @@
 # - handle boost version
 # - handle python options such as pydebug
 
+import generate ;
 import modules ;
 import set ;
 import stage ;
@@ -110,9 +111,10 @@
 import "class" : new ;
 import common ;
 import sequence ;
+import symlink ;
 
 path-constant BOOST_ROOT : . ;
-constant BOOST_VERSION : 1.35.0 ;
+constant BOOST_VERSION : 1.36.0 ;
 constant BOOST_JAMROOT_MODULE : $(__name__) ;
 
 local version-tag = [ MATCH "^([^.]+)[.]([^.]+)[.]([^.]+)" : $(BOOST_VERSION) ] ;
@@ -136,7 +138,7 @@
 local default-build,minimal =
     release
     <threading>multi
- <link>shared
+ <link>shared <link>static
     <runtime-link>shared
     ;
 local default-build,complete =
@@ -159,18 +161,18 @@
 
 
 rule handle-static-runtime ( properties * )
-{
+{
     # This property combination is dangerous.
     # Ideally, we'd add constraint to default build,
     # so that user can build with property combination
     # by hand. But we don't have any 'constraint' mechanism
     # for default-build, so disable such builds in requirements.
-
+
     # For CW, static runtime is needed so that
     # std::locale works.
     if <link>shared in $(properties)
       && <runtime-link>static in $(properties)
- && ! ( <toolset>cw in $(properties) )
+ && ! ( <toolset>cw in $(properties) )
     {
         return <build>no ;
     }
@@ -186,7 +188,7 @@
       # 'tag' rule below.
       <tag>@$(__name__).tag
       <conditional>@handle-static-runtime
-
+
     : usage-requirements <include>.
     : build-dir bin.v2
     : default-build $(default-build)
@@ -197,27 +199,29 @@
 all-libraries =
     [ MATCH .*libs/(.*)/build/.* : [ glob libs/*/build/Jamfile.v2 ] [ glob libs/*/build/Jamfile ] ]
     ;
-
-all-libraries = [ sequence.unique $(all-libraries) ] ;
 
-# First, the complicated libraries: where the target name in
-# Jamfile is different from directory name.
-alias prg_exec_monitor : libs/test/build//boost_prg_exec_monitor ;
-alias test_exec_monitor : libs/test/build//boost_test_exec_monitor ;
-alias unit_test_framework : libs/test/build//boost_unit_test_framework ;
-alias bgl-vis : libs/graps/build//bgl-vis ;
-alias serialization : libs/serialization/build//boost_serialization ;
-alias wserialization : libs/serialization/build//boost_wserialization ;
+all-libraries = [ sequence.unique $(all-libraries) ] ;
+
 
-explicit prg_exec_monitor test_exec_monitor unit_test_framework
- bgl-vis serialization wserialization ;
+local rule explicit-alias ( id : targets + )
+{
+ alias $(id) : $(targets) ;
+ explicit $(id) ;
+}
 
+# First, the complicated libraries: where the target name in Jamfile is
+# different from its directory name.
+explicit-alias prg_exec_monitor : libs/test/build//boost_prg_exec_monitor ;
+explicit-alias test_exec_monitor : libs/test/build//boost_test_exec_monitor ;
+explicit-alias unit_test_framework : libs/test/build//boost_unit_test_framework ;
+explicit-alias bgl-vis : libs/graps/build//bgl-vis ;
+explicit-alias serialization : libs/serialization/build//boost_serialization ;
+explicit-alias wserialization : libs/serialization/build//boost_wserialization ;
 for local l in $(all-libraries)
 {
     if ! $(l) in test graph serialization
     {
- alias $(l) : libs/$(l)/build//boost_$(l) ;
- explicit $(l) ;
+ explicit-alias $(l) : libs/$(l)/build//boost_$(l) ;
     }
 }
 
@@ -226,7 +230,7 @@
 
 # Decides which libraries are to be installed by looking at --with-<library>
 # --without-<library> arguments. Returns the list of directories under "libs"
-# which must be built at installed.
+# which must be built and installed.
 rule libraries-to-install ( existing-libraries * )
 {
    local argv = [ modules.peek : ARGV ] ;
@@ -312,7 +316,7 @@
                 <base> <toolset> <threading> <runtime> -$(BOOST_VERSION_TAG)
                 -$(BUILD_ID)
                 : $(name) : $(type) : $(property-set) ] ;
-
+
             # Optionally add version suffix.
             # On NT, library with version suffix won't be recognized
             # by linkers. On CYGWIN, we get strage duplicate symbol
@@ -327,7 +331,7 @@
             {
                 result = $(result).$(BOOST_VERSION) ;
             }
-
+
             return $(result) ;
         }
         else
@@ -380,22 +384,22 @@
 install stage-proper
     : libs/$(libraries)/build
     : <location>$(stage-locate)/lib
- <install-dependencies>on <install-type>LIB
+ <install-dependencies>on <install-type>LIB
         <install-no-version-symlinks>on
     ;
 explicit stage-proper ;
 
 
-if $(layout-versioned)
+if $(layout-versioned)
   && ( [ modules.peek : NT ] || [ modules.peek : UNIX ] )
 {
     rule make-unversioned-links ( project name ? : property-set : sources * )
     {
         local result ;
         local filtered ;
- local pattern ;
+ local pattern ;
         local nt = [ modules.peek : NT ] ;
-
+
         # Collect the libraries that have the version number in 'filtered'.
         for local s in $(sources)
         {
@@ -406,14 +410,14 @@
             }
             else
             {
- m = [ MATCH "(.*[.]so[.0-9]+)" "(.*[.]a)" : [ $(s).name ] ] ;
- }
+ m = [ MATCH "(.*[.]so[.0-9]+)" "(.*[.]dylib)" "(.*[.]a)" : [ $(s).name ] ] ;
+ }
             if $(m)
             {
                 filtered += $(s) ;
             }
         }
-
+
         # Create links without version.
         for local s in $(filtered)
         {
@@ -422,7 +426,7 @@
             local ep = [ $(ea).properties ] ;
             local a = [
               new non-scanning-action $(s) : symlink.ln : $(ep) ] ;
-
+
             local noversion-file ;
             if $(nt)
             {
@@ -430,26 +434,27 @@
             }
             else
             {
- noversion-file =
- [ MATCH "(.*)-[0-9_]+([.]so)[.0-9]*" : $(name) ]
- [ MATCH "(.*)-[0-9_]+([.]a)" : $(name) ]
+ noversion-file =
+ [ MATCH "(.*)-[0-9_]+([.]so)[.0-9]*" : $(name) ]
+ [ MATCH "(.*)-[0-9_]+([.]dylib)" : $(name) ]
+ [ MATCH "(.*)-[0-9_]+([.]a)" : $(name) ]
                   [ MATCH "(.*)-[0-9_]+([.]dll[.]a)" : $(name) ] ;
             }
-
- local new-name =
+
+ local new-name =
                $(noversion-file[1])$(noversion-file[2]) ;
             result += [ new file-target $(new-name) exact : [ $(s).type ] : $(project)
                     : $(a) ] ;
 
         }
         return $(result) ;
- }
-
- generate stage-unversioned : stage-proper :
+ }
+
+ generate stage-unversioned : stage-proper :
       <generating-rule>@make-unversioned-links ;
     explicit stage-unversioned ;
-
- generate install-unversioned : install-proper :
+
+ generate install-unversioned : install-proper :
       <generating-rule>@make-unversioned-links ;
     explicit install-unversioned ;
 }
@@ -457,7 +462,9 @@
 {
     # Create do-nothing aliases
     alias stage-unversioned ;
+ explicit stage-unversioned ;
     alias install-unversioned ;
+ explicit install-unversioned ;
 }
 
 alias install : install-proper install-unversioned ;

Modified: branches/proto/v4/boost/accumulators/framework/accumulator_set.hpp
==============================================================================
--- branches/proto/v4/boost/accumulators/framework/accumulator_set.hpp (original)
+++ branches/proto/v4/boost/accumulators/framework/accumulator_set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -227,6 +227,10 @@
         fusion::filter_view<accumulators_type, FilterPred> filtered_accs(this->accumulators);
         fusion::for_each(filtered_accs, func);
     }
+
+ ///////////////////////////////////////////////////////////////////////////////
+ /// The return type of the operator() overloads is void.
+ typedef void result_type;
 
     ///////////////////////////////////////////////////////////////////////////////
     /// Accumulation

Modified: branches/proto/v4/boost/accumulators/statistics/error_of_mean.hpp
==============================================================================
--- branches/proto/v4/boost/accumulators/statistics/error_of_mean.hpp (original)
+++ branches/proto/v4/boost/accumulators/statistics/error_of_mean.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -51,20 +51,20 @@
 {
     template<>
     struct error_of<mean>
- : depends_on<variance, count>
+ : depends_on<lazy_variance, count>
     {
         /// INTERNAL ONLY
         ///
- typedef accumulators::impl::error_of_mean_impl<mpl::_1, variance> impl;
+ typedef accumulators::impl::error_of_mean_impl<mpl::_1, lazy_variance> impl;
     };
 
     template<>
     struct error_of<immediate_mean>
- : depends_on<immediate_variance, count>
+ : depends_on<variance, count>
     {
         /// INTERNAL ONLY
         ///
- typedef accumulators::impl::error_of_mean_impl<mpl::_1, immediate_variance> impl;
+ typedef accumulators::impl::error_of_mean_impl<mpl::_1, variance> impl;
     };
 }
 

Modified: branches/proto/v4/boost/accumulators/statistics/tail.hpp
==============================================================================
--- branches/proto/v4/boost/accumulators/statistics/tail.hpp (original)
+++ branches/proto/v4/boost/accumulators/statistics/tail.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,6 +10,7 @@
 
 #include <vector>
 #include <functional>
+#include <boost/assert.hpp>
 #include <boost/range.hpp>
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/or.hpp>
@@ -167,7 +168,7 @@
           , indices(that.indices)
           , samples(that.samples)
         {
- this->indices.reserve(that.indices.capacity());
+ this->indices.reserve(this->samples.size());
         }
 
         // This just stores the heap and the samples.
@@ -185,7 +186,7 @@
         template<typename Args>
         void operator ()(Args const &args)
         {
- if(this->indices.size() < this->indices.capacity())
+ if(this->indices.size() < this->samples.size())
             {
                 this->indices.push_back(this->indices.size());
                 this->assign(args, this->indices.back());
@@ -232,6 +233,7 @@
         template<typename Args>
         void assign(Args const &args, std::size_t index)
         {
+ BOOST_ASSERT(index < this->samples.size());
             this->samples[index] = args[sample];
             std::push_heap(this->indices.begin(), this->indices.end(), indirect_cmp(this->samples));
             this->is_sorted = false;

Modified: branches/proto/v4/boost/accumulators/statistics/variance.hpp
==============================================================================
--- branches/proto/v4/boost/accumulators/statistics/variance.hpp (original)
+++ branches/proto/v4/boost/accumulators/statistics/variance.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -25,7 +25,7 @@
 
 namespace impl
 {
- //! Lazy calculaation of variance.
+ //! Lazy calculation of variance.
     /*!
         Default sample variance implementation based on the second moment \f$ M_n^{(2)} \f$ moment<2>, mean and count.
         \f[
@@ -38,13 +38,13 @@
         is the estimate of the sample mean and \f$n\f$ is the number of samples.
     */
     template<typename Sample, typename MeanFeature>
- struct variance_impl
+ struct lazy_variance_impl
       : accumulator_base
     {
         // for boost::result_of
         typedef typename numeric::functional::average<Sample, std::size_t>::result_type result_type;
 
- variance_impl(dont_care) {}
+ lazy_variance_impl(dont_care) {}
 
         template<typename Args>
         result_type result(Args const &args) const
@@ -81,14 +81,14 @@
         can be non-negligible.
     */
     template<typename Sample, typename MeanFeature, typename Tag>
- struct immediate_variance_impl
+ struct variance_impl
       : accumulator_base
     {
         // for boost::result_of
         typedef typename numeric::functional::average<Sample, std::size_t>::result_type result_type;
 
         template<typename Args>
- immediate_variance_impl(Args const &args)
+ variance_impl(Args const &args)
           : variance(numeric::average(args[sample | Sample()], numeric::one<std::size_t>::value))
         {
         }
@@ -125,53 +125,54 @@
 //
 namespace tag
 {
- struct variance
+ struct lazy_variance
       : depends_on<moment<2>, mean>
     {
         /// INTERNAL ONLY
         ///
- typedef accumulators::impl::variance_impl<mpl::_1, mean> impl;
+ typedef accumulators::impl::lazy_variance_impl<mpl::_1, mean> impl;
     };
- struct immediate_variance
+
+ struct variance
       : depends_on<count, immediate_mean>
     {
         /// INTERNAL ONLY
         ///
- typedef accumulators::impl::immediate_variance_impl<mpl::_1, mean, sample> impl;
+ typedef accumulators::impl::variance_impl<mpl::_1, mean, sample> impl;
     };
 }
 
 ///////////////////////////////////////////////////////////////////////////////
+// extract::lazy_variance
 // extract::variance
-// extract::immediate_variance
 //
 namespace extract
 {
+ extractor<tag::lazy_variance> const lazy_variance = {};
     extractor<tag::variance> const variance = {};
- extractor<tag::immediate_variance> const immediate_variance = {};
 }
 
+using extract::lazy_variance;
 using extract::variance;
-using extract::immediate_variance;
 
-// variance(lazy) -> variance
+// variance(lazy) -> lazy_variance
 template<>
 struct as_feature<tag::variance(lazy)>
 {
- typedef tag::variance type;
+ typedef tag::lazy_variance type;
 };
 
-// variance(immediate) -> immediate_variance
+// variance(immediate) -> variance
 template<>
 struct as_feature<tag::variance(immediate)>
 {
- typedef tag::immediate_variance type;
+ typedef tag::variance type;
 };
 
 // for the purposes of feature-based dependency resolution,
 // immediate_variance provides the same feature as variance
 template<>
-struct feature_of<tag::immediate_variance>
+struct feature_of<tag::lazy_variance>
   : feature_of<tag::variance>
 {
 };
@@ -195,16 +196,16 @@
 // So that immediate_variance can be automatically substituted with
 // immediate_weighted_variance when the weight parameter is non-void.
 template<>
-struct as_weighted_feature<tag::immediate_variance>
+struct as_weighted_feature<tag::lazy_variance>
 {
- typedef tag::immediate_weighted_variance type;
+ typedef tag::lazy_weighted_variance type;
 };
 
 // for the purposes of feature-based dependency resolution,
 // immediate_weighted_variance provides the same feature as immediate_variance
 template<>
-struct feature_of<tag::immediate_weighted_variance>
- : feature_of<tag::immediate_variance>
+struct feature_of<tag::lazy_weighted_variance>
+ : feature_of<tag::lazy_variance>
 {
 };
 

Modified: branches/proto/v4/boost/accumulators/statistics/weighted_variance.hpp
==============================================================================
--- branches/proto/v4/boost/accumulators/statistics/weighted_variance.hpp (original)
+++ branches/proto/v4/boost/accumulators/statistics/weighted_variance.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -30,20 +30,20 @@
     /*!
         The default implementation of the variance of weighted samples is based on the second moment
         \f$\widehat{m}_n^{(2)}\f$ (weighted_moment<2>) and the mean\f$ \hat{\mu}_n\f$ (weighted_mean):
- \f{
+ \f[
             \hat{\sigma}_n^2 = \widehat{m}_n^{(2)}-\hat{\mu}_n^2,
         \f]
         where \f$n\f$ is the number of samples.
     */
     template<typename Sample, typename Weight, typename MeanFeature>
- struct weighted_variance_impl
+ struct lazy_weighted_variance_impl
       : accumulator_base
     {
         typedef typename numeric::functional::multiplies<Sample, Weight>::result_type weighted_sample;
         // for boost::result_of
         typedef typename numeric::functional::average<weighted_sample, Weight>::result_type result_type;
 
- weighted_variance_impl(dont_care) {}
+ lazy_weighted_variance_impl(dont_care) {}
 
         template<typename Args>
         result_type result(Args const &args) const
@@ -68,7 +68,7 @@
         \f$n <= 1\f$.
     */
     template<typename Sample, typename Weight, typename MeanFeature, typename Tag>
- struct immediate_weighted_variance_impl
+ struct weighted_variance_impl
       : accumulator_base
     {
         typedef typename numeric::functional::multiplies<Sample, Weight>::result_type weighted_sample;
@@ -76,7 +76,7 @@
         typedef typename numeric::functional::average<weighted_sample, Weight>::result_type result_type;
 
         template<typename Args>
- immediate_weighted_variance_impl(Args const &args)
+ weighted_variance_impl(Args const &args)
           : weighted_variance(numeric::average(args[sample | Sample()], numeric::one<Weight>::value))
         {
         }
@@ -115,19 +115,20 @@
 //
 namespace tag
 {
- struct weighted_variance
+ struct lazy_weighted_variance
       : depends_on<weighted_moment<2>, weighted_mean>
     {
         /// INTERNAL ONLY
         ///
- typedef accumulators::impl::weighted_variance_impl<mpl::_1, mpl::_2, weighted_mean> impl;
+ typedef accumulators::impl::lazy_weighted_variance_impl<mpl::_1, mpl::_2, weighted_mean> impl;
     };
- struct immediate_weighted_variance
+
+ struct weighted_variance
       : depends_on<count, immediate_weighted_mean>
     {
         /// INTERNAL ONLY
         ///
- typedef accumulators::impl::immediate_weighted_variance_impl<mpl::_1, mpl::_2, immediate_weighted_mean, sample> impl;
+ typedef accumulators::impl::weighted_variance_impl<mpl::_1, mpl::_2, immediate_weighted_mean, sample> impl;
     };
 }
 
@@ -137,25 +138,25 @@
 //
 namespace extract
 {
+ extractor<tag::lazy_weighted_variance> const lazy_weighted_variance = {};
     extractor<tag::weighted_variance> const weighted_variance = {};
- extractor<tag::immediate_weighted_variance> const immediate_weighted_variance = {};
 }
 
+using extract::lazy_weighted_variance;
 using extract::weighted_variance;
-using extract::immediate_weighted_variance;
 
-// weighted_variance(lazy) -> weighted_variance
+// weighted_variance(lazy) -> lazy_weighted_variance
 template<>
 struct as_feature<tag::weighted_variance(lazy)>
 {
- typedef tag::weighted_variance type;
+ typedef tag::lazy_weighted_variance type;
 };
 
-// weighted_variance(immediate) -> immediate_weighted_variance
+// weighted_variance(immediate) -> weighted_variance
 template<>
 struct as_feature<tag::weighted_variance(immediate)>
 {
- typedef tag::immediate_weighted_variance type;
+ typedef tag::weighted_variance type;
 };
 
 ////////////////////////////////////////////////////////////////////////////

Modified: branches/proto/v4/boost/accumulators/statistics_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/accumulators/statistics_fwd.hpp (original)
+++ branches/proto/v4/boost/accumulators/statistics_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -127,8 +127,8 @@
     struct absolute_tail_variate_means;
     template<typename LeftRight, typename VariateType, typename VariateTag>
     struct relative_tail_variate_means;
+ struct lazy_variance;
     struct variance;
- struct immediate_variance;
     template<typename VariateType, typename VariateTag>
     struct weighted_covariance;
     struct weighted_density;
@@ -175,8 +175,8 @@
     struct absolute_weighted_tail_variate_means;
     template<typename LeftRight, typename VariateType, typename VariateTag>
     struct relative_weighted_tail_variate_means;
+ struct lazy_weighted_variance;
     struct weighted_variance;
- struct immediate_weighted_variance;
     struct weighted_sum;
     template<typename VariateType, typename VariateTag>
     struct weighted_sum_of_variates;
@@ -273,10 +273,10 @@
     struct tail_variate_means_impl;
 
     template<typename Sample, typename MeanFeature>
- struct variance_impl;
+ struct lazy_variance_impl;
 
     template<typename Sample, typename MeanFeature, typename Tag>
- struct immediate_variance_impl;
+ struct variance_impl;
 
     template<typename Sample, typename Weight, typename VariateType, typename VariateTag>
     struct weighted_covariance_impl;
@@ -339,10 +339,10 @@
     struct weighted_tail_variate_means_impl;
 
     template<typename Sample, typename Weight, typename MeanFeature>
- struct weighted_variance_impl;
+ struct lazy_weighted_variance_impl;
 
     template<typename Sample, typename Weight, typename MeanFeature, typename Tag>
- struct immediate_weighted_variance_impl;
+ struct weighted_variance_impl;
 
 
 } // namespace impl

Modified: branches/proto/v4/boost/algorithm/string/classification.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/classification.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/classification.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -202,8 +202,8 @@
             BOOST_STRING_TYPENAME range_value<RangeT>::type>
         is_any_of( const RangeT& Set )
         {
- return detail::is_any_ofF<
- BOOST_STRING_TYPENAME range_value<RangeT>::type>(as_literal(Set));
+ iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_set(as_literal(Set));
+ return detail::is_any_ofF<BOOST_STRING_TYPENAME range_value<RangeT>::type>(lit_set);
         }
 
         //! is_from_range predicate

Modified: branches/proto/v4/boost/algorithm/string/concept.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/concept.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/concept.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -65,8 +65,8 @@
             void constraints()
             {
                 // Operation
- begin((*pFo)( (*pF)(i,i) ));
- end((*pFo)( (*pF)(i,i) ));
+ ::boost::begin((*pFo)( (*pF)(i,i) ));
+ ::boost::end((*pFo)( (*pF)(i,i) ));
             }
         private:
             IteratorT i;

Modified: branches/proto/v4/boost/algorithm/string/detail/case_conv.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/detail/case_conv.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/detail/case_conv.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,6 +21,11 @@
 
 // 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>
@@ -61,6 +66,10 @@
                 const std::locale& m_Loc;
             };
 
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+#pragma warning(pop)
+#endif
+
 // algorithm implementation -------------------------------------------------------------------------
 
             // Transform a range
@@ -71,8 +80,8 @@
                 FunctorT Functor)
             {
                 return std::transform(
- begin(Input),
- end(Input),
+ ::boost::begin(Input),
+ ::boost::end(Input),
                     Output,
                     Functor);
             }
@@ -84,9 +93,9 @@
                 FunctorT Functor)
             {
                 std::transform(
- begin(Input),
- end(Input),
- begin(Input),
+ ::boost::begin(Input),
+ ::boost::end(Input),
+ ::boost::begin(Input),
                     Functor);
             }
 
@@ -97,10 +106,10 @@
             {
                 return SequenceT(
                     make_transform_iterator(
- begin(Input),
+ ::boost::begin(Input),
                         Functor),
                     make_transform_iterator(
- end(Input),
+ ::boost::end(Input),
                         Functor));
             }
 

Modified: branches/proto/v4/boost/algorithm/string/detail/classification.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/detail/classification.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/detail/classification.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,7 +15,6 @@
 #include <algorithm>
 #include <functional>
 #include <locale>
-#include <set>
 
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
@@ -29,6 +28,10 @@
 
 // classification functors -----------------------------------------------//
 
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+#pragma warning(push)
+#pragma warning(disable:4512) //assignment operator could not be generated
+#endif
             // is_classified functor
             struct is_classifiedF :
                 public predicate_facade<is_classifiedF>
@@ -60,6 +63,10 @@
                 const std::locale m_Locale;
             };
 
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+#pragma warning(pop)
+#endif
+
             // is_any_of functor
             /*
                 returns true if the value is from the specified set
@@ -68,25 +75,132 @@
             struct is_any_ofF :
                 public predicate_facade<is_any_ofF<CharT> >
             {
+ private:
+ // set cannot operate on const value-type
+ typedef typename remove_const<CharT>::type set_value_type;
+ // Size of the static storage (size of pointer*2)
+ static const ::std::size_t FIXED_STORAGE_SIZE = sizeof(set_value_type*)*2;
+
+ public:
                 // Boost.Lambda support
                 template <class Args> struct sig { typedef bool type; };
 
                 // Constructor
                 template<typename RangeT>
- is_any_ofF( const RangeT& Range ) :
- m_Set( begin(Range), end(Range) ) {}
+ is_any_ofF( const RangeT& Range ) : m_Size(0)
+ {
+ // Prepare storage
+ m_Storage.m_dynSet=0;
+
+ std::size_t Size=::boost::distance(Range);
+ m_Size=Size;
+ set_value_type* Storage=0;
+
+ if(m_Size<=FIXED_STORAGE_SIZE)
+ {
+ // Use fixed storage
+ Storage=&m_Storage.m_fixSet[0];
+ }
+ else
+ {
+ // Use dynamic storage
+ m_Storage.m_dynSet=new set_value_type[m_Size];
+ Storage=m_Storage.m_dynSet;
+ }
+
+ // Use fixed storage
+ ::std::copy(::boost::begin(Range), ::boost::end(Range), Storage);
+ ::std::sort(Storage, Storage+m_Size);
+ }
+
+ // Copy constructor
+ is_any_ofF(const is_any_ofF& Other) : m_Size(Other.m_Size)
+ {
+ // Prepare storage
+ m_Storage.m_dynSet=0;
+ const set_value_type* SrcStorage=0;
+ set_value_type* DestStorage=0;
+
+ if(m_Size<=FIXED_STORAGE_SIZE)
+ {
+ // Use fixed storage
+ DestStorage=&m_Storage.m_fixSet[0];
+ SrcStorage=&Other.m_Storage.m_fixSet[0];
+ }
+ else
+ {
+ // Use dynamic storage
+ m_Storage.m_dynSet=new set_value_type[m_Size];
+ DestStorage=m_Storage.m_dynSet;
+ SrcStorage=Other.m_Storage.m_dynSet;
+ }
+
+ // Use fixed storage
+ ::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
+ }
+
+ // Destructor
+ ~is_any_ofF()
+ {
+ if(m_Size>FIXED_STORAGE_SIZE && m_Storage.m_dynSet!=0)
+ {
+ delete m_Storage.m_dynSet;
+ }
+ }
+
+ // Assignment
+ is_any_ofF& operator=(const is_any_ofF& Other)
+ {
+ // Prepare storage
+ m_Storage.m_dynSet=0;
+ m_Size=Other.m_Size;
+ const set_value_type* SrcStorage=0;
+ set_value_type* DestStorage=0;
+
+ if(m_Size<=FIXED_STORAGE_SIZE)
+ {
+ // Use fixed storage
+ DestStorage=&m_Storage.m_fixSet[0];
+ SrcStorage=&Other.m_Storage.m_fixSet[0];
+ }
+ else
+ {
+ // Use dynamic storage
+ m_Storage.m_dynSet=new set_value_type[m_Size];
+ DestStorage=m_Storage.m_dynSet;
+ SrcStorage=Other.m_Storage.m_dynSet;
+ }
+
+ // Use fixed storage
+ ::memcpy(DestStorage, SrcStorage, sizeof(set_value_type)*m_Size);
+
+ return *this;
+ }
 
                 // Operation
                 template<typename Char2T>
                 bool operator()( Char2T Ch ) const
                 {
- return m_Set.find(Ch)!=m_Set.end();
+ const set_value_type* Storage=
+ (m_Size<=FIXED_STORAGE_SIZE)
+ ? &m_Storage.m_fixSet[0]
+ : m_Storage.m_dynSet;
+
+ return ::std::binary_search(Storage, Storage+m_Size, Ch);
                 }
 
             private:
- // set cannot operate on const value-type
- typedef typename remove_const<CharT>::type set_value_type;
- std::set<set_value_type> m_Set;
+ // storage
+ // The actual used storage is selected on the type
+ union
+ {
+ set_value_type* m_dynSet;
+ set_value_type m_fixSet[FIXED_STORAGE_SIZE];
+ }
+ m_Storage;
+
+ // storage size
+ ::std::size_t m_Size;
             };
 
             // is_from_range functor

Modified: branches/proto/v4/boost/algorithm/string/detail/find_format.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/detail/find_format.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/detail/find_format.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -68,17 +68,17 @@
                 if ( !M )
                 {
                     // Match not found - return original sequence
- std::copy( begin(Input), end(Input), Output );
+ std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
                     return Output;
                 }
 
                 // Copy the beginning of the sequence
- std::copy( begin(Input), begin(M), Output );
+ std::copy( ::boost::begin(Input), ::boost::begin(M), Output );
                 // Format find result
                 // Copy formated result
- std::copy( begin(M.format_result()), end(M.format_result()), Output );
+ std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
                 // Copy the rest of the sequence
- std::copy( M.end(), end(Input), Output );
+ std::copy( M.end(), ::boost::end(Input), Output );
 
                 return Output;
             }
@@ -129,11 +129,11 @@
 
                 InputT Output;
                 // Copy the beginning of the sequence
- insert( Output, end(Output), begin(Input), M.begin() );
+ insert( Output, ::boost::end(Output), ::boost::begin(Input), M.begin() );
                 // Copy formated result
- insert( Output, end(Output), M.format_result() );
+ insert( Output, ::boost::end(Output), M.format_result() );
                 // Copy the rest of the sequence
- insert( Output, end(Output), M.end(), end(Input) );
+ insert( Output, ::boost::end(Output), M.end(), ::boost::end(Input) );
 
                 return Output;
             }

Modified: branches/proto/v4/boost/algorithm/string/detail/find_format_all.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/detail/find_format_all.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/detail/find_format_all.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -73,7 +73,7 @@
                 store_type M( FindResult, FormatResult, Formatter );
 
                 // Initialize last match
- input_iterator_type LastMatch=begin(Input);
+ input_iterator_type LastMatch=::boost::begin(Input);
 
                 // Iterate through all matches
                 while( M )
@@ -81,15 +81,15 @@
                     // Copy the beginning of the sequence
                     std::copy( LastMatch, M.begin(), Output );
                     // Copy formated result
- std::copy( begin(M.format_result()), end(M.format_result()), Output );
+ std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
 
                     // Proceed to the next match
                     LastMatch=M.end();
- M=Finder( LastMatch, end(Input) );
+ M=Finder( LastMatch, ::boost::end(Input) );
                 }
 
                 // Copy the rest of the sequence
- std::copy( LastMatch, end(Input), Output );
+ std::copy( LastMatch, ::boost::end(Input), Output );
 
                 return Output;
             }
@@ -140,7 +140,7 @@
                 store_type M( FindResult, FormatResult, Formatter );
 
                 // Initialize last match
- input_iterator_type LastMatch=begin(Input);
+ input_iterator_type LastMatch=::boost::begin(Input);
 
                 // Output temporary
                 InputT Output;
@@ -149,17 +149,17 @@
                 while( M )
                 {
                     // Copy the beginning of the sequence
- insert( Output, end(Output), LastMatch, M.begin() );
+ insert( Output, ::boost::end(Output), LastMatch, M.begin() );
                     // Copy formated result
- insert( Output, end(Output), M.format_result() );
+ insert( Output, ::boost::end(Output), M.format_result() );
 
                     // Proceed to the next match
                     LastMatch=M.end();
- M=Finder( LastMatch, end(Input) );
+ M=Finder( LastMatch, ::boost::end(Input) );
                 }
 
                 // Copy the rest of the sequence
- insert( Output, end(Output), LastMatch, end(Input) );
+ insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) );
 
                 return Output;
             }
@@ -213,8 +213,8 @@
                     BOOST_STRING_TYPENAME range_value<InputT>::type> Storage;
 
                 // Initialize replacement iterators
- input_iterator_type InsertIt=begin(Input);
- input_iterator_type SearchIt=begin(Input);
+ input_iterator_type InsertIt=::boost::begin(Input);
+ input_iterator_type SearchIt=::boost::begin(Input);
                 
                 while( M )
                 {
@@ -233,7 +233,7 @@
                     copy_to_storage( Storage, M.format_result() );
 
                     // Find range for a next match
- M=Finder( SearchIt, end(Input) );
+ M=Finder( SearchIt, ::boost::end(Input) );
                 }
 
                 // process the last segment
@@ -242,17 +242,17 @@
                     Input,
                     InsertIt,
                     SearchIt,
- end(Input) );
+ ::boost::end(Input) );
                 
                 if ( Storage.empty() )
                 {
                     // Truncate input
- erase( Input, InsertIt, end(Input) );
+ erase( Input, InsertIt, ::boost::end(Input) );
                 }
                 else
                 {
                     // Copy remaining data to the end of input
- insert( Input, end(Input), Storage.begin(), Storage.end() );
+ insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() );
                 }
             }
 

Modified: branches/proto/v4/boost/algorithm/string/detail/find_format_store.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/detail/find_format_store.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/detail/find_format_store.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,6 +20,10 @@
 
 // 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,
@@ -64,6 +68,9 @@
                 const formatter_type& m_Formatter;
             };
 
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+#pragma warning(pop)
+#endif
         } // namespace detail
     } // namespace algorithm
 } // namespace boost

Modified: branches/proto/v4/boost/algorithm/string/detail/finder.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/detail/finder.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/detail/finder.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -41,7 +41,7 @@
                 // Construction
                 template< typename SearchT >
                 first_finderF( const SearchT& Search, PredicateT Comp ) :
- m_Search(begin(Search), end(Search)), m_Comp(Comp) {}
+ m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
                 first_finderF(
                         search_iterator_type SearchBegin,
                         search_iterator_type SearchEnd,
@@ -108,7 +108,7 @@
                 // Construction
                 template< typename SearchT >
                 last_finderF( const SearchT& Search, PredicateT Comp ) :
- m_Search(begin(Search), end(Search)), m_Comp(Comp) {}
+ m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
                 last_finderF(
                         search_iterator_type SearchBegin,
                         search_iterator_type SearchEnd,
@@ -154,7 +154,7 @@
                     while( M )
                     {
                         Last=M;
- M=first_finder( end(M), End );
+ M=first_finder( ::boost::end(M), End );
                     }
 
                     return Last;
@@ -224,7 +224,7 @@
                         const SearchT& Search,
                         int Nth,
                         PredicateT Comp) :
- m_Search(begin(Search), end(Search)),
+ m_Search(::boost::begin(Search), ::boost::end(Search)),
                     m_Nth(Nth),
                     m_Comp(Comp) {}
                 nth_finderF(
@@ -279,7 +279,7 @@
                     for( unsigned int n=0; n<=N; ++n )
                     {
                         // find next match
- M=first_finder( end(M), End );
+ M=first_finder( ::boost::end(M), End );
 
                         if ( !M )
                         {
@@ -314,7 +314,7 @@
                     for( unsigned int n=1; n<=N; ++n )
                     {
                         // find next match
- M=last_finder( Begin, begin(M) );
+ M=last_finder( Begin, ::boost::begin(M) );
 
                         if ( !M )
                         {

Modified: branches/proto/v4/boost/algorithm/string/detail/formatter.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/detail/formatter.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/detail/formatter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -39,7 +39,7 @@
             public:
                 // Construction
                 const_formatF(const RangeT& Format) :
- m_Format(begin(Format), end(Format)) {}
+ m_Format(::boost::begin(Format), ::boost::end(Format)) {}
 
                 // Operation
 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
@@ -70,7 +70,7 @@
                 template< typename Range2T >
                 const RangeT& operator()(const Range2T& Replace) const
                 {
- return RangeT(begin(Replace), end(Replace));
+ return RangeT(::boost::begin(Replace), ::boost::end(Replace));
                 }
             };
 

Modified: branches/proto/v4/boost/algorithm/string/detail/replace_storage.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/detail/replace_storage.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/detail/replace_storage.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -46,7 +46,7 @@
                 StorageT& Storage,
                 const WhatT& What )
             {
- Storage.insert( Storage.end(), begin(What), end(What) );
+ Storage.insert( Storage.end(), ::boost::begin(What), ::boost::end(What) );
             }
 
 

Modified: branches/proto/v4/boost/algorithm/string/detail/sequence.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/detail/sequence.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/detail/sequence.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -41,7 +41,7 @@
                 BOOST_STRING_TYPENAME InputT::iterator At,
                 const InsertT& Insert )
             {
- insert( Input, At, begin(Insert), end(Insert) );
+ insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) );
             }
            
 // erase helper ---------------------------------------------------//
@@ -184,11 +184,11 @@
             {
                 if(From!=To)
                 {
- replace( Input, From, To, begin(Insert), end(Insert) );
+ replace( Input, From, To, ::boost::begin(Insert), ::boost::end(Insert) );
                 }
                 else
                 {
- insert( Input, From, begin(Insert), end(Insert) );
+ insert( Input, From, ::boost::begin(Insert), ::boost::end(Insert) );
                 }
             }
 

Modified: branches/proto/v4/boost/algorithm/string/find.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/find.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/find.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -55,7 +55,7 @@
         {
             iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
 
- return Finder(begin(lit_input),end(lit_input));
+ return Finder(::boost::begin(lit_input),::boost::end(lit_input));
         }
 
 // find_first -----------------------------------------------//

Modified: branches/proto/v4/boost/algorithm/string/find_format.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/find_format.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/find_format.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -76,7 +76,7 @@
                 Output,
                 lit_input,
                 Formatter,
- Finder( begin(lit_input), end(lit_input) ) );
+ Finder( ::boost::begin(lit_input), ::boost::end(lit_input) ) );
         }
 
         //! Generic replace algorithm
@@ -104,7 +104,7 @@
             return detail::find_format_copy_impl(
                 Input,
                 Formatter,
- Finder(begin(Input), end(Input)));
+ Finder(::boost::begin(Input), ::boost::end(Input)));
         }
 
         //! Generic replace algorithm
@@ -137,7 +137,7 @@
             detail::find_format_impl(
                 Input,
                 Formatter,
- Finder(begin(Input), end(Input)));
+ Finder(::boost::begin(Input), ::boost::end(Input)));
         }
 
 
@@ -187,7 +187,7 @@
                 lit_input,
                 Finder,
                 Formatter,
- Finder(begin(lit_input), end(lit_input)));
+ Finder(::boost::begin(lit_input), ::boost::end(lit_input)));
         }
 
         //! Generic replace all algorithm
@@ -216,7 +216,7 @@
                 Input,
                 Finder,
                 Formatter,
- Finder( begin(Input), end(Input) ) );
+ Finder( ::boost::begin(Input), ::boost::end(Input) ) );
         }
 
         //! Generic replace all algorithm
@@ -251,7 +251,7 @@
                 Input,
                 Finder,
                 Formatter,
- Finder(begin(Input), end(Input)));
+ Finder(::boost::begin(Input), ::boost::end(Input)));
 
         }
 

Modified: branches/proto/v4/boost/algorithm/string/find_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/find_iterator.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/find_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,7 +24,7 @@
 #include <boost/algorithm/string/detail/find_iterator.hpp>
 
 /*! \file
- Defines find iterator classes. Find iterator repeatly applies a Finder
+ Defines find iterator classes. Find iterator repeatedly applies a Finder
     to the specified input string to search for matches. Dereferencing
     the iterator yields the current match or a range between the last and the current
     match depending on the iterator used.
@@ -58,12 +58,6 @@
             // facade support
             friend class ::boost::iterator_core_access;
 
- // base type
- typedef iterator_facade<
- find_iterator<IteratorT>,
- const iterator_range<IteratorT>,
- forward_traversal_tag> facade_type;
-
         private:
         // typedefs
 
@@ -120,8 +114,8 @@
                 detail::find_iterator_base<IteratorT>(Finder,0)
             {
                 iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
- m_Match=make_iterator_range(begin(lit_col), begin(lit_col));
- m_End=end(lit_col);
+ m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
+ m_End=::boost::end(lit_col);
 
                 increment();
             }
@@ -220,12 +214,6 @@
             // facade support
             friend class ::boost::iterator_core_access;
 
- // base type
- typedef iterator_facade<
- find_iterator<IteratorT>,
- iterator_range<IteratorT>,
- forward_traversal_tag> facade_type;
-
         private:
         // typedefs
 
@@ -286,9 +274,9 @@
                 m_bEof(false)
             {
                 iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_col(as_literal(Col));
- m_Match=make_iterator_range(begin(lit_col), begin(lit_col));
- m_Next=begin(lit_col);
- m_End=end(lit_col);
+ m_Match=make_iterator_range(::boost::begin(lit_col), ::boost::begin(lit_col));
+ m_Next=::boost::begin(lit_col);
+ m_End=::boost::end(lit_col);
 
                 increment();
             }

Modified: branches/proto/v4/boost/algorithm/string/iter_find.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/iter_find.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/iter_find.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -88,14 +88,14 @@
                     range_value<SequenceSequenceT>::type,
                 input_iterator_type> copy_range_type;
             
- input_iterator_type InputEnd=end(lit_input);
+ input_iterator_type InputEnd=::boost::end(lit_input);
 
             typedef transform_iterator<copy_range_type, find_iterator_type>
                 transform_iter_type;
     
             transform_iter_type itBegin=
                 make_transform_iterator(
- find_iterator_type( begin(lit_input), InputEnd, Finder ),
+ find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
                     copy_range_type());
             
             transform_iter_type itEnd=
@@ -157,14 +157,14 @@
                     range_value<SequenceSequenceT>::type,
                 input_iterator_type> copy_range_type;
             
- input_iterator_type InputEnd=end(lit_input);
+ input_iterator_type InputEnd=::boost::end(lit_input);
 
             typedef transform_iterator<copy_range_type, find_iterator_type>
                 transform_iter_type;
     
             transform_iter_type itBegin=
                 make_transform_iterator(
- find_iterator_type( begin(lit_input), InputEnd, Finder ),
+ find_iterator_type( ::boost::begin(lit_input), InputEnd, Finder ),
                     copy_range_type() );
 
             transform_iter_type itEnd=

Modified: branches/proto/v4/boost/algorithm/string/join.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/join.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/join.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -52,8 +52,8 @@
             typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
 
             // Parse input
- InputIteratorT itBegin=begin(Input);
- InputIteratorT itEnd=end(Input);
+ InputIteratorT itBegin=::boost::begin(Input);
+ InputIteratorT itEnd=::boost::end(Input);
 
             // Construct container to hold the result
             ResultT Result;
@@ -61,16 +61,16 @@
             // Append first element
             if(itBegin!=itEnd)
             {
- detail::insert(Result, end(Result), *itBegin);
+ detail::insert(Result, ::boost::end(Result), *itBegin);
                 ++itBegin;
             }
 
             for(;itBegin!=itEnd; ++itBegin)
             {
                 // Add separator
- detail::insert(Result, end(Result), as_literal(Separator));
+ detail::insert(Result, ::boost::end(Result), as_literal(Separator));
                 // Add element
- detail::insert(Result, end(Result), *itBegin);
+ detail::insert(Result, ::boost::end(Result), *itBegin);
             }
 
             return Result;
@@ -103,8 +103,8 @@
             typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
 
             // Parse input
- InputIteratorT itBegin=begin(Input);
- InputIteratorT itEnd=end(Input);
+ InputIteratorT itBegin=::boost::begin(Input);
+ InputIteratorT itEnd=::boost::end(Input);
 
             // Construct container to hold the result
             ResultT Result;
@@ -114,7 +114,7 @@
             // Add this element
             if(itBegin!=itEnd)
             {
- detail::insert(Result, end(Result), *itBegin);
+ detail::insert(Result, ::boost::end(Result), *itBegin);
                 ++itBegin;
             }
 
@@ -123,9 +123,9 @@
                 if(Pred(*itBegin))
                 {
                     // Add separator
- detail::insert(Result, end(Result), as_literal(Separator));
+ detail::insert(Result, ::boost::end(Result), as_literal(Separator));
                     // Add element
- detail::insert(Result, end(Result), *itBegin);
+ detail::insert(Result, ::boost::end(Result), *itBegin);
                 }
             }
 

Modified: branches/proto/v4/boost/algorithm/string/predicate.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/predicate.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/predicate.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -67,11 +67,11 @@
             typedef BOOST_STRING_TYPENAME
                 range_const_iterator<Range2T>::type Iterator2T;
 
- Iterator1T InputEnd=end(lit_input);
- Iterator2T TestEnd=end(lit_test);
+ Iterator1T InputEnd=::boost::end(lit_input);
+ Iterator2T TestEnd=::boost::end(lit_test);
 
- Iterator1T it=begin(lit_input);
- Iterator2T pit=begin(lit_test);
+ Iterator1T it=::boost::begin(lit_input);
+ Iterator2T pit=::boost::begin(lit_test);
             for(;
                 it!=InputEnd && pit!=TestEnd;
                 ++it,++pit)
@@ -151,10 +151,10 @@
 
             return detail::
                 ends_with_iter_select(
- begin(lit_input),
- end(lit_input),
- begin(lit_test),
- end(lit_test),
+ ::boost::begin(lit_input),
+ ::boost::end(lit_input),
+ ::boost::begin(lit_test),
+ ::boost::end(lit_test),
                     Comp,
                     category());
         }
@@ -225,7 +225,7 @@
             }
             
             // Use the temporary variable to make VACPP happy
- bool bResult=(first_finder(lit_test,Comp)(begin(lit_input), end(lit_input)));
+ bool bResult=(first_finder(lit_test,Comp)(::boost::begin(lit_input), ::boost::end(lit_input)));
             return bResult;
         }
 
@@ -294,11 +294,11 @@
             typedef BOOST_STRING_TYPENAME
                 range_const_iterator<Range2T>::type Iterator2T;
                 
- Iterator1T InputEnd=end(lit_input);
- Iterator2T TestEnd=end(lit_test);
+ Iterator1T InputEnd=::boost::end(lit_input);
+ Iterator2T TestEnd=::boost::end(lit_test);
 
- Iterator1T it=begin(lit_input);
- Iterator2T pit=begin(lit_test);
+ Iterator1T it=::boost::begin(lit_input);
+ Iterator2T pit=::boost::begin(lit_test);
             for(;
                 it!=InputEnd && pit!=TestEnd;
                 ++it,++pit)
@@ -376,10 +376,10 @@
             iterator_range<BOOST_STRING_TYPENAME range_const_iterator<Range2T>::type> lit_arg2(as_literal(Arg2));
 
             return std::lexicographical_compare(
- begin(lit_arg1),
- end(lit_arg1),
- begin(lit_arg2),
- end(lit_arg2),
+ ::boost::begin(lit_arg1),
+ ::boost::end(lit_arg1),
+ ::boost::begin(lit_arg2),
+ ::boost::end(lit_arg2),
                 Pred);
         }
 
@@ -444,8 +444,8 @@
             typedef BOOST_STRING_TYPENAME
                 range_const_iterator<RangeT>::type Iterator1T;
 
- Iterator1T InputEnd=end(lit_input);
- for( Iterator1T It=begin(lit_input); It!=InputEnd; ++It)
+ Iterator1T InputEnd=::boost::end(lit_input);
+ for( Iterator1T It=::boost::begin(lit_input); It!=InputEnd; ++It)
             {
                 if (!Pred(*It))
                     return false;

Modified: branches/proto/v4/boost/algorithm/string/regex.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/regex.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/regex.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -63,7 +63,7 @@
             iterator_range<BOOST_STRING_TYPENAME range_iterator<RangeT>::type> lit_input(as_literal(Input));
 
             return regex_finder(Rx,Flags)(
- begin(lit_input), end(lit_input) );
+ ::boost::begin(lit_input), ::boost::end(lit_input) );
         }
 
 // replace_regex --------------------------------------------------------------------//
@@ -515,8 +515,8 @@
             typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
 
             // Parse input
- InputIteratorT itBegin=begin(Input);
- InputIteratorT itEnd=end(Input);
+ InputIteratorT itBegin=::boost::begin(Input);
+ InputIteratorT itEnd=::boost::end(Input);
 
             // Construct container to hold the result
             ResultT Result;
@@ -525,23 +525,23 @@
             // Roll to the first element that will be added
             while(
                 itBegin!=itEnd &&
- !regex_match(begin(*itBegin), end(*itBegin), Rx, Flags)) ++itBegin;
+ !regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
 
             // Add this element
             if(itBegin!=itEnd)
             {
- detail::insert(Result, end(Result), *itBegin);
+ detail::insert(Result, ::boost::end(Result), *itBegin);
                 ++itBegin;
             }
 
             for(;itBegin!=itEnd; ++itBegin)
             {
- if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
+ if(regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
                 {
                     // Add separator
- detail::insert(Result, end(Result), as_literal(Separator));
+ detail::insert(Result, ::boost::end(Result), as_literal(Separator));
                     // Add element
- detail::insert(Result, end(Result), *itBegin);
+ detail::insert(Result, ::boost::end(Result), *itBegin);
                 }
             }
 
@@ -583,8 +583,8 @@
             typedef typename range_const_iterator<SequenceSequenceT>::type InputIteratorT;
 
             // Parse input
- InputIteratorT itBegin=begin(Input);
- InputIteratorT itEnd=end(Input);
+ InputIteratorT itBegin=::boost::begin(Input);
+ InputIteratorT itEnd=::boost::end(Input);
 
             // Construct container to hold the result
             ResultT Result;
@@ -593,23 +593,23 @@
             // Roll to the first element that will be added
             while(
                 itBegin!=itEnd &&
- !regex_match(begin(*itBegin), end(*itBegin), Rx, Flags)) ++itBegin;
+ !regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags)) ++itBegin;
 
             // Add this element
             if(itBegin!=itEnd)
             {
- detail::insert(Result, end(Result), *itBegin);
+ detail::insert(Result, ::boost::end(Result), *itBegin);
                 ++itBegin;
             }
 
             for(;itBegin!=itEnd; ++itBegin)
             {
- if(regex_match(begin(*itBegin), end(*itBegin), Rx, Flags))
+ if(regex_match(::boost::begin(*itBegin), ::boost::end(*itBegin), Rx, Flags))
                 {
                     // Add separator
- detail::insert(Result, end(Result), as_literal(Separator));
+ detail::insert(Result, ::boost::end(Result), as_literal(Separator));
                     // Add element
- detail::insert(Result, end(Result), *itBegin);
+ detail::insert(Result, ::boost::end(Result), *itBegin);
                 }
             }
 

Modified: branches/proto/v4/boost/algorithm/string/trim.hpp
==============================================================================
--- branches/proto/v4/boost/algorithm/string/trim.hpp (original)
+++ branches/proto/v4/boost/algorithm/string/trim.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -67,10 +67,10 @@
 
             std::copy(
                 ::boost::algorithm::detail::trim_begin(
- begin(lit_range),
- end(lit_range),
+ ::boost::begin(lit_range),
+ ::boost::end(lit_range),
                     IsSpace ),
- end(lit_range),
+ ::boost::end(lit_range),
                 Output);
 
             return Output;
@@ -85,10 +85,10 @@
         {
             return SequenceT(
                 ::boost::algorithm::detail::trim_begin(
- begin(Input),
- end(Input),
+ ::boost::begin(Input),
+ ::boost::end(Input),
                     IsSpace ),
- end(Input));
+ ::boost::end(Input));
         }
 
         //! Left trim - parametric
@@ -124,10 +124,10 @@
         inline void trim_left_if(SequenceT& Input, PredicateT IsSpace)
         {
             Input.erase(
- begin(Input),
+ ::boost::begin(Input),
                 ::boost::algorithm::detail::trim_begin(
- begin(Input),
- end(Input),
+ ::boost::begin(Input),
+ ::boost::end(Input),
                     IsSpace));
         }
 
@@ -174,10 +174,10 @@
             iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_range(as_literal(Input));
          
             std::copy(
- begin(lit_range),
+ ::boost::begin(lit_range),
                 ::boost::algorithm::detail::trim_end(
- begin(lit_range),
- end(lit_range),
+ ::boost::begin(lit_range),
+ ::boost::end(lit_range),
                     IsSpace ),
                 Output );
 
@@ -192,10 +192,10 @@
         inline SequenceT trim_right_copy_if(const SequenceT& Input, PredicateT IsSpace)
         {
             return SequenceT(
- begin(Input),
+ ::boost::begin(Input),
                 ::boost::algorithm::detail::trim_end(
- begin(Input),
- end(Input),
+ ::boost::begin(Input),
+ ::boost::end(Input),
                     IsSpace)
                 );
         }
@@ -235,10 +235,10 @@
         {
             Input.erase(
                 ::boost::algorithm::detail::trim_end(
- begin(Input),
- end(Input),
+ ::boost::begin(Input),
+ ::boost::end(Input),
                     IsSpace ),
- end(Input)
+ ::boost::end(Input)
                 );
         }
 
@@ -288,13 +288,13 @@
             BOOST_STRING_TYPENAME
                 range_const_iterator<RangeT>::type TrimEnd=
                 ::boost::algorithm::detail::trim_end(
- begin(lit_range),
- end(lit_range),
+ ::boost::begin(lit_range),
+ ::boost::end(lit_range),
                     IsSpace);
 
             std::copy(
                 detail::trim_begin(
- begin(lit_range), TrimEnd, IsSpace),
+ ::boost::begin(lit_range), TrimEnd, IsSpace),
                 TrimEnd,
                 Output
                 );
@@ -312,13 +312,13 @@
             BOOST_STRING_TYPENAME
                 range_const_iterator<SequenceT>::type TrimEnd=
                     ::boost::algorithm::detail::trim_end(
- begin(Input),
- end(Input),
+ ::boost::begin(Input),
+ ::boost::end(Input),
                         IsSpace);
 
             return SequenceT(
                 detail::trim_begin(
- begin(Input),
+ ::boost::begin(Input),
                     TrimEnd,
                     IsSpace),
                 TrimEnd

Modified: branches/proto/v4/boost/archive/basic_binary_iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_binary_iarchive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_binary_iarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -22,15 +22,15 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 
 // See http://www.boost.org for updates, documentation, and revision history.
-//#include <cstring>
 
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
 #include <boost/pfto.hpp>
 
-#include <boost/serialization/string.hpp>
+#include <boost/archive/detail/common_iarchive.hpp>
 #include <boost/serialization/collection_size_type.hpp>
-#include <boost/archive/array/iarchive.hpp>
+#include <boost/serialization/string.hpp>
+
 #include <boost/archive/detail/abi_prefix.hpp> // must be the last header
 
 namespace boost {
@@ -40,7 +40,7 @@
 // class basic_binary_iarchive - read serialized objects from a input binary stream
 template<class Archive>
 class basic_binary_iarchive :
- public array::iarchive<Archive>
+ public detail::common_iarchive<Archive>
 {
 protected:
 #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
@@ -56,10 +56,10 @@
     // fot templates in the absence of partial function
     // template ordering. If we get here pass to base class
     // note extra nonsense to sneak it pass the borland compiers
- typedef array::iarchive<Archive> array_iarchive;
+ typedef detail::common_iarchive<Archive> detail_common_iarchive;
     template<class T>
- void load_override(T & t, BOOST_PFTO int){
- this->array_iarchive::load_override(t, 0L);
+ void load_override(T & t, BOOST_PFTO int version){
+ this->detail_common_iarchive::load_override(t, static_cast<int>(version));
     }
     // binary files don't include the optional information
     void load_override(class_id_optional_type & /* t */, int){}
@@ -113,7 +113,7 @@
     init();
    
     basic_binary_iarchive(unsigned int flags) :
- array_iarchive(flags)
+ detail::common_iarchive<Archive>(flags)
     {}
 };
 

Modified: branches/proto/v4/boost/archive/basic_binary_iprimitive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_binary_iprimitive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_binary_iprimitive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -120,11 +120,11 @@
     ~basic_binary_iprimitive();
 public:
     // we provide an optimized load for all fundamental types
- //typedef serialization::is_bitwise_serializable<mpl::_1>
- // use_array_optimization;
+ // typedef serialization::is_bitwise_serializable<mpl::_1>
+ // use_array_optimization;
     struct use_array_optimization {
- template <class T>
- struct apply : public serialization::is_bitwise_serializable<T> {};
+ template <class T>
+ struct apply : public serialization::is_bitwise_serializable<T> {};
     };
 
     // the optimized load_array dispatches to load_binary

Modified: branches/proto/v4/boost/archive/basic_binary_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_binary_oarchive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_binary_oarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,10 +27,9 @@
 #include <boost/pfto.hpp>
 
 #include <boost/detail/workaround.hpp>
-#include <boost/archive/array/oarchive.hpp>
+#include <boost/archive/detail/common_oarchive.hpp>
 #include <boost/serialization/string.hpp>
 #include <boost/serialization/collection_size_type.hpp>
-#include <boost/archive/array/oarchive.hpp>
 
 namespace boost {
 namespace archive {
@@ -45,7 +44,7 @@
 // of time. So under some circumstances it may be he right choice.
 template<class Archive>
 class basic_binary_oarchive :
- public array::oarchive<Archive>
+ public archive::detail::common_oarchive<Archive>
 {
 protected:
 #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
@@ -58,17 +57,12 @@
     friend class detail::interface_oarchive<Archive>;
 #endif
     // any datatype not specifed below will be handled by base class
- typedef array::oarchive<Archive> array_oarchive;
+ typedef detail::common_oarchive<Archive> detail_common_oarchive;
     template<class T>
- void save_override(const T & t, BOOST_PFTO int){
- this->array_oarchive::save_override(t, 0L);
+ void save_override(const T & t, BOOST_PFTO int version){
+ this->detail_common_oarchive::save_override(t, static_cast<int>(version));
     }
- /*
- template<class T>
- void save_override(T & t, BOOST_PFTO int){
- this->save_override(const_cast<const T &>(t), 0L);
- }
- */
+
     // binary files don't include the optional information
     void save_override(const class_id_optional_type & /* t */, int){}
 
@@ -119,7 +113,7 @@
     init();
 
     basic_binary_oarchive(unsigned int flags) :
- array_oarchive(flags)
+ detail::common_oarchive<Archive>(flags)
     {}
 };
 

Modified: branches/proto/v4/boost/archive/basic_binary_oprimitive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_binary_oprimitive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_binary_oprimitive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,9 +26,9 @@
 #include <iosfwd>
 #include <cassert>
 #include <locale>
-#include <cstddef> // size_t
 #include <streambuf> // basic_streambuf
 #include <string>
+#include <cstddef> // size_t
 
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
@@ -120,13 +120,13 @@
     // workaround without using mpl lambdas
     struct use_array_optimization {
       template <class T>
- struct apply : public serialization::is_bitwise_serializable<T> {};
+ struct apply : public boost::serialization::is_bitwise_serializable<T> {};
     };
     
 
     // the optimized save_array dispatches to save_binary
     template <class ValueType>
- void save_array(serialization::array<ValueType> const& a, unsigned int)
+ void save_array(boost::serialization::array<ValueType> const& a, unsigned int)
     {
       save_binary(a.address(),a.count()*sizeof(ValueType));
     }

Modified: branches/proto/v4/boost/archive/basic_text_oprimitive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/basic_text_oprimitive.hpp (original)
+++ branches/proto/v4/boost/archive/basic_text_oprimitive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,9 +26,9 @@
 
 #include <iomanip>
 #include <locale>
-#include <cstddef> // size_t
 #include <cmath> // isnan
 #include <cassert>
+#include <cstddef> // size_t
 
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>

Modified: branches/proto/v4/boost/archive/binary_iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/binary_iarchive.hpp (original)
+++ branches/proto/v4/boost/archive/binary_iarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -88,5 +88,6 @@
 
 // required by export
 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::archive::binary_iarchive)
+BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(boost::archive::binary_iarchive)
 
 #endif // BOOST_ARCHIVE_BINARY_IARCHIVE_HPP

Modified: branches/proto/v4/boost/archive/binary_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/binary_oarchive.hpp (original)
+++ branches/proto/v4/boost/archive/binary_oarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -50,5 +50,6 @@
 
 // required by export
 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::archive::binary_oarchive)
+BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(boost::archive::binary_oarchive)
 
 #endif // BOOST_ARCHIVE_BINARY_OARCHIVE_HPP

Modified: branches/proto/v4/boost/archive/codecvt_null.hpp
==============================================================================
--- branches/proto/v4/boost/archive/codecvt_null.hpp (original)
+++ branches/proto/v4/boost/archive/codecvt_null.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,27 +17,16 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <locale>
-#include <cstddef>
-#include <wchar.h> // for mbstate_t
-
+#include <cstddef> // NULL, size_t
+#include <cwchar> // for mbstate_t
 #include <boost/config.hpp>
 #include <boost/archive/detail/auto_link_archive.hpp>
 
-namespace std{
- #if defined(__LIBCOMO__)
- using ::mbstate_t;
- #elif defined(__QNXNTO__)
- //using std::mbstate_t;
- #elif defined(BOOST_DINKUMWARE_STDLIB) && BOOST_DINKUMWARE_STDLIB == 1
- using ::mbstate_t;
- #elif defined(__SGI_STL_PORT)
- #elif defined(BOOST_NO_STDC_NAMESPACE)
- using ::codecvt;
- using ::mbstate_t;
- #elif defined(BOOST_RWSTD_VER)
- using ::mbstate_t;
- #endif
-} // namespace std
+#if defined(BOOST_NO_STDC_NAMESPACE)
+ using ::codecvt;
+ using ::mbstate_t;
+ using ::size_t
+#endif
 
 namespace boost {
 namespace archive {

Modified: branches/proto/v4/boost/archive/detail/archive_pointer_iserializer.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/archive_pointer_iserializer.hpp (original)
+++ branches/proto/v4/boost/archive/detail/archive_pointer_iserializer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cassert>
+#include <cstddef> // NULL
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
 

Modified: branches/proto/v4/boost/archive/detail/basic_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/basic_oarchive.hpp (original)
+++ branches/proto/v4/boost/archive/detail/basic_oarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <boost/config.hpp>
+#include <cstddef> // NULL
 #include <boost/type_traits/broken_compiler_spec.hpp>
 
 // can't use this - much as I'd like to as borland doesn't support it

Modified: branches/proto/v4/boost/archive/detail/basic_oserializer.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/basic_oserializer.hpp (original)
+++ branches/proto/v4/boost/archive/detail/basic_oserializer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,7 +16,7 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
-#include <cstdlib> // NULL
+#include <cstddef> // NULL
 #include <boost/config.hpp>
 
 #include <boost/archive/detail/auto_link_archive.hpp>

Modified: branches/proto/v4/boost/archive/detail/basic_serializer.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/basic_serializer.hpp (original)
+++ branches/proto/v4/boost/archive/detail/basic_serializer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cassert>
+#include <cstddef> // NULL
 
 #include <boost/noncopyable.hpp>
 #include <boost/config.hpp>

Modified: branches/proto/v4/boost/archive/detail/interface_iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/interface_iarchive.hpp (original)
+++ branches/proto/v4/boost/archive/detail/interface_iarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,6 +16,7 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 #include <string>
+#include <cstddef> // NULL
 #include <boost/cstdint.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/archive/detail/auto_link_archive.hpp>

Modified: branches/proto/v4/boost/archive/detail/interface_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/interface_oarchive.hpp (original)
+++ branches/proto/v4/boost/archive/detail/interface_oarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,6 +16,7 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 #include <string>
+#include <cstddef> // NULL
 #include <boost/cstdint.hpp>
 #include <boost/mpl/bool.hpp>
 

Modified: branches/proto/v4/boost/archive/detail/iserializer.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/iserializer.hpp (original)
+++ branches/proto/v4/boost/archive/detail/iserializer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,7 +24,7 @@
 
 #include <new> // for placement new
 #include <memory> // for auto_ptr
-#include <cstddef> // size_t
+#include <cstddef> // size_t, NULL
 
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
@@ -43,7 +43,7 @@
 #include <boost/type_traits/is_enum.hpp>
 #include <boost/type_traits/is_const.hpp>
 #include <boost/type_traits/remove_const.hpp>
-#include <boost/type_traits/remove_all_extents.hpp>
+#include <boost/type_traits/remove_extent.hpp>
 #include <boost/serialization/assume_abstract.hpp>
 #include <boost/type_traits/is_polymorphic.hpp>
 
@@ -67,6 +67,7 @@
 #include <boost/archive/detail/basic_iarchive.hpp>
 #include <boost/archive/detail/basic_iserializer.hpp>
 #include <boost/archive/detail/archive_pointer_iserializer.hpp>
+#include <boost/archive/archive_exception.hpp>
 
 #include <boost/serialization/serialization.hpp>
 #include <boost/serialization/version.hpp>
@@ -115,11 +116,11 @@
                 ::get_const_instance()
         )
     {}
- virtual void load_object_data(
+ virtual BOOST_DLLEXPORT void load_object_data(
         basic_iarchive & ar,
         void *x,
         const unsigned int file_version
- ) const;
+ ) const BOOST_USED;
     virtual bool class_info() const {
         return boost::serialization::implementation_level<T>::value
>= boost::serialization::object_class_info;
@@ -141,7 +142,7 @@
 };
 
 template<class Archive, class T>
-void iserializer<Archive, T>::load_object_data(
+BOOST_DLLEXPORT void iserializer<Archive, T>::load_object_data(
     basic_iarchive & ar,
     void *x,
     const unsigned int file_version
@@ -165,11 +166,11 @@
             iserializer<Archive, T>
>::get_const_instance();
     }
- virtual void load_object_ptr(
+ BOOST_DLLEXPORT virtual void load_object_ptr(
         basic_iarchive & ar,
         void * & x,
         const unsigned int file_version
- ) const ;
+ ) const BOOST_USED;
 public:
     pointer_iserializer();
 };
@@ -245,7 +246,7 @@
 };
 
 template<class Archive, class T>
-void pointer_iserializer<Archive, T>::load_object_ptr(
+BOOST_DLLEXPORT void pointer_iserializer<Archive, T>::load_object_ptr(
     basic_iarchive & ar,
     void * & x,
     const unsigned int file_version
@@ -469,7 +470,7 @@
 template<class Archive, class T>
 struct load_array_type {
     static void invoke(Archive &ar, T &t){
- typedef BOOST_DEDUCED_TYPENAME remove_all_extents<T>::type value_type;
+ typedef BOOST_DEDUCED_TYPENAME remove_extent<T>::type value_type;
         
         // convert integers to correct enum to load
         int current_count = sizeof(t) / (

Modified: branches/proto/v4/boost/archive/detail/oserializer.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/oserializer.hpp (original)
+++ branches/proto/v4/boost/archive/detail/oserializer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -23,6 +23,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cassert>
+#include <cstddef> // NULL
 
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
@@ -37,7 +38,7 @@
 #include <boost/type_traits/is_const.hpp>
 //#include <boost/type_traits/is_same.hpp>
 #include <boost/type_traits/is_polymorphic.hpp>
-#include <boost/type_traits/remove_all_extents.hpp>
+#include <boost/type_traits/remove_extent.hpp>
 #include <boost/serialization/assume_abstract.hpp>
 
 #include <boost/mpl/eval_if.hpp>
@@ -104,16 +105,16 @@
     // private constructor to inhibit any existence other than the
     // static one
 public:
- explicit oserializer() :
+ explicit BOOST_DLLEXPORT oserializer() :
         basic_oserializer(
             boost::serialization::type_info_implementation<T>::type
                 ::get_const_instance()
         )
     {}
- virtual void save_object_data(
+ virtual BOOST_DLLEXPORT void save_object_data(
         basic_oarchive & ar,
         const void *x
- ) const ;
+ ) const BOOST_USED;
     virtual bool class_info() const {
         return boost::serialization::implementation_level<T>::value
>= boost::serialization::object_class_info;
@@ -133,7 +134,7 @@
 };
 
 template<class Archive, class T>
-void oserializer<Archive, T>::save_object_data(
+BOOST_DLLEXPORT void oserializer<Archive, T>::save_object_data(
     basic_oarchive & ar,
     const void *x
 ) const {
@@ -153,12 +154,12 @@
 {
     const basic_oserializer & get_basic_serializer() const;
 private:
- virtual void save_object_ptr(
+ virtual BOOST_DLLEXPORT void save_object_ptr(
         basic_oarchive & ar,
         const void * x
- ) const ;
+ ) const BOOST_USED;
 public:
- explicit pointer_oserializer();
+ explicit BOOST_DLLEXPORT pointer_oserializer() BOOST_USED;
 };
 
 template<class Archive, class T>
@@ -170,7 +171,7 @@
 }
 
 template<class Archive, class T>
-void pointer_oserializer<Archive, T>::save_object_ptr(
+BOOST_DLLEXPORT void pointer_oserializer<Archive, T>::save_object_ptr(
     basic_oarchive & ar,
     const void * x
 ) const {
@@ -189,7 +190,7 @@
 }
 
 template<class Archive, class T>
-pointer_oserializer<Archive, T>::pointer_oserializer() :
+BOOST_DLLEXPORT pointer_oserializer<Archive, T>::pointer_oserializer() :
     archive_pointer_oserializer<Archive>(
         boost::serialization::type_info_implementation<T>::type
             ::get_const_instance()
@@ -351,8 +352,9 @@
             Archive &ar,
             T & t
         ){
- BOOST_DEDUCED_TYPENAME boost::serialization::type_info_implementation<T>::type
- const & i = boost::serialization::type_info_implementation<T>::type
+ BOOST_DEDUCED_TYPENAME
+ boost::serialization::type_info_implementation<T>::type const
+ & i = boost::serialization::type_info_implementation<T>::type
                     ::get_const_instance();
 
             boost::serialization::extended_type_info const * const this_type = & i;
@@ -381,7 +383,11 @@
             }
             // convert pointer to more derived type. if this is thrown
             // it means that the base/derived relationship hasn't be registered
- vp = serialization::void_downcast(*true_type, *this_type, &t);
+ vp = serialization::void_downcast(
+ *true_type,
+ *this_type,
+ static_cast<const void *>(&t)
+ );
             if(NULL == vp){
                 boost::throw_exception(
                     archive_exception(archive_exception::unregistered_cast)
@@ -464,7 +470,7 @@
 struct save_array_type
 {
     static void invoke(Archive &ar, const T &t){
- typedef BOOST_DEDUCED_TYPENAME remove_all_extents<T>::type value_type;
+ typedef BOOST_DEDUCED_TYPENAME boost::remove_extent<T>::type value_type;
         
         save_access::end_preamble(ar);
         // consider alignment

Modified: branches/proto/v4/boost/archive/detail/polymorphic_iarchive_route.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/polymorphic_iarchive_route.hpp (original)
+++ branches/proto/v4/boost/archive/detail/polymorphic_iarchive_route.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,11 +16,9 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
-#include <cstddef>
 #include <string>
 #include <ostream>
-#include <boost/noncopyable.hpp>
-#include <boost/cstdint.hpp>
+#include <cstddef>
 
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
@@ -29,6 +27,8 @@
 } // namespace std
 #endif
 
+#include <boost/noncopyable.hpp>
+#include <boost/cstdint.hpp>
 #include <boost/archive/polymorphic_iarchive.hpp>
 #include <boost/archive/detail/abi_prefix.hpp> // must be the last header
 

Modified: branches/proto/v4/boost/archive/impl/archive_pointer_iserializer.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/archive_pointer_iserializer.ipp (original)
+++ branches/proto/v4/boost/archive/impl/archive_pointer_iserializer.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,8 +10,13 @@
 
 #include <utility>
 #include <cassert>
-
+#include <cstddef>
 #include <boost/config.hpp> // msvc 6.0 needs this for warning suppression
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::size_t;
+} // namespace std
+#endif
 
 #include <boost/serialization/singleton.hpp>
 #include <boost/archive/detail/basic_serializer_map.hpp>
@@ -65,9 +70,7 @@
 template<class Archive>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY())
 archive_pointer_iserializer<Archive>::~archive_pointer_iserializer(){
- // note: we need to check that the map still exists as we can't depend
- // on static variables being constructed in a specific sequence
- unsigned int count;
+ std::size_t count;
     count = serialization::singleton<
             iserializer_map<Archive>
>::get_mutable_instance().erase(this);

Modified: branches/proto/v4/boost/archive/impl/basic_binary_iprimitive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_binary_iprimitive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_binary_iprimitive.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,7 +9,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cassert>
-#include <cstddef> // size_t
+#include <cstddef> // size_t, NULL
 #include <cstring> // memcpy
 
 #include <boost/config.hpp>

Modified: branches/proto/v4/boost/archive/impl/basic_binary_oprimitive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_binary_oprimitive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_binary_oprimitive.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,6 +9,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <ostream>
+#include <cstddef> // NULL
 #include <cstring>
 
 #include <boost/config.hpp>

Modified: branches/proto/v4/boost/archive/impl/basic_text_iprimitive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_text_iprimitive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_text_iprimitive.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,6 +9,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cstddef> // size_t
+#include <cstddef> // NULL
 
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)

Modified: branches/proto/v4/boost/archive/impl/basic_text_oprimitive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_text_oprimitive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_text_oprimitive.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
+#include <cstddef> // NULL
 #include <boost/pfto.hpp>
 
 #include <boost/archive/basic_text_oprimitive.hpp>

Modified: branches/proto/v4/boost/archive/impl/basic_xml_iarchive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_xml_iarchive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_xml_iarchive.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,6 +9,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cassert>
+#include <cstddef> // NULL
 #include <algorithm>
 
 #include <boost/throw_exception.hpp>

Modified: branches/proto/v4/boost/archive/impl/basic_xml_oarchive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_xml_oarchive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_xml_oarchive.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,6 +9,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <algorithm>
+#include <cstddef> // NULL
 #include <cstring>
 #if defined(BOOST_NO_STDC_NAMESPACE) && ! defined(__LIBCOMO__)
 namespace std{

Modified: branches/proto/v4/boost/archive/impl/text_iarchive_impl.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/text_iarchive_impl.ipp (original)
+++ branches/proto/v4/boost/archive/impl/text_iarchive_impl.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,7 +12,7 @@
 // implementation of basic_text_iprimitive overrides for the combination
 // of template parameters used to implement a text_iprimitive
 
-#include <cstddef> // size_t
+#include <cstddef> // size_t, NULL
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/boost/archive/impl/text_wiarchive_impl.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/text_wiarchive_impl.ipp (original)
+++ branches/proto/v4/boost/archive/impl/text_wiarchive_impl.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,7 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
-#include <cstddef> // size_t
+#include <cstddef> // size_t, NULL
 
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)

Modified: branches/proto/v4/boost/archive/impl/xml_iarchive_impl.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/xml_iarchive_impl.ipp (original)
+++ branches/proto/v4/boost/archive/impl/xml_iarchive_impl.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,6 +10,7 @@
 
 #include <boost/config.hpp>
 #include <cstring> // memcpy
+#include <cstddef> // NULL
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::memcpy;

Modified: branches/proto/v4/boost/archive/impl/xml_wiarchive_impl.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/xml_wiarchive_impl.ipp (original)
+++ branches/proto/v4/boost/archive/impl/xml_wiarchive_impl.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -166,7 +166,7 @@
         archive_locale.reset(
             add_facet(
                 std::locale::classic(),
- new detail::utf8_codecvt_facet
+ new boost::archive::detail::utf8_codecvt_facet
             )
         );
         is.imbue(* archive_locale);

Modified: branches/proto/v4/boost/archive/impl/xml_woarchive_impl.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/xml_woarchive_impl.ipp (original)
+++ branches/proto/v4/boost/archive/impl/xml_woarchive_impl.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -139,12 +139,13 @@
     // we can hack around this by using a static codecvt that never
     // gets destroyed.
     if(0 == (flags & no_codecvt)){
- detail::utf8_codecvt_facet *pfacet;
+ boost::archive::detail::utf8_codecvt_facet *pfacet;
         #if defined(__SGI_STL_PORT)
- static detail::utf8_codecvt_facet facet(static_cast<size_t>(1));
+ static boost::archive::detail::utf8_codecvt_facet
+ facet(static_cast<size_t>(1));
             pfacet = & facet;
         #else
- pfacet = new detail::utf8_codecvt_facet;
+ pfacet = new boost::archive::detail::utf8_codecvt_facet;
         #endif
         archive_locale.reset(add_facet(std::locale::classic(), pfacet));
         os.imbue(* archive_locale);

Modified: branches/proto/v4/boost/archive/iterators/escape.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/escape.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/escape.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cassert>
+#include <cstddef> // NULL
 
 #include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
 #include <boost/iterator/iterator_adaptor.hpp>

Modified: branches/proto/v4/boost/archive/iterators/istream_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/archive/iterators/istream_iterator.hpp (original)
+++ branches/proto/v4/boost/archive/iterators/istream_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,6 +21,7 @@
 // for wchar_t based streams on systems for which wchar_t not a true
 // type but rather a synonym for some integer type.
 
+#include <cstddef> // NULL
 #include <istream>
 #include <boost/iterator/iterator_facade.hpp>
 

Modified: branches/proto/v4/boost/archive/shared_ptr_helper.hpp
==============================================================================
--- branches/proto/v4/boost/archive/shared_ptr_helper.hpp (original)
+++ branches/proto/v4/boost/archive/shared_ptr_helper.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,6 +18,7 @@
 
 #include <map>
 #include <list>
+#include <cstddef> // NULL
 
 #include <boost/config.hpp>
 #include <boost/shared_ptr.hpp>
@@ -53,7 +54,7 @@
 // a common class for holding various types of shared pointers
 
 class shared_ptr_helper {
- typedef std::map<void*, shared_ptr<void> > collection_type;
+ typedef std::map<const void *, shared_ptr<void> > collection_type;
     typedef collection_type::const_iterator iterator_type;
     // list of shared_pointers create accessable by raw pointer. This
     // is used to "match up" shared pointers loaded at different
@@ -85,7 +86,7 @@
 
     // return a void pointer to the most derived type
     template<class T>
- void * object_identifier(T * t) const {
+ const void * object_identifier(T * t) const {
         const boost::serialization::extended_type_info * true_type
             = boost::serialization::type_info_implementation<T>::type
                 ::get_const_instance().get_derived_extended_type_info(*t);
@@ -100,7 +101,11 @@
         const boost::serialization::extended_type_info * this_type
             = & boost::serialization::type_info_implementation<T>::type
                     ::get_const_instance();
- void * vp = void_downcast(*true_type, *this_type, t);
+ const void * vp = void_downcast(
+ *true_type,
+ *this_type,
+ static_cast<const void *>(t)
+ );
         return vp;
     }
 public:
@@ -112,7 +117,7 @@
         }
         // get pointer to the most derived object. This is effectively
         // the object identifer
- void * od = object_identifier(r);
+ const void * od = object_identifier(r);
 
         if(NULL == m_pointers)
             m_pointers = new collection_type;

Modified: branches/proto/v4/boost/archive/tmpdir.hpp
==============================================================================
--- branches/proto/v4/boost/archive/tmpdir.hpp (original)
+++ branches/proto/v4/boost/archive/tmpdir.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cstdlib> // getenv
+#include <cstddef> // NULL
 #include <cassert>
 
 #include <boost/config.hpp>

Modified: branches/proto/v4/boost/asio.hpp
==============================================================================
--- branches/proto/v4/boost/asio.hpp (original)
+++ branches/proto/v4/boost/asio.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -34,6 +34,7 @@
 #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>
@@ -73,6 +74,7 @@
 #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>
@@ -85,9 +87,13 @@
 #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/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

Modified: branches/proto/v4/boost/asio/basic_socket.hpp
==============================================================================
--- branches/proto/v4/boost/asio/basic_socket.hpp (original)
+++ branches/proto/v4/boost/asio/basic_socket.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -515,7 +515,7 @@
    *
    * The socket is automatically opened if it is not already open. If the
    * connect fails, and the socket was automatically opened, the socket is
- * returned to the closed state.
+ * not returned to the closed state.
    *
    * @param peer_endpoint The remote endpoint to which the socket will be
    * connected.
@@ -550,7 +550,7 @@
    *
    * The socket is automatically opened if it is not already open. If the
    * connect fails, and the socket was automatically opened, the socket is
- * returned to the closed state.
+ * not returned to the closed state.
    *
    * @param peer_endpoint The remote endpoint to which the socket will be
    * connected.
@@ -592,7 +592,7 @@
    *
    * The socket is automatically opened if it is not already open. If the
    * connect fails, and the socket was automatically opened, the socket is
- * returned to the closed state.
+ * 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.

Modified: branches/proto/v4/boost/asio/buffer.hpp
==============================================================================
--- branches/proto/v4/boost/asio/buffer.hpp (original)
+++ branches/proto/v4/boost/asio/buffer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -196,6 +196,12 @@
   /// 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)
@@ -360,6 +366,12 @@
   /// 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)
@@ -443,12 +455,22 @@
 /** @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, or a vector of POD elements.
+ * 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.write(boost::asio::buffer(data, size)); @endcode
+ * @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
@@ -460,13 +482,90 @@
  * automatically determining the size of the buffer:
  *
  * @code char d1[128];
- * size_t bytes_transferred = sock.read(boost::asio::buffer(d1));
+ * size_t bytes_transferred = sock.receive(boost::asio::buffer(d1));
  *
  * std::vector<char> d2(128);
- * bytes_transferred = sock.read(boost::asio::buffer(d2));
+ * bytes_transferred = sock.receive(boost::asio::buffer(d2));
  *
  * boost::array<char, 128> d3;
- * bytes_transferred = sock.read(boost::asio::buffer(d3)); @endcode
+ * 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
@@ -481,23 +580,32 @@
  * boost::asio::buffer(d1),
  * boost::asio::buffer(d2),
  * boost::asio::buffer(d3) };
- * bytes_transferred = sock.read(bufs1);
+ * 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.write(bufs2); @endcode
+ * 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)
 {
@@ -512,12 +620,21 @@
 }
 
 /// 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)
 {
@@ -532,12 +649,18 @@
 }
 
 /// 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)
 {
@@ -545,6 +668,12 @@
 }
 
 /// 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])
 {
@@ -552,6 +681,12 @@
 }
  
 /// 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)
@@ -563,6 +698,12 @@
 }
  
 /// 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])
 {
@@ -570,6 +711,12 @@
 }
 
 /// 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)
@@ -652,6 +799,12 @@
       // || 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)
 {
@@ -660,6 +813,12 @@
 }
 
 /// 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)
@@ -671,6 +830,12 @@
 }
 
 /// 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)
 {
@@ -679,6 +844,12 @@
 }
 
 /// 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)
@@ -693,6 +864,12 @@
        // || 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)
 {
@@ -701,6 +878,12 @@
 }
 
 /// 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)
@@ -713,6 +896,11 @@
 
 /// 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.
  */
@@ -720,7 +908,7 @@
 inline mutable_buffers_1 buffer(std::vector<PodType, Allocator>& data)
 {
   return mutable_buffers_1(
- mutable_buffer(&data[0], data.size() * sizeof(PodType)
+ 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
@@ -731,6 +919,11 @@
 
 /// 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.
  */
@@ -739,7 +932,7 @@
     std::size_t max_size_in_bytes)
 {
   return mutable_buffers_1(
- mutable_buffer(&data[0],
+ 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)
@@ -752,6 +945,11 @@
 
 /// 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.
  */
@@ -760,7 +958,7 @@
     const std::vector<PodType, Allocator>& data)
 {
   return const_buffers_1(
- const_buffer(&data[0], data.size() * sizeof(PodType)
+ 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
@@ -771,6 +969,11 @@
 
 /// 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.
  */
@@ -779,7 +982,7 @@
     const std::vector<PodType, Allocator>& data, std::size_t max_size_in_bytes)
 {
   return const_buffers_1(
- const_buffer(&data[0],
+ 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)
@@ -792,6 +995,8 @@
 
 /// 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.
  */
@@ -806,6 +1011,11 @@
 
 /// 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.
  */

Modified: branches/proto/v4/boost/asio/detail/reactive_serial_port_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/reactive_serial_port_service.hpp (original)
+++ branches/proto/v4/boost/asio/detail/reactive_serial_port_service.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -109,7 +109,16 @@
     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;
       descriptor_ops::clear_error(ec);
       s = descriptor_ops::error_wrapper(::tcsetattr(fd, TCSANOW, &ios), ec);

Modified: branches/proto/v4/boost/asio/detail/reactive_socket_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/reactive_socket_service.hpp (original)
+++ branches/proto/v4/boost/asio/detail/reactive_socket_service.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1004,7 +1004,7 @@
         return bytes_recvd;
 
       // Check for EOF.
- if (bytes_recvd == 0)
+ if (bytes_recvd == 0 && impl.protocol_.type() == SOCK_STREAM)
       {
         ec = boost::asio::error::eof;
         return 0;
@@ -1043,11 +1043,13 @@
     public handler_base_from_member<Handler>
   {
   public:
- receive_operation(socket_type socket, boost::asio::io_service& io_service,
- const MutableBufferSequence& buffers, socket_base::message_flags flags,
- Handler handler)
+ 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),
@@ -1080,7 +1082,7 @@
 
       // Receive some data.
       int bytes = socket_ops::recv(socket_, bufs, i, flags_, ec);
- if (bytes == 0)
+ if (bytes == 0 && protocol_type_ == SOCK_STREAM)
         ec = boost::asio::error::eof;
 
       // Check if we need to run the operation again.
@@ -1100,6 +1102,7 @@
 
   private:
     socket_type socket_;
+ int protocol_type_;
     boost::asio::io_service& io_service_;
     boost::asio::io_service::work work_;
     MutableBufferSequence buffers_;
@@ -1159,13 +1162,15 @@
       {
         reactor_.start_except_op(impl.socket_, impl.reactor_data_,
             receive_operation<MutableBufferSequence, Handler>(
- impl.socket_, this->get_io_service(), buffers, flags, 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_, this->get_io_service(), buffers, flags, handler));
+ impl.socket_, impl.protocol_.type(),
+ this->get_io_service(), buffers, flags, handler));
       }
     }
   }
@@ -1248,7 +1253,7 @@
       }
 
       // Check for EOF.
- if (bytes_recvd == 0)
+ if (bytes_recvd == 0 && impl.protocol_.type() == SOCK_STREAM)
       {
         ec = boost::asio::error::eof;
         return 0;
@@ -1291,12 +1296,13 @@
     public handler_base_from_member<Handler>
   {
   public:
- receive_from_operation(socket_type socket,
+ 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),
@@ -1332,7 +1338,7 @@
       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)
+ if (bytes == 0 && protocol_type_ == SOCK_STREAM)
         ec = boost::asio::error::eof;
 
       // Check if we need to run the operation again.
@@ -1353,6 +1359,7 @@
 
   private:
     socket_type socket_;
+ int protocol_type_;
     boost::asio::io_service& io_service_;
     boost::asio::io_service::work work_;
     MutableBufferSequence buffers_;
@@ -1390,8 +1397,8 @@
 
       reactor_.start_read_op(impl.socket_, impl.reactor_data_,
           receive_from_operation<MutableBufferSequence, Handler>(
- impl.socket_, this->get_io_service(), buffers,
- sender_endpoint, flags, handler));
+ impl.socket_, impl.protocol_.type(), this->get_io_service(),
+ buffers, sender_endpoint, flags, handler));
     }
   }
 

Modified: branches/proto/v4/boost/asio/detail/socket_types.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/socket_types.hpp (original)
+++ branches/proto/v4/boost/asio/detail/socket_types.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -188,7 +188,12 @@
 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;

Modified: branches/proto/v4/boost/asio/detail/win_iocp_handle_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/win_iocp_handle_service.hpp (original)
+++ branches/proto/v4/boost/asio/detail/win_iocp_handle_service.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -22,6 +22,10 @@
 
 #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>
@@ -283,11 +287,20 @@
     }
   };
 
- // Write the given data. Returns the number of bytes sent.
+ // 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;
@@ -305,7 +318,7 @@
         break;
     }
 
- // A request to write 0 bytes on a stream handle is a no-op.
+ // 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();
@@ -319,6 +332,8 @@
     }
 
     // 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);
@@ -432,6 +447,15 @@
   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,
@@ -462,7 +486,7 @@
         break;
     }
 
- // A request to write 0 bytes on a stream handle is a no-op.
+ // 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());
@@ -474,6 +498,8 @@
 
     // 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)),
@@ -500,6 +526,14 @@
   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;
@@ -530,7 +564,9 @@
       return 0;
     }
 
- // Write the data.
+ // 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);
@@ -668,6 +704,16 @@
   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,
@@ -710,6 +756,8 @@
 
     // 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)),
@@ -733,14 +781,24 @@
   // 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.

Modified: branches/proto/v4/boost/asio/detail/win_iocp_serial_port_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/win_iocp_serial_port_service.hpp (original)
+++ branches/proto/v4/boost/asio/detail/win_iocp_serial_port_service.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -85,7 +85,7 @@
     std::string name = (device[0] == '\\') ? device : "\\\\.\\" + device;
 
     // Open a handle to the serial port.
- ::HANDLE handle = ::CreateFile(name.c_str(),
+ ::HANDLE handle = ::CreateFileA(name.c_str(),
         GENERIC_READ | GENERIC_WRITE, 0, 0,
         OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
     if (handle == INVALID_HANDLE_VALUE)

Modified: branches/proto/v4/boost/asio/detail/win_iocp_socket_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/win_iocp_socket_service.hpp (original)
+++ branches/proto/v4/boost/asio/detail/win_iocp_socket_service.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -176,9 +176,6 @@
     implementation_type* prev_;
   };
 
- // The type of the reactor used for connect operations.
- typedef detail::select_reactor<true> reactor_type;
-
   // The maximum number of buffers to support in a single operation.
   enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len };
 
@@ -1239,7 +1236,7 @@
           boost::asio::error::get_system_category());
       return 0;
     }
- if (bytes_transferred == 0)
+ if (bytes_transferred == 0 && impl.protocol_.type() == SOCK_STREAM)
     {
       ec = boost::asio::error::eof;
       return 0;
@@ -1270,7 +1267,7 @@
     : public operation
   {
   public:
- receive_operation(win_iocp_io_service& io_service,
+ 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,
@@ -1278,6 +1275,7 @@
             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),
@@ -1326,6 +1324,7 @@
 
       // 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;
@@ -1362,6 +1361,7 @@
       ptr.reset();
     }
 
+ int protocol_type_;
     boost::asio::io_service::work work_;
     weak_cancel_token_type cancel_token_;
     MutableBufferSequence buffers_;
@@ -1394,8 +1394,9 @@
     typedef receive_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_,
- impl.cancel_token_, buffers, 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];
@@ -1468,8 +1469,9 @@
       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);
- handler_ptr<alloc_traits> ptr(raw_ptr, iocp_service_,
- impl.cancel_token_, buffers, 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 };
@@ -1560,7 +1562,7 @@
           boost::asio::error::get_system_category());
       return 0;
     }
- if (bytes_transferred == 0)
+ if (bytes_transferred == 0 && impl.protocol_.type() == SOCK_STREAM)
     {
       ec = boost::asio::error::eof;
       return 0;
@@ -1597,7 +1599,7 @@
     : public operation
   {
   public:
- receive_from_operation(win_iocp_io_service& io_service,
+ receive_from_operation(int protocol_type, win_iocp_io_service& io_service,
         endpoint_type& endpoint, const MutableBufferSequence& buffers,
         Handler handler)
       : operation(io_service,
@@ -1605,6 +1607,7 @@
             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()),
@@ -1651,7 +1654,8 @@
       }
 
       // Check for connection closed.
- if (!ec && bytes_transferred == 0)
+ if (!ec && bytes_transferred == 0
+ && handler_op->protocol_type_ == SOCK_STREAM)
       {
         ec = boost::asio::error::eof;
       }
@@ -1690,6 +1694,7 @@
       ptr.reset();
     }
 
+ int protocol_type_;
     endpoint_type& endpoint_;
     int endpoint_size_;
     boost::asio::io_service::work work_;
@@ -1724,8 +1729,9 @@
     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);
- handler_ptr<alloc_traits> ptr(raw_ptr, iocp_service_,
- sender_endp, buffers, 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];

Modified: branches/proto/v4/boost/asio/handler_alloc_hook.hpp
==============================================================================
--- branches/proto/v4/boost/asio/handler_alloc_hook.hpp (original)
+++ branches/proto/v4/boost/asio/handler_alloc_hook.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -36,7 +36,7 @@
  *
  * This default implementation is simply:
  * @code
- * return ::operator new(bytes);
+ * return ::operator new(size);
  * @endcode
  *
  * @note All temporary objects associated with a handler will be deallocated

Modified: branches/proto/v4/boost/asio/impl/read_until.ipp
==============================================================================
--- branches/proto/v4/boost/asio/impl/read_until.ipp (original)
+++ branches/proto/v4/boost/asio/impl/read_until.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -25,8 +25,8 @@
 #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/const_buffers_iterator.hpp>
 #include <boost/asio/detail/handler_alloc_helpers.hpp>
 #include <boost/asio/detail/handler_invoke_helpers.hpp>
 #include <boost/asio/detail/throw_error.hpp>
@@ -55,24 +55,24 @@
     // 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::detail::const_buffers_iterator<
- const_buffers_type> iterator;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
     const_buffers_type buffers = b.data();
- iterator begin(buffers, next_search_start);
- iterator end(buffers, (std::numeric_limits<std::size_t>::max)());
+ iterator begin = iterator::begin(buffers);
+ iterator start = begin + next_search_start;
+ iterator end = iterator::end(buffers);
 
     // Look for a match.
- iterator iter = std::find(begin, end, delim);
+ iterator iter = std::find(start, end, delim);
     if (iter != end)
     {
       // Found a match. We're done.
       ec = boost::system::error_code();
- return iter.position() + 1;
+ return iter - begin + 1;
     }
     else
     {
       // No match. Next search can start with the new data.
- next_search_start = end.position();
+ next_search_start = end - begin;
     }
 
     // Check if buffer is full.
@@ -147,33 +147,33 @@
     // 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::detail::const_buffers_iterator<
- const_buffers_type> iterator;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
     const_buffers_type buffers = b.data();
- iterator begin(buffers, next_search_start);
- iterator end(buffers, (std::numeric_limits<std::size_t>::max)());
+ 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(
- begin, end, delim.begin(), delim.end());
+ 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.position() + delim.length();
+ return result.first - begin + delim.length();
       }
       else
       {
         // Partial match. Next search needs to start from beginning of match.
- next_search_start = result.first.position();
+ next_search_start = result.first - begin;
       }
     }
     else
     {
       // No match. Next search can start with the new data.
- next_search_start = end.position();
+ next_search_start = end - begin;
     }
 
     // Check if buffer is full.
@@ -213,33 +213,33 @@
     // 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::detail::const_buffers_iterator<
- const_buffers_type> iterator;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
     const_buffers_type buffers = b.data();
- iterator begin(buffers, next_search_start);
- iterator end(buffers, (std::numeric_limits<std::size_t>::max)());
+ 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(begin, end, match_results, expr,
+ 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.position();
+ 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.position();
+ next_search_start = match_results[0].first - begin;
       }
     }
     else
     {
       // No match. Next search can start with the new data.
- next_search_start = end.position();
+ next_search_start = end - begin;
     }
 
     // Check if buffer is full.
@@ -258,6 +258,73 @@
   }
 }
 
+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.first != end)
+ {
+ if (result.second)
+ {
+ // Full match. We're done.
+ ec = boost::system::error_code();
+ return result.first - begin;
+ }
+ 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, 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>
@@ -292,18 +359,18 @@
       // 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::detail::const_buffers_iterator<
- const_buffers_type> iterator;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
       const_buffers_type buffers = streambuf_.data();
- iterator begin(buffers, next_search_start_);
- iterator end(buffers, (std::numeric_limits<std::size_t>::max)());
+ iterator begin = iterator::begin(buffers);
+ iterator start = begin + next_search_start_;
+ iterator end = iterator::end(buffers);
 
       // Look for a match.
- iterator iter = std::find(begin, end, delim_);
+ iterator iter = std::find(start, end, delim_);
       if (iter != end)
       {
         // Found a match. We're done.
- std::size_t bytes = iter.position() + 1;
+ std::size_t bytes = iter - begin + 1;
         handler_(ec, bytes);
         return;
       }
@@ -318,7 +385,7 @@
       }
 
       // Next search can start with the new data.
- next_search_start_ = end.position();
+ next_search_start_ = end - begin;
 
       // Start a new asynchronous read operation to obtain more data.
       std::size_t bytes_available =
@@ -370,11 +437,10 @@
   // 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::detail::const_buffers_iterator<
- const_buffers_type> iterator;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
   const_buffers_type buffers = b.data();
- iterator begin(buffers, 0);
- iterator end(buffers, (std::numeric_limits<std::size_t>::max)());
+ iterator begin = iterator::begin(buffers);
+ iterator end = iterator::end(buffers);
 
   // Look for a match.
   iterator iter = std::find(begin, end, delim);
@@ -382,7 +448,7 @@
   {
     // Found a match. We're done.
     boost::system::error_code ec;
- std::size_t bytes = iter.position() + 1;
+ std::size_t bytes = iter - begin + 1;
     s.io_service().post(detail::bind_handler(handler, ec, bytes));
     return;
   }
@@ -400,7 +466,7 @@
     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.position(), handler));
+ s, b, delim, end - begin, handler));
 }
 
 namespace detail
@@ -438,34 +504,34 @@
       // 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::detail::const_buffers_iterator<
- const_buffers_type> iterator;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
       const_buffers_type buffers = streambuf_.data();
- iterator begin(buffers, next_search_start_);
- iterator end(buffers, (std::numeric_limits<std::size_t>::max)());
+ 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(
- begin, end, delim_.begin(), delim_.end());
+ start, end, delim_.begin(), delim_.end());
       if (result.first != end)
       {
         if (result.second)
         {
           // Full match. We're done.
- std::size_t bytes = result.first.position() + delim_.length();
+ 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.position();
+ next_search_start_ = result.first - begin;
         }
       }
       else
       {
         // No match. Next search can start with the new data.
- next_search_start_ = end.position();
+ next_search_start_ = end - begin;
       }
 
       // Check if buffer is full.
@@ -528,11 +594,10 @@
   // 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::detail::const_buffers_iterator<
- const_buffers_type> iterator;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
   const_buffers_type buffers = b.data();
- iterator begin(buffers, 0);
- iterator end(buffers, (std::numeric_limits<std::size_t>::max)());
+ iterator begin = iterator::begin(buffers);
+ iterator end = iterator::end(buffers);
 
   // Look for a match.
   std::size_t next_search_start;
@@ -544,20 +609,20 @@
     {
       // Full match. We're done.
       boost::system::error_code ec;
- std::size_t bytes = result.first.position() + delim.length();
+ std::size_t bytes = result.first - begin + delim.length();
       s.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.position();
+ next_search_start = result.first - begin;
     }
   }
   else
   {
     // No match. Next search can start with the new data.
- next_search_start = end.position();
+ next_search_start = end - begin;
   }
 
   // Check if buffer is full.
@@ -612,34 +677,34 @@
       // 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::detail::const_buffers_iterator<
- const_buffers_type> iterator;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
       const_buffers_type buffers = streambuf_.data();
- iterator begin(buffers, next_search_start_);
- iterator end(buffers, (std::numeric_limits<std::size_t>::max)());
+ 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(begin, end, match_results, expr_,
+ 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.position();
+ 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.position();
+ next_search_start_ = match_results[0].first - begin;
         }
       }
       else
       {
         // No match. Next search can start with the new data.
- next_search_start_ = end.position();
+ next_search_start_ = end - begin;
       }
 
       // Check if buffer is full.
@@ -702,11 +767,10 @@
   // 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::detail::const_buffers_iterator<
- const_buffers_type> iterator;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
   const_buffers_type buffers = b.data();
- iterator begin(buffers, 0);
- iterator end(buffers, (std::numeric_limits<std::size_t>::max)());
+ iterator begin = iterator::begin(buffers);
+ iterator end = iterator::end(buffers);
 
   // Look for a match.
   std::size_t next_search_start;
@@ -718,20 +782,20 @@
     {
       // Full match. We're done.
       boost::system::error_code ec;
- std::size_t bytes = match_results[0].second.position();
+ std::size_t bytes = match_results[0].second - begin;
       s.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.position();
+ next_search_start = match_results[0].first - begin;
     }
   }
   else
   {
     // No match. Next search can start with the new data.
- next_search_start = end.position();
+ next_search_start = end - begin;
   }
 
   // Check if buffer is full.
@@ -750,6 +814,182 @@
         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.first != end)
+ {
+ if (result.second)
+ {
+ // Full match. We're done.
+ std::size_t bytes = result.first - begin;
+ 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 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.first != end)
+ {
+ if (result.second)
+ {
+ // Full match. We're done.
+ boost::system::error_code ec;
+ std::size_t bytes = result.first - begin;
+ s.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.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
 

Modified: branches/proto/v4/boost/asio/impl/serial_port_base.ipp
==============================================================================
--- branches/proto/v4/boost/asio/impl/serial_port_base.ipp (original)
+++ branches/proto/v4/boost/asio/impl/serial_port_base.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -108,7 +108,12 @@
     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;
@@ -242,16 +247,25 @@
   {
   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;
   }
@@ -281,10 +295,12 @@
   {
     value_ = software;
   }
+# if defined(_BSD_SOURCE)
   else if (storage.c_cflag & CRTSCTS)
   {
     value_ = hardware;
   }
+# endif
   else
   {
     value_ = none;

Modified: branches/proto/v4/boost/asio/io_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/io_service.hpp (original)
+++ branches/proto/v4/boost/asio/io_service.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -101,6 +101,32 @@
  * }
  * }
  * @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
@@ -160,6 +186,9 @@
    * @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();
 
@@ -179,6 +208,9 @@
    * @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);
 

Modified: branches/proto/v4/boost/asio/local/basic_endpoint.hpp
==============================================================================
--- branches/proto/v4/boost/asio/local/basic_endpoint.hpp (original)
+++ branches/proto/v4/boost/asio/local/basic_endpoint.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -149,7 +149,7 @@
         - 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_] == 0)
+ if (path_length_ > 0 && data_.local.sun_path[path_length_ - 1] == 0)
         --path_length_;
     }
   }

Modified: branches/proto/v4/boost/asio/read.hpp
==============================================================================
--- branches/proto/v4/boost/asio/read.hpp (original)
+++ branches/proto/v4/boost/asio/read.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -30,6 +30,9 @@
 
 /**
  * @defgroup read boost::asio::read
+ *
+ * @brief Attempt to read a certain amount of data from a stream before
+ * returning.
  */
 /*@{*/
 
@@ -270,6 +273,9 @@
 /*@}*/
 /**
  * @defgroup async_read boost::asio::async_read
+ *
+ * @brief Start an asynchronous operation to read a certain amount of data from
+ * a stream.
  */
 /*@{*/
 

Modified: branches/proto/v4/boost/asio/read_until.hpp
==============================================================================
--- branches/proto/v4/boost/asio/read_until.hpp (original)
+++ branches/proto/v4/boost/asio/read_until.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,6 +21,9 @@
 #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 <string>
 #include <boost/asio/detail/pop_options.hpp>
 
@@ -30,12 +33,45 @@
 namespace boost {
 namespace asio {
 
+namespace detail
+{
+ 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) };
+ };
+} // 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 a delimiter is encountered.
+/// 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
@@ -61,6 +97,10 @@
  *
  * @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;
@@ -73,7 +113,7 @@
 std::size_t read_until(SyncReadStream& s,
     boost::asio::basic_streambuf<Allocator>& b, char delim);
 
-/// Read data into a streambuf until a delimiter is encountered.
+/// 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
@@ -98,13 +138,17 @@
  *
  * @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 a delimiter is encountered.
+/// 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
@@ -130,6 +174,10 @@
  *
  * @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;
@@ -142,7 +190,7 @@
 std::size_t read_until(SyncReadStream& s,
     boost::asio::basic_streambuf<Allocator>& b, const std::string& delim);
 
-/// Read data into a streambuf until a delimiter is encountered.
+/// 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
@@ -167,13 +215,18 @@
  *
  * @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 a regular expression is located.
+/// 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.
@@ -199,6 +252,11 @@
  *
  * @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;
@@ -211,7 +269,8 @@
 std::size_t read_until(SyncReadStream& s,
     boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
 
-/// Read data into a streambuf until a regular expression is located.
+/// 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.
@@ -237,20 +296,189 @@
  * @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
-*/
+ * @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 a
-/// delimiter is encountered.
+/// 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.
@@ -278,18 +506,24 @@
  * 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.
+ * // Result of operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // The number of bytes in the
- * // streambuf's get area up to
- * // and including the delimiter.
- * // 0 if an error occurred.
+ * // 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;
@@ -312,8 +546,8 @@
     boost::asio::basic_streambuf<Allocator>& b,
     char delim, ReadHandler handler);
 
-/// Start an asynchronous operation to read data into a streambuf until a
-/// delimiter is encountered.
+/// 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.
@@ -341,18 +575,24 @@
  * 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.
+ * // Result of operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // The number of bytes in the
- * // streambuf's get area up to
- * // and including the delimiter.
- * // 0 if an error occurred.
+ * // 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;
@@ -375,8 +615,8 @@
     boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
     ReadHandler handler);
 
-/// Start an asynchronous operation to read data into a streambuf until a
-/// regular expression is located.
+/// 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
@@ -405,20 +645,25 @@
  * 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.
+ * // Result of operation.
+ * const boost::system::error_code& error,
  *
- * std::size_t bytes_transferred // 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.
+ * // 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:
@@ -442,6 +687,132 @@
     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

Modified: branches/proto/v4/boost/asio/ssl/detail/openssl_init.hpp
==============================================================================
--- branches/proto/v4/boost/asio/ssl/detail/openssl_init.hpp (original)
+++ branches/proto/v4/boost/asio/ssl/detail/openssl_init.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,6 +21,7 @@
 #include <boost/asio/detail/push_options.hpp>
 #include <vector>
 #include <boost/assert.hpp>
+#include <boost/config.hpp>
 #include <boost/shared_ptr.hpp>
 #include <boost/asio/detail/pop_options.hpp>
 
@@ -87,11 +88,15 @@
   private:
     static unsigned long openssl_id_func()
     {
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ return ::GetCurrentThreadId();
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
       void* id = instance()->thread_id_;
       if (id == 0)
         instance()->thread_id_ = id = &id; // Ugh.
       BOOST_ASSERT(sizeof(unsigned long) >= sizeof(void*));
       return reinterpret_cast<unsigned long>(id);
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
     }
 
     static void openssl_locking_func(int mode, int n,
@@ -106,8 +111,10 @@
     // Mutexes to be used in locking callbacks.
     std::vector<boost::shared_ptr<boost::asio::detail::mutex> > mutexes_;
 
+#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
     // The thread identifiers to be used by openssl.
     boost::asio::detail::tss_ptr<void> thread_id_;
+#endif // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
   };
 
 public:

Modified: branches/proto/v4/boost/asio/version.hpp
==============================================================================
--- branches/proto/v4/boost/asio/version.hpp (original)
+++ branches/proto/v4/boost/asio/version.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,6 +18,6 @@
 // BOOST_ASIO_VERSION % 100 is the sub-minor version
 // BOOST_ASIO_VERSION / 100 % 1000 is the minor version
 // BOOST_ASIO_VERSION / 100000 is the major version
-#define BOOST_ASIO_VERSION 100100 // 1.1.0
+#define BOOST_ASIO_VERSION 100101 // 1.1.1
 
 #endif // BOOST_ASIO_VERSION_HPP

Modified: branches/proto/v4/boost/asio/write.hpp
==============================================================================
--- branches/proto/v4/boost/asio/write.hpp (original)
+++ branches/proto/v4/boost/asio/write.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -30,6 +30,8 @@
 
 /**
  * @defgroup write boost::asio::write
+ *
+ * @brief Write a certain amount of data to a stream before returning.
  */
 /*@{*/
 
@@ -167,7 +169,7 @@
 std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
     CompletionCondition completion_condition, boost::system::error_code& ec);
 
-/// 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:
@@ -280,10 +282,13 @@
 /*@}*/
 /**
  * @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 of all of the supplied data to a
+/// 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
@@ -406,7 +411,7 @@
 void async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
     CompletionCondition completion_condition, WriteHandler handler);
 
-/// Start an asynchronous operation to write a certain amount of data to a
+/// 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

Modified: branches/proto/v4/boost/circular_buffer.hpp
==============================================================================
--- branches/proto/v4/boost/circular_buffer.hpp (original)
+++ branches/proto/v4/boost/circular_buffer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Circular buffer library header file.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -15,7 +15,7 @@
     #pragma once
 #endif
 
-#include "circular_buffer_fwd.hpp"
+#include <boost/circular_buffer_fwd.hpp>
 #include <boost/detail/workaround.hpp>
 
 // BOOST_CB_ENABLE_DEBUG: Debug support control.
@@ -60,10 +60,10 @@
     #define BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS ((void)0);
 #endif
 
-#include "circular_buffer/debug.hpp"
-#include "circular_buffer/details.hpp"
-#include "circular_buffer/base.hpp"
-#include "circular_buffer/space_optimized.hpp"
+#include <boost/circular_buffer/debug.hpp>
+#include <boost/circular_buffer/details.hpp>
+#include <boost/circular_buffer/base.hpp>
+#include <boost/circular_buffer/space_optimized.hpp>
 
 #undef BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS
 #undef BOOST_CB_IS_CONVERTIBLE

Modified: branches/proto/v4/boost/circular_buffer/base.hpp
==============================================================================
--- branches/proto/v4/boost/circular_buffer/base.hpp (original)
+++ branches/proto/v4/boost/circular_buffer/base.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Implementation of the base circular buffer.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -619,7 +619,7 @@
         \warning In general invoking any method which modifies the internal state of the <code>circular_buffer</code>
                  may delinearize the internal buffer and invalidate the returned pointer.
         \sa <code>array_one()</code> and <code>array_two()</code> for the other option how to pass data into a legacy
- C API.
+ C API; <code>is_linearized()</code>, <code>rotate(const_iterator)</code>
     */
     pointer linearize() {
         if (empty())
@@ -667,6 +667,73 @@
         return m_buff;
     }
 
+ //! Is the <code>circular_buffer</code> linearized?
+ /*!
+ \return <code>true</code> if the internal buffer is linearized into a continuous array (i.e. the
+ <code>circular_buffer</code> meets a condition
+ <code>\&(*this)[0] \< \&(*this)[1] \< ... \< \&(*this)[size() - 1]</code>);
+ <code>false</code> otherwise.
+ \throws Nothing.
+ \par Exception Safety
+ No-throw.
+ \par Iterator Invalidation
+ Does not invalidate any iterators.
+ \par Complexity
+ Constant (in the size of the <code>circular_buffer</code>).
+ \sa <code>linearize()</code>, <code>array_one()</code>, <code>array_two()</code>
+ */
+ bool is_linearized() const { return m_first < m_last || m_last == m_buff; }
+
+ //! Rotate elements in the <code>circular_buffer</code>.
+ /*!
+ A more effective implementation of
+ <code>std::rotate</code>.
+ \pre <code>new_begin</code> is a valid iterator pointing to the <code>circular_buffer</code> <b>except</b> its
+ end.
+ \post Before calling the method suppose:<br><br>
+ <code>m == std::distance(new_begin, end())</code><br><code>n == std::distance(begin(), new_begin)</code>
+ <br><code>val_0 == *new_begin, val_1 == *(new_begin + 1), ... val_m == *(new_begin + m)</code><br>
+ <code>val_r1 == *(new_begin - 1), val_r2 == *(new_begin - 2), ... val_rn == *(new_begin - n)</code><br>
+ <br>then after call to the method:<br><br>
+ <code>val_0 == (*this)[0] \&\& val_1 == (*this)[1] \&\& ... \&\& val_m == (*this)[m - 1] \&\& val_r1 ==
+ (*this)[m + n - 1] \&\& val_r2 == (*this)[m + n - 2] \&\& ... \&\& val_rn == (*this)[m]</code>
+ \param new_begin The new beginning.
+ \throws Whatever <code>T::T(const T&)</code> throws.
+ \throws Whatever <code>T::operator = (const T&)</code> throws.
+ \par Exception Safety
+ Basic; no-throw if the <code>circular_buffer</code> is full or <code>new_begin</code> points to
+ <code>begin()</code> or if the operations in the <i>Throws</i> section do not throw anything.
+ \par Iterator Invalidation
+ If <code>m \< n</code> invalidates iterators pointing to the last <code>m</code> elements
+ (<b>including</b> <code>new_begin</code>, but not iterators equal to <code>end()</code>) else invalidates
+ iterators pointing to the first <code>n</code> elements; does not invalidate any iterators if the
+ <code>circular_buffer</code> is full.
+ \par Complexity
+ Linear (in <code>std::min(m, n)</code>); constant if the <code>circular_buffer</code> is full.
+ \sa <code>std::rotate</code>
+ */
+ void rotate(const_iterator new_begin) {
+ BOOST_CB_ASSERT(new_begin.is_valid(this)); // check for uninitialized or invalidated iterator
+ BOOST_CB_ASSERT(new_begin.m_it != 0); // check for iterator pointing to end()
+ if (full()) {
+ m_first = m_last = const_cast<pointer>(new_begin.m_it);
+ } else {
+ difference_type m = end() - new_begin;
+ difference_type n = new_begin - begin();
+ if (m < n) {
+ for (; m > 0; --m) {
+ push_front(back());
+ pop_back();
+ }
+ } else {
+ for (; n > 0; --n) {
+ push_back(front());
+ pop_front();
+ }
+ }
+ }
+ }
+
 // Size and capacity
 
     //! Get the number of elements currently stored in the <code>circular_buffer</code>.
@@ -921,6 +988,10 @@
                  <code>\link push_back() push_back(const_reference)\endlink</code> or
                  <code>\link insert(iterator, param_value_type) insert(iterator, value_type)\endlink</code>) nothing
                  will be inserted and the size (as well as capacity) remains zero.
+ \note You can explicitly set the capacity by calling the <code>set_capacity(capacity_type)</code> method or you
+ can use the other constructor with the capacity specified.
+ \sa <code>circular_buffer(capacity_type, const allocator_type& alloc)</code>,
+ <code>set_capacity(capacity_type)</code>
     */
     explicit circular_buffer(const allocator_type& alloc = allocator_type())
     : m_buff(0), m_end(0), m_first(0), m_last(0), m_size(0), m_alloc(alloc) {}
@@ -1305,6 +1376,7 @@
               <code>0</code>, nothing will be inserted.
         \param item The element to be inserted.
         \throws Whatever <code>T::T(const T&)</code> throws.
+ \throws Whatever <code>T::operator = (const T&)</code> throws.
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation
@@ -1335,6 +1407,7 @@
               <code>0</code>, nothing will be inserted.
         \param item The element to be inserted.
         \throws Whatever <code>T::T(const T&)</code> throws.
+ \throws Whatever <code>T::operator = (const T&)</code> throws.
         \par Exception Safety
              Basic; no-throw if the operation in the <i>Throws</i> section does not throw anything.
         \par Iterator Invalidation

Modified: branches/proto/v4/boost/circular_buffer/debug.hpp
==============================================================================
--- branches/proto/v4/boost/circular_buffer/debug.hpp (original)
+++ branches/proto/v4/boost/circular_buffer/debug.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Debug support for the circular buffer library.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/circular_buffer/details.hpp
==============================================================================
--- branches/proto/v4/boost/circular_buffer/details.hpp (original)
+++ branches/proto/v4/boost/circular_buffer/details.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Helper classes and functions for the circular buffer.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -67,16 +67,6 @@
 };
 
 /*!
- \struct helper_pointer
- \brief Helper pointer used in the iterator.
-*/
-template <class Traits>
-struct helper_pointer {
- bool m_end;
- typename Traits::pointer m_it;
-};
-
-/*!
     \struct iterator_wrapper
     \brief Helper iterator dereference wrapper.
 */
@@ -288,16 +278,11 @@
     pointer operator -> () const { return &(operator*()); }
 
     //! Difference operator.
- difference_type operator - (const iterator& it) const {
+ template <class Traits0>
+ difference_type operator - (const iterator<Buff, Traits0>& it) const {
         BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
         BOOST_CB_ASSERT(it.is_valid(m_buff)); // check for uninitialized or invalidated iterator
- helper_pointer<Traits> lhs = create_helper_pointer(*this);
- helper_pointer<Traits> rhs = create_helper_pointer(it);
- if (less(rhs, lhs) && lhs.m_it <= rhs.m_it)
- return (lhs.m_it - rhs.m_it) + static_cast<difference_type>(m_buff->capacity());
- if (less(lhs, rhs) && lhs.m_it >= rhs.m_it)
- return (lhs.m_it - rhs.m_it) - static_cast<difference_type>(m_buff->capacity());
- return lhs.m_it - rhs.m_it;
+ return linearize_pointer(*this) - linearize_pointer(it);
     }
 
     //! Increment operator (prefix).
@@ -355,7 +340,7 @@
     iterator& operator -= (difference_type n) {
         BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
         if (n > 0) {
- BOOST_CB_ASSERT(m_buff->begin() - *this <= -n); // check for too large n
+ BOOST_CB_ASSERT(*this - m_buff->begin() >= n); // check for too large n
             m_it = m_buff->sub(m_it == 0 ? m_buff->m_last : m_it, n);
         } else if (n < 0) {
             *this += -n;
@@ -392,12 +377,12 @@
     bool operator < (const iterator<Buff, Traits0>& it) const {
         BOOST_CB_ASSERT(is_valid(m_buff)); // check for uninitialized or invalidated iterator
         BOOST_CB_ASSERT(it.is_valid(m_buff)); // check for uninitialized or invalidated iterator
- return less(create_helper_pointer(*this), create_helper_pointer(it));
+ return linearize_pointer(*this) < linearize_pointer(it);
     }
 
     //! Greater.
     template <class Traits0>
- bool operator > (const iterator<Buff, Traits0>& it) const { return it < *this; }
+ bool operator > (const iterator<Buff, Traits0>& it) const { return it < *this; }
 
     //! Less or equal.
     template <class Traits0>
@@ -410,41 +395,12 @@
 private:
 // Helpers
 
- //! Create helper pointer.
+ //! Get a pointer which would point to the same element as the iterator in case the circular buffer is linearized.
     template <class Traits0>
- helper_pointer<Traits0> create_helper_pointer(const iterator<Buff, Traits0>& it) const {
- helper_pointer<Traits0> helper;
- helper.m_end = (it.m_it == 0);
- helper.m_it = helper.m_end ? m_buff->m_last : it.m_it;
- return helper;
- }
-
- //! Less.
- template <class InternalIterator0, class InternalIterator1>
- bool less(const InternalIterator0& lhs, const InternalIterator1& rhs) const {
- difference_type ldiff = lhs.m_it - m_buff->m_first;
- difference_type rdiff = rhs.m_it - m_buff->m_first;
- if (ldiff < 0) {
- if (rdiff < 0)
- return lhs.m_it < rhs.m_it;
- else if (rdiff == 0)
- return rhs.m_end;
- } else if (ldiff == 0) {
- if (rdiff < 0)
- return !lhs.m_end;
- else if (rdiff == 0)
- return !lhs.m_end && rhs.m_end;
- else
- return !lhs.m_end;
- } else { // ldiff > 0
- if (rdiff < 0)
- return true;
- else if (rdiff == 0)
- return rhs.m_end;
- else
- return lhs.m_it < rhs.m_it;
- }
- return false;
+ typename Traits0::pointer linearize_pointer(const iterator<Buff, Traits0>& it) const {
+ return it.m_it == 0 ? m_buff->m_buff + m_buff->size() :
+ (it.m_it < m_buff->m_first ? it.m_it + (m_buff->m_end - m_buff->m_first)
+ : m_buff->m_buff + (it.m_it - m_buff->m_first));
     }
 };
 

Modified: branches/proto/v4/boost/circular_buffer/space_optimized.hpp
==============================================================================
--- branches/proto/v4/boost/circular_buffer/space_optimized.hpp (original)
+++ branches/proto/v4/boost/circular_buffer/space_optimized.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Implementation of the circular buffer adaptor.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -90,6 +90,8 @@
     using circular_buffer<T, Alloc>::array_one;
     using circular_buffer<T, Alloc>::array_two;
     using circular_buffer<T, Alloc>::linearize;
+ using circular_buffer<T, Alloc>::is_linearized;
+ using circular_buffer<T, Alloc>::rotate;
     using circular_buffer<T, Alloc>::size;
     using circular_buffer<T, Alloc>::max_size;
     using circular_buffer<T, Alloc>::empty;

Modified: branches/proto/v4/boost/circular_buffer_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/circular_buffer_fwd.hpp (original)
+++ branches/proto/v4/boost/circular_buffer_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Forward declaration of the circular buffer and its adaptor.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/concept/detail/general.hpp
==============================================================================
--- branches/proto/v4/boost/concept/detail/general.hpp (original)
+++ branches/proto/v4/boost/concept/detail/general.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -29,6 +29,14 @@
     static void failed() { ((Model*)0)->~Model(); }
 };
 
+struct failed {};
+
+template <class Model>
+struct requirement<failed ************ Model::************>
+{
+ static void failed() { ((Model*)0)->~Model(); }
+};
+
 # ifdef BOOST_OLD_CONCEPT_SUPPORT
 
 template <class Model>
@@ -42,7 +50,7 @@
   : mpl::if_<
         concept::not_satisfied<Model>
       , constraint<Model>
- , requirement<Model>
+ , requirement<failed ************ Model::************>
>::type
 {};
   
@@ -51,7 +59,7 @@
 // For GCC-2.x, these can't have exactly the same name
 template <class Model>
 struct requirement_<void(*)(Model)>
- : requirement<Model>
+ : requirement<failed ************ Model::************>
 {};
   
 # endif

Modified: branches/proto/v4/boost/concept/detail/msvc.hpp
==============================================================================
--- branches/proto/v4/boost/concept/detail/msvc.hpp (original)
+++ branches/proto/v4/boost/concept/detail/msvc.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,6 +14,7 @@
 
 namespace boost { namespace concept {
 
+
 template <class Model>
 struct check
 {
@@ -22,7 +23,19 @@
         x->~Model();
     }
 };
-
+
+# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
+struct failed {};
+template <class Model>
+struct check<failed ************ Model::************>
+{
+ virtual void failed(Model* x)
+ {
+ x->~Model();
+ }
+};
+# endif
+
 # ifdef BOOST_OLD_CONCEPT_SUPPORT
   
 namespace detail
@@ -38,7 +51,11 @@
   : mpl::if_c<
         not_satisfied<Model>::value
       , detail::constraint
+# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
       , check<Model>
+# else
+ , check<failed ************ Model::************>
+# endif
>::type
 {};
       
@@ -46,7 +63,11 @@
   
 template <class Model>
 struct require
- : check<Model>
+# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
+ : check<Model>
+# else
+ : check<failed ************ Model::************>
+# endif
 {};
   
 # endif

Modified: branches/proto/v4/boost/config/compiler/pgi.hpp
==============================================================================
--- branches/proto/v4/boost/config/compiler/pgi.hpp (original)
+++ branches/proto/v4/boost/config/compiler/pgi.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,7 +16,7 @@
 // if no threading API is detected.
 //
 
-#if (__PGIC__ == 7) && (__PGIC_MINOR__ == 1)
+#if (__PGIC__ == 7) && (__PGIC_MINOR__ <= 2)
 
 #define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 #define BOOST_NO_TWO_PHASE_NAME_LOOKUP

Modified: branches/proto/v4/boost/config/compiler/sunpro_cc.hpp
==============================================================================
--- branches/proto/v4/boost/config/compiler/sunpro_cc.hpp (original)
+++ branches/proto/v4/boost/config/compiler/sunpro_cc.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -40,7 +40,7 @@
        // initialized in-class.
        // >> Assertion: (../links/dbg_cstabs.cc, line 611)
        // while processing ../test.cpp at line 0.
- // (Jens Maurer according to Gottfried Ganßauge 04 Mar 2002)
+ // (Jens Maurer according to Gottfried Ganssauge 04 Mar 2002)
 # define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
 
        // SunPro 5.3 has better support for partial specialization,

Modified: branches/proto/v4/boost/config/platform/bsd.hpp
==============================================================================
--- branches/proto/v4/boost/config/platform/bsd.hpp (original)
+++ branches/proto/v4/boost/config/platform/bsd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -43,7 +43,19 @@
 //
 // No wide character support in the BSD header files:
 //
-#if !(defined(__FreeBSD__) && (__FreeBSD__ >= 5))
+#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))
 # define BOOST_NO_CWCHAR
 #endif
 //

Modified: branches/proto/v4/boost/config/stdlib/libstdcpp3.hpp
==============================================================================
--- branches/proto/v4/boost/config/stdlib/libstdcpp3.hpp (original)
+++ branches/proto/v4/boost/config/stdlib/libstdcpp3.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -68,6 +68,11 @@
 # define BOOST_HAS_SLIST
 # define BOOST_HAS_HASH
 # define BOOST_SLIST_HEADER <ext/slist>
-# define BOOST_HASH_SET_HEADER <ext/hash_set>
-# define BOOST_HASH_MAP_HEADER <ext/hash_map>
+# 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

Modified: branches/proto/v4/boost/date_time/compiler_config.hpp
==============================================================================
--- branches/proto/v4/boost/date_time/compiler_config.hpp (original)
+++ branches/proto/v4/boost/date_time/compiler_config.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -90,7 +90,7 @@
  *
  * 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_SOURCES
+ * The corresponding .cpp file must have BOOST_DATE_TIME_SOURCE
  * defined before including its header. For examples see:
  * greg_month.hpp & greg_month.cpp
  *

Modified: branches/proto/v4/boost/date_time/gregorian/greg_weekday.hpp
==============================================================================
--- branches/proto/v4/boost/date_time/gregorian/greg_weekday.hpp (original)
+++ branches/proto/v4/boost/date_time/gregorian/greg_weekday.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -31,7 +31,7 @@
   //! 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 os out of range 0..6")) {}
+ 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;

Modified: branches/proto/v4/boost/date_time/gregorian_calendar.ipp
==============================================================================
--- branches/proto/v4/boost/date_time/gregorian_calendar.ipp (original)
+++ branches/proto/v4/boost/date_time/gregorian_calendar.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,7 @@
 namespace boost {
 namespace date_time {
   //! Return the day of the week (0==Sunday, 1==Monday, etc)
- /*! Converts a the year-month-day into a day of the week number
+ /*! Converts a year-month-day into a day of the week number
    */
   template<typename ymd_type_, typename date_int_type_>
   BOOST_DATE_TIME_INLINE

Modified: branches/proto/v4/boost/date_time/string_parse_tree.hpp
==============================================================================
--- branches/proto/v4/boost/date_time/string_parse_tree.hpp (original)
+++ branches/proto/v4/boost/date_time/string_parse_tree.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 #define BOOST_DATE_TIME_STRING_PARSE_TREE___HPP__
 
 /* Copyright (c) 2004-2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
+ * 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
@@ -11,7 +11,7 @@
 
 
 #include "boost/lexical_cast.hpp" //error without?
-#include "boost/algorithm/string/case_conv.hpp"
+#include "boost/algorithm/string/case_conv.hpp"
 #include <map>
 #include <string>
 #include <vector>
@@ -37,21 +37,21 @@
       return cache;
     }
     //some of the cache was used return the rest
- return string_type(cache, match_depth);
+ 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.
+ /*! 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;
@@ -64,8 +64,8 @@
 std::basic_ostream<charT>&
 operator<<(std::basic_ostream<charT>& os, parse_match_result<charT>& mr)
 {
- os << "cm: " << mr.current_match
- << " C: '" << mr.cache
+ os << "cm: " << mr.current_match
+ << " C: '" << mr.cache
      << "' md: " << mr.match_depth
      << " R: " << mr.remaining();
   return os;
@@ -93,11 +93,11 @@
   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" desingates 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,
+
+ /*! 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)
   {
@@ -126,44 +126,44 @@
     while(i < s.size()) {
       if (i==0) {
         if (i == (s.size()-1)) {
- ti = m_next_chars.insert(value_type(s[i],
+ ti = m_next_chars.insert(value_type(s[i],
                                               string_parse_tree<charT>(value)));
         }
         else {
- ti = m_next_chars.insert(value_type(s[i],
+ 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],
+ 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],
+ 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
+ /*! 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,
+ * 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,
+ match(std::istreambuf_iterator<charT>& sitr,
         std::istreambuf_iterator<charT>& stream_end,
         parse_match_result_type& result,
         unsigned int& level) const
@@ -171,7 +171,7 @@
 
     level++;
     charT c;
- // if we conditionally advance sitr, we won't have
+ // 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()) {
@@ -181,16 +181,16 @@
       //sitr++;
     }
     else {
- // if we're looking for characters from the cache,
+ // if we're looking for characters from the cache,
       // we don't want to increment sitr
- adv_itr = false;
+ 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++;
+ sitr++;
         result.cache += c;
       }
       if (litr->second.m_value != -1) { // -1 is default value
@@ -198,16 +198,16 @@
           result.current_match = litr->second.m_value;
           result.match_depth = static_cast<unsigned short>(level);
         }
- litr->second.match(sitr, stream_end,
+ litr->second.match(sitr, stream_end,
                            result, level);
         level--;
       }
       else {
- litr->second.match(sitr, stream_end,
+ litr->second.match(sitr, stream_end,
                            result, level);
         level--;
       }
-
+
       if(level <= result.cache.size()) {
         adv_itr = false;
       }
@@ -218,13 +218,13 @@
 
   }
 
- /*! 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
+ /*! 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,
+ match(std::istreambuf_iterator<charT>& sitr,
         std::istreambuf_iterator<charT>& stream_end) const
   {
     // lookup to_lower of char in tree.
@@ -242,8 +242,8 @@
     iterator end = m_next_chars.end();
     // os << "starting level: " << level << std::endl;
     while (itr != end) {
- os << "level: " << level
- << " node: " << itr->first
+ os << "level: " << level
+ << " node: " << itr->first
          << " value: " << itr->second.m_value
          << std::endl;
       itr->second.printme(os, level);
@@ -257,14 +257,14 @@
     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
+ os << " node: " << litr->first
          << " value: " << litr->second.m_value
          << std::endl;
       litr++;

Modified: branches/proto/v4/boost/date_time/time.hpp
==============================================================================
--- branches/proto/v4/boost/date_time/time.hpp (original)
+++ branches/proto/v4/boost/date_time/time.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -77,14 +77,14 @@
     /*! 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
+ 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
+ std::string zone_abbrev(bool /*as_offset*/=false) const
     {
       return time_system::zone_name(time_);
     }

Modified: branches/proto/v4/boost/detail/allocator_utilities.hpp
==============================================================================
--- branches/proto/v4/boost/detail/allocator_utilities.hpp (original)
+++ branches/proto/v4/boost/detail/allocator_utilities.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/detail/utf8_codecvt_facet.hpp
==============================================================================
--- branches/proto/v4/boost/detail/utf8_codecvt_facet.hpp (original)
+++ branches/proto/v4/boost/detail/utf8_codecvt_facet.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -79,25 +79,16 @@
 // specialized on those types for this to work.
 
 #include <locale>
-// for mbstate_t
-#include <wchar.h>
-// for std::size_t
-#include <cstddef>
+#include <cwchar> // for mbstate_t
+#include <cstddef> // for std::size_t
 
 #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(BOOST_NO_STDC_NAMESPACE)
+ using ::codecvt;
+ using ::mbstate_t;
+#endif
 
 #if !defined(__MSL_CPP__) && !defined(__LIBCOMO__)
     #define BOOST_CODECVT_DO_LENGTH_CONST const

Modified: branches/proto/v4/boost/dynamic_bitset/config.hpp
==============================================================================
--- branches/proto/v4/boost/dynamic_bitset/config.hpp (original)
+++ branches/proto/v4/boost/dynamic_bitset/config.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
-// --------------------------------------------------
+// -----------------------------------------------------------
 //
-// (C) Copyright Chuck Allison and Jeremy Siek 2001 - 2002.
-// (C) Copyright Gennaro Prota 2003 - 2006.
+// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+// Copyright (c) 2003-2006 Gennaro Prota
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -9,10 +9,6 @@
 //
 // -----------------------------------------------------------
 
-// See http://www.boost.org/libs/dynamic_bitset/ for documentation.
-//
-// $Revision$ $Date$ - $Name$
-
 #ifndef BOOST_DYNAMIC_BITSET_CONFIG_HPP_GP_20040424
 #define BOOST_DYNAMIC_BITSET_CONFIG_HPP_GP_20040424
 

Modified: branches/proto/v4/boost/dynamic_bitset/dynamic_bitset.hpp
==============================================================================
--- branches/proto/v4/boost/dynamic_bitset/dynamic_bitset.hpp (original)
+++ branches/proto/v4/boost/dynamic_bitset/dynamic_bitset.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
-// --------------------------------------------------
+// -----------------------------------------------------------
 //
-// (C) Copyright Chuck Allison and Jeremy Siek 2001 - 2002.
-// (C) Copyright Gennaro Prota 2003 - 2006.
+// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
+// Copyright (c) 2003-2006 Gennaro Prota
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -9,11 +9,6 @@
 //
 // -----------------------------------------------------------
 
-// See http://www.boost.org/libs/dynamic_bitset/ for documentation.
-//
-// $Revision$ $Date$ - $Name$
-
-
 #ifndef BOOST_DYNAMIC_BITSET_DYNAMIC_BITSET_HPP
 #define BOOST_DYNAMIC_BITSET_DYNAMIC_BITSET_HPP
 
@@ -769,11 +764,11 @@
             b[div] = b[0];
         }
 
- // disable std::fill_n deprecated warning in MSVC++ 8.0 (warning C4996)
- // This will only work in MSVC++ 8.0 SP1, which brings up the warning
- // in the line of user code; otherwise, the warning will come up
- // in the line in the header itself, so if the user includes stdlib
- // headers before dynamic_bitset, he will still get the warning.
+ // disable std::fill_n deprecated warning in MSVC++ 8.0 (warning C4996)
+ // This will only work in MSVC++ 8.0 SP1, which brings up the warning
+ // in the line of user code; otherwise, the warning will come up
+ // in the line in the header itself, so if the user includes stdlib
+ // headers before dynamic_bitset, he will still get the warning.
 #if defined(_MSC_VER) && _MSC_VER >= 1400
 #pragma warning(push)
 #pragma warning(disable:4996)
@@ -1072,29 +1067,23 @@
   // beyond the "allowed" positions
   typedef unsigned long result_type;
 
- /*
- if find_next() did its job correctly we don't need the if
- below, because all bits we care about are in the first block
-
- if (bits_per_block >= ulong_width)
- return static_cast<result_type>(m_bits[0]);
- */
+ const size_type max_size =
+ (std::min)(m_num_bits, static_cast<size_type>(ulong_width));
+
+ const size_type last_block = block_index( max_size - 1 );
 
- size_type last_block = block_index(
- (std::min)( m_num_bits, (size_type)ulong_width ) - 1 );
   result_type result = 0;
   for (size_type i = 0; i <= last_block; ++i) {
 
- assert((size_type)bits_per_block * i < (size_type)ulong_width);
+ const size_type offset = i * bits_per_block;
+ assert( offset < static_cast<size_type>(ulong_width));
 
- unsigned long piece = m_bits[i];
- result |= (piece << (bits_per_block * i));
+ result |= (static_cast<result_type>(m_bits[i]) << offset);
   }
 
   return result;
 }
 
-
 template <typename Block, typename Allocator>
 inline typename dynamic_bitset<Block, Allocator>::size_type
 dynamic_bitset<Block, Allocator>::size() const

Modified: branches/proto/v4/boost/exception.hpp
==============================================================================
--- branches/proto/v4/boost/exception.hpp (original)
+++ branches/proto/v4/boost/exception.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,6 +6,12 @@
 #ifndef UUID_1D94A7C6054E11DB9804B622A1EF5492
 #define UUID_1D94A7C6054E11DB9804B622A1EF5492
 
+#include <boost/exception/diagnostic_information.hpp>
+#include <boost/exception/enable_current_exception.hpp>
+#include <boost/exception/enable_error_info.hpp>
+#include <boost/exception/error_info.hpp>
+#include <boost/exception/exception.hpp>
+#include <boost/exception/info.hpp>
 #include <boost/exception/info_tuple.hpp>
 #include <boost/exception_ptr.hpp>
 #include <boost/throw_exception.hpp>

Modified: branches/proto/v4/boost/exception/enable_current_exception.hpp
==============================================================================
--- branches/proto/v4/boost/exception/enable_current_exception.hpp (original)
+++ branches/proto/v4/boost/exception/enable_current_exception.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 #ifndef UUID_78CC85B2914F11DC8F47B48E55D89593
 #define UUID_78CC85B2914F11DC8F47B48E55D89593
 
-#include <boost/exception/detail/counted_base.hpp>
+#include <boost/exception/exception.hpp>
 #include <boost/exception/detail/cloning_base.hpp>
 #include <boost/detail/atomic_count.hpp>
 #include <boost/assert.hpp>
@@ -64,6 +64,9 @@
             clone_impl( T const & x ):
                 T(x)
                 {
+ if( boost::exception * be1=dynamic_cast<boost::exception *>(this) )
+ if( boost::exception const * be2=dynamic_cast<boost::exception const *>(&x) )
+ *be1 = *be2;
                 }
 
             private:
@@ -88,6 +91,9 @@
                 T(x),
                 count_(0)
                 {
+ if( boost::exception * be1=dynamic_cast<boost::exception *>(this) )
+ if( boost::exception const * be2=dynamic_cast<boost::exception const *>(&x) )
+ *be1 = *be2;
                 }
 
             private:
@@ -115,6 +121,7 @@
             };
 
         template <class T>
+ inline
         clone_base *
         make_clone( T const & x )
             {
@@ -138,6 +145,7 @@
         }
 
     template <class T>
+ inline
     exception_detail::clone_impl<T>
     enable_current_exception( T const & x )
         {

Modified: branches/proto/v4/boost/exception/enable_error_info.hpp
==============================================================================
--- branches/proto/v4/boost/exception/enable_error_info.hpp (original)
+++ branches/proto/v4/boost/exception/enable_error_info.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,6 +32,12 @@
             ~error_info_injector() throw()
                 {
                 }
+
+ char const *
+ diagnostic_information() const throw()
+ {
+ return boost::exception::_diagnostic_information(T::what());
+ }
             };
 
         struct large_size { char c[256]; };
@@ -82,6 +88,7 @@
         }
 
     template <class T>
+ inline
 #if !BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x582))
     typename
 #endif

Modified: branches/proto/v4/boost/exception/exception.hpp
==============================================================================
--- branches/proto/v4/boost/exception/exception.hpp (original)
+++ branches/proto/v4/boost/exception/exception.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,7 +27,7 @@
         error_info_container:
             public exception_detail::counted_base
             {
- virtual char const * what( std::type_info const & ) const = 0;
+ virtual char const * diagnostic_information( char const *, std::type_info const & ) const = 0;
             virtual shared_ptr<error_info_base const> get( std::type_info const & ) const = 0;
             virtual void set( shared_ptr<error_info_base const> const & ) = 0;
             };
@@ -49,19 +49,9 @@
 
         virtual
         char const *
- what() const throw()
+ diagnostic_information() const throw()
             {
- if( data_ )
- try
- {
- char const * w = data_->what(typeid(*this));
- BOOST_ASSERT(0!=w);
- return w;
- }
- catch(...)
- {
- }
- return typeid(*this).name();
+ return _diagnostic_information(0);
             }
 
         protected:
@@ -75,6 +65,22 @@
             {
             }
 
+ char const *
+ _diagnostic_information( char const * std_what ) const throw()
+ {
+ if( data_ )
+ try
+ {
+ char const * w = data_->diagnostic_information(std_what,typeid(*this));
+ BOOST_ASSERT(0!=w);
+ return w;
+ }
+ catch(...)
+ {
+ }
+ return std_what ? std_what : typeid(*this).name();
+ }
+
 #if BOOST_WORKAROUND( BOOST_MSVC, BOOST_TESTED_AT(1500) )
         //Force class exception to be abstract.
         //Otherwise, MSVC bug allows throw exception(), even though the copy constructor is protected.

Modified: branches/proto/v4/boost/exception/info.hpp
==============================================================================
--- branches/proto/v4/boost/exception/info.hpp (original)
+++ branches/proto/v4/boost/exception/info.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -85,14 +85,8 @@
         value_type const value_;
         };
 
- template <class ErrorInfo>
- struct
- error_info_type
- {
- typedef typename ErrorInfo::value_type value_type;
- };
-
     template <class E,class Tag,class T>
+ inline
     E const &
     operator<<( E const & x, error_info<Tag,T> const & v )
         {
@@ -102,6 +96,7 @@
         }
 
     template <class ErrorInfo,class E>
+ inline
     shared_ptr<typename ErrorInfo::value_type const>
     get_error_info( E const & some_exception )
         {
@@ -155,11 +150,18 @@
                 }
 
             char const *
- what( std::type_info const & exception_type ) const
+ diagnostic_information( char const * std_what, std::type_info const & exception_type ) const
                 {
                 if( what_.empty() )
                     {
- std::string tmp(exception_type.name());
+ std::string tmp;
+ if( std_what )
+ {
+ tmp += std_what;
+ tmp += '\n';
+ }
+ tmp += "Dynamic exception type: ";
+ tmp += exception_type.name();
                     tmp += '\n';
                     for( error_info_map::const_iterator i=info_.begin(),end=info_.end(); i!=end; ++i )
                         {

Modified: branches/proto/v4/boost/exception/info_tuple.hpp
==============================================================================
--- branches/proto/v4/boost/exception/info_tuple.hpp (original)
+++ branches/proto/v4/boost/exception/info_tuple.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,6 +16,7 @@
         class E,
         class Tag1,class T1,
         class Tag2,class T2 >
+ inline
     E const &
     operator<<(
         E const & x,
@@ -31,6 +32,7 @@
         class Tag1,class T1,
         class Tag2,class T2,
         class Tag3,class T3 >
+ inline
     E const &
     operator<<(
         E const & x,
@@ -48,6 +50,7 @@
         class Tag2,class T2,
         class Tag3,class T3,
         class Tag4,class T4 >
+ inline
     E const &
     operator<<(
         E const & x,

Modified: branches/proto/v4/boost/exception/to_string.hpp
==============================================================================
--- branches/proto/v4/boost/exception/to_string.hpp (original)
+++ branches/proto/v4/boost/exception/to_string.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -39,6 +39,7 @@
         }
 
     template <class T>
+ inline
     typename enable_if<is_output_streamable<T>,std::string>::type
     to_string( T const & x )
         {
@@ -53,6 +54,21 @@
         {
         enum e { value=to_string_detail::has_to_string_impl<T,is_output_streamable<T>::value>::value };
         };
+
+ template <class T,class U>
+ inline
+ std::string
+ to_string( std::pair<T,U> const & x )
+ {
+ return std::string("(") + to_string(x.first) + ',' + to_string(x.second) + ')';
+ }
+
+ inline
+ std::string
+ to_string( std::exception const & x )
+ {
+ return x.what();
+ }
     }
 
 #endif

Modified: branches/proto/v4/boost/exception/to_string_stub.hpp
==============================================================================
--- branches/proto/v4/boost/exception/to_string_stub.hpp (original)
+++ branches/proto/v4/boost/exception/to_string_stub.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,8 +7,8 @@
 #define UUID_E788439ED9F011DCB181F25B55D89593
 
 #include <boost/exception/to_string.hpp>
-#include <iomanip>
-#include <typeinfo>
+#include <boost/exception/detail/object_hex_dump.hpp>
+#include <boost/assert.hpp>
 
 namespace
 boost
@@ -40,12 +40,30 @@
                 {
                 return s(x);
                 }
+
+ template <class T>
+ static
+ std::string
+ convert( T const & x, std::string s )
+ {
+ return s;
+ }
+
+ template <class T>
+ static
+ std::string
+ convert( T const & x, char const * s )
+ {
+ BOOST_ASSERT(s!=0);
+ return s;
+ }
             };
 
         namespace
         to_string_dispatch
             {
             template <class T,class Stub>
+ inline
             std::string
             dispatch( T const & x, Stub s )
                 {
@@ -54,22 +72,16 @@
             }
 
         template <class T>
+ inline
         std::string
         string_stub_dump( T const & x )
             {
- std::ostringstream s;
- s << "[ type: " << typeid(x).name() << ", size: " << sizeof(T) << ", dump: ";
- size_t n=sizeof(T)>16?16:sizeof(T);
- s.fill('0');
- s.width(2);
- for( unsigned char const * b=reinterpret_cast<unsigned char const *>(&x),* e=b+n; b!=e; ++b )
- s << std::setw(2) << std::hex << (unsigned int)*b << " ";
- s << "]";
- return s.str();
+ return "[ " + exception_detail::object_hex_dump(x) + " ]";
             }
         }
 
     template <class T>
+ inline
     std::string
     to_string_stub( T const & x )
         {
@@ -77,18 +89,12 @@
         }
 
     template <class T,class Stub>
+ inline
     std::string
     to_string_stub( T const & x, Stub s )
         {
         return exception_detail::to_string_dispatch::dispatch(x,s);
         }
-
- template <class T,class U>
- std::string
- to_string( std::pair<T,U> const & x )
- {
- return std::string("(") + to_string(x.first) + ',' + to_string(x.second) + ')';
- }
     }
 
 #endif

Modified: branches/proto/v4/boost/exception_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/exception_ptr.hpp (original)
+++ branches/proto/v4/boost/exception_ptr.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,9 +32,9 @@
             {
             }
 
- ~unknown_exception() throw()
- {
- }
+ ~unknown_exception() throw()
+ {
+ }
         };
 
     typedef intrusive_ptr<exception_detail::clone_base const> exception_ptr;
@@ -62,12 +62,13 @@
                 {
                 }
 
- ~current_exception_std_exception_wrapper() throw()
- {
- }
+ ~current_exception_std_exception_wrapper() throw()
+ {
+ }
             };
 
         template <class T>
+ inline
         exception_ptr
         current_exception_std_exception( T const & e1 )
             {
@@ -170,6 +171,7 @@
         }
 
     template <class T>
+ inline
     exception_ptr
     copy_exception( T const & e )
         {

Modified: branches/proto/v4/boost/filesystem/convenience.hpp
==============================================================================
--- branches/proto/v4/boost/filesystem/convenience.hpp (original)
+++ branches/proto/v4/boost/filesystem/convenience.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -50,20 +50,22 @@
          }
 
          // First create branch, by calling ourself recursively
- create_directories(ph.branch_path());
+ 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 leaf = ph.leaf();
+ string_type filename = ph.filename();
 
- BOOST_FS_TYPENAME string_type::size_type n = leaf.rfind('.');
+ BOOST_FS_TYPENAME string_type::size_type n = filename.rfind('.');
       if (n != string_type::npos)
- return leaf.substr(n);
+ return filename.substr(n);
       else
         return string_type();
     }
@@ -71,14 +73,17 @@
     BOOST_FS_FUNC_STRING basename(const Path& ph)
     {
       typedef BOOST_FS_TYPENAME Path::string_type string_type;
- string_type leaf = ph.leaf();
- BOOST_FS_TYPENAME string_type::size_type n = leaf.rfind('.');
- return leaf.substr(0, n);
+ 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.branch_path() / (basename(ph) + new_extension); }
+ { return ph.parent_path() / (basename(ph) + new_extension); }
+
+# endif
 
 # ifndef BOOST_FILESYSTEM_NARROW_ONLY
 

Modified: branches/proto/v4/boost/filesystem/operations.hpp
==============================================================================
--- branches/proto/v4/boost/filesystem/operations.hpp (original)
+++ branches/proto/v4/boost/filesystem/operations.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -102,10 +102,14 @@
 
     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_status f ) { return f.type() == regular_file; }
+ 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(f) && !is_directory(f) && !is_symlink(f); }
+ 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
     {
@@ -117,6 +121,10 @@
 
     namespace detail
     {
+ // singular object used only as a tag; thus initialization and
+ // thread-safety are not issues
+ BOOST_FILESYSTEM_DECL extern system::error_code throws;
+
       typedef std::pair< system::error_code, bool >
         query_pair;
 
@@ -275,7 +283,7 @@
 # ifndef BOOST_FILESYSTEM_NO_DEPRECATED
     inline bool symbolic_link_exists( const path & ph )
       { return is_symlink( symlink_status(ph) ); }
-#endif
+# endif
 
     BOOST_FS_FUNC(bool) exists( const Path & ph )
     {
@@ -297,6 +305,17 @@
       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;
@@ -306,6 +325,7 @@
           "boost::filesystem::is_regular", ph, ec ) );
       return is_regular( result );
     }
+# endif
 
     BOOST_FS_FUNC(bool) is_other( const Path & ph )
     {
@@ -454,21 +474,13 @@
       return ec;
     }
 
- BOOST_FS_FUNC(bool) remove( const Path & ph )
+ BOOST_FS_FUNC(void) remove( const Path & ph, system::error_code & ec = detail::throws )
     {
- if ( exists( ph )
- || is_symlink( ph ) ) // handle dangling symbolic links
- // note that the POSIX behavior for symbolic links is what we want;
- // the link rather than what it points to is deleted. Windows behavior
- // doesn't matter; is_symlink() is always false on Windows.
- {
- system::error_code ec( detail::remove_api( ph.external_file_string() ) );
- if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
- "boost::filesystem::remove", ph, ec ) );
- return true;
- }
- return false;
+ system::error_code error( detail::remove_api(ph.external_file_string()) );
+ if ( error && &ec == &detail::throws )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::remove", ph, error ) );
+ ec = error;
     }
 
     BOOST_FS_FUNC(unsigned long) remove_all( const Path & ph )
@@ -618,10 +630,17 @@
     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 ); }
@@ -693,10 +712,8 @@
       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 void remove( const path & ph ) { remove<path>( ph ); }
+ inline void remove( const wpath & ph ) { remove<wpath>( ph ); }
 
     inline unsigned long remove_all( const path & ph )
       { return remove_all<path>( ph ); }
@@ -965,7 +982,7 @@
         {
           boost::throw_exception( basic_filesystem_error<Path>(
             "boost::filesystem::basic_directory_iterator increment",
- m_imp->m_directory_entry.path().branch_path(), ec ) );
+ 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)
@@ -973,7 +990,7 @@
             || (name[1] == dot<Path>::value
               && name.size() == 2))) )
         {
- m_imp->m_directory_entry.replace_leaf(
+ m_imp->m_directory_entry.replace_filename(
             Path::traits_type::to_internal( name ), fs, symlink_fs );
           return;
         }
@@ -1001,10 +1018,10 @@
         file_status st, file_status symlink_st )
         { m_path = p; m_status = st; m_symlink_status = symlink_st; }
 
- void replace_leaf( const string_type & s,
+ void replace_filename( const string_type & s,
         file_status st, file_status symlink_st )
      {
- m_path.remove_leaf();
+ m_path.remove_filename();
        m_path /= s;
        m_status = st;
        m_symlink_status = symlink_st;
@@ -1021,9 +1038,9 @@
 
 # ifndef BOOST_FILESYSTEM_NO_DEPRECATED
       // deprecated functions preserve common use cases in legacy code
- typename Path::string_type leaf() const
+ typename Path::string_type filename() const
       {
- return path().leaf();
+ return path().filename();
       }
       typename Path::string_type string() const
       {

Modified: branches/proto/v4/boost/filesystem/path.hpp
==============================================================================
--- branches/proto/v4/boost/filesystem/path.hpp (original)
+++ branches/proto/v4/boost/filesystem/path.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,12 +1,17 @@
 // 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
@@ -197,7 +202,12 @@
 # endif
       }
 
- basic_path & remove_leaf();
+ basic_path & remove_filename();
+ basic_path & replace_extension( const string_type & new_extension = "" );
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ basic_path & remove_leaf() { return remove_filename(); }
+# endif
 
       // observers
       const string_type & string() const { return m_path; }
@@ -211,8 +221,15 @@
       string_type root_name() const;
       string_type root_directory() const;
       basic_path relative_path() const;
- string_type leaf() const;
- basic_path branch_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(); }
+# endif
 
       bool empty() const { return m_path.empty(); } // name consistent with std containers
       bool is_complete() const;
@@ -220,8 +237,8 @@
       bool has_root_name() const;
       bool has_root_directory() const;
       bool has_relative_path() const { return !relative_path().empty(); }
- bool has_leaf() const { return !m_path.empty(); }
- bool has_branch_path() const { return !branch_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<
@@ -577,23 +594,23 @@
       // BOOST_FILESYSTEM_DECL version works for VC++ but not GCC. Go figure!
       inline
       const char * what( const char * sys_err_what,
- const path & path1, const path & path2, std::string & target )
+ const path & path1_arg, const path & path2_arg, std::string & target )
       {
         try
         {
           if ( target.empty() )
           {
             target = sys_err_what;
- if ( !path1.empty() )
+ if ( !path1_arg.empty() )
             {
               target += ": \"";
- target += path1.file_string();
+ target += path1_arg.file_string();
               target += "\"";
             }
- if ( !path2.empty() )
+ if ( !path2_arg.empty() )
             {
               target += ", \"";
- target += path2.file_string();
+ target += path2_arg.file_string();
               target += "\"";
             }
           }
@@ -607,7 +624,7 @@
 
       template<class Path>
       const char * what( const char * sys_err_what,
- const Path & /*path1*/, const Path & /*path2*/, std::string & /*target*/ )
+ const Path & /*path1_arg*/, const Path & /*path2_arg*/, std::string & /*target*/ )
       {
         return sys_err_what;
       }
@@ -624,14 +641,14 @@
 
       typedef Path path_type;
 
- basic_filesystem_error( const std::string & what,
+ basic_filesystem_error( const std::string & what_arg,
         system::error_code ec );
 
- basic_filesystem_error( const std::string & what,
- const path_type & path1, 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, const path_type & path1,
- const path_type & path2, 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() {}
 
@@ -698,13 +715,13 @@
           ;
       }
 
- // leaf_pos helper ----------------------------------------------------//
+ // filename_pos helper ----------------------------------------------------//
 
       template<class String, class Traits>
- typename String::size_type leaf_pos(
+ 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 leaf (or empty)
+ // return 0 if str itself is filename (or empty)
       {
         typedef typename
           boost::BOOST_FILESYSTEM_NAMESPACE::basic_path<String, Traits> path_type;
@@ -728,9 +745,9 @@
           pos = str.find_last_of( colon<path_type>::value, end_pos-2 );
 # endif
 
- return ( pos == String::npos // path itself must be a leaf (or empty)
+ return ( pos == String::npos // path itself must be a filename (or empty)
           || (pos == 1 && str[0] == slash<path_type>::value) ) // or net
- ? 0 // so leaf is entire string
+ ? 0 // so filename is entire string
             : pos + 1; // or starts after delimiter
       }
 
@@ -876,10 +893,10 @@
     // decomposition functions ----------------------------------------------//
 
     template<class String, class Traits>
- String basic_path<String, Traits>::leaf() const
+ String basic_path<String, Traits>::filename() const
     {
       typename String::size_type end_pos(
- detail::leaf_pos<String, Traits>( m_path, m_path.size() ) );
+ detail::filename_pos<String, Traits>( m_path, m_path.size() ) );
       return (m_path.size()
                 && end_pos
                 && m_path[end_pos] == slash<path_type>::value
@@ -889,12 +906,31 @@
     }
 
     template<class String, class Traits>
- basic_path<String, Traits> basic_path<String, Traits>::branch_path() const
+ 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::leaf_pos<String, Traits>( m_path, m_path.size() ) );
+ detail::filename_pos<String, Traits>( m_path, m_path.size() ) );
 
- bool leaf_was_separator( m_path.size()
+ bool filename_was_separator( m_path.size()
         && m_path[end_pos] == slash<path_type>::value );
 
       // skip separators unless root directory
@@ -907,7 +943,7 @@
         ;
         --end_pos ) {}
 
- return (end_pos == 1 && root_dir_pos == 0 && leaf_was_separator)
+ return (end_pos == 1 && root_dir_pos == 0 && filename_was_separator)
        ? path_type()
        : path_type( m_path.substr( 0, end_pos ) );
     }
@@ -1137,7 +1173,7 @@
           && (*itr)[0] == dot<path_type>::value
           && (*itr)[1] == dot<path_type>::value ) // dot dot
         {
- string_type lf( temp.leaf() );
+ string_type lf( temp.filename() );
           if ( lf.size() > 0
             && (lf.size() != 1
               || (lf[0] != dot<path_type>::value
@@ -1152,7 +1188,7 @@
                )
             )
           {
- temp.remove_leaf();
+ 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]
@@ -1183,16 +1219,34 @@
 
 # endif
 
- // remove_leaf ----------------------------------------------------------//
+ // modifiers ------------------------------------------------------------//
 
     template<class String, class Traits>
- basic_path<String, Traits> & basic_path<String, Traits>::remove_leaf()
+ basic_path<String, Traits> & basic_path<String, Traits>::remove_filename()
     {
       m_path.erase(
- detail::leaf_pos<String, Traits>( m_path, m_path.size() ) );
+ 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>
@@ -1375,7 +1429,7 @@
           ;
           --end_pos ) {}
 
- itr.m_pos = detail::leaf_pos<string_type, traits_type>
+ 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 );
       }
@@ -1385,8 +1439,8 @@
 
     template<class Path>
     basic_filesystem_error<Path>::basic_filesystem_error(
- const std::string & what, system::error_code ec )
- : system::system_error(ec, what)
+ const std::string & what_arg, system::error_code ec )
+ : system::system_error(ec, what_arg)
     {
       try
       {
@@ -1397,29 +1451,29 @@
 
     template<class Path>
     basic_filesystem_error<Path>::basic_filesystem_error(
- const std::string & what, const path_type & path1,
+ const std::string & what_arg, const path_type & path1_arg,
       system::error_code ec )
- : system::system_error(ec, what)
+ : system::system_error(ec, what_arg)
     {
       try
       {
         m_imp_ptr.reset( new m_imp );
- m_imp_ptr->m_path1 = path1;
+ 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, const path_type & path1,
- const path_type & path2, system::error_code ec )
- : system::system_error(ec, what)
+ 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;
- m_imp_ptr->m_path2 = path2;
+ m_imp_ptr->m_path1 = path1_arg;
+ m_imp_ptr->m_path2 = path2_arg;
       }
       catch (...) { m_imp_ptr.reset(); }
     }

Modified: branches/proto/v4/boost/function/function_base.hpp
==============================================================================
--- branches/proto/v4/boost/function/function_base.hpp (original)
+++ branches/proto/v4/boost/function/function_base.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -432,7 +432,7 @@
             // 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<wrapper_allocator_type const &>(*f));
+ wrapper_allocator_type wrapper_allocator(static_cast<Allocator const &>(*f));
             wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
             wrapper_allocator.construct(copy, *f);
 
@@ -443,7 +443,7 @@
             /* 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<wrapper_allocator_type const &>(*victim));
+ wrapper_allocator_type wrapper_allocator(static_cast<Allocator const &>(*victim));
             wrapper_allocator.destroy(victim);
             wrapper_allocator.deallocate(victim,1);
             out_buffer.obj_ptr = 0;

Modified: branches/proto/v4/boost/fusion/container/generation/ignore.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/generation/ignore.hpp (original)
+++ branches/proto/v4/boost/fusion/container/generation/ignore.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /*=============================================================================
     Copyright (c) 2001 Doug Gregor
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/container/list/detail/at_impl.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/list/detail/at_impl.hpp (original)
+++ branches/proto/v4/boost/fusion/container/list/detail/at_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ Distributed under the 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(FUSION_AT_IMPL_07172005_0726)
@@ -15,6 +15,71 @@
 
 namespace boost { namespace fusion
 {
+ namespace detail
+ {
+ template <typename Cons>
+ struct cons_deref
+ {
+ typedef typename Cons::car_type type;
+ };
+
+ template <typename Cons, int I>
+ struct cons_advance
+ {
+ typedef typename
+ cons_advance<Cons, I-1>::type::cdr_type
+ type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 0>
+ {
+ typedef Cons type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 1>
+ {
+ typedef typename Cons::cdr_type type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 2>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type type;
+#endif
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 3>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type _b;
+ typedef typename _b::cdr_type type;
+#endif
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 4>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type _b;
+ typedef typename _b::cdr_type _c;
+ typedef typename _c::cdr_type type;
+#endif
+ };
+ }
+
     struct cons_tag;
 
     namespace extension
@@ -26,22 +91,10 @@
         struct at_impl<cons_tag>
         {
             template <typename Sequence, typename N>
- struct apply
+ struct apply
             {
- typedef typename
- mpl::eval_if<
- is_const<Sequence>
- , add_const<typename Sequence::cdr_type>
- , mpl::identity<typename Sequence::cdr_type>
- >::type
- cdr_type;
-
- typedef typename
- mpl::eval_if<
- mpl::bool_<N::value == 0>
- , mpl::identity<typename Sequence::car_type>
- , apply<cdr_type, mpl::int_<N::value-1> >
- >
+ typedef detail::cons_deref<
+ typename detail::cons_advance<Sequence, N::value>::type>
                 element;
 
                 typedef typename

Modified: branches/proto/v4/boost/fusion/container/vector/vector_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/container/vector/vector_fwd.hpp (original)
+++ branches/proto/v4/boost/fusion/container/vector/vector_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/functional/invocation/invoke.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/functional/invocation/invoke.hpp (original)
+++ branches/proto/v4/boost/fusion/functional/invocation/invoke.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,8 @@
 /*=============================================================================
- Copyright (c) 2005-2006 João Abecasis
+ Copyright (c) 2005-2006 Joao Abecasis
     Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are subject to the Boost Software
+
+ 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).
 ==============================================================================*/
@@ -71,21 +71,21 @@
     {
         namespace ft = function_types;
 
- template<
- typename Function, class Sequence,
+ template<
+ typename Function, class Sequence,
             int N = result_of::size<Sequence>::value,
             bool CBI = ft::is_callable_builtin<Function>::value,
             bool RandomAccess = traits::is_random_access<Sequence>::value
>
         struct invoke_impl;
 
- template <class Sequence, int N>
+ template <class Sequence, int N>
         struct invoke_param_types;
 
         template <typename T, class Sequence>
         struct invoke_data_member;
 
- template <typename Function, class Sequence, int N, bool RandomAccess>
+ template <typename Function, class Sequence, int N, bool RandomAccess>
         struct invoke_mem_fn;
 
         #define BOOST_PP_FILENAME_1 <boost/fusion/functional/invocation/invoke.hpp>
@@ -116,7 +116,7 @@
                     invoke_mem_fn<Function,Sequence,1,RandomAccess>,
                     invoke_data_member<Function, Sequence> >,
                 mpl::identity< invoke_nonmember_builtin<
- Function,Sequence,1,RandomAccess> >
+ Function,Sequence,1,RandomAccess> >
>::type
         { };
 
@@ -139,7 +139,7 @@
 
         public:
 
- typedef typename boost::add_reference<qualified_type>::type
+ typedef typename boost::add_reference<qualified_type>::type
                 result_type;
 
             static inline result_type call(T C::* f, Sequence & s)
@@ -154,10 +154,10 @@
     {
         template <typename Function, class Sequence> struct invoke
         {
- typedef typename detail::invoke_impl<
+ typedef typename detail::invoke_impl<
                 typename boost::remove_reference<Function>::type, Sequence
>::result_type type;
- };
+ };
     }
 
     template <typename Function, class Sequence>
@@ -242,7 +242,7 @@
         public:
 
             typedef typename boost::result_of<
- Function(BOOST_PP_ENUM_PARAMS(N,typename seq::T))
+ Function(BOOST_PP_ENUM_PARAMS(N,typename seq::T))
>::type result_type;
 
             template <typename F>
@@ -274,7 +274,7 @@
                 typename seq::I0 i0 = fusion::begin(s);
                 BOOST_PP_REPEAT_FROM_TO(1,N,M,~)
 
- return (that_ptr< typename mpl::front<
+ return (that_ptr< typename mpl::front<
                                       ft::parameter_types<Function> >::type
>::get(*i0)->*f)(BOOST_PP_ENUM_SHIFTED_PARAMS(N,*i));
             }
@@ -302,5 +302,5 @@
 
 #undef N
 #endif // defined(BOOST_PP_IS_ITERATING)
-#endif
+#endif
 

Modified: branches/proto/v4/boost/fusion/functional/invocation/invoke_function_object.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/functional/invocation/invoke_function_object.hpp (original)
+++ branches/proto/v4/boost/fusion/functional/invocation/invoke_function_object.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,8 @@
 /*=============================================================================
- Copyright (c) 2005-2006 João Abecasis
+ Copyright (c) 2005-2006 Joao Abecasis
     Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are subject to the Boost Software
+
+ 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).
 ==============================================================================*/
@@ -51,14 +51,14 @@
 
     namespace detail
     {
- template<
- class Function, class Sequence,
+ template<
+ class Function, class Sequence,
             int N = result_of::size<Sequence>::value,
- bool RandomAccess = traits::is_random_access<Sequence>::value
+ bool RandomAccess = traits::is_random_access<Sequence>::value
>
         struct invoke_function_object_impl;
 
- template <class Sequence, int N>
+ template <class Sequence, int N>
         struct invoke_function_object_param_types;
 
         #define BOOST_PP_FILENAME_1 \
@@ -72,10 +72,10 @@
     {
         template <class Function, class Sequence> struct invoke_function_object
         {
- typedef typename detail::invoke_function_object_impl<
+ typedef typename detail::invoke_function_object_impl<
                 typename boost::remove_reference<Function>::type, Sequence
>::result_type type;
- };
+ };
     }
 
     template <class Function, class Sequence>
@@ -114,7 +114,7 @@
 
             typedef typename boost::result_of<
 #define M(z,j,data) \
- typename result_of::at_c<Sequence,j>::type
+ typename result_of::at_c<Sequence,j>::type
                 Function (BOOST_PP_ENUM(N,M,~)) >::type result_type;
 #undef M
 
@@ -154,7 +154,7 @@
             }
         };
 
- template <class Sequence>
+ template <class Sequence>
         struct invoke_function_object_param_types<Sequence,N>
         {
 #if N > 0
@@ -173,5 +173,5 @@
 
 #undef N
 #endif // defined(BOOST_PP_IS_ITERATING)
-#endif
+#endif
 

Modified: branches/proto/v4/boost/fusion/functional/invocation/invoke_procedure.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/functional/invocation/invoke_procedure.hpp (original)
+++ branches/proto/v4/boost/fusion/functional/invocation/invoke_procedure.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,8 @@
 /*=============================================================================
- Copyright (c) 2005-2006 João Abecasis
+ Copyright (c) 2005-2006 Joao Abecasis
     Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are subject to the Boost Software
+
+ 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).
 ==============================================================================*/
@@ -58,8 +58,8 @@
     {
         namespace ft = function_types;
 
- template<
- typename Function, class Sequence,
+ template<
+ typename Function, class Sequence,
             int N = result_of::size<Sequence>::value,
             bool MFP = ft::is_member_function_pointer<Function>::value,
             bool RandomAccess = traits::is_random_access<Sequence>::value
@@ -167,5 +167,5 @@
 
 #undef N
 #endif // defined(BOOST_PP_IS_ITERATING)
-#endif
+#endif
 

Modified: branches/proto/v4/boost/fusion/sequence/comparison/detail/equal_to.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/detail/equal_to.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/detail/equal_to.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/detail/greater.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/detail/greater.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/detail/greater.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/detail/greater_equal.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/detail/greater_equal.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/detail/greater_equal.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/detail/less.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/detail/less.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/detail/less.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/detail/less_equal.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/detail/less_equal.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/detail/less_equal.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/detail/not_equal_to.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/detail/not_equal_to.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/detail/not_equal_to.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/equal_to.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/equal_to.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/equal_to.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/greater.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/greater.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/greater.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/greater_equal.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/greater_equal.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/greater_equal.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/less.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/less.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/less.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/less_equal.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/less_equal.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/less_equal.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/comparison/not_equal_to.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/comparison/not_equal_to.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/comparison/not_equal_to.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/io/detail/in.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/io/detail/in.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/io/detail/in.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 1999-2003 Jeremiah Willcock
     Copyright (c) 2001-2006 Joel de Guzman
 

Modified: branches/proto/v4/boost/fusion/sequence/io/detail/manip.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/io/detail/manip.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/io/detail/manip.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /*=============================================================================
     Copyright (c) 1999-2003 Jeremiah Willcock
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/fusion/sequence/io/detail/out.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/io/detail/out.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/io/detail/out.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 1999-2003 Jeremiah Willcock
     Copyright (c) 2001-2006 Joel de Guzman
 

Modified: branches/proto/v4/boost/fusion/sequence/io/in.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/io/in.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/io/in.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 1999-2003 Jeremiah Willcock
     Copyright (c) 2001-2006 Joel de Guzman
 

Modified: branches/proto/v4/boost/fusion/sequence/io/out.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/sequence/io/out.hpp (original)
+++ branches/proto/v4/boost/fusion/sequence/io/out.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 1999-2003 Jeremiah Willcock
     Copyright (c) 2001-2006 Joel de Guzman
 

Modified: branches/proto/v4/boost/fusion/support/detail/as_fusion_element.hpp
==============================================================================
--- branches/proto/v4/boost/fusion/support/detail/as_fusion_element.hpp (original)
+++ branches/proto/v4/boost/fusion/support/detail/as_fusion_element.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/boost/graph/detail/read_graphviz_spirit.hpp
==============================================================================
--- branches/proto/v4/boost/graph/detail/read_graphviz_spirit.hpp (original)
+++ branches/proto/v4/boost/graph/detail/read_graphviz_spirit.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -53,6 +53,7 @@
 #include <utility>
 #include <map>
 #include <boost/graph/graphviz.hpp>
+#include <boost/throw_exception.hpp>
 
 namespace phoenix {
 // Workaround: std::map::operator[] uses a different return type than all
@@ -292,12 +293,12 @@
 
     void check_undirected() {
       if(self.graph_.is_directed())
- throw boost::undirected_graph_error();
+ boost::throw_exception(boost::undirected_graph_error());
     }
 
     void check_directed() {
       if(!self.graph_.is_directed())
- throw boost::directed_graph_error();
+ boost::throw_exception(boost::directed_graph_error());
     }
     
     void memoize_node() {

Modified: branches/proto/v4/boost/graph/reverse_graph.hpp
==============================================================================
--- branches/proto/v4/boost/graph/reverse_graph.hpp (original)
+++ branches/proto/v4/boost/graph/reverse_graph.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -76,9 +76,9 @@
     typedef typename Traits::edges_size_type edges_size_type;
 
     // More typedefs used by detail::edge_property_map, vertex_property_map
- typedef typename BidirectionalGraph::edge_property_type
+ typedef typename boost::edge_property_type<BidirectionalGraph>::type
       edge_property_type;
- typedef typename BidirectionalGraph::vertex_property_type
+ typedef typename boost::vertex_property_type<BidirectionalGraph>::type
       vertex_property_type;
     typedef reverse_graph_tag graph_tag;
 

Modified: branches/proto/v4/boost/integer.hpp
==============================================================================
--- branches/proto/v4/boost/integer.hpp (original)
+++ branches/proto/v4/boost/integer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,6 +7,12 @@
 // See http://www.boost.org/libs/integer for documentation.
 
 // Revision History
+// 16 Jul 08 Added MPL-compatible variants of the minimum-size and value-
+// based integer templates. (Daryle Walker)
+// 15 Jul 08 Added exact-integer templates; added MPL-compatible variant of
+// processor-optimized integer template. (Daryle Walker)
+// 14 Jul 08 Added extended-integer support. (Daryle Walker)
+// 13 Jul 08 Redid implmentation. (Daryle Walker)
 // 22 Sep 01 Added value-based integer templates. (Daryle Walker)
 // 01 Apr 01 Modified to use new <boost/limits.hpp> header. (John Maddock)
 // 30 Jul 00 Add typename syntax fix (Jens Maurer)
@@ -17,108 +23,357 @@
 
 #include <boost/integer_fwd.hpp> // self include
 
-#include <boost/integer_traits.hpp> // for boost::integer_traits
-#include <boost/limits.hpp> // for std::numeric_limits
+#include <boost/config.hpp> // for BOOST_STATIC_CONSTANT, etc.
+#include <boost/cstdint.hpp> // for boost::uintmax_t, intmax_t
+#include <boost/integer_traits.hpp> // for boost::integer_traits
+#include <boost/limits.hpp> // for std::numeric_limits
+#include <boost/utility/enable_if.hpp> // for boost::enable_if_c
+
+#include <boost/detail/extended_integer.hpp> // for BOOST_HAS_XINT, etc.
+
+#include <climits> // for UCHAR_MAX, USHRT_MAX, UINT_MAX, ULONG_MAX, etc.
 
 namespace boost
 {
 
- // Helper templates ------------------------------------------------------//
+ // integer template mapping a type to its processor-optimized analog -----//
+
+ // Some types can be handled better by the processor than others. This
+ // template metafunction should map various built-in integral types to
+ // the processor's perferred type for the given type's value range
+ template < typename BaseInt >
+ struct fast_integral
+ {
+ typedef BaseInt type;
+ };
+
+ // Platform-specific specializations should go here.
 
   // fast integers from least integers
   // int_fast_t<> works correctly for unsigned too, in spite of the name.
   template< typename LeastInt >
- struct int_fast_t { typedef LeastInt fast; }; // imps may specialize
+ struct int_fast_t { typedef typename fast_integral<LeastInt>::type fast; };
 
- // convert category to type
- template< int Category > struct int_least_helper {}; // default is empty
+namespace detail
+{
+
+ // Helper templates ------------------------------------------------------//
 
- // specializatons: 1=long, 2=int, 3=short, 4=signed char,
- // 6=unsigned long, 7=unsigned int, 8=unsigned short, 9=unsigned char
- // no specializations for 0 and 5: requests for a type > long are in error
- template<> struct int_least_helper<1> { typedef long least; };
- template<> struct int_least_helper<2> { typedef int least; };
- template<> struct int_least_helper<3> { typedef short least; };
- template<> struct int_least_helper<4> { typedef signed char least; };
- template<> struct int_least_helper<6> { typedef unsigned long least; };
- template<> struct int_least_helper<7> { typedef unsigned int least; };
- template<> struct int_least_helper<8> { typedef unsigned short least; };
- template<> struct int_least_helper<9> { typedef unsigned char least; };
+ // convert integer category to type ; default is empty
+ template< int Rank, typename Signedness > struct int_least_helper {};
+
+ // specializatons: 1=(unsigned) __int64/long long, 2=(unsigned) long,
+ // 3=unsigned/int, 4=(unsigned) short, 5=(un)signed char
+ // no specializations for 0: requests for a type > (unsigned) (long) long are
+ // in error
+#if BOOST_HAS_XINT
+ template<> struct int_least_helper<1, signed> { typedef xint_t least; };
+ template<> struct int_least_helper<1, unsigned> { typedef uxint_t least; };
+#endif
+ template<> struct int_least_helper<2, signed> { typedef long least; };
+ template<> struct int_least_helper<2, unsigned>
+ { typedef unsigned long least; };
+ template<> struct int_least_helper<3, signed> { typedef int least; };
+ template<> struct int_least_helper<3, unsigned>
+ { typedef unsigned int least; };
+ template<> struct int_least_helper<4, signed> { typedef short least; };
+ template<> struct int_least_helper<4, unsigned>
+ { typedef unsigned short least; };
+ template<> struct int_least_helper<5, signed> { typedef signed char least; };
+ template<> struct int_least_helper<5, unsigned>
+ { typedef unsigned char least; };
+
+ // category bounds
+ enum
+ {
+#if BOOST_HAS_XINT
+ lowest_integral_rank = 1,
+#else
+ lowest_integral_rank = 2,
+#endif
+ highest_integral_rank = 5
+ };
+
+ // map a bit count to a category
+ template < int BitsIncludingSign >
+ struct int_rank_helper
+ {
+ BOOST_STATIC_CONSTANT( int, mantissa = BitsIncludingSign - 1 );
+#if BOOST_HAS_XINT
+ BOOST_STATIC_CONSTANT( int, extended_ = (mantissa <= std::numeric_limits<
+ xint_t >::digits) );
+#else
+ BOOST_STATIC_CONSTANT( int, extended_ = 1 );
+#endif
+ BOOST_STATIC_CONSTANT( int, rank = (BitsIncludingSign > 0) * (extended_ +
+ (mantissa <= std::numeric_limits< long >::digits) +
+ (mantissa <= std::numeric_limits< int >::digits) +
+ (mantissa <= std::numeric_limits< short >::digits) +
+ (mantissa <= std::numeric_limits< signed char >::digits)) );
+ };
+
+ template < int Bits >
+ struct uint_rank_helper
+ {
+#if BOOST_HAS_XINT
+ BOOST_STATIC_CONSTANT( int, extended_ = (Bits <= std::numeric_limits<
+ uxint_t >::digits) );
+#else
+ BOOST_STATIC_CONSTANT( int, extended_ = 1 );
+#endif
+ BOOST_STATIC_CONSTANT( int, rank = (Bits >= 0) * (extended_ +
+ (Bits <= std::numeric_limits< unsigned long >::digits) +
+ (Bits <= std::numeric_limits< unsigned int >::digits) +
+ (Bits <= std::numeric_limits< unsigned short >::digits) +
+ (Bits <= std::numeric_limits< unsigned char >::digits)) );
+ };
+
+ template < int BitsIncludingSign >
+ struct int_exact_rank_helper { BOOST_STATIC_CONSTANT( int, rank = 0 ); };
+ template < int Bits >
+ struct uint_exact_rank_helper { BOOST_STATIC_CONSTANT( int, rank = 0 ); };
+
+#define BOOST_PRIVATE_INT_EXACT_BUILDER(Type, Rank) \
+ template < > \
+ struct int_exact_rank_helper<std::numeric_limits< Type >::digits + 1> \
+ { BOOST_STATIC_CONSTANT( int, rank = Rank ); }
+#define BOOST_PRIVATE_UINT_EXACT_BUILDER(Type, Rank) \
+ template < > \
+ struct uint_exact_rank_helper<std::numeric_limits< Type >::digits> \
+ { BOOST_STATIC_CONSTANT( int, rank = Rank ); }
+
+#if BOOST_HAS_XINT && (BOOST_UXINT_MAX > ULONG_MAX)
+ BOOST_PRIVATE_INT_EXACT_BUILDER( xint_t, 1 );
+ BOOST_PRIVATE_UINT_EXACT_BUILDER( uxint_t, 1 );
+#endif
+#if ULONG_MAX > UINT_MAX
+ BOOST_PRIVATE_INT_EXACT_BUILDER( long, 2 );
+ BOOST_PRIVATE_UINT_EXACT_BUILDER( unsigned long, 2 );
+#endif
+#if UINT_MAX > USHRT_MAX
+ BOOST_PRIVATE_INT_EXACT_BUILDER( int, 3 );
+ BOOST_PRIVATE_UINT_EXACT_BUILDER( unsigned, 3 );
+#endif
+#if USHRT_MAX > UCHAR_MAX
+ BOOST_PRIVATE_INT_EXACT_BUILDER( short, 4 );
+ BOOST_PRIVATE_UINT_EXACT_BUILDER( unsigned short, 4 );
+#endif
+ BOOST_PRIVATE_INT_EXACT_BUILDER( signed char, 5 );
+ BOOST_PRIVATE_UINT_EXACT_BUILDER( unsigned char, 5 );
+
+#undef BOOST_PRIVATE_INT_EXACT_BUILDER
+#undef BOOST_PRIVATE_UINT_EXACT_BUILDER
+
+ // map an extreme value to a category
+ template < intmax_t MaxValue >
+ struct int_max_rank_helper
+ {
+#if BOOST_HAS_XINT
+ BOOST_STATIC_CONSTANT( int, extended_ = (MaxValue <=
+ boost::integer_traits< xint_t >::const_max) );
+#else
+ BOOST_STATIC_CONSTANT( int, extended_ = 1 );
+#endif
+ BOOST_STATIC_CONSTANT( int, rank = (MaxValue > 0) * (extended_ +
+ (MaxValue <= boost::integer_traits< long >::const_max) +
+ (MaxValue <= boost::integer_traits< int >::const_max) +
+ (MaxValue <= boost::integer_traits< short >::const_max) +
+ (MaxValue <= boost::integer_traits< signed char >::const_max)) );
+ };
+
+ template < intmax_t MinValue >
+ struct int_min_rank_helper
+ {
+#if BOOST_HAS_XINT
+ BOOST_STATIC_CONSTANT( int, extended_ = (MinValue >=
+ boost::integer_traits< xint_t >::const_min) );
+#else
+ BOOST_STATIC_CONSTANT( int, extended_ = 1 );
+#endif
+ BOOST_STATIC_CONSTANT( int, rank = (MinValue < 0) * (extended_ +
+ (MinValue >= boost::integer_traits< long >::const_min) +
+ (MinValue >= boost::integer_traits< int >::const_min) +
+ (MinValue >= boost::integer_traits< short >::const_min) +
+ (MinValue >= boost::integer_traits< signed char >::const_min)) );
+ };
+
+ template < uintmax_t Value >
+ struct uint_max_rank_helper
+ {
+#if BOOST_HAS_XINT
+ BOOST_STATIC_CONSTANT( int, extended_ = (Value <= boost::integer_traits<
+ uxint_t >::const_max) );
+#else
+ BOOST_STATIC_CONSTANT( int, extended_ = 1 );
+#endif
+ BOOST_STATIC_CONSTANT( int, rank = extended_ +
+ (Value <= boost::integer_traits< unsigned long >::const_max) +
+ (Value <= boost::integer_traits< unsigned int >::const_max) +
+ (Value <= boost::integer_traits< unsigned short >::const_max) +
+ (Value <= boost::integer_traits< unsigned char >::const_max) );
+ };
+
+ // convert rank to type, Boost.MPL-style
+ template < int Rank, typename Signedness, class Enable = void >
+ struct integral_rank_to_type
+ {
+ BOOST_STATIC_CONSTANT( bool, is_specialized = false );
+ // No "signed" nor "type" here
+ };
+
+ template < int Rank >
+ struct integral_rank_to_type< Rank, signed, typename
+ enable_if_c<(lowest_integral_rank <= Rank) && (Rank <=
+ highest_integral_rank)>::type >
+ {
+ BOOST_STATIC_CONSTANT( bool, is_specialized = true );
+ BOOST_STATIC_CONSTANT( bool, is_signed = true );
+ typedef typename int_least_helper< Rank, signed >::least type;
+ };
+
+ template < int Rank >
+ struct integral_rank_to_type< Rank, unsigned, typename
+ enable_if_c<(lowest_integral_rank <= Rank) && (Rank <=
+ highest_integral_rank)>::type >
+ {
+ BOOST_STATIC_CONSTANT( bool, is_specialized = true );
+ BOOST_STATIC_CONSTANT( bool, is_signed = false );
+ typedef typename int_least_helper< Rank, unsigned >::least type;
+ };
+
+} // namespace detail
+
+ // MPL-compatible integer-mapping class templates ------------------------//
+
+ // minimum number of bits
+ template < int Bits, typename Signedness >
+ struct sized_integral
+ {
+ BOOST_STATIC_CONSTANT( bool, is_specialized = false );
+ BOOST_STATIC_CONSTANT( int, bit_count = Bits );
+ };
+
+ template < int BitsIncludingSign >
+ struct sized_integral< BitsIncludingSign, signed >
+ : detail::integral_rank_to_type<
+ detail::int_rank_helper<BitsIncludingSign>::rank, signed >
+ {
+ BOOST_STATIC_CONSTANT( int, bit_count = BitsIncludingSign );
+ };
+
+ template < int Bits >
+ struct sized_integral< Bits, unsigned >
+ : detail::integral_rank_to_type<
+ detail::uint_rank_helper<Bits>::rank, unsigned >
+ {
+ BOOST_STATIC_CONSTANT( int, bit_count = Bits );
+ };
+
+ // exact number of bits
+ template < int Bits, typename Signedness >
+ struct exact_integral
+ {
+ BOOST_STATIC_CONSTANT( bool, is_specialized = false );
+ BOOST_STATIC_CONSTANT( int, bit_count = Bits );
+ };
+
+ template < int BitsIncludingSign >
+ struct exact_integral< BitsIncludingSign, signed >
+ : detail::integral_rank_to_type<
+ detail::int_exact_rank_helper<BitsIncludingSign>::rank, signed >
+ {
+ BOOST_STATIC_CONSTANT( int, bit_count = BitsIncludingSign );
+ };
+
+ template < int Bits >
+ struct exact_integral< Bits, unsigned >
+ : detail::integral_rank_to_type<
+ detail::uint_exact_rank_helper<Bits>::rank, unsigned >
+ {
+ BOOST_STATIC_CONSTANT( int, bit_count = Bits );
+ };
+
+ // maximum supported (positive) value, signed
+ template < intmax_t MaxValue >
+ struct maximum_signed_integral
+ : detail::integral_rank_to_type<
+ detail::int_max_rank_helper<MaxValue>::rank, signed >
+ {
+ BOOST_STATIC_CONSTANT( intmax_t, bound = MaxValue );
+ };
+
+ // minimum supported (negative) value
+ template < intmax_t MinValue >
+ struct minimum_signed_integral
+ : detail::integral_rank_to_type<
+ detail::int_min_rank_helper<MinValue>::rank, signed >
+ {
+ BOOST_STATIC_CONSTANT( intmax_t, bound = MinValue );
+ };
+
+ // maximum supported (nonnegative) value, unsigned
+ template < uintmax_t Value >
+ struct maximum_unsigned_integral
+ : detail::integral_rank_to_type<
+ detail::uint_max_rank_helper<Value>::rank, unsigned >
+ {
+ BOOST_STATIC_CONSTANT( uintmax_t, bound = Value );
+ };
 
   // integer templates specifying number of bits ---------------------------//
 
   // signed
- template< int Bits > // bits (including sign) required
+ template< int Bits > // minimum bits (including sign) required
   struct int_t
   {
- typedef typename int_least_helper
- <
- (Bits-1 <= std::numeric_limits<long>::digits) +
- (Bits-1 <= std::numeric_limits<int>::digits) +
- (Bits-1 <= std::numeric_limits<short>::digits) +
- (Bits-1 <= std::numeric_limits<signed char>::digits)
- >::least least;
- typedef typename int_fast_t<least>::fast fast;
+ typedef typename sized_integral<Bits, signed>::type least;
+ typedef typename int_fast_t<least>::fast fast;
+ };
+
+ template< int Bits > // exact bits (including sign) desired
+ struct int_exact_t
+ {
+ typedef typename exact_integral<Bits, signed>::type exact;
   };
 
   // unsigned
- template< int Bits > // bits required
+ template< int Bits > // minimum bits required
   struct uint_t
   {
- typedef typename int_least_helper
- <
- 5 +
- (Bits <= std::numeric_limits<unsigned long>::digits) +
- (Bits <= std::numeric_limits<unsigned int>::digits) +
- (Bits <= std::numeric_limits<unsigned short>::digits) +
- (Bits <= std::numeric_limits<unsigned char>::digits)
- >::least least;
- typedef typename int_fast_t<least>::fast fast;
+ typedef typename sized_integral<Bits, unsigned>::type least;
+ typedef typename int_fast_t<least>::fast fast;
       // int_fast_t<> works correctly for unsigned too, in spite of the name.
   };
 
+ template< int Bits > // exact bits desired
+ struct uint_exact_t
+ {
+ typedef typename exact_integral<Bits, unsigned>::type exact;
+ };
+
   // integer templates specifying extreme value ----------------------------//
 
   // signed
- template< long MaxValue > // maximum value to require support
+ template< intmax_t MaxValue > // maximum value to require support
   struct int_max_value_t
   {
- typedef typename int_least_helper
- <
- (MaxValue <= integer_traits<long>::const_max) +
- (MaxValue <= integer_traits<int>::const_max) +
- (MaxValue <= integer_traits<short>::const_max) +
- (MaxValue <= integer_traits<signed char>::const_max)
- >::least least;
- typedef typename int_fast_t<least>::fast fast;
+ typedef typename maximum_signed_integral<MaxValue>::type least;
+ typedef typename int_fast_t<least>::fast fast;
   };
 
- template< long MinValue > // minimum value to require support
+ template< intmax_t MinValue > // minimum value to require support
   struct int_min_value_t
   {
- typedef typename int_least_helper
- <
- (MinValue >= integer_traits<long>::const_min) +
- (MinValue >= integer_traits<int>::const_min) +
- (MinValue >= integer_traits<short>::const_min) +
- (MinValue >= integer_traits<signed char>::const_min)
- >::least least;
- typedef typename int_fast_t<least>::fast fast;
+ typedef typename minimum_signed_integral<MinValue>::type least;
+ typedef typename int_fast_t<least>::fast fast;
   };
 
   // unsigned
- template< unsigned long Value > // maximum value to require support
+ template< uintmax_t Value > // maximum value to require support
   struct uint_value_t
   {
- typedef typename int_least_helper
- <
- 5 +
- (Value <= integer_traits<unsigned long>::const_max) +
- (Value <= integer_traits<unsigned int>::const_max) +
- (Value <= integer_traits<unsigned short>::const_max) +
- (Value <= integer_traits<unsigned char>::const_max)
- >::least least;
- typedef typename int_fast_t<least>::fast fast;
+ typedef typename maximum_unsigned_integral<Value>::type least;
+ typedef typename int_fast_t<least>::fast fast;
   };
 
 

Modified: branches/proto/v4/boost/integer/integer_mask.hpp
==============================================================================
--- branches/proto/v4/boost/integer/integer_mask.hpp (original)
+++ branches/proto/v4/boost/integer/integer_mask.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,79 +12,190 @@
 
 #include <boost/integer_fwd.hpp> // self include
 
-#include <boost/config.hpp> // for BOOST_STATIC_CONSTANT
-#include <boost/integer.hpp> // for boost::uint_t
+#include <boost/config.hpp> // for BOOST_STATIC_CONSTANT
+#include <boost/cstdint.hpp> // for boost::uintmax_t
+#include <boost/integer.hpp> // for boost::sized_integral
+#include <boost/limits.hpp> // for std::numeric_limits
+#include <boost/mpl/and.hpp> // for boost::mpl::and_
+#include <boost/mpl/bitwise.hpp> // for boost::mpl::bitor_, shift_left
+#include <boost/mpl/bool.hpp> // for boost::mpl::true_
+#include <boost/mpl/comparison.hpp> // for boost::mpl::greater_equal, etc.
+#include <boost/mpl/empty_base.hpp> // for boost::mpl::empty_base
+#include <boost/mpl/if.hpp> // for boost::mpl::if_
+#include <boost/mpl/int.hpp> // for boost::mpl::int_
+#include <boost/mpl/integral_c.hpp> // for boost::integral_c
+#include <boost/mpl/next_prior.hpp> // for boost::mpl::next, prior
+#include <boost/utility/enable_if.hpp> // for boost::enable_if
 
-#include <climits> // for UCHAR_MAX, etc.
 #include <cstddef> // for std::size_t
 
-#include <boost/limits.hpp> // for std::numeric_limits
-
 
 namespace boost
 {
+namespace detail
+{
+
+// Helper templates --------------------------------------------------------//
+
+template < int Bits >
+struct hi_integer_mask_builder1
+{
+ typedef boost::mpl::int_<Bits> bit_count_type;
+
+ typedef typename boost::mpl::next<bit_count_type>::type
+ mask_length_type;
+ typedef boost::sized_integral<mask_length_type::value, unsigned>
+ mask_type;
+
+ typedef boost::mpl::integral_c<typename mask_type::type, 1> one_type;
+ typedef boost::mpl::shift_left<one_type, bit_count_type> result_type;
+};
+
+template < int Bits >
+struct hi_integer_mask_builder2
+{
+ typedef boost::mpl::int_<Bits> bit_count_type;
+
+ typedef boost::mpl::greater_equal< bit_count_type, boost::mpl::int_<0> >
+ lo_bound_type;
+ typedef boost::mpl::less< bit_count_type,
+ boost::mpl::int_<std::numeric_limits<boost::uintmax_t>::digits> >
+ hi_bound_type;
+ typedef boost::mpl::and_<lo_bound_type, hi_bound_type> count_valid_type;
+};
+
+template < int Bits, class Enable = void >
+struct hi_integer_mask_builder3
+{
+ BOOST_STATIC_CONSTANT( bool, is_specialized = false );
+};
+
+template < int Bits >
+struct hi_integer_mask_builder3< Bits, typename boost::enable_if<typename
+ hi_integer_mask_builder2<Bits>::count_valid_type>::type >
+ : hi_integer_mask_builder1<Bits>::result_type
+{
+ BOOST_STATIC_CONSTANT( bool, is_specialized = true );
+};
+
+template < int Bits >
+struct lo_integer_mask_builder1
+{
+ typedef boost::mpl::int_<Bits> bit_count_type;
+
+ typedef typename boost::mpl::prior<bit_count_type>::type
+ shift_length_type;
+ typedef boost::sized_integral<bit_count_type::value, unsigned>
+ mask_type;
+
+ typedef boost::mpl::integral_c<typename mask_type::type, 1> one_type;
+ typedef boost::mpl::shift_left<one_type, shift_length_type>
+ high_bit_type;
+ typedef typename boost::mpl::prior<high_bit_type>::type low_bits_type;
+ typedef boost::mpl::bitor_<high_bit_type, low_bits_type> result_type;
+};
+
+template < >
+struct lo_integer_mask_builder1< 0 >
+{
+ // Let's not deal with negative interim values....
+ typedef boost::mpl::integral_c<unsigned char, 0u> result_type;
+};
+
+template < int Bits >
+struct lo_integer_mask_builder2
+{
+ typedef boost::mpl::int_<Bits> bit_count_type;
+
+ typedef boost::mpl::greater_equal< bit_count_type, boost::mpl::int_<0> >
+ lo_bound_type;
+ typedef boost::mpl::less_equal< bit_count_type,
+ boost::mpl::int_<std::numeric_limits<boost::uintmax_t>::digits> >
+ hi_bound_type;
+ typedef boost::mpl::and_<lo_bound_type, hi_bound_type> count_valid_type;
+};
+
+template < >
+struct lo_integer_mask_builder2< 0 >
+{
+ typedef boost::mpl::true_ count_valid_type;
+};
+
+template < int Bits, class Enable = void >
+struct lo_integer_mask_builder3
+{
+ BOOST_STATIC_CONSTANT( bool, is_specialized = false );
+ // No MPL Integral Constant to inherit from
+};
+
+template < int Bits >
+struct lo_integer_mask_builder3< Bits, typename enable_if<typename
+ lo_integer_mask_builder2<Bits>::count_valid_type>::type >
+ : lo_integer_mask_builder1<Bits>::result_type
+{
+ BOOST_STATIC_CONSTANT( bool, is_specialized = true );
+};
+
+} // namespace detail
+
+
+// MPL-compatible integer mask class templates -----------------------------//
+
+// Displaced single-bit mask, 1 << Offset, 0 <= Offset < BitLengthOf(uintmax_t)
+template < int Offset >
+struct integer_hi_mask
+ : detail::hi_integer_mask_builder3<Offset>
+{
+ BOOST_STATIC_CONSTANT( int, bit_offset = Offset );
+};
+
+// Lowest bit-group mask, 2**Length - 1, 0 <= Length <= BitLengthOf(uintmax_t)
+template < int Length >
+struct integer_lo_mask
+ : detail::lo_integer_mask_builder3<Length>
+{
+ BOOST_STATIC_CONSTANT( int, bit_count = Length );
+};
 
 
 // Specified single-bit mask class declaration -----------------------------//
 // (Lowest bit starts counting at 0.)
 
 template < std::size_t Bit >
-struct high_bit_mask_t
+class high_bit_mask_t
 {
- typedef typename uint_t<(Bit + 1)>::least least;
- typedef typename uint_t<(Bit + 1)>::fast fast;
+ typedef integer_hi_mask<Bit> impl_type;
+
+public:
+ typedef typename impl_type::value_type least;
+ typedef typename int_fast_t<least>::fast fast;
 
- BOOST_STATIC_CONSTANT( least, high_bit = (least( 1u ) << Bit) );
- BOOST_STATIC_CONSTANT( fast, high_bit_fast = (fast( 1u ) << Bit) );
+ BOOST_STATIC_CONSTANT( least, high_bit = impl_type::value );
+ BOOST_STATIC_CONSTANT( fast, high_bit_fast = impl_type::value );
 
- BOOST_STATIC_CONSTANT( std::size_t, bit_position = Bit );
+ BOOST_STATIC_CONSTANT( std::size_t, bit_position = impl_type::bit_offset );
 
 }; // boost::high_bit_mask_t
 
 
 // Specified bit-block mask class declaration ------------------------------//
 // Makes masks for the lowest N bits
-// (Specializations are needed when N fills up a type.)
 
 template < std::size_t Bits >
-struct low_bits_mask_t
+class low_bits_mask_t
 {
- typedef typename uint_t<Bits>::least least;
- typedef typename uint_t<Bits>::fast fast;
+ typedef integer_lo_mask<Bits> impl_type;
 
- BOOST_STATIC_CONSTANT( least, sig_bits = (~( ~(least( 0u )) << Bits )) );
- BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) );
+public:
+ typedef typename impl_type::value_type least;
+ typedef typename int_fast_t<least>::fast fast;
 
- BOOST_STATIC_CONSTANT( std::size_t, bit_count = Bits );
-
-}; // boost::low_bits_mask_t
+ BOOST_STATIC_CONSTANT( least, sig_bits = impl_type::value );
+ BOOST_STATIC_CONSTANT( fast, sig_bits_fast = impl_type::value );
 
+ BOOST_STATIC_CONSTANT( std::size_t, bit_count = impl_type::bit_count );
 
-#define BOOST_LOW_BITS_MASK_SPECIALIZE( Type ) \
- template < > struct low_bits_mask_t< std::numeric_limits<Type>::digits > { \
- typedef std::numeric_limits<Type> limits_type; \
- typedef uint_t<limits_type::digits>::least least; \
- typedef uint_t<limits_type::digits>::fast fast; \
- BOOST_STATIC_CONSTANT( least, sig_bits = (~( least(0u) )) ); \
- BOOST_STATIC_CONSTANT( fast, sig_bits_fast = fast(sig_bits) ); \
- BOOST_STATIC_CONSTANT( std::size_t, bit_count = limits_type::digits ); \
- }
-
-BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned char );
-
-#if USHRT_MAX > UCHAR_MAX
-BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned short );
-#endif
-
-#if UINT_MAX > USHRT_MAX
-BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned int );
-#endif
-
-#if ULONG_MAX > UINT_MAX
-BOOST_LOW_BITS_MASK_SPECIALIZE( unsigned long );
-#endif
-
-#undef BOOST_LOW_BITS_MASK_SPECIALIZE
+}; // boost::low_bits_mask_t
 
 
 } // namespace boost

Modified: branches/proto/v4/boost/integer_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/integer_fwd.hpp (original)
+++ branches/proto/v4/boost/integer_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,12 @@
 #ifndef BOOST_INTEGER_FWD_HPP
 #define BOOST_INTEGER_FWD_HPP
 
-#include <climits> // for UCHAR_MAX, etc.
 #include <cstddef> // for std::size_t
 
-#include <boost/config.hpp> // for BOOST_NO_INTRINSIC_WCHAR_T
-#include <boost/limits.hpp> // for std::numeric_limits
+#include <boost/config.hpp> // for BOOST_NO_INTRINSIC_WCHAR_T, etc.
+#include <boost/cstdint.hpp> // for boost::uintmax_t, intmax_t
+
+#include <boost/detail/extended_integer.hpp> // for BOOST_HAS_XINT, etc.
 
 
 namespace boost
@@ -24,6 +25,13 @@
 
 // Only has typedefs or using statements, with #conditionals
 
+// ALERT: the forward declarations of items in <boost/integer.hpp> need items
+// from this header. That means that <boost/cstdint.hpp> cannot #include this
+// forwarding header, to avoid infinite recursion! One day, maybe
+// boost::uintmax_t and boost::intmax_t could be segregated into their own
+// header file (which can't #include this header), <boost/integer.hpp> will use
+// that header, and <boost/cstdint.hpp> could refer to <boost/integer.hpp>.
+
 
 // From <boost/integer_traits.hpp> -----------------------------------------//
 
@@ -65,61 +73,73 @@
 template < >
     class integer_traits< unsigned long >;
 
-#ifdef ULLONG_MAX
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) && BOOST_HAS_XINT
 template < >
- class integer_traits< ::boost::long_long_type>;
+ class integer_traits< ::boost::detail::xint_t >;
 
 template < >
- class integer_traits< ::boost::ulong_long_type >;
+ class integer_traits< ::boost::detail::uxint_t >;
 #endif
 
 
 // From <boost/integer.hpp> ------------------------------------------------//
 
+template < typename BaseInt >
+ struct fast_integral;
+
 template < typename LeastInt >
     struct int_fast_t;
 
+template < int Bits, typename Signedness >
+ struct sized_integral;
+
+template < int Bits, typename Signedness >
+ struct exact_integral;
+
+template < intmax_t MaxValue >
+ struct maximum_signed_integral;
+
+template < intmax_t MinValue >
+ struct minimum_signed_integral;
+
+template < uintmax_t Value >
+ struct maximum_unsigned_integral;
+
 template< int Bits >
     struct int_t;
 
 template< int Bits >
+ struct int_exact_t;
+
+template< int Bits >
     struct uint_t;
 
-template< long MaxValue >
+template< int Bits >
+ struct uint_exact_t;
+
+template< intmax_t MaxValue >
     struct int_max_value_t;
 
-template< long MinValue >
+template< intmax_t MinValue >
     struct int_min_value_t;
 
-template< unsigned long Value >
+template< uintmax_t Value >
     struct uint_value_t;
 
 
 // From <boost/integer/integer_mask.hpp> -----------------------------------//
 
-template < std::size_t Bit >
- struct high_bit_mask_t;
+template < int Offset >
+ struct integer_hi_mask;
 
-template < std::size_t Bits >
- struct low_bits_mask_t;
-
-template < >
- struct low_bits_mask_t< ::std::numeric_limits<unsigned char>::digits >;
-
-#if USHRT_MAX > UCHAR_MAX
-template < >
- struct low_bits_mask_t< ::std::numeric_limits<unsigned short>::digits >;
-#endif
+template < int Length >
+ struct integer_lo_mask;
 
-#if UINT_MAX > USHRT_MAX
-template < >
- struct low_bits_mask_t< ::std::numeric_limits<unsigned int>::digits >;
-#endif
+template < std::size_t Bit >
+ class high_bit_mask_t;
 
-#if ULONG_MAX > UINT_MAX
-template < >
- struct low_bits_mask_t< ::std::numeric_limits<unsigned long>::digits >;
-#endif
+template < std::size_t Bits >
+ class low_bits_mask_t;
 
 
 // From <boost/integer/static_log2.hpp> ------------------------------------//

Modified: branches/proto/v4/boost/integer_traits.hpp
==============================================================================
--- branches/proto/v4/boost/integer_traits.hpp (original)
+++ branches/proto/v4/boost/integer_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,6 +27,8 @@
 #include <wchar.h>
 #endif
 
+#include <boost/detail/extended_integer.hpp> // for BOOST_HAS_XINT, etc.
+
 
 namespace boost {
 template<class T>
@@ -155,77 +157,18 @@
     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>
-{ };
-
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T) && BOOST_HAS_XINT
 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>
+class integer_traits< detail::xint_t >
+ : public std::numeric_limits< detail::xint_t >,
+ public detail::integer_traits_base< detail::xint_t, BOOST_XINT_MIN, BOOST_XINT_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>
+class integer_traits< detail::uxint_t >
+ : public std::numeric_limits< detail::uxint_t >,
+ public detail::integer_traits_base< detail::uxint_t, 0u, BOOST_UXINT_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

Modified: branches/proto/v4/boost/interprocess/allocators/adaptive_pool.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/allocators/adaptive_pool.hpp (original)
+++ branches/proto/v4/boost/interprocess/allocators/adaptive_pool.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -69,7 +69,7 @@
    struct node_pool
    {
       typedef detail::shared_adaptive_node_pool
- < SegmentManager, sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> type;
+ < SegmentManager, sizeof_value<T>::value, NodesPerBlock, MaxFreeBlocks, OverheadPercent> type;
 
       static type *get(void *p)
       { return static_cast<type*>(p); }

Modified: branches/proto/v4/boost/interprocess/allocators/cached_adaptive_pool.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/allocators/cached_adaptive_pool.hpp (original)
+++ branches/proto/v4/boost/interprocess/allocators/cached_adaptive_pool.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,6 +21,7 @@
 #include <boost/interprocess/interprocess_fwd.hpp>
 #include <boost/interprocess/allocators/detail/adaptive_node_pool.hpp>
 #include <boost/interprocess/allocators/detail/allocator_common.hpp>
+#include <boost/interprocess/detail/utilities.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
 #include <boost/interprocess/detail/version_type.hpp>
 #include <boost/interprocess/allocators/detail/node_tools.hpp>
@@ -47,7 +48,7 @@
          < T
          , detail::shared_adaptive_node_pool
             < SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
             , NodesPerBlock
             , MaxFreeBlocks
             , OverheadPercent
@@ -59,7 +60,7 @@
          < T
          , detail::shared_adaptive_node_pool
             < SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
             , NodesPerBlock
             , MaxFreeBlocks
             , OverheadPercent
@@ -119,7 +120,7 @@
          < T
          , detail::shared_adaptive_node_pool
             < SegmentManager
- , sizeof(typename detail::if_c<detail::is_same<T, void>::value, int, T>::type)
+ , sizeof_value<T>::value
             , NodesPerBlock
             , MaxFreeBlocks
             , OverheadPercent
@@ -134,7 +135,7 @@
          < T
          , detail::shared_adaptive_node_pool
             < SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
             , NodesPerBlock
             , MaxFreeBlocks
             , OverheadPercent

Modified: branches/proto/v4/boost/interprocess/allocators/cached_node_allocator.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/allocators/cached_node_allocator.hpp (original)
+++ branches/proto/v4/boost/interprocess/allocators/cached_node_allocator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -22,6 +22,7 @@
 #include <boost/interprocess/allocators/detail/node_pool.hpp>
 #include <boost/interprocess/allocators/detail/allocator_common.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
+#include <boost/interprocess/detail/utilities.hpp>
 #include <boost/interprocess/detail/version_type.hpp>
 #include <boost/interprocess/allocators/detail/node_tools.hpp>
 #include <cstddef>
@@ -46,7 +47,7 @@
          < T
          , detail::shared_node_pool
             < SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
             , NodesPerBlock
>
          , 1>
@@ -56,7 +57,7 @@
          < T
          , detail::shared_node_pool
             < SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
             , NodesPerBlock
>
          , 1> base_t;
@@ -95,7 +96,7 @@
          < T
          , detail::shared_node_pool
             < SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
             , NodesPerBlock
>
          , 2>
@@ -108,7 +109,7 @@
          < T
          , detail::shared_node_pool
             < SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
             , NodesPerBlock
>
          , 2> base_t;

Modified: branches/proto/v4/boost/interprocess/allocators/detail/node_pool.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/allocators/detail/node_pool.hpp (original)
+++ branches/proto/v4/boost/interprocess/allocators/detail/node_pool.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -331,7 +331,7 @@
 
    //!Deprecated, use purge_blocks
    void purge_chunks()
- { this->purge_blocks()(); }
+ { this->purge_blocks(); }
 
    private:
    //!Returns a reference to the block hook placed in the end of the block

Modified: branches/proto/v4/boost/interprocess/allocators/node_allocator.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/allocators/node_allocator.hpp (original)
+++ branches/proto/v4/boost/interprocess/allocators/node_allocator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -66,7 +66,7 @@
    struct node_pool
    {
       typedef detail::shared_node_pool
- < SegmentManager, sizeof(T), NodesPerBlock> type;
+ < SegmentManager, sizeof_value<T>::value, NodesPerBlock> type;
 
       static type *get(void *p)
       { return static_cast<type*>(p); }

Modified: branches/proto/v4/boost/interprocess/allocators/private_adaptive_pool.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/allocators/private_adaptive_pool.hpp (original)
+++ branches/proto/v4/boost/interprocess/allocators/private_adaptive_pool.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -67,7 +67,7 @@
       , MaxFreeBlocks, OverheadPercent> self_t;
    typedef detail::private_adaptive_node_pool
       <SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
       , NodesPerBlock
       , MaxFreeBlocks
       , OverheadPercent
@@ -113,7 +113,7 @@
    {
       typedef detail::private_adaptive_node_pool
       <SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
       , NodesPerBlock
       , MaxFreeBlocks
       , OverheadPercent

Modified: branches/proto/v4/boost/interprocess/allocators/private_node_allocator.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/allocators/private_node_allocator.hpp (original)
+++ branches/proto/v4/boost/interprocess/allocators/private_node_allocator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -63,7 +63,7 @@
       < Version, T, SegmentManager, NodesPerBlock> self_t;
    typedef detail::private_node_pool
       <SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
       , NodesPerBlock
> node_pool_t;
 
@@ -106,7 +106,7 @@
    {
       typedef detail::private_node_pool
       <SegmentManager
- , sizeof(T)
+ , sizeof_value<T>::value
       , NodesPerBlock
> type;
 

Modified: branches/proto/v4/boost/interprocess/anonymous_shared_memory.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/anonymous_shared_memory.hpp (original)
+++ branches/proto/v4/boost/interprocess/anonymous_shared_memory.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -42,7 +42,13 @@
    class raw_mapped_region_creator
    {
       public:
- static move_return<mapped_region> create_posix_mapped_region(void *address, offset_t offset, std::size_t size)
+ static
+ #ifdef BOOST_INTERPROCESS_RVALUE_REFERENCE
+ mapped_region
+ #else
+ move_return<mapped_region>
+ #endif
+ create_posix_mapped_region(void *address, offset_t offset, std::size_t size)
       {
          mapped_region region;
          region.m_base = address;
@@ -61,7 +67,13 @@
 //!Otherwise the operating system will choose the mapping address.
 //!The function returns a mapped_region holding that segment or throws
 //!interprocess_exception if the function fails.
-static detail::move_return<mapped_region> anonymous_shared_memory(std::size_t size, void *address = 0)
+static
+#ifdef BOOST_INTERPROCESS_RVALUE_REFERENCE
+mapped_region
+#else
+detail::move_return<mapped_region>
+#endif
+anonymous_shared_memory(std::size_t size, void *address = 0)
 #if (!defined(BOOST_WINDOWS)) || defined(BOOST_DISABLE_WIN32)
 {
    int flags;
@@ -104,7 +116,7 @@
 {
    windows_shared_memory anonymous_mapping(create_only, 0, read_write, size);
    mapped_region region(anonymous_mapping, read_write, 0, size, address);
- return detail::move_return<mapped_region>(region);
+ return region;
 }
 
 #endif

Modified: branches/proto/v4/boost/interprocess/containers/deque.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/deque.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/deque.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -580,7 +580,7 @@
    { this->swap(mx.get()); }
    #else
    deque(deque &&x)
- : Base(x))
+ : Base(detail::move_impl(x))
    { this->swap(x); }
    #endif
 
@@ -679,11 +679,11 @@
    void push_back(value_type &&mt)
    {
       if (this->members_.m_finish.m_cur != this->members_.m_finish.m_last - 1) {
- new((void*)detail::get_pointer(this->members_.m_finish.m_cur))value_type(move(mt));
+ new((void*)detail::get_pointer(this->members_.m_finish.m_cur))value_type(detail::move_impl(mt));
          ++this->members_.m_finish.m_cur;
       }
       else
- this->priv_push_back_aux(move(mt));
+ this->priv_push_back_aux(detail::move_impl(mt));
    }
    #endif
 
@@ -711,11 +711,11 @@
    void push_front(value_type &&mt)
    {
       if (this->members_.m_start.m_cur != this->members_.m_start.m_first) {
- new((void*)(detail::get_pointer(this->members_.m_start.m_cur)- 1))value_type(move(mt));
+ new((void*)(detail::get_pointer(this->members_.m_start.m_cur)- 1))value_type(detail::move_impl(mt));
          --this->members_.m_start.m_cur;
       }
       else
- this->priv_push_front_aux(move(mt));
+ this->priv_push_front_aux(detail::move_impl(mt));
    }
    #endif
 
@@ -777,17 +777,17 @@
    iterator insert(iterator position, value_type &&mx)
    {
       if (position.m_cur == this->members_.m_start.m_cur) {
- this->push_front(move(mx));
+ this->push_front(detail::move_impl(mx));
          return this->members_.m_start;
       }
       else if (position.m_cur == this->members_.m_finish.m_cur) {
- this->push_back(move(mx));
+ this->push_back(detail::move_impl(mx));
          iterator tmp = this->members_.m_finish;
          --tmp;
          return tmp;
       }
       else {
- return this->priv_insert_aux(position, move(mx));
+ return this->priv_insert_aux(position, detail::move_impl(mx));
       }
    }
    #endif
@@ -824,13 +824,13 @@
          this->priv_reserve_elements_at_back(new_size);
 
          while(n--){
- //T default_constructed = move(T());
+ //T default_constructed = detail::move_impl(T());
             T default_constructed;
 /* if(boost::is_scalar<T>::value){
                //Value initialization
                new(&default_constructed)T();
             }*/
- this->push_back(move(default_constructed));
+ this->push_back(detail::move_impl(default_constructed));
          }
       }
    }
@@ -1251,7 +1251,7 @@
       this->priv_reserve_map_at_back();
       *(this->members_.m_finish.m_node + 1) = this->priv_allocate_node();
       BOOST_TRY {
- new((void*)detail::get_pointer(this->members_.m_finish.m_cur))value_type(move(mt));
+ new((void*)detail::get_pointer(this->members_.m_finish.m_cur))value_type(detail::move_impl(mt));
          this->members_.m_finish.priv_set_node(this->members_.m_finish.m_node + 1);
          this->members_.m_finish.m_cur = this->members_.m_finish.m_first;
       }
@@ -1306,7 +1306,7 @@
       BOOST_TRY {
          this->members_.m_start.priv_set_node(this->members_.m_start.m_node - 1);
          this->members_.m_start.m_cur = this->members_.m_start.m_last - 1;
- new((void*)detail::get_pointer(this->members_.m_start.m_cur))value_type(move(mt));
+ new((void*)detail::get_pointer(this->members_.m_start.m_cur))value_type(detail::move_impl(mt));
       }
       BOOST_CATCH(...){
          ++this->members_.m_start;

Modified: branches/proto/v4/boost/interprocess/containers/detail/flat_tree.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/detail/flat_tree.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/detail/flat_tree.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -135,11 +135,11 @@
 
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    flat_tree(const detail::moved_object<flat_tree> &x)
- : m_data(move(x.get().m_data))
+ : m_data(detail::move_impl(x.get().m_data))
    { }
    #else
    flat_tree(flat_tree &&x)
- : m_data(move(x.m_data))
+ : m_data(detail::move_impl(x.m_data))
    { }
    #endif
 
@@ -151,10 +151,10 @@
 
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    flat_tree& operator=(const detail::moved_object<flat_tree>& mx)
- { m_data = move(mx.get().m_data); return *this; }
+ { m_data = detail::move_impl(mx.get().m_data); return *this; }
    #else
    flat_tree& operator=(flat_tree &&mx)
- { m_data = move(mx.m_data); return *this; }
+ { m_data = detail::move_impl(mx.m_data); return *this; }
    #endif
 
    public:
@@ -250,7 +250,7 @@
       insert_commit_data data;
       std::pair<iterator,bool> ret = priv_insert_unique_prepare(mval, data);
       if(ret.second){
- ret.first = priv_insert_commit(data, move(mval));
+ ret.first = priv_insert_commit(data, detail::move_impl(mval));
       }
       return ret;
    }
@@ -275,7 +275,7 @@
    iterator insert_equal(value_type && mval)
    {
       iterator i = this->upper_bound(KeyOfValue()(mval));
- i = this->m_data.m_vect.insert(i, move(mval));
+ i = this->m_data.m_vect.insert(i, detail::move_impl(mval));
       return i;
    }
    #endif
@@ -306,7 +306,7 @@
       insert_commit_data data;
       std::pair<iterator,bool> ret = priv_insert_unique_prepare(pos, mval, data);
       if(ret.second){
- ret.first = priv_insert_commit(data, move(mval));
+ ret.first = priv_insert_commit(data, detail::move_impl(mval));
       }
       return ret.first;
    }
@@ -331,7 +331,7 @@
    {
       insert_commit_data data;
       priv_insert_equal_prepare(pos, mval, data);
- return priv_insert_commit(data, move(mval));
+ return priv_insert_commit(data, detail::move_impl(mval));
    }
    #endif
 
@@ -547,7 +547,7 @@
    template<class Convertible>
    iterator priv_insert_commit
       (insert_commit_data &commit_data, Convertible &&convertible)
- { return this->m_data.m_vect.insert(commit_data.position, forward<Convertible>(convertible)); }
+ { return this->m_data.m_vect.insert(commit_data.position, detail::forward_impl<Convertible>(convertible)); }
    #endif
 
    template <class RanIt>

Modified: branches/proto/v4/boost/interprocess/containers/detail/node_alloc_holder.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/detail/node_alloc_holder.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/detail/node_alloc_holder.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -88,11 +88,11 @@
 
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    node_alloc_holder(const detail::moved_object<node_alloc_holder> &other)
- : members_(move(other.get().node_alloc()))
+ : members_(detail::move_impl(other.get().node_alloc()))
    { this->swap(other.get()); }
    #else
    node_alloc_holder(node_alloc_holder &&other)
- : members_(move(other.node_alloc()))
+ : members_(detail::move_impl(other.node_alloc()))
    { this->swap(other); }
    #endif
 
@@ -149,7 +149,7 @@
    #else
    template<class Convertible>
    static void construct(const NodePtr &ptr, Convertible &&value)
- { new((void*)detail::get_pointer(ptr)) Node(forward<Convertible>(value)); }
+ { new((void*)detail::get_pointer(ptr)) Node(detail::forward_impl<Convertible>(value)); }
    #endif
 
    static void construct(const NodePtr &ptr)
@@ -169,9 +169,9 @@
       new(static_cast<hook_type*>(nodeptr))hook_type();
       //Now construct pair members_holder
       value_type *valueptr = &nodeptr->m_data;
- new((void*)&valueptr->first) first_type(move(value.get().first));
+ new((void*)&valueptr->first) first_type(detail::move_impl(value.get().first));
       BOOST_TRY{
- new((void*)&valueptr->second) second_type(move(value.get().second));
+ new((void*)&valueptr->second) second_type(detail::move_impl(value.get().second));
       }
       BOOST_CATCH(...){
          valueptr->first.~first_type();
@@ -194,9 +194,9 @@
       new(static_cast<hook_type*>(nodeptr))hook_type();
       //Now construct pair members_holder
       value_type *valueptr = &nodeptr->m_data;
- new((void*)&valueptr->first) first_type(move(value.first));
+ new((void*)&valueptr->first) first_type(detail::move_impl(value.first));
       BOOST_TRY{
- new((void*)&valueptr->second) second_type(move(value.second));
+ new((void*)&valueptr->second) second_type(detail::move_impl(value.second));
       }
       BOOST_CATCH(...){
          valueptr->first.~first_type();
@@ -226,7 +226,7 @@
    {
       NodePtr p = this->allocate_one();
       Deallocator node_deallocator(p, this->node_alloc());
- self_t::construct(p, forward<Convertible>(x));
+ self_t::construct(p, detail::forward_impl<Convertible>(x));
       node_deallocator.release();
       return (p);
    }

Modified: branches/proto/v4/boost/interprocess/containers/detail/tree.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/detail/tree.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/detail/tree.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -109,7 +109,7 @@
    #else
    template<class Convertible>
    rbtree_node(Convertible &&conv)
- : m_data(forward<Convertible>(conv)){}
+ : m_data(detail::forward_impl<Convertible>(conv)){}
    #endif
 
    rbtree_node &operator=(const rbtree_node &other)
@@ -130,7 +130,7 @@
    { m_data = v; }
 
    public:
- #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
+ #if !defined(BOOST_INTERPROCESS_RVALUE_REFERENCE)
 
    template<class Convertible>
    static void construct(node_type *ptr, const Convertible &value)
@@ -149,11 +149,11 @@
       new((void*)ptr) hack_node_t(value);
    }
 
- #else
+ #elif !defined(BOOST_INTERPROCESS_RVALUE_PAIR)
 
    template<class Convertible>
    static void construct(node_type *ptr, Convertible &&value)
- { new(ptr) node_type(forward<Convertible>(value)); }
+ { new(ptr) node_type(detail::forward_impl<Convertible>(value)); }
 
    template<class Convertible1, class Convertible2>
    static void construct(node_type *ptr,
@@ -167,19 +167,18 @@
 
       new((void*)ptr) hack_node_t(value);
    }
-
    #endif
 };
 
 }//namespace detail {
-
+#if !defined(BOOST_INTERPROCESS_RVALUE_REFERENCE) || !defined(BOOST_INTERPROCESS_RVALUE_PAIR)
 template<class T, class VoidPointer>
 struct has_own_construct_from_it
    < boost::interprocess::detail::rbtree_node<T, VoidPointer> >
 {
    static const bool value = true;
 };
-
+#endif
 namespace detail {
 
 template<class A, class ValueCompare>
@@ -578,7 +577,7 @@
    iterator insert_unique_commit
       (MovableConvertible && mv, insert_commit_data &data)
    {
- NodePtr tmp = AllocHolder::create_node(forward<MovableConvertible>(mv));
+ NodePtr tmp = AllocHolder::create_node(detail::forward_impl<MovableConvertible>(mv));
       iiterator it(this->icont().insert_unique_commit(*tmp, data));
       return iterator(it);
    }
@@ -618,7 +617,7 @@
       if(!ret.second)
          return ret;
       return std::pair<iterator,bool>
- (this->insert_unique_commit(forward<MovableConvertible>(mv), data), true);
+ (this->insert_unique_commit(detail::forward_impl<MovableConvertible>(mv), data), true);
    }
    #endif
 
@@ -654,7 +653,7 @@
          this->insert_unique_check(hint, KeyOfValue()(mv), data);
       if(!ret.second)
          return ret.first;
- return this->insert_unique_commit(forward<MovableConvertible>(mv), data);
+ return this->insert_unique_commit(detail::forward_impl<MovableConvertible>(mv), data);
    }
    #endif
 
@@ -691,7 +690,7 @@
    template<class MovableConvertible>
    iterator insert_equal(MovableConvertible &&mv)
    {
- NodePtr p(AllocHolder::create_node(forward<MovableConvertible>(mv)));
+ NodePtr p(AllocHolder::create_node(detail::forward_impl<MovableConvertible>(mv)));
       return iterator(this->icont().insert_equal(this->icont().end(), *p));
    }
    #endif
@@ -713,7 +712,7 @@
    template<class MovableConvertible>
    iterator insert_equal(const_iterator hint, MovableConvertible &&mv)
    {
- NodePtr p(AllocHolder::create_node(move(mv)));
+ NodePtr p(AllocHolder::create_node(detail::move_impl(mv)));
       return iterator(this->icont().insert_equal(hint.get(), *p));
    }
    #endif

Modified: branches/proto/v4/boost/interprocess/containers/flat_map.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/flat_map.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/flat_map.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -70,6 +70,14 @@
 {
    /// @cond
    private:
+ //This is the tree that we should store if pair was movable
+ typedef detail::flat_tree<Key,
+ std::pair<Key, T>,
+ detail::select1st< std::pair<Key, T> >,
+ Pred,
+ Alloc> tree_t;
+
+ #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    //This is the real tree stored here. It's based on a movable pair
    typedef detail::flat_tree<Key,
                            detail::pair<Key, T>,
@@ -77,15 +85,10 @@
                            Pred,
                            typename Alloc::template
                               rebind<detail::pair<Key, T> >::other> impl_tree_t;
+ #else
+ typedef tree_t impl_tree_t;
+ #endif
 
- //This is the tree that we should store if pair was movable
- typedef detail::flat_tree<Key,
- std::pair<Key, T>,
- detail::select1st< std::pair<Key, T> >,
- Pred,
- Alloc> tree_t;
-
-// tree_t m_flat_tree; // flat tree representing flat_map
    impl_tree_t m_flat_tree; // flat tree representing flat_map
 
    typedef typename impl_tree_t::value_type impl_value_type;
@@ -101,19 +104,23 @@
    typedef typename impl_tree_t::allocator_type impl_allocator_type;
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    typedef detail::moved_object<impl_value_type> impl_moved_value_type;
- #else
- typedef impl_value_type&& impl_moved_value_type;
    #endif
 
+ #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    template<class D, class S>
    static D &force(const S &s)
- { return *const_cast<D*>((reinterpret_cast<const D*>(&s))); }
-
- #ifdef BOOST_INTERPROCESS_RVALUE_REFERENCE
- template<class D, class S>
- static D &&force(S &&s)
- { return reinterpret_cast<D&&>(s); }
+ { return *((D*)(void*)(const void*)(&s)); }
+ #else
+ //For rvalue-aware compilers, just forward
+ template<class Type>
+ static const Type &force(const Type &t)
+ { return t; }
+
+ template<class Type>
+ static Type &force(Type &t)
+ { return t; }
    #endif
+
    /// @endcond
 
    public:
@@ -168,11 +175,11 @@
    //! <b>Postcondition</b>: x is emptied.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    flat_map(const detail::moved_object<flat_map<Key,T,Pred,Alloc> >& x)
- : m_flat_tree(move(x.get().m_flat_tree)) {}
+ : m_flat_tree(detail::move_impl(x.get().m_flat_tree)) {}
 
    #else
    flat_map(flat_map<Key,T,Pred,Alloc> && x)
- : m_flat_tree(move(x.m_flat_tree)) {}
+ : m_flat_tree(detail::move_impl(x.m_flat_tree)) {}
    #endif
 
    //! <b>Effects</b>: Makes *this a copy of x.
@@ -189,10 +196,10 @@
    //! <b>Postcondition</b>: x is emptied.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    flat_map<Key,T,Pred,Alloc>& operator=(const detail::moved_object<flat_map<Key, T, Pred, Alloc> >& mx)
- { m_flat_tree = move(mx.get().m_flat_tree); return *this; }
+ { m_flat_tree = detail::move_impl(mx.get().m_flat_tree); return *this; }
    #else
    flat_map<Key,T,Pred,Alloc>& operator=(flat_map<Key, T, Pred, Alloc> && mx)
- { m_flat_tree = move(mx.m_flat_tree); return *this; }
+ { m_flat_tree = detail::move_impl(mx.m_flat_tree); return *this; }
    #endif
 
    //! <b>Effects</b>: Returns the comparison object out
@@ -315,7 +322,7 @@
       { return m_flat_tree.max_size(); }
 
    //! Effects: If there is no key equivalent to x in the flat_map, inserts
- //! value_type(move(x), T()) into the flat_map (the key is move-constructed)
+ //! value_type(detail::move_impl(x), T()) into the flat_map (the key is move-constructed)
    //!
    //! Returns: A reference to the mapped_type corresponding to x in *this.
    //!
@@ -342,7 +349,7 @@
       iterator i = lower_bound(k);
       // i->first is greater than or equivalent to k.
       if (i == end() || key_comp()(k, (*i).first))
- i = insert(i, value_type(k, move(T())));
+ i = insert(i, value_type(k, detail::move_impl(T())));
       return (*i).second;
    }
    #else
@@ -358,7 +365,7 @@
       iterator i = lower_bound(k);
       // i->first is greater than or equivalent to k.
       if (i == end() || key_comp()(k, (*i).first))
- i = insert(i, value_type(forward<key_type>(k), move(T())));
+ i = insert(i, value_type(detail::forward_impl<key_type>(k), detail::move_impl(T())));
       return (*i).second;
    }
    #endif
@@ -418,8 +425,7 @@
          m_flat_tree.insert_unique(force<impl_moved_value_type>(x))); }
    #else
    std::pair<iterator,bool> insert(value_type &&x)
- { return force<std::pair<iterator,bool> >(
- m_flat_tree.insert_unique(force<impl_moved_value_type>(move(x)))); }
+ { return m_flat_tree.insert_unique(detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Inserts a copy of x in the container if and only if there is
@@ -452,8 +458,7 @@
          m_flat_tree.insert_unique(force<impl_iterator>(position), force<impl_moved_value_type>(x))); }
    #else
    iterator insert(iterator position, value_type &&x)
- { return force<iterator>(
- m_flat_tree.insert_unique(force<impl_iterator>(position), force<impl_moved_value_type>(move(x)))); }
+ { return m_flat_tree.insert_unique(position, detail::move_impl(x)); }
    #endif
 
    //! <b>Requires</b>: i, j are not iterators into *this.
@@ -715,6 +720,12 @@
 {
    /// @cond
    private:
+ typedef detail::flat_tree<Key,
+ std::pair<Key, T>,
+ detail::select1st< std::pair<Key, T> >,
+ Pred,
+ Alloc> tree_t;
+ #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    //This is the real tree stored here. It's based on a movable pair
    typedef detail::flat_tree<Key,
                            detail::pair<Key, T>,
@@ -722,13 +733,10 @@
                            Pred,
                            typename Alloc::template
                               rebind<detail::pair<Key, T> >::other> impl_tree_t;
+ #else
+ typedef tree_t impl_tree_t;
+ #endif
 
- typedef detail::flat_tree<Key,
- std::pair<Key, T>,
- detail::select1st< std::pair<Key, T> >,
- Pred,
- Alloc> tree_t;
-// tree_t m_flat_tree; // flat tree representing flat_multimap
    impl_tree_t m_flat_tree; // flat tree representing flat_map
 
    typedef typename impl_tree_t::value_type impl_value_type;
@@ -744,18 +752,21 @@
    typedef typename impl_tree_t::allocator_type impl_allocator_type;
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    typedef detail::moved_object<impl_value_type> impl_moved_value_type;
- #else
- typedef impl_value_type&& impl_moved_value_type;
    #endif
 
+ #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    template<class D, class S>
    static D &force(const S &s)
    { return *const_cast<D*>((reinterpret_cast<const D*>(&s))); }
-
- #ifdef BOOST_INTERPROCESS_RVALUE_REFERENCE
- template<class D, class S>
- static D &&force(S &&s)
- { return reinterpret_cast<D&&>(s); }
+ #else
+ //For rvalue-aware compilers, just forward
+ template<class Type>
+ static const Type &force(const Type &t)
+ { return t; }
+
+ template<class Type>
+ static Type &force(Type &t)
+ { return t; }
    #endif
    /// @endcond
 
@@ -812,10 +823,10 @@
    //! <b>Postcondition</b>: x is emptied.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    flat_multimap(const detail::moved_object<flat_multimap<Key,T,Pred,Alloc> >& x)
- : m_flat_tree(move(x.get().m_flat_tree)) { }
+ : m_flat_tree(detail::move_impl(x.get().m_flat_tree)) { }
    #else
    flat_multimap(flat_multimap<Key,T,Pred,Alloc> && x)
- : m_flat_tree(move(x.m_flat_tree)) { }
+ : m_flat_tree(detail::move_impl(x.m_flat_tree)) { }
    #endif
 
    //! <b>Effects</b>: Makes *this a copy of x.
@@ -831,11 +842,11 @@
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    flat_multimap<Key,T,Pred,Alloc>&
    operator=(const detail::moved_object<flat_multimap<Key,T,Pred,Alloc> >& mx)
- { m_flat_tree = move(mx.get().m_flat_tree); return *this; }
+ { m_flat_tree = detail::move_impl(mx.get().m_flat_tree); return *this; }
    #else
    flat_multimap<Key,T,Pred,Alloc>&
    operator=(flat_multimap<Key,T,Pred,Alloc> && mx)
- { m_flat_tree = move(mx.m_flat_tree); return *this; }
+ { m_flat_tree = detail::move_impl(mx.m_flat_tree); return *this; }
    #endif
 
    //! <b>Effects</b>: Returns the comparison object out
@@ -1002,7 +1013,7 @@
       { return force<iterator>(m_flat_tree.insert_equal(force<impl_moved_value_type>(x))); }
    #else
    iterator insert(value_type &&x)
- { return force<iterator>(m_flat_tree.insert_equal(force<impl_moved_value_type>(move(x)))); }
+ { return m_flat_tree.insert_equal(detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Inserts a copy of x in the container.
@@ -1035,7 +1046,7 @@
       { return force<iterator>(m_flat_tree.insert_equal(force<impl_iterator>(position), force<impl_moved_value_type>(x))); }
    #else
    iterator insert(iterator position, value_type &&x)
- { return force<iterator>(m_flat_tree.insert_equal(force<impl_iterator>(position), force<impl_moved_value_type>(move(x)))); }
+ { return m_flat_tree.insert_equal(force<impl_iterator>(position), detail::move_impl(x)); }
    #endif
 
    //! <b>Requires</b>: i, j are not iterators into *this.

Modified: branches/proto/v4/boost/interprocess/containers/flat_set.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/flat_set.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/flat_set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -117,10 +117,10 @@
    //! <b>Postcondition</b>: x is emptied.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    flat_set(const detail::moved_object<flat_set<T,Pred,Alloc> >& mx)
- : m_flat_tree(move(mx.get().m_flat_tree)) {}
+ : m_flat_tree(detail::move_impl(mx.get().m_flat_tree)) {}
    #else
    flat_set(flat_set<T,Pred,Alloc> && mx)
- : m_flat_tree(move(mx.m_flat_tree)) {}
+ : m_flat_tree(detail::move_impl(mx.m_flat_tree)) {}
    #endif
 
    //! <b>Effects</b>: Makes *this a copy of x.
@@ -134,11 +134,11 @@
    //! <b>Complexity</b>: Linear in x.size().
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    flat_set<T,Pred,Alloc>& operator=(const detail::moved_object<flat_set<T, Pred, Alloc> > &mx)
- { m_flat_tree = move(mx.get().m_flat_tree); return *this; }
+ { m_flat_tree = detail::move_impl(mx.get().m_flat_tree); return *this; }
 
    #else
    flat_set<T,Pred,Alloc>& operator=(flat_set<T, Pred, Alloc> &&mx)
- { m_flat_tree = move(mx.m_flat_tree); return *this; }
+ { m_flat_tree = detail::move_impl(mx.m_flat_tree); return *this; }
 
    #endif
 
@@ -314,7 +314,7 @@
       { return m_flat_tree.insert_unique(x); }
    #else
    std::pair<iterator,bool> insert(value_type && x)
- { return m_flat_tree.insert_unique(move(x)); }
+ { return m_flat_tree.insert_unique(detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Inserts a copy of x in the container if and only if there is
@@ -345,7 +345,7 @@
       { return m_flat_tree.insert_unique(position, x); }
    #else
    iterator insert(iterator position, value_type && x)
- { return m_flat_tree.insert_unique(position, move(x)); }
+ { return m_flat_tree.insert_unique(position, detail::move_impl(x)); }
    #endif
 
    //! <b>Requires</b>: i, j are not iterators into *this.
@@ -588,6 +588,17 @@
                       const flat_multiset<T,Pred,Alloc>& y);
 /// @endcond
 
+//! flat_multiset is a Sorted Associative Container that stores objects of type Key.
+//! flat_multiset is a Simple Associative Container, meaning that its value type,
+//! as well as its key type, is Key.
+//! flat_Multiset can store multiple copies of the same key value.
+//!
+//! flat_multiset is similar to std::multiset but it's implemented like an ordered vector.
+//! This means that inserting a new element into a flat_multiset invalidates
+//! previous iterators and references
+//!
+//! Erasing an element of a flat_multiset invalidates iterators and references
+//! pointing to elements that come after (their keys are equal or bigger) the erased element.
 template <class T, class Pred, class Alloc>
 class flat_multiset
 {
@@ -633,10 +644,10 @@
 
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    flat_multiset(const detail::moved_object<flat_multiset<T,Pred,Alloc> >& x)
- : m_flat_tree(move(x.get().m_flat_tree)) {}
+ : m_flat_tree(detail::move_impl(x.get().m_flat_tree)) {}
    #else
    flat_multiset(flat_multiset<T,Pred,Alloc> && x)
- : m_flat_tree(move(x.m_flat_tree)) {}
+ : m_flat_tree(detail::move_impl(x.m_flat_tree)) {}
    #endif
 
    flat_multiset<T,Pred,Alloc>& operator=(const flat_multiset<T,Pred,Alloc>& x)
@@ -644,10 +655,10 @@
 
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    flat_multiset<T,Pred,Alloc>& operator=(const detail::moved_object<flat_multiset<T,Pred,Alloc> >& mx)
- { m_flat_tree = move(mx.get().m_flat_tree); return *this; }
+ { m_flat_tree = detail::move_impl(mx.get().m_flat_tree); return *this; }
    #else
    flat_multiset<T,Pred,Alloc>& operator=(flat_multiset<T,Pred,Alloc> && mx)
- { m_flat_tree = move(mx.m_flat_tree); return *this; }
+ { m_flat_tree = detail::move_impl(mx.m_flat_tree); return *this; }
    #endif
 
    //! <b>Effects</b>: Returns the comparison object out
@@ -814,7 +825,7 @@
       { return m_flat_tree.insert_equal(x); }
    #else
    iterator insert(value_type && x)
- { return m_flat_tree.insert_equal(move(x)); }
+ { return m_flat_tree.insert_equal(detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Inserts a copy of x in the container.
@@ -845,7 +856,7 @@
       { return m_flat_tree.insert_equal(position, x); }
    #else
    iterator insert(iterator position, value_type && x)
- { return m_flat_tree.insert_equal(position, move(x)); }
+ { return m_flat_tree.insert_equal(position, detail::move_impl(x)); }
    #endif
 
    //! <b>Requires</b>: i, j are not iterators into *this.

Modified: branches/proto/v4/boost/interprocess/containers/list.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/list.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/list.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -93,7 +93,7 @@
    #else
    template<class Convertible>
    list_node(Convertible &&conv)
- : m_data(forward<Convertible>(conv))
+ : m_data(detail::forward_impl<Convertible>(conv))
    {}
    #endif
 
@@ -323,7 +323,7 @@
    {}
 
 // list(size_type n)
-// : AllocHolder(move(allocator_type()))
+// : AllocHolder(detail::move_impl(allocator_type()))
 // { this->resize(n); }
 
    //! <b>Effects</b>: Constructs a list that will use a copy of allocator a
@@ -355,11 +355,11 @@
    //! <b>Complexity</b>: Constant.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    list(const detail::moved_object<list> &x)
- : AllocHolder(move((AllocHolder&)x.get()))
+ : AllocHolder(detail::move_impl((AllocHolder&)x.get()))
    {}
    #else
    list(list &&x)
- : AllocHolder(move((AllocHolder&)x))
+ : AllocHolder(detail::move_impl((AllocHolder&)x))
    {}
    #endif
 
@@ -518,7 +518,7 @@
    { this->insert(this->begin(), x); }
    #else
    void push_front(T &&x)
- { this->insert(this->begin(), move(x)); }
+ { this->insert(this->begin(), detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Removes the last element from the list.
@@ -539,7 +539,7 @@
    { this->insert(this->end(), x); }
    #else
    void push_back (T &&x)
- { this->insert(this->end(), move(x)); }
+ { this->insert(this->end(), detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Removes the first element from the list.
@@ -610,7 +610,7 @@
    //! <b>Complexity</b>: Linear to the difference between size() and new_size.
    void resize(size_type new_size, const T& x)
    {
- iterator i = this->begin(), iend = this->end();
+ iterator iend = this->end();
       size_type len = this->size();
       
       if(len > new_size){
@@ -633,15 +633,26 @@
    //! <b>Complexity</b>: Linear to the difference between size() and new_size.
    void resize(size_type new_size)
    {
- iterator i = this->begin(), iend = this->end();
+ iterator iend = this->end();
       size_type len = this->size();
       
       if(len > new_size){
          size_type to_erase = len - new_size;
- while(to_erase--){
- --iend;
+ iterator ifirst;
+ if(to_erase < len/2u){
+ ifirst = iend;
+ while(to_erase--){
+ --ifirst;
+ }
          }
- this->erase(iend, this->end());
+ else{
+ ifirst = this->begin();
+ size_type to_skip = len - to_erase;
+ while(to_skip--){
+ ++ifirst;
+ }
+ }
+ this->erase(ifirst, iend);
       }
       else{
          this->priv_create_and_insert_nodes(this->end(), new_size - len);
@@ -763,7 +774,7 @@
    #else
    iterator insert(iterator p, T &&x)
    {
- NodePtr tmp = AllocHolder::create_node(move(x));
+ NodePtr tmp = AllocHolder::create_node(detail::move_impl(x));
       return iterator(this->icont().insert(p.get(), *tmp));
    }
    #endif

Modified: branches/proto/v4/boost/interprocess/containers/map.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/map.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/map.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,7 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 //
-// This file comes from SGI's stl_map/stl_multimap files. Modified by Ion Gazta�ga 2004.
+// This file comes from SGI's stl_map/stl_multimap files. Modified by Ion Gaztanaga.
 // Renaming, isolating and porting to generic algorithms. Pointer typedef
 // set to allocator::pointer to allow placing it in shared memory.
 //
@@ -166,11 +166,11 @@
    //! <b>Postcondition</b>: x is emptied.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    map(const detail::moved_object<map<Key,T,Pred,Alloc> >& x)
- : m_tree(move(x.get().m_tree))
+ : m_tree(detail::move_impl(x.get().m_tree))
    {}
    #else
    map(map<Key,T,Pred,Alloc> &&x)
- : m_tree(move(x.m_tree))
+ : m_tree(detail::move_impl(x.m_tree))
    {}
    #endif
 
@@ -185,10 +185,10 @@
    //! <b>Complexity</b>: Constant.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    map<Key,T,Pred,Alloc>& operator=(const detail::moved_object<map<Key,T,Pred,Alloc> >& x)
- { m_tree = move(x.get().m_tree); return *this; }
+ { m_tree = detail::move_impl(x.get().m_tree); return *this; }
    #else
    map<Key,T,Pred,Alloc>& operator=(map<Key,T,Pred,Alloc> &&x)
- { m_tree = move(x.m_tree); return *this; }
+ { m_tree = detail::move_impl(x.m_tree); return *this; }
    #endif
 
    //! <b>Effects</b>: Returns the comparison object out
@@ -322,14 +322,14 @@
       iterator i = lower_bound(k);
       // i->first is greater than or equivalent to k.
       if (i == end() || key_comp()(k, (*i).first)){
- value_type val(k, move(T()));
- i = insert(i, move(val));
+ value_type val(k, detail::move_impl(T()));
+ i = insert(i, detail::move_impl(val));
       }
       return (*i).second;
    }
 
    //! Effects: If there is no key equivalent to x in the map, inserts
- //! value_type(move(x), T()) into the map (the key is move-constructed)
+ //! value_type(detail::move_impl(x), T()) into the map (the key is move-constructed)
    //!
    //! Returns: A reference to the mapped_type corresponding to x in *this.
    //!
@@ -342,8 +342,8 @@
       iterator i = lower_bound(k);
       // i->first is greater than or equivalent to k.
       if (i == end() || key_comp()(k, (*i).first)){
- value_type val(k, move(T()));
- i = insert(i, move(val));
+ value_type val(k, detail::move_impl(T()));
+ i = insert(i, detail::move_impl(val));
       }
       return (*i).second;
    }
@@ -355,8 +355,8 @@
       iterator i = lower_bound(k);
       // i->first is greater than or equivalent to k.
       if (i == end() || key_comp()(k, (*i).first)){
- value_type val(move(k), move(T()));
- i = insert(i, move(val));
+ value_type val(detail::move_impl(k), detail::move_impl(T()));
+ i = insert(i, detail::move_impl(val));
       }
       return (*i).second;
    }
@@ -364,7 +364,7 @@
 
 /*
    //! Effects: If there is no key equivalent to x in the map, inserts
- //! value_type(move(x), T()) into the map (the key is move-constructed)
+ //! value_type(detail::move_impl(x), T()) into the map (the key is move-constructed)
    //!
    //! Returns: A reference to the mapped_type corresponding to x in *this.
    //!
@@ -379,8 +379,8 @@
       iterator i = lower_bound(k);
       // i->first is greater than or equivalent to k.
       if (i == end() || key_comp()(k, (*i).first)){
- value_type val(k, move(T()));
- i = insert(i, move(val));
+ value_type val(k, detail::move_impl(T()));
+ i = insert(i, detail::move_impl(val));
       }
       return (*i).second;
    }
@@ -449,7 +449,7 @@
    { return m_tree.insert_unique(x); }
    #else
    std::pair<iterator,bool> insert(std::pair<key_type, mapped_type> &&x)
- { return m_tree.insert_unique(move(x)); }
+ { return m_tree.insert_unique(detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Move constructs a new value from x if and only if there is
@@ -465,7 +465,7 @@
    { return m_tree.insert_unique(x); }
    #else
    std::pair<iterator,bool> insert(value_type &&x)
- { return m_tree.insert_unique(move(x)); }
+ { return m_tree.insert_unique(detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Inserts a copy of x in the container if and only if there is
@@ -494,7 +494,7 @@
    { return m_tree.insert_unique(position, x); }
    #else
    iterator insert(iterator position, std::pair<key_type, mapped_type> &&x)
- { return m_tree.insert_unique(position, move(x)); }
+ { return m_tree.insert_unique(position, detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Inserts a copy of x in the container.
@@ -517,7 +517,7 @@
    { return m_tree.insert_unique(position, x); }
    #else
    iterator insert(iterator position, value_type &&x)
- { return m_tree.insert_unique(position, move(x)); }
+ { return m_tree.insert_unique(position, detail::move_impl(x)); }
    #endif
 
    //! <b>Requires</b>: i, j are not iterators into *this.
@@ -813,11 +813,11 @@
    //! <b>Postcondition</b>: x is emptied.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    multimap(const detail::moved_object<multimap<Key,T,Pred,Alloc> >& x)
- : m_tree(move(x.get().m_tree))
+ : m_tree(detail::move_impl(x.get().m_tree))
    {}
    #else
    multimap(multimap<Key,T,Pred,Alloc> && x)
- : m_tree(move(x.m_tree))
+ : m_tree(detail::move_impl(x.m_tree))
    {}
    #endif
 
@@ -834,11 +834,11 @@
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    multimap<Key,T,Pred,Alloc>&
    operator=(const detail::moved_object<multimap<Key,T,Pred,Alloc> >& x)
- { m_tree = move(x.get().m_tree); return *this; }
+ { m_tree = detail::move_impl(x.get().m_tree); return *this; }
    #else
    multimap<Key,T,Pred,Alloc>&
    operator=(multimap<Key,T,Pred,Alloc> && x)
- { m_tree = move(x.m_tree); return *this; }
+ { m_tree = detail::move_impl(x.m_tree); return *this; }
    #endif
 
    //! <b>Effects</b>: Returns the comparison object out
@@ -1006,7 +1006,7 @@
    { return m_tree.insert_equal(x); }
    #else
    iterator insert(std::pair<key_type, mapped_type> && x)
- { return m_tree.insert_equal(move(x)); }
+ { return m_tree.insert_equal(detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Inserts a copy of x in the container.
@@ -1044,7 +1044,7 @@
    { return m_tree.insert_equal(position, x); }
    #else
    iterator insert(iterator position, std::pair<key_type, mapped_type> && x)
- { return m_tree.insert_equal(position, move(x)); }
+ { return m_tree.insert_equal(position, detail::move_impl(x)); }
    #endif
 
    //! <b>Requires</b>: i, j are not iterators into *this.

Modified: branches/proto/v4/boost/interprocess/containers/set.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/set.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -143,11 +143,11 @@
    //! <b>Postcondition</b>: x is emptied.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    set(const detail::moved_object<set<T,Pred,Alloc> >& x)
- : m_tree(move(x.get().m_tree))
+ : m_tree(detail::move_impl(x.get().m_tree))
    {}
    #else
    set(set<T,Pred,Alloc> &&x)
- : m_tree(move(x.m_tree))
+ : m_tree(detail::move_impl(x.m_tree))
    {}
    #endif
 
@@ -162,10 +162,10 @@
    //! <b>Complexity</b>: Constant.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    set<T,Pred,Alloc>& operator=(const detail::moved_object<set<T, Pred, Alloc> >& x)
- { m_tree = move(x.get().m_tree); return *this; }
+ { m_tree = detail::move_impl(x.get().m_tree); return *this; }
    #else
    set<T,Pred,Alloc>& operator=(set<T, Pred, Alloc> &&x)
- { m_tree = move(x.m_tree); return *this; }
+ { m_tree = detail::move_impl(x.m_tree); return *this; }
    #endif
 
    //! <b>Effects</b>: Returns the comparison object out
@@ -334,7 +334,7 @@
    { return m_tree.insert_unique(x); }
    #else
    std::pair<iterator,bool> insert(value_type &&x)
- { return m_tree.insert_unique(move(x)); }
+ { return m_tree.insert_unique(detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Inserts a copy of x in the container if and only if there is
@@ -360,7 +360,7 @@
    { return m_tree.insert_unique(p, x); }
    #else
    iterator insert(const_iterator p, value_type &&x)
- { return m_tree.insert_unique(p, move(x)); }
+ { return m_tree.insert_unique(p, detail::move_impl(x)); }
    #endif
 
    //! <b>Requires</b>: i, j are not iterators into *this.
@@ -632,11 +632,11 @@
    //! <b>Postcondition</b>: x is emptied.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    multiset(const detail::moved_object<multiset<T,Pred,Alloc> >& x)
- : m_tree(move(x.get().m_tree))
+ : m_tree(detail::move_impl(x.get().m_tree))
    {}
    #else
    multiset(multiset<T,Pred,Alloc> &&x)
- : m_tree(move(x.m_tree))
+ : m_tree(detail::move_impl(x.m_tree))
    {}
    #endif
 
@@ -651,10 +651,10 @@
    //! <b>Complexity</b>: Constant.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    multiset<T,Pred,Alloc>& operator=(const detail::moved_object<multiset<T,Pred,Alloc> >& x)
- { m_tree = move(x.get().m_tree); return *this; }
+ { m_tree = detail::move_impl(x.get().m_tree); return *this; }
    #else
    multiset<T,Pred,Alloc>& operator=(multiset<T,Pred,Alloc> &&x)
- { m_tree = move(x.m_tree); return *this; }
+ { m_tree = detail::move_impl(x.m_tree); return *this; }
    #endif
 
    //! <b>Effects</b>: Returns the comparison object out
@@ -818,7 +818,7 @@
    { return m_tree.insert_equal(x); }
    #else
    iterator insert(value_type && x)
- { return m_tree.insert_equal(move(x)); }
+ { return m_tree.insert_equal(detail::move_impl(x)); }
    #endif
 
    //! <b>Effects</b>: Inserts a copy of x in the container.
@@ -845,7 +845,7 @@
    { return m_tree.insert_equal(p, x); }
    #else
    iterator insert(const_iterator p, value_type && x)
- { return m_tree.insert_equal(p, move(x)); }
+ { return m_tree.insert_equal(p, detail::move_impl(x)); }
    #endif
 
    //! <b>Requires</b>: i, j are not iterators into *this.

Modified: branches/proto/v4/boost/interprocess/containers/slist.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/slist.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/slist.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -87,7 +87,7 @@
    #else
    template<class Convertible>
    slist_node(Convertible &&value)
- : m_data(forward<Convertible>(value)){}
+ : m_data(detail::forward_impl<Convertible>(value)){}
    #endif
 
    T m_data;
@@ -321,7 +321,7 @@
    {}
 
 // explicit slist(size_type n)
-// : AllocHolder(move(allocator_type()))
+// : AllocHolder(detail::move_impl(allocator_type()))
 // { this->resize(n); }
 
    //! <b>Effects</b>: Constructs a list that will use a copy of allocator a
@@ -367,11 +367,11 @@
    //! <b>Complexity</b>: Constant.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    slist(const detail::moved_object<slist> &x)
- : AllocHolder(move((AllocHolder&)x.get()))
+ : AllocHolder(detail::move_impl((AllocHolder&)x.get()))
    {}
    #else
    slist(slist &&x)
- : AllocHolder(move((AllocHolder&)x))
+ : AllocHolder(detail::move_impl((AllocHolder&)x))
    {}
    #endif
 
@@ -594,7 +594,7 @@
    { this->icont().push_front(*this->create_node(x)); }
    #else
    void push_front(T && x)
- { this->icont().push_front(*this->create_node(move(x))); }
+ { this->icont().push_front(*this->create_node(detail::move_impl(x))); }
    #endif
 
    //! <b>Effects</b>: Removes the first element from the list.
@@ -659,7 +659,7 @@
    { return iterator(this->icont().insert_after(prev_pos.get(), *this->create_node(x))); }
    #else
    iterator insert_after(iterator prev_pos, value_type && x)
- { return iterator(this->icont().insert_after(prev_pos.get(), *this->create_node(move(x)))); }
+ { return iterator(this->icont().insert_after(prev_pos.get(), *this->create_node(detail::move_impl(x)))); }
    #endif
 
    //! <b>Requires</b>: prev_pos must be a valid iterator of *this.
@@ -717,7 +717,7 @@
    { return this->insert_after(previous(p), x); }
    #else
    iterator insert(iterator p, value_type && x)
- { return this->insert_after(previous(p), move(x)); }
+ { return this->insert_after(previous(p), detail::move_impl(x)); }
    #endif
 
    //! <b>Requires</b>: p must be a valid iterator of *this.
@@ -1426,7 +1426,8 @@
 // Specialization of insert_iterator so that insertions will be constant
 // time rather than linear time.
 
-//iG
+///@cond
+
 //Ummm, I don't like to define things in namespace std, but
 //there is no other way
 namespace std {
@@ -1464,7 +1465,7 @@
 
 } //namespace std;
 
-
+///@endcond
 
 #include <boost/interprocess/detail/config_end.hpp>
 

Modified: branches/proto/v4/boost/interprocess/containers/string.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/string.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/string.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -281,7 +281,7 @@
       (void)limit_size;
       (void)reuse;
       if(!(command & allocate_new))
- return std::pair<pointer, bool>(0, 0);
+ return std::pair<pointer, bool>(pointer(0), 0);
       received_size = preferred_size;
       return std::make_pair(this->alloc().allocate(received_size), false);
    }
@@ -520,8 +520,9 @@
    /// @endcond
 
    public: // Constructor, destructor, assignment.
-
+ /// @cond
    struct reserve_t {};
+ /// @endcond
 
    basic_string(reserve_t, std::size_t n,
                const allocator_type& a = allocator_type())
@@ -551,11 +552,11 @@
    //! <b>Complexity</b>: Constant.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    basic_string(const detail::moved_object<basic_string>& s)
- : base_t(move((base_t&)s.get()))
+ : base_t(detail::move_impl((base_t&)s.get()))
    {}
    #else
    basic_string(basic_string && s)
- : base_t(move((base_t&)s))
+ : base_t(detail::move_impl((base_t&)s))
    {}
    #endif
 
@@ -1940,7 +1941,7 @@
           const basic_string<CharT,Traits,A>& y)
 {
    mx += y;
- return move(mx);
+ return detail::move_impl(mx);
 }
 #endif
 
@@ -1951,7 +1952,7 @@
           const detail::moved_object<basic_string<CharT,Traits,A> >& my)
 {
    typedef typename basic_string<CharT,Traits,A>::size_type size_type;
- return my.get().replace(size_type(0), size_type(0), x);
+ return my.get().replace(size_type(0), size_type(0), x);
 }
 #else
 template <class CharT, class Traits, class A>
@@ -1960,7 +1961,7 @@
           basic_string<CharT,Traits,A> && my)
 {
    typedef typename basic_string<CharT,Traits,A>::size_type size_type;
- return my.replace(size_type(0), size_type(0), x);
+ return my.replace(size_type(0), size_type(0), x);
 }
 #endif
 
@@ -1985,7 +1986,7 @@
           const detail::moved_object<basic_string<CharT,Traits,A> >& my)
 {
    typedef typename basic_string<CharT,Traits,A>::size_type size_type;
- return my.get().replace(size_type(0), size_type(0), s);
+ return my.get().replace(size_type(0), size_type(0), s);
 }
 #else
 template <class CharT, class Traits, class A>
@@ -1994,7 +1995,7 @@
           basic_string<CharT,Traits,A> && my)
 {
    typedef typename basic_string<CharT,Traits,A>::size_type size_type;
- return move(my.get().replace(size_type(0), size_type(0), s));
+ return detail::move_impl(my.get().replace(size_type(0), size_type(0), s));
 }
 #endif
 
@@ -2018,7 +2019,7 @@
           const detail::moved_object<basic_string<CharT,Traits,A> >& my)
 {
    typedef typename basic_string<CharT,Traits,A>::size_type size_type;
- return my.get().replace(size_type(0), size_type(0), &c, &c + 1);
+ return my.get().replace(size_type(0), size_type(0), &c, &c + 1);
 }
 #else
 template <class CharT, class Traits, class A>
@@ -2027,7 +2028,7 @@
           basic_string<CharT,Traits,A> && my)
 {
    typedef typename basic_string<CharT,Traits,A>::size_type size_type;
- return my.replace(size_type(0), size_type(0), &c, &c + 1);
+ return my.replace(size_type(0), size_type(0), &c, &c + 1);
 }
 #endif
 
@@ -2061,7 +2062,7 @@
           const CharT* s)
 {
    mx += s;
- return move(mx);
+ return detail::move_impl(mx);
 }
 #endif
 
@@ -2093,7 +2094,7 @@
 operator+(basic_string<CharT,Traits,A> && mx, const CharT c)
 {
    mx += c;
- return move(mx);
+ return detail::move_impl(mx);
 }
 #endif
 

Modified: branches/proto/v4/boost/interprocess/containers/vector.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/containers/vector.hpp (original)
+++ branches/proto/v4/boost/interprocess/containers/vector.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -288,7 +288,7 @@
       (void)limit_size;
       (void)reuse;
       if(!(command & allocate_new))
- return std::pair<pointer, bool>(0, 0);
+ return std::pair<pointer, bool>(pointer(0), 0);
       received_size = preferred_size;
       return std::make_pair(this->alloc().allocate(received_size), false);
    }
@@ -434,7 +434,10 @@
    //This is the optimized move iterator for copy constructors
    //so that std::copy and similar can use memcpy
    typedef typename detail::if_c
- <base_t::trivial_copy || !is_movable<value_type>::value
+ <base_t::trivial_copy
+ #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
+ || !is_movable<value_type>::value
+ #endif
       ,T*
       ,detail::move_iterator<T*>
>::type copy_move_it;
@@ -442,7 +445,10 @@
    //This is the optimized move iterator for assignments
    //so that std::uninitialized_copy and similar can use memcpy
    typedef typename detail::if_c
- <base_t::trivial_assign || !is_movable<value_type>::value
+ <base_t::trivial_assign
+ #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
+ || !is_movable<value_type>::value
+ #endif
       ,T*
       ,detail::move_iterator<T*>
>::type assign_move_it;
@@ -491,7 +497,7 @@
    { this->swap(mx.get()); }
    #else
    vector(vector<T, A> && mx)
- : base_t(mx)
+ : base_t(detail::move_impl(mx))
    { this->swap(mx); }
    #endif
 
@@ -890,11 +896,11 @@
    {
       if (this->members_.m_size < this->members_.m_capacity){
          //There is more memory, just construct a new object at the end
- new((void*)detail::get_pointer(this->members_.m_start + this->members_.m_size))value_type(move(mx));
+ new((void*)detail::get_pointer(this->members_.m_start + this->members_.m_size))value_type(detail::move_impl(mx));
          ++this->members_.m_size;
       }
       else{
- this->insert(this->end(), move(mx));
+ this->insert(this->end(), detail::move_impl(mx));
       }
    }
    #endif
@@ -1036,7 +1042,7 @@
       T *pos = detail::get_pointer(position.get_ptr());
       T *beg = detail::get_pointer(this->members_.m_start);
 
- std::copy(assign_move_it(pos + 1), assign_move_it(beg + this->members_.m_size), pos);
+ std::copy(assign_move_it(pos + 1), assign_move_it(beg + this->members_.m_size), pos);
       --this->members_.m_size;
       //Destroy last element
       base_t::destroy(detail::get_pointer(this->members_.m_start) + this->members_.m_size);
@@ -1050,12 +1056,12 @@
    //! <b>Complexity</b>: Linear to the distance between first and last.
    iterator erase(const_iterator first, const_iterator last)
    {
- if (first != last){ // worth doing, copy down over hole
+ if (first != last){ // worth doing, copy down over hole
          T* end_pos = detail::get_pointer(this->members_.m_start) + this->members_.m_size;
          T* ptr = detail::get_pointer(std::copy
             (assign_move_it(detail::get_pointer(last.get_ptr()))
             ,assign_move_it(end_pos)
- ,detail::get_pointer(first.get_ptr())
+ ,detail::get_pointer(first.get_ptr())
             ));
          size_type destroyed = (end_pos - ptr);
          this->destroy_n(ptr, destroyed);
@@ -1304,8 +1310,8 @@
       //Destroy and deallocate old elements
       //If there is allocated memory, destroy and deallocate
       if(this->members_.m_start != 0){
- if(!base_t::trivial_dctr_after_move)
- this->destroy_n(detail::get_pointer(this->members_.m_start), this->members_.m_size);
+ if(!base_t::trivial_dctr_after_move)
+ this->destroy_n(detail::get_pointer(this->members_.m_start), this->members_.m_size);
          this->alloc().deallocate(this->members_.m_start, this->members_.m_capacity);
       }
       this->members_.m_start = new_start;
@@ -1696,7 +1702,7 @@
          scoped_alloc.release();
          //Destroy and deallocate old buffer
          if(this->members_.m_start != 0){
- this->destroy_n(detail::get_pointer(this->members_.m_start), this->members_.m_size);
+ this->destroy_n(detail::get_pointer(this->members_.m_start), this->members_.m_size);
             this->alloc().deallocate(this->members_.m_start, this->members_.m_capacity);
          }
          this->members_.m_start = ret.first;
@@ -1719,8 +1725,9 @@
          //Backup old buffer data
          size_type old_offset = old_start - detail::get_pointer(ret.first);
          size_type first_count = min_value(n, old_offset);
- FwdIt mid = boost::interprocess::n_uninitialized_copy_n
+ boost::interprocess::uninitialized_copy_n
             (first, first_count, detail::get_pointer(ret.first));
+ FwdIt mid = first + first_count;
 
          if(old_offset > n){
             //All old elements will be destroyed by "old_values_destroyer"
@@ -1734,12 +1741,13 @@
             this->members_.m_size = first_count + old_size;
             //Now overwrite the old values
             size_type second_count = min_value(old_size, n - first_count);
- mid = copy_n(mid, second_count, old_start);
+ copy_n(mid, second_count, old_start);
+ mid += second_count;
             
             //Check if we still have to append elements in the
             //uninitialized end
             if(second_count == old_size){
- boost::interprocess::n_uninitialized_copy_n
+ boost::interprocess::uninitialized_copy_n
                   ( mid
                   , n - first_count - second_count
                   , old_start + old_size);

Modified: branches/proto/v4/boost/interprocess/detail/algorithms.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/algorithms.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/algorithms.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,12 +20,18 @@
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
 #include <boost/interprocess/detail/iterators.hpp>
-#include <boost/get_pointer.hpp>
+#include <boost/interprocess/detail/type_traits.hpp>
+#include <boost/type_traits/has_trivial_copy.hpp>
+#include <boost/type_traits/has_trivial_assign.hpp>
 #include <boost/detail/no_exceptions_support.hpp>
+#include <boost/get_pointer.hpp>
+#include <cstring>
 
 namespace boost {
 namespace interprocess {
 
+#if !defined(BOOST_INTERPROCESS_RVALUE_REFERENCE) || !defined(BOOST_INTERPROCESS_RVALUE_PAIR)
+
 template<class T>
 struct has_own_construct_from_it
 {
@@ -55,25 +61,81 @@
    detail::construct_in_place_impl(dest, source, boolean_t());
 }
 
+#else
+template<class T, class InpIt>
+inline void construct_in_place(T* dest, InpIt source)
+{ new((void*)dest)T(*source); }
+#endif
+
 template<class T, class U, class D>
 inline void construct_in_place(T *dest, default_construct_iterator<U, D>)
 {
    new((void*)dest)T();
 }
 
+
+template<class InIt, class OutIt>
+struct optimize_assign
+{
+ static const bool value = false;
+};
+
+template<class T>
+struct optimize_assign<const T*, T*>
+{
+ static const bool value = boost::has_trivial_assign<T>::value;
+};
+
+template<class T>
+struct optimize_assign<T*, T*>
+ : public optimize_assign<const T*, T*>
+{};
+
 template<class InIt, class OutIt>
-InIt copy_n(InIt first, typename std::iterator_traits<InIt>::difference_type length, OutIt dest)
+struct optimize_copy
+{
+ static const bool value = false;
+};
+
+template<class T>
+struct optimize_copy<const T*, T*>
+{
+ static const bool value = boost::has_trivial_copy<T>::value;
+};
+
+template<class T>
+struct optimize_copy<T*, T*>
+ : public optimize_copy<const T*, T*>
+{};
+
+
+template<class InIt, class OutIt> inline
+OutIt copy_n_dispatch(InIt first, typename std::iterator_traits<InIt>::difference_type length, OutIt dest, detail::bool_<false>)
 {
    for (; length--; ++dest, ++first)
       *dest = *first;
- return first;
+ return dest;
+}
+
+template<class T> inline
+T *copy_n_dispatch(const T *first, typename std::iterator_traits<const T*>::difference_type length, T *dest, detail::bool_<true>)
+{
+ std::size_t size = length*sizeof(T);
+ return ((T*)std::memmove(dest, first, size)) + size;
+}
+
+template<class InIt, class OutIt> inline
+OutIt copy_n(InIt first, typename std::iterator_traits<InIt>::difference_type length, OutIt dest)
+{
+ const bool do_optimized_assign = optimize_assign<InIt, OutIt>::value;
+ return copy_n_dispatch(first, length, dest, detail::bool_<do_optimized_assign>());
 }
 
 template<class InIt, class FwdIt> inline
-InIt n_uninitialized_copy_n
+FwdIt uninitialized_copy_n_dispatch
    (InIt first,
     typename std::iterator_traits<InIt>::difference_type count,
- FwdIt dest)
+ FwdIt dest, detail::bool_<false>)
 {
    typedef typename std::iterator_traits<FwdIt>::value_type value_type;
    //Save initial destination position
@@ -95,9 +157,28 @@
       BOOST_RETHROW
    }
    BOOST_CATCH_END
- return first;
+ return dest;
 }
 
+
+template<class T> inline
+T *uninitialized_copy_n_dispatch(const T *first, typename std::iterator_traits<const T*>::difference_type length, T *dest, detail::bool_<true>)
+{
+ std::size_t size = length*sizeof(T);
+ return ((T*)std::memmove(dest, first, size)) + size;
+}
+
+template<class InIt, class FwdIt> inline
+FwdIt uninitialized_copy_n
+ (InIt first,
+ typename std::iterator_traits<InIt>::difference_type count,
+ FwdIt dest)
+{
+ const bool do_optimized_copy = optimize_copy<InIt, FwdIt>::value;
+ return uninitialized_copy_n_dispatch(first, count, dest, detail::bool_<do_optimized_copy>());
+}
+
+
 // uninitialized_copy_copy
 // Copies [first1, last1) into [result, result + (last1 - first1)), and
 // copies [first2, last2) into

Modified: branches/proto/v4/boost/interprocess/detail/config_begin.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/config_begin.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/config_begin.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,12 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2005-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/interprocess for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_INTERPROCESS_CONFIG_INCLUDED
 #define BOOST_INTERPROCESS_CONFIG_INCLUDED
 #include <boost/config.hpp>
@@ -15,20 +24,20 @@
    #pragma warning (disable : 4146) // unary minus operator applied to unsigned type, result still unsigned
    #pragma warning (disable : 4284) // odd return type for operator->
    #pragma warning (disable : 4244) // possible loss of data
- #pragma warning (disable : 4251) // 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
- #pragma warning (disable : 4267) // conversion from 'X' to 'Y', possible loss of data
- #pragma warning (disable : 4275) // non – DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier'
- #pragma warning (disable : 4355) // 'this' : used in base member initializer list
- #pragma warning (disable : 4503) // 'identifier' : decorated name length exceeded, name was truncated
+ #pragma warning (disable : 4251) // "identifier" : class "type" needs to have dll-interface to be used by clients of class "type2"
+ #pragma warning (disable : 4267) // conversion from "X" to "Y", possible loss of data
+ #pragma warning (disable : 4275) // non DLL-interface classkey "identifier" used as base for DLL-interface classkey "identifier"
+ #pragma warning (disable : 4355) // "this" : used in base member initializer list
+ #pragma warning (disable : 4503) // "identifier" : decorated name length exceeded, name was truncated
    #pragma warning (disable : 4511) // copy constructor could not be generated
    #pragma warning (disable : 4512) // assignment operator could not be generated
    #pragma warning (disable : 4514) // unreferenced inline removed
    #pragma warning (disable : 4521) // Disable "multiple copy constructors specified"
- #pragma warning (disable : 4522) // 'class' : multiple assignment operators specified
- #pragma warning (disable : 4675) // 'method' should be declared 'static' and have exactly one parameter
+ #pragma warning (disable : 4522) // "class" : multiple assignment operators specified
+ #pragma warning (disable : 4675) // "method" should be declared "static" and have exactly one parameter
    #pragma warning (disable : 4710) // function not inlined
    #pragma warning (disable : 4711) // function selected for automatic inline expansion
    #pragma warning (disable : 4786) // identifier truncated in debug info
- #pragma warning (disable : 4996) // 'function': was declared deprecated
+ #pragma warning (disable : 4996) // "function": was declared deprecated
    #pragma warning (disable : 4197) // top-level volatile in cast is ignored
 #endif

Modified: branches/proto/v4/boost/interprocess/detail/config_end.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/config_end.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/config_end.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,12 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2005-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/interprocess for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
 #if defined BOOST_MSVC
    #pragma warning (pop)
    #ifdef BOOST_INTERPROCESS_CRT_SECURE_NO_DEPRECATE

Modified: branches/proto/v4/boost/interprocess/detail/file_wrapper.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/file_wrapper.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/file_wrapper.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -72,7 +72,7 @@
    #else
    file_wrapper &operator=(file_wrapper &&moved)
    {
- file_wrapper tmp(move(moved));
+ file_wrapper tmp(detail::move_impl(moved));
       this->swap(tmp);
       return *this;
    }

Modified: branches/proto/v4/boost/interprocess/detail/managed_memory_impl.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/managed_memory_impl.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/managed_memory_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -94,6 +94,8 @@
 
    /// @cond
 
+ typedef typename
+ segment_manager::char_ptr_holder_t char_ptr_holder_t;
    //Experimental. Don't use.
 
    typedef typename segment_manager::multiallocation_iterator multiallocation_iterator;
@@ -105,9 +107,6 @@
    private:
    typedef basic_managed_memory_impl
                <CharType, MemoryAlgorithm, IndexType, Offset> self_t;
- typedef typename
- segment_manager::char_ptr_holder_t char_ptr_holder_t;
-
    protected:
    template<class ManagedMemory>
    static bool grow(const char *filename, std::size_t extra_bytes)
@@ -687,6 +686,15 @@
       get_deleter()
    { return mp_header->get_deleter<T>(); }
 
+ /// @cond
+ //!Tries to find a previous named allocation address. Returns a memory
+ //!buffer and the object count. If not found returned pointer is 0.
+ //!Never throws.
+ template <class T>
+ std::pair<T*, std::size_t> find_no_lock (char_ptr_holder_t name)
+ { return mp_header->template find_no_lock<T>(name); }
+ /// @endcond
+
    protected:
    //!Swaps the segment manager's managed by this managed memory segment.
    //!NOT thread-safe. Never throws.

Modified: branches/proto/v4/boost/interprocess/detail/managed_multi_shared_memory.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/managed_multi_shared_memory.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/managed_multi_shared_memory.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -117,7 +117,7 @@
             shmem_list_t::value_type &m_impl = *mp_frontend->m_shmem_list.rbegin();
             return result_type(m_impl.get_real_address(), m_impl.get_real_size()-1);
          }
- return result_type(0, 0);
+ return result_type((void *)0, 0);
       }
 
       virtual bool update_segments ()
@@ -174,8 +174,8 @@
          //Check if this is the master segment
          if(!m_segment_number){
             //Create or open the Interprocess machinery
- if(impl_done = created ?
- mp_frontend->create_impl(addr, size) : mp_frontend->open_impl(addr, size)){
+ if((impl_done = created ?
+ mp_frontend->create_impl(addr, size) : mp_frontend->open_impl(addr, size))){
                return true;
             }
          }
@@ -315,21 +315,21 @@
             case create_open_func::DoCreate:
             {
                managed_impl shm(create_only, name, size, read_write, addr, func);
- mshm = move(shm);
+ mshm = detail::move_impl(shm);
             }
             break;
 
             case create_open_func::DoOpen:
             {
                managed_impl shm(open_only, name,read_write, addr, func);
- mshm = move(shm);
+ mshm = detail::move_impl(shm);
             }
             break;
 
             case create_open_func::DoOpenOrCreate:
             {
                managed_impl shm(open_or_create, name, size, read_write, addr, func);
- mshm = move(shm);
+ mshm = detail::move_impl(shm);
             }
             break;
 
@@ -339,7 +339,7 @@
          }
 
          //This can throw.
- m_shmem_list.push_back(move(mshm));
+ m_shmem_list.push_back(detail::move_impl(mshm));
          return true;
       }
       BOOST_CATCH(const std::bad_alloc&){

Modified: branches/proto/v4/boost/interprocess/detail/managed_open_or_create_impl.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/managed_open_or_create_impl.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/managed_open_or_create_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -176,7 +176,7 @@
    #else
    managed_open_or_create_impl &operator=(managed_open_or_create_impl &&moved)
    {
- managed_open_or_create_impl tmp(move(moved));
+ managed_open_or_create_impl tmp(detail::move_impl(moved));
       this->swap(tmp);
       return *this;
    }
@@ -209,6 +209,10 @@
    bool flush()
    { return m_mapped_region.flush(); }
 
+
+ const mapped_region &get_mapped_region() const
+ { return m_mapped_region; }
+
    private:
 
    //These are templatized to allow explicit instantiations

Modified: branches/proto/v4/boost/interprocess/detail/math_functions.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/math_functions.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/math_functions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,110 +1,110 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Stephen Cleary 2000.
-// (C) Copyright Ion Gaztanaga 2007-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/interprocess for documentation.
-//
-// This file is a slightly modified file from Boost.Pool
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef BOOST_INTERPROCESS_DETAIL_MATH_FUNCTIONS_HPP
-#define BOOST_INTERPROCESS_DETAIL_MATH_FUNCTIONS_HPP
-
-#include <boost/static_assert.hpp>
-#include <climits>
-
-namespace boost {
-namespace interprocess {
-namespace detail {
-
-// Greatest common divisor and least common multiple
-
-//
-// gcd is an algorithm that calculates the greatest common divisor of two
-// integers, using Euclid's algorithm.
-//
-// Pre: A > 0 && B > 0
-// Recommended: A > B
-template <typename Integer>
-inline Integer gcd(Integer A, Integer B)
-{
- do
- {
- const Integer tmp(B);
- B = A % B;
- A = tmp;
- } while (B != 0);
-
- return A;
-}
-
-//
-// lcm is an algorithm that calculates the least common multiple of two
-// integers.
-//
-// Pre: A > 0 && B > 0
-// Recommended: A > B
-template <typename Integer>
-inline Integer lcm(const Integer & A, const Integer & B)
-{
- Integer ret = A;
- ret /= gcd(A, B);
- ret *= B;
- return ret;
-}
-
-template <typename Integer>
-inline Integer log2_ceil(const Integer & A)
-{
- Integer i = 0;
- Integer power_of_2 = 1;
-
- while(power_of_2 < A){
- power_of_2 <<= 1;
- ++i;
- }
- return i;
-}
-
-template <typename Integer>
-inline Integer upper_power_of_2(const Integer & A)
-{
- Integer power_of_2 = 1;
-
- while(power_of_2 < A){
- power_of_2 <<= 1;
- }
- return power_of_2;
-}
-
-//This function uses binary search to discover the
-//highest set bit of the integer
-inline std::size_t floor_log2 (std::size_t x)
-{
- const std::size_t Bits = sizeof(std::size_t)*CHAR_BIT;
- const bool Size_t_Bits_Power_2= !(Bits & (Bits-1));
- BOOST_STATIC_ASSERT(Size_t_Bits_Power_2);
-
- std::size_t n = x;
- std::size_t log2 = 0;
-
- for(std::size_t shift = Bits >> 1; shift; shift >>= 1){
- std::size_t tmp = n >> shift;
- if (tmp)
- log2 += shift, n = tmp;
- }
-
- return log2;
-}
-
-} // namespace detail
-} // namespace interprocess
-} // namespace boost
-
-#endif
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Stephen Cleary 2000.
+// (C) Copyright Ion Gaztanaga 2007-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/interprocess for documentation.
+//
+// This file is a slightly modified file from Boost.Pool
+//
+//////////////////////////////////////////////////////////////////////////////
+
+#ifndef BOOST_INTERPROCESS_DETAIL_MATH_FUNCTIONS_HPP
+#define BOOST_INTERPROCESS_DETAIL_MATH_FUNCTIONS_HPP
+
+#include <climits>
+#include <boost/static_assert.hpp>
+
+namespace boost {
+namespace interprocess {
+namespace detail {
+
+// Greatest common divisor and least common multiple
+
+//
+// gcd is an algorithm that calculates the greatest common divisor of two
+// integers, using Euclid's algorithm.
+//
+// Pre: A > 0 && B > 0
+// Recommended: A > B
+template <typename Integer>
+inline Integer gcd(Integer A, Integer B)
+{
+ do
+ {
+ const Integer tmp(B);
+ B = A % B;
+ A = tmp;
+ } while (B != 0);
+
+ return A;
+}
+
+//
+// lcm is an algorithm that calculates the least common multiple of two
+// integers.
+//
+// Pre: A > 0 && B > 0
+// Recommended: A > B
+template <typename Integer>
+inline Integer lcm(const Integer & A, const Integer & B)
+{
+ Integer ret = A;
+ ret /= gcd(A, B);
+ ret *= B;
+ return ret;
+}
+
+template <typename Integer>
+inline Integer log2_ceil(const Integer & A)
+{
+ Integer i = 0;
+ Integer power_of_2 = 1;
+
+ while(power_of_2 < A){
+ power_of_2 <<= 1;
+ ++i;
+ }
+ return i;
+}
+
+template <typename Integer>
+inline Integer upper_power_of_2(const Integer & A)
+{
+ Integer power_of_2 = 1;
+
+ while(power_of_2 < A){
+ power_of_2 <<= 1;
+ }
+ return power_of_2;
+}
+
+//This function uses binary search to discover the
+//highest set bit of the integer
+inline std::size_t floor_log2 (std::size_t x)
+{
+ const std::size_t Bits = sizeof(std::size_t)*CHAR_BIT;
+ const bool Size_t_Bits_Power_2= !(Bits & (Bits-1));
+ BOOST_STATIC_ASSERT(((Size_t_Bits_Power_2)== true));
+
+ std::size_t n = x;
+ std::size_t log2 = 0;
+
+ for(std::size_t shift = Bits >> 1; shift; shift >>= 1){
+ std::size_t tmp = n >> shift;
+ if (tmp)
+ log2 += shift, n = tmp;
+ }
+
+ return log2;
+}
+
+} // namespace detail
+} // namespace interprocess
+} // namespace boost
+
+#endif

Modified: branches/proto/v4/boost/interprocess/detail/move.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/move.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/move.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,8 @@
 
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
+#include <boost/interprocess/interprocess_fwd.hpp>
+#include <boost/interprocess/detail/mpl.hpp>
 
 //!\file
 //!Describes a function and a type to emulate move semantics.
@@ -106,16 +108,25 @@
 namespace boost {
 namespace interprocess {
 
+namespace detail{
+
 //!A function that converts an object to a moved object so that
 //!it can match a function taking a detail::moved_object object.
 template<class Object>
-typename detail::move_type<Object>::type move
- (const Object &object)
+typename detail::move_type<Object>::type move_impl(const Object &object)
 {
    typedef typename detail::move_type<Object>::type type;
    return type(object);
 }
 
+} //namespace detail {
+
+//!A function that converts an object to a moved object so that
+//!it can match a function taking a detail::moved_object object.
+template<class Object>
+typename detail::move_type<Object>::type move(const Object &object)
+{ return detail::move_impl(object); }
+
 } //namespace interprocess {
 } //namespace boost {
 
@@ -126,15 +137,20 @@
 namespace boost {
 namespace interprocess {
 
+namespace detail {
+
 template <class T>
-inline typename detail::remove_reference<T>::type&&
-move(T&& t)
+inline typename detail::remove_reference<T>::type&& move_impl(T&& t)
 { return t; }
 
 template <class T>
-inline
-T&&
-forward(typename identity<T>::type&& t)
+inline T&& forward_impl(typename detail::identity<T>::type&& t)
+{ return t; }
+
+} //namespace detail {
+
+template <class T>
+inline typename detail::remove_reference<T>::type&& move(T&& t)
 { return t; }
 
 } //namespace interprocess {

Modified: branches/proto/v4/boost/interprocess/detail/move_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/move_iterator.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/move_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -53,7 +53,7 @@
 
    reference operator*() const
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- { return move(*m_it); }
+ { return detail::move_impl(*m_it); }
    #else
    { return *m_it; }
    #endif
@@ -86,7 +86,7 @@
    { m_it -= n; return *this; }
 
    reference operator[](difference_type n) const
- { return move(m_it[n]); }
+ { return detail::move_impl(m_it[n]); }
 
    private:
    It m_it;

Modified: branches/proto/v4/boost/interprocess/detail/mpl.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/mpl.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/mpl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -117,6 +117,7 @@
 struct identity
 // : public std::unary_function<T,T>
 {
+ typedef T type;
    const T& operator()(const T& x) const
    { return x; }
 };

Modified: branches/proto/v4/boost/interprocess/detail/os_file_functions.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/os_file_functions.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/os_file_functions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -310,7 +310,7 @@
    lock.l_len = 0;
    int ret = ::fcntl(hnd, F_SETLK, &lock);
    if(ret == -1){
- return (errno != EAGAIN && errno != EACCES) ?
+ return (errno == EAGAIN || errno == EACCES) ?
                acquired = false, true : false;
    }
    return (acquired = true);
@@ -345,7 +345,7 @@
    lock.l_len = 0;
    int ret = ::fcntl(hnd, F_SETLK, &lock);
    if(ret == -1){
- return (errno != EAGAIN && errno != EACCES) ?
+ return (errno == EAGAIN || errno == EACCES) ?
                acquired = false, true : false;
    }
    return (acquired = true);

Modified: branches/proto/v4/boost/interprocess/detail/utilities.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/utilities.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/utilities.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -526,61 +526,61 @@
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    template <class D, class S>
    pair(const detail::moved_object<std::pair<D, S> >& p)
- : first(move(p.get().first)), second(move(p.get().second))
+ : first(detail::move_impl(p.get().first)), second(detail::move_impl(p.get().second))
    {}
    #else
    template <class D, class S>
    pair(std::pair<D, S> && p)
- : first(move(p.first)), second(move(p.second))
+ : first(detail::move_impl(p.first)), second(detail::move_impl(p.second))
    {}
    #endif
 
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    template <class D, class S>
    pair(const detail::moved_object<pair<D, S> >& p)
- : first(move(p.get().first)), second(move(p.get().second))
+ : first(detail::move_impl(p.get().first)), second(detail::move_impl(p.get().second))
    {}
    #else
    template <class D, class S>
    pair(pair<D, S> && p)
- : first(move(p.first)), second(move(p.second))
+ : first(detail::move_impl(p.first)), second(detail::move_impl(p.second))
    {}
    #endif
 
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    template <class U, class V>
    pair(const detail::moved_object<U> &x, const detail::moved_object<V> &y)
- : first(move(x.get())), second(move(y.get()))
+ : first(detail::move_impl(x.get())), second(detail::move_impl(y.get()))
    {}
    #else
    template <class U, class V>
    pair(U &&x, V &&y)
- : first(move(x)), second(move(y))
+ : first(detail::move_impl(x)), second(detail::move_impl(y))
    {}
    #endif
 
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    pair(const detail::moved_object<pair> &p)
- : first(move(p.get().first)), second(move(p.get().second))
+ : first(detail::move_impl(p.get().first)), second(detail::move_impl(p.get().second))
    {}
    #else
    pair(pair &&p)
- : first(move(p.first)), second(move(p.second))
+ : first(detail::move_impl(p.first)), second(detail::move_impl(p.second))
    {}
    #endif
 
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    pair& operator=(const detail::moved_object<pair> &p)
    {
- first = move(p.get().first);
- second = move(p.get().second);
+ first = detail::move_impl(p.get().first);
+ second = detail::move_impl(p.get().second);
       return *this;
    }
    #else
    pair& operator=(pair &&p)
    {
- first = move(p.first);
- second = move(p.second);
+ first = detail::move_impl(p.first);
+ second = detail::move_impl(p.second);
       return *this;
    }
    #endif
@@ -596,16 +596,16 @@
    template <class D, class S>
    pair& operator=(const detail::moved_object<std::pair<D, S> > &p)
    {
- first = move(p.get().first);
- second = move(p.get().second);
+ first = detail::move_impl(p.get().first);
+ second = detail::move_impl(p.get().second);
       return *this;
    }
    #else
    template <class D, class S>
    pair& operator=(std::pair<D, S> &&p)
    {
- first = move(p.first);
- second = move(p.second);
+ first = detail::move_impl(p.first);
+ second = detail::move_impl(p.second);
       return *this;
    }
    #endif
@@ -785,6 +785,36 @@
    bool m_erase;
 };
 
+template <class T>
+struct sizeof_value
+{
+ static const std::size_t value = sizeof(T);
+};
+
+template <>
+struct sizeof_value<void>
+{
+ static const std::size_t value = sizeof(void*);
+};
+
+template <>
+struct sizeof_value<const void>
+{
+ static const std::size_t value = sizeof(void*);
+};
+
+template <>
+struct sizeof_value<volatile void>
+{
+ static const std::size_t value = sizeof(void*);
+};
+
+template <>
+struct sizeof_value<const volatile void>
+{
+ static const std::size_t value = sizeof(void*);
+};
+
 } //namespace interprocess {
 } //namespace boost {
 

Modified: branches/proto/v4/boost/interprocess/detail/win32_api.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/win32_api.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/win32_api.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -65,6 +65,7 @@
 
 static const unsigned long file_share_read = 0x00000001;
 static const unsigned long file_share_write = 0x00000002;
+static const unsigned long file_share_delete = 0x00000004;
 
 static const unsigned long generic_read = 0x80000000L;
 static const unsigned long generic_write = 0x40000000L;
@@ -225,7 +226,7 @@
 extern "C" __declspec(dllimport) void * __stdcall CreateFileMappingA (void *, interprocess_security_attributes*, unsigned long, unsigned long, unsigned long, const char *);
 extern "C" __declspec(dllimport) void * __stdcall MapViewOfFileEx (void *, unsigned long, unsigned long, unsigned long, std::size_t, void*);
 extern "C" __declspec(dllimport) void * __stdcall OpenFileMappingA (unsigned long, int, const char *);
-extern "C" __declspec(dllimport) void * __stdcall CreateFileA (const char *, unsigned long, unsigned long, struct _SECURITY_ATTRIBUTES*, unsigned long, unsigned long, void *);
+extern "C" __declspec(dllimport) void * __stdcall CreateFileA (const char *, unsigned long, unsigned long, struct interprocess_security_attributes*, unsigned long, unsigned long, void *);
 extern "C" __declspec(dllimport) int __stdcall DeleteFileA (const char *);
 extern "C" __declspec(dllimport) void __stdcall GetSystemInfo (struct system_info *);
 extern "C" __declspec(dllimport) int __stdcall FlushViewOfFile (void *, std::size_t);
@@ -355,7 +356,7 @@
 { return MapViewOfFileEx(handle, file_access, highoffset, lowoffset, numbytes, base_addr); }
 
 static inline void *create_file(const char *name, unsigned long access, unsigned long creation_flags, unsigned long attributes = 0)
-{ return CreateFileA(name, access, file_share_read | file_share_write, 0, creation_flags, attributes, 0); }
+{ return CreateFileA(name, access, file_share_read | file_share_write | file_share_delete, 0, creation_flags, attributes, 0); }
 
 static inline bool delete_file(const char *name)
 { return 0 != DeleteFileA(name); }

Modified: branches/proto/v4/boost/interprocess/detail/workaround.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/detail/workaround.hpp (original)
+++ branches/proto/v4/boost/interprocess/detail/workaround.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,8 @@
 
 #include <boost/interprocess/detail/config_begin.hpp>
 
+#undef BOOST_DISABLE_WIN32
+
 #if !(defined BOOST_WINDOWS) || (defined BOOST_DISABLE_WIN32)
 
    #include <unistd.h>
@@ -105,8 +107,11 @@
 // defined by some very early development versions of GCC 4.3; we will
 // remove this part of the check in the near future.
 # if defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_INTERPROCESS_RVALUE_REFERENCE
-# define BOOST_INTERPROCESS_VARIADIC_TEMPLATES
+# define BOOST_INTERPROCESS_RVALUE_REFERENCE
+# define BOOST_INTERPROCESS_VARIADIC_TEMPLATES
+# if defined(__GLIBCPP__) || defined(__GLIBCXX__)
+# define BOOST_INTERPROCESS_RVALUE_PAIR
+# endif
 # endif
 #endif
 

Modified: branches/proto/v4/boost/interprocess/file_mapping.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/file_mapping.hpp (original)
+++ branches/proto/v4/boost/interprocess/file_mapping.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -79,7 +79,7 @@
    #else
    file_mapping &operator=(file_mapping &&moved)
    {
- file_mapping tmp(move(moved));
+ file_mapping tmp(detail::move_impl(moved));
       this->swap(tmp);
       return *this;
    }
@@ -160,6 +160,8 @@
    m_mode = mode;
 }
 
+///@cond
+
 inline void file_mapping::priv_close()
 {
    if(m_handle != detail::invalid_file()){
@@ -168,7 +170,6 @@
    }
 }
 
-///@cond
 
 //!Trait class to detect if a type is
 //!movable
@@ -180,6 +181,22 @@
 
 ///@endcond
 
+//!A class that stores the name of a a file
+//!and call std::remove(name) in its destructor
+//!Useful to remove temporary files in the presence
+//!of exceptions
+class remove_file_on_destroy
+{
+ const char * m_name;
+ public:
+ remove_file_on_destroy(const char *name)
+ : m_name(name)
+ {}
+
+ ~remove_file_on_destroy()
+ { std::remove(m_name); }
+};
+
 } //namespace interprocess {
 } //namespace boost {
 

Modified: branches/proto/v4/boost/interprocess/indexes/unordered_map_index.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/indexes/unordered_map_index.hpp (original)
+++ branches/proto/v4/boost/interprocess/indexes/unordered_map_index.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,6 +27,8 @@
 namespace boost {
 namespace interprocess {
 
+///@cond
+
 //!Helper class to define typedefs from
 //!IndexTraits
 template <class MapConfig>
@@ -55,6 +57,8 @@
                          key_equal, allocator_type> index_t;
 };
 
+///@endcond
+
 //!Index type based in unordered_map. Just derives from unordered_map and
 //!defines the interface needed by managed memory segments
 template <class MapConfig>

Modified: branches/proto/v4/boost/interprocess/ipc/message_queue.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/ipc/message_queue.hpp (original)
+++ branches/proto/v4/boost/interprocess/ipc/message_queue.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -368,7 +368,6 @@
 };
 
 } //namespace detail {
-/// @endcond
 
 inline message_queue::~message_queue()
 {}
@@ -611,6 +610,8 @@
 inline bool message_queue::remove(const char *name)
 { return shared_memory_object::remove(name); }
 
+/// @endcond
+
 }} //namespace boost{ namespace interprocess{
 
 #include <boost/interprocess/detail/config_end.hpp>

Modified: branches/proto/v4/boost/interprocess/managed_mapped_file.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/managed_mapped_file.hpp (original)
+++ branches/proto/v4/boost/interprocess/managed_mapped_file.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -22,6 +22,7 @@
 #include <boost/interprocess/creation_tags.hpp>
 #include <boost/interprocess/detail/file_wrapper.hpp>
 #include <boost/interprocess/detail/move.hpp>
+#include <boost/interprocess/file_mapping.hpp>
 
 namespace boost {
 namespace interprocess {
@@ -54,6 +55,9 @@
 
    basic_managed_mapped_file *get_this_pointer()
    { return this; }
+
+ private:
+ typedef typename base_t::char_ptr_holder_t char_ptr_holder_t;
    /// @endcond
 
    public: //functions
@@ -102,6 +106,16 @@
                 detail::DoOpen))
    {}
 
+ //!Connects to a created mapped file and its segment manager
+ //!in read-only mode.
+ //!This can throw.
+ basic_managed_mapped_file (open_read_only_t, const char* name,
+ const void *addr = 0)
+ : m_mfile(open_only, name, read_only, addr,
+ create_open_func_t(get_this_pointer(),
+ detail::DoOpen))
+ {}
+
    //!Moves the ownership of "moved"'s managed memory to *this.
    //!Does not throw
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
@@ -168,6 +182,21 @@
    }
 
    /// @cond
+
+ //!Tries to find a previous named allocation address. Returns a memory
+ //!buffer and the object count. If not found returned pointer is 0.
+ //!Never throws.
+ template <class T>
+ std::pair<T*, std::size_t> find (char_ptr_holder_t name)
+ {
+ if(m_mfile.get_mapped_region().get_mode() == read_only){
+ return base_t::template find_no_lock<T>(name);
+ }
+ else{
+ return base_t::template find<T>(name);
+ }
+ }
+
    private:
    managed_open_or_create_type m_mfile;
    /// @endcond

Modified: branches/proto/v4/boost/interprocess/managed_shared_memory.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/managed_shared_memory.hpp (original)
+++ branches/proto/v4/boost/interprocess/managed_shared_memory.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -57,6 +57,9 @@
 
    basic_managed_shared_memory *get_this_pointer()
    { return this; }
+
+ private:
+ typedef typename base_t::char_ptr_holder_t char_ptr_holder_t;
    /// @endcond
 
    public: //functions
@@ -109,6 +112,17 @@
    {}
 
    //!Connects to a created shared memory and its segment manager.
+ //!in read-only mode.
+ //!This can throw.
+ basic_managed_shared_memory (open_read_only_t, const char* name,
+ const void *addr = 0)
+ : base_t()
+ , base2_t(open_only, name, read_only, addr,
+ create_open_func_t(get_this_pointer(),
+ detail::DoOpen))
+ {}
+
+ //!Connects to a created shared memory and its segment manager.
    //!This can throw.
    basic_managed_shared_memory (open_only_t open_only, const char* name,
                                 const void *addr = 0)
@@ -168,6 +182,24 @@
       return base_t::template shrink_to_fit
          <basic_managed_shared_memory>(filename);
    }
+
+ /// @cond
+
+ //!Tries to find a previous named allocation address. Returns a memory
+ //!buffer and the object count. If not found returned pointer is 0.
+ //!Never throws.
+ template <class T>
+ std::pair<T*, std::size_t> find (char_ptr_holder_t name)
+ {
+ if(base2_t::get_mapped_region().get_mode() == read_only){
+ return base_t::template find_no_lock<T>(name);
+ }
+ else{
+ return base_t::template find<T>(name);
+ }
+ }
+
+ /// @endcond
 };
 
 ///@cond

Modified: branches/proto/v4/boost/interprocess/managed_windows_shared_memory.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/managed_windows_shared_memory.hpp (original)
+++ branches/proto/v4/boost/interprocess/managed_windows_shared_memory.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -57,6 +57,9 @@
 
    basic_managed_windows_shared_memory *get_this_pointer()
    { return this; }
+
+ private:
+ typedef typename base_t::char_ptr_holder_t char_ptr_holder_t;
    /// @endcond
 
    public: //functions
@@ -90,8 +93,8 @@
 
    //!Connects to a created shared memory and its segment manager.
    //!This can throw.
- basic_managed_windows_shared_memory (open_only_t open_only, const char* name,
- const void *addr = 0)
+ basic_managed_windows_shared_memory
+ (open_only_t open_only, const char* name, const void *addr = 0)
       : m_wshm(open_only, name, read_write, addr,
                 create_open_func_t(get_this_pointer(),
                 detail::DoOpen))
@@ -100,11 +103,20 @@
    //!Connects to a created shared memory and its segment manager
    //!in copy_on_write mode.
    //!This can throw.
- basic_managed_windows_shared_memory (open_copy_on_write_t, const char* name,
- const void *addr = 0)
+ basic_managed_windows_shared_memory
+ (open_copy_on_write_t, const char* name, const void *addr = 0)
       : m_wshm(open_only, name, copy_on_write, addr,
- create_open_func_t(get_this_pointer(),
- detail::DoOpen))
+ create_open_func_t(get_this_pointer(), detail::DoOpen))
+ {}
+
+ //!Connects to a created shared memory and its segment manager
+ //!in read-only mode.
+ //!This can throw.
+ basic_managed_windows_shared_memory
+ (open_read_only_t, const char* name, const void *addr = 0)
+ : base_t()
+ , m_wshm(open_only, name, read_only, addr,
+ create_open_func_t(get_this_pointer(), detail::DoOpen))
    {}
 
    //!Moves the ownership of "moved"'s managed memory to *this.
@@ -146,6 +158,21 @@
       m_wshm.swap(other.m_wshm);
    }
    /// @cond
+
+ //!Tries to find a previous named allocation address. Returns a memory
+ //!buffer and the object count. If not found returned pointer is 0.
+ //!Never throws.
+ template <class T>
+ std::pair<T*, std::size_t> find (char_ptr_holder_t name)
+ {
+ if(m_wshm.get_mapped_region().get_mode() == read_only){
+ return base_t::template find_no_lock<T>(name);
+ }
+ else{
+ return base_t::template find<T>(name);
+ }
+ }
+
    private:
    detail::managed_open_or_create_impl<windows_shared_memory, false> m_wshm;
    /// @endcond

Modified: branches/proto/v4/boost/interprocess/mapped_region.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/mapped_region.hpp (original)
+++ branches/proto/v4/boost/interprocess/mapped_region.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -109,6 +109,10 @@
    //!mapped memory. Never throws.
    offset_t get_offset() const;
 
+ //!Returns the mode of the mapping used to contruct the mapped file.
+ //!Never throws.
+ mode_t get_mode() const;
+
    //!Flushes to the disk a byte range within the mapped memory.
    //!Never throws
    bool flush(std::size_t mapping_offset = 0, std::size_t numbytes = 0);
@@ -137,6 +141,7 @@
    std::size_t m_size;
    offset_t m_offset;
    offset_t m_extra_offset;
+ mode_t m_mode;
    #if (defined BOOST_WINDOWS) && !(defined BOOST_DISABLE_WIN32)
    file_handle_t m_file_mapping_hnd;
    #endif
@@ -147,6 +152,8 @@
    /// @endcond
 };
 
+///@cond
+
 inline void swap(mapped_region &x, mapped_region &y)
 { x.swap(y); }
 
@@ -164,16 +171,19 @@
 inline std::size_t mapped_region::get_size() const
 { return m_size; }
 
-inline offset_t mapped_region::get_offset() const
+inline offset_t mapped_region::get_offset() const
 { return m_offset; }
 
+inline mode_t mapped_region::get_mode() const
+{ return m_mode; }
+
 inline void* mapped_region::get_address() const
 { return m_base; }
 
 #if (defined BOOST_WINDOWS) && !(defined BOOST_DISABLE_WIN32)
 
 inline mapped_region::mapped_region()
- : m_base(0), m_size(0), m_offset(0), m_extra_offset(0)
+ : m_base(0), m_size(0), m_offset(0), m_extra_offset(0), m_mode(read_only)
    , m_file_mapping_hnd(detail::invalid_file())
 {}
 
@@ -181,12 +191,14 @@
 inline mapped_region::mapped_region(detail::moved_object<mapped_region> other)
    : m_base(0), m_size(0), m_offset(0)
    , m_extra_offset(0)
+ , m_mode(read_only)
    , m_file_mapping_hnd(detail::invalid_file())
 { this->swap(other.get()); }
 #else
 inline mapped_region::mapped_region(mapped_region &&other)
    : m_base(0), m_size(0), m_offset(0)
    , m_extra_offset(0)
+ , m_mode(read_only)
    , m_file_mapping_hnd(detail::invalid_file())
 { this->swap(other); }
 #endif
@@ -206,7 +218,7 @@
    ,offset_t offset
    ,std::size_t size
    ,const void *address)
- : m_base(0), m_size(0), m_offset(0), m_extra_offset(0)
+ : m_base(0), m_size(0), m_offset(0), m_extra_offset(0), m_mode(mode)
    , m_file_mapping_hnd(detail::invalid_file())
 {
    mapping_handle_t mhandle = mapping.get_mapping_handle();
@@ -378,16 +390,16 @@
 #else //#if (defined BOOST_WINDOWS) && !(defined BOOST_DISABLE_WIN32)
 
 inline mapped_region::mapped_region()
- : m_base(MAP_FAILED), m_size(0), m_offset(0), m_extra_offset(0)
+ : m_base(MAP_FAILED), m_size(0), m_offset(0), m_extra_offset(0), m_mode(read_only)
 {}
 
 #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
 inline mapped_region::mapped_region(detail::moved_object<mapped_region> other)
- : m_base(MAP_FAILED), m_size(0), m_offset(0), m_extra_offset(0)
+ : m_base(MAP_FAILED), m_size(0), m_offset(0), m_extra_offset(0), m_mode(read_only)
 { this->swap(other.get()); }
 #else
 inline mapped_region::mapped_region(mapped_region &&other)
- : m_base(MAP_FAILED), m_size(0), m_offset(0)
+ : m_base(MAP_FAILED), m_size(0), m_offset(0), m_mode(read_only)
    , m_extra_offset(0)
 { this->swap(other); }
 #endif
@@ -403,7 +415,7 @@
    offset_t offset,
    std::size_t size,
    const void *address)
- : m_base(MAP_FAILED), m_size(0), m_offset(0), m_extra_offset(0)
+ : m_base(MAP_FAILED), m_size(0), m_offset(0), m_extra_offset(0), m_mode(mode)
 {
    if(size == 0){
 // offset_t filesize = lseek64
@@ -540,13 +552,12 @@
    detail::do_swap(this->m_size, other.m_size);
    detail::do_swap(this->m_offset, other.m_offset);
    detail::do_swap(this->m_extra_offset, other.m_extra_offset);
+ detail::do_swap(this->m_mode, other.m_mode);
    #if (defined BOOST_WINDOWS) && !(defined BOOST_DISABLE_WIN32)
    detail::do_swap(this->m_file_mapping_hnd, other.m_file_mapping_hnd);
    #endif
 }
 
-/// @cond
-
 //!No-op functor
 struct null_mapped_region_function
 {

Modified: branches/proto/v4/boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp (original)
+++ branches/proto/v4/boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -577,7 +577,7 @@
                         void *reuse_ptr, std::size_t sizeof_object)
 {
    if(!sizeof_object)
- return std::pair<void *, bool>(0, 0);
+ return std::pair<void *, bool>((void*)0, 0);
    if(command & try_shrink_in_place){
       bool success = algo_impl_t::try_shrink
          ( this, reuse_ptr, limit_objects*sizeof_object
@@ -596,7 +596,7 @@
                        void *reuse_ptr, std::size_t sizeof_object)
 {
    command &= ~expand_bwd;
- if(!command) return std::pair<void *, bool>(0, false);
+ if(!command) return std::pair<void *, bool>((void*)0, false);
 
    std::pair<void*, bool> ret;
    std::size_t max_count = m_header.m_size/sizeof_object;
@@ -769,7 +769,7 @@
    received_size = 0;
 
    if(limit_size > preferred_size)
- return return_type(0, false);
+ return return_type((void*)0, false);
 
    //Number of units to request (including block_ctrl header)
    std::size_t nunits = detail::get_rounded_size(preferred_size, Alignment)/Alignment + BlockCtrlUnits;
@@ -819,7 +819,7 @@
       if(biggest_block){
          std::size_t limit_units = detail::get_rounded_size(limit_size, Alignment)/Alignment + BlockCtrlUnits;
          if(biggest_block->m_size < limit_units)
- return return_type(0, false);
+ return return_type((void*)0, false);
 
          received_size = biggest_block->m_size*Alignment - BlockCtrlUnits;
          void *ret = this->priv_check_and_allocate
@@ -836,7 +836,7 @@
       algo_impl_t::assert_alignment(ret.first);
       return ret;
    }
- return return_type(0, false);
+ return return_type((void*)0, false);
 }
 
 template<class MutexFamily, class VoidPointer> inline
@@ -888,13 +888,13 @@
    }
 
    if(prev_block == root || !prev_block->m_next)
- return prev_pair_t(0, 0);
+ return prev_pair_t((block_ctrl*)0, (block_ctrl*)0);
 
    //Check if the previous block is in the managed segment
    std::size_t distance = (detail::char_ptr_cast(prev_block) - detail::char_ptr_cast(this))/Alignment;
    if(distance >= (m_header.m_size/Alignment)){
       //"previous_block" does not exist so we can't expand "block"
- return prev_pair_t(0, 0);
+ return prev_pair_t((block_ctrl*)0, (block_ctrl*)0);
    }
    return prev_pair_t(prev_2_block, prev_block);
 }

Modified: branches/proto/v4/boost/interprocess/mem_algo/rbtree_best_fit.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/mem_algo/rbtree_best_fit.hpp (original)
+++ branches/proto/v4/boost/interprocess/mem_algo/rbtree_best_fit.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -352,6 +352,8 @@
    static const std::size_t PayloadPerAllocation = AllocatedCtrlBytes - UsableByPreviousChunk;
 };
 
+/// @cond
+
 template<class MutexFamily, class VoidPointer, std::size_t MemAlignment>
 inline std::size_t rbtree_best_fit<MutexFamily, VoidPointer, MemAlignment>
    ::priv_first_block_offset(const void *this_ptr, std::size_t extra_hdr_bytes)
@@ -664,7 +666,7 @@
                         void *reuse_ptr, std::size_t sizeof_object)
 {
    if(!sizeof_object)
- return std::pair<void *, bool>(0, 0);
+ return std::pair<void *, bool>((void *)0, 0);
    if(command & try_shrink_in_place){
       bool success = algo_impl_t::try_shrink
          ( this, reuse_ptr, limit_objects*sizeof_object
@@ -930,7 +932,7 @@
    received_size = 0;
 
    if(limit_size > preferred_size)
- return return_type(0, false);
+ return return_type((void*)0, false);
 
    //Number of units to request (including block_ctrl header)
    std::size_t preferred_units = priv_get_total_units(preferred_size);
@@ -969,7 +971,7 @@
          (command, limit_size, preferred_size, received_size, reuse_ptr, false, backwards_multiple), true);
    }
 
- return return_type(0, false);
+ return return_type((void*)0, false);
 }
 
 template<class MutexFamily, class VoidPointer, std::size_t MemAlignment>
@@ -1332,6 +1334,8 @@
    priv_mark_as_free_block(block_to_insert);
 }
 
+/// @endcond
+
 } //namespace interprocess {
 } //namespace boost {
 

Modified: branches/proto/v4/boost/interprocess/segment_manager.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/segment_manager.hpp (original)
+++ branches/proto/v4/boost/interprocess/segment_manager.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,6 +32,8 @@
 #include <boost/interprocess/exceptions.hpp>
 #include <boost/interprocess/allocators/allocator.hpp>
 #include <boost/interprocess/smart_ptr/deleter.hpp>
+#include <boost/interprocess/detail/move.hpp>
+#include <boost/interprocess/sync/scoped_lock.hpp>
 #include <cstddef> //std::size_t
 #include <string> //char_traits
 #include <new> //std::nothrow
@@ -292,7 +294,7 @@
       block_header_t *ctrl_data = block_header_t::block_header_from_value(object, table.size, table.alignment);
 
       //-------------------------------
- //boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ //scoped_lock<rmutex> guard(m_header);
       //-------------------------------
 
       if(ctrl_data->allocation_type() != anonymous_type){
@@ -423,10 +425,10 @@
       void *ret;
 
       if(name == reinterpret_cast<const CharType*>(-1)){
- ret = priv_generic_find<char> (typeid(T).name(), m_header.m_unique_index, table, size, is_intrusive_t());
+ ret = priv_generic_find<char> (typeid(T).name(), m_header.m_unique_index, table, size, is_intrusive_t(), true);
       }
       else{
- ret = priv_generic_find<CharType> (name, m_header.m_named_index, table, size, is_intrusive_t());
+ ret = priv_generic_find<CharType> (name, m_header.m_named_index, table, size, is_intrusive_t(), true);
       }
       return std::pair<T*, std::size_t>(static_cast<T*>(ret), size);
    }
@@ -439,7 +441,7 @@
    {
       detail::placement_destroy<T> table;
       std::size_t size;
- void *ret = priv_generic_find<char>(name, m_header.m_unique_index, table, size, is_intrusive_t());
+ void *ret = priv_generic_find<char>(name, m_header.m_unique_index, table, size, is_intrusive_t(), true);
       return std::pair<T*, std::size_t>(static_cast<T*>(ret), size);
    }
 
@@ -502,7 +504,7 @@
    //!executing the object function call*/
    template <class Func>
    void atomic_func(Func &f)
- { boost::interprocess::scoped_lock<rmutex> guard(m_header); f(); }
+ { scoped_lock<rmutex> guard(m_header); f(); }
 
    //!Destroys a previously created unique instance.
    //!Returns false if the object was not present.
@@ -559,7 +561,7 @@
    void reserve_named_objects(std::size_t num)
    {
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(m_header);
       //-------------------------------
       m_header.m_named_index.reserve(num);
    }
@@ -570,7 +572,7 @@
    void reserve_unique_objects(std::size_t num)
    {
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(m_header);
       //-------------------------------
       m_header.m_unique_index.reserve(num);
    }
@@ -580,7 +582,7 @@
    void shrink_to_fit_indexes()
    {
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(m_header);
       //-------------------------------
       m_header.m_named_index.shrink_to_fit();
       m_header.m_unique_index.shrink_to_fit();
@@ -591,7 +593,7 @@
    std::size_t get_num_named_objects()
    {
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(m_header);
       //-------------------------------
       return m_header.m_named_index.size();
    }
@@ -601,7 +603,7 @@
    std::size_t get_num_unique_objects()
    {
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(m_header);
       //-------------------------------
       return m_header.m_unique_index.size();
    }
@@ -688,6 +690,39 @@
          (priv_generic_construct(name, num, try2find, dothrow, table));
    }
 
+ //!Tries to find a previous named allocation. Returns the address
+ //!and the object count. On failure the first member of the
+ //!returned pair is 0.
+ template <class T>
+ std::pair<T*, std::size_t> find_no_lock (const CharType* name)
+ {
+ //The name can't be null, no anonymous object can be found by name
+ assert(name != 0);
+ detail::placement_destroy<T> table;
+ std::size_t size;
+ void *ret;
+
+ if(name == reinterpret_cast<const CharType*>(-1)){
+ ret = priv_generic_find<char> (typeid(T).name(), m_header.m_unique_index, table, size, is_intrusive_t(), false);
+ }
+ else{
+ ret = priv_generic_find<CharType> (name, m_header.m_named_index, table, size, is_intrusive_t(), false);
+ }
+ return std::pair<T*, std::size_t>(static_cast<T*>(ret), size);
+ }
+
+ //!Tries to find a previous unique allocation. Returns the address
+ //!and the object count. On failure the first member of the
+ //!returned pair is 0.
+ template <class T>
+ std::pair<T*, std::size_t> find_no_lock (const detail::unique_instance_t* name)
+ {
+ detail::placement_destroy<T> table;
+ std::size_t size;
+ void *ret = priv_generic_find<char>(name, m_header.m_unique_index, table, size, is_intrusive_t(), false);
+ return std::pair<T*, std::size_t>(static_cast<T*>(ret), size);
+ }
+
    private:
    void *priv_generic_construct(const CharType *name,
                          std::size_t num,
@@ -790,7 +825,8 @@
        IndexType<detail::index_config<CharT, MemoryAlgorithm> > &index,
        detail::in_place_interface &table,
        std::size_t &length,
- detail::true_ is_intrusive)
+ detail::true_ is_intrusive,
+ bool use_lock)
    {
       (void)is_intrusive;
       typedef IndexType<detail::index_config<CharT, MemoryAlgorithm> > index_type;
@@ -798,7 +834,7 @@
       typedef typename index_type::iterator index_it;
 
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(priv_get_lock(use_lock));
       //-------------------------------
       //Find name in index
       detail::intrusive_compare_key<CharT> key
@@ -829,7 +865,8 @@
        IndexType<detail::index_config<CharT, MemoryAlgorithm> > &index,
        detail::in_place_interface &table,
        std::size_t &length,
- detail::false_ is_intrusive)
+ detail::false_ is_intrusive,
+ bool use_lock)
    {
       (void)is_intrusive;
       typedef IndexType<detail::index_config<CharT, MemoryAlgorithm> > index_type;
@@ -837,7 +874,7 @@
       typedef typename index_type::iterator index_it;
 
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(priv_get_lock(use_lock));
       //-------------------------------
       //Find name in index
       index_it it = index.find(key_type(name, std::char_traits<CharT>::length(name)));
@@ -900,7 +937,7 @@
       typedef typename index_type::value_type intrusive_value_type;
       
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(m_header);
       //-------------------------------
       //Find name in index
       detail::intrusive_compare_key<CharT> key
@@ -950,7 +987,7 @@
       typedef typename index_type::key_type key_type;
 
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(m_header);
       //-------------------------------
       //Try to find the name in the index
       index_it it = index.find(key_type (name,
@@ -1038,7 +1075,7 @@
       typedef std::pair<index_it, bool> index_ib;
 
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(m_header);
       //-------------------------------
       //Insert the node. This can throw.
       //First, we want to know if the key is already present before
@@ -1164,7 +1201,7 @@
       typedef std::pair<index_it, bool> index_ib;
 
       //-------------------------------
- boost::interprocess::scoped_lock<rmutex> guard(m_header);
+ scoped_lock<rmutex> guard(m_header);
       //-------------------------------
       //Insert the node. This can throw.
       //First, we want to know if the key is already present before
@@ -1272,6 +1309,20 @@
 
    typedef typename MemoryAlgorithm::mutex_family::recursive_mutex_type rmutex;
 
+ #ifdef BOOST_INTERPROCESS_RVALUE_REFERENCE
+ scoped_lock<rmutex>
+ #else
+ detail::move_return<scoped_lock<rmutex> >
+ #endif
+ priv_get_lock(bool use_lock)
+ {
+ scoped_lock<rmutex> local(m_header, defer_lock);
+ if(use_lock){
+ local.lock();
+ }
+ return local;
+ }
+
    //!This struct includes needed data and derives from
    //!rmutex to allow EBO when using null interprocess_mutex
    struct header_t

Modified: branches/proto/v4/boost/interprocess/shared_memory_object.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/shared_memory_object.hpp (original)
+++ branches/proto/v4/boost/interprocess/shared_memory_object.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -99,7 +99,7 @@
    #else
    shared_memory_object &operator=(shared_memory_object &&moved)
    {
- shared_memory_object tmp(move(moved));
+ shared_memory_object tmp(detail::move_impl(moved));
       this->swap(tmp);
       return *this;
    }
@@ -152,6 +152,8 @@
    /// @endcond
 };
 
+/// @cond
+
 inline shared_memory_object::shared_memory_object()
    : m_handle(file_handle_t(detail::invalid_file()))
 {}
@@ -343,8 +345,6 @@
 
 #endif
 
-///@cond
-
 //!Trait class to detect if a type is
 //!movable
 template<>
@@ -355,6 +355,22 @@
 
 ///@endcond
 
+//!A class that stores the name of a shared memory
+//!and calls shared_memory_object::remove(name) in its destructor
+//!Useful to remove temporary shared memory objects in the presence
+//!of exceptions
+class remove_shared_memory_on_destroy
+{
+ const char * m_name;
+ public:
+ remove_shared_memory_on_destroy(const char *name)
+ : m_name(name)
+ {}
+
+ ~remove_shared_memory_on_destroy()
+ { shared_memory_object::remove(m_name); }
+};
+
 } //namespace interprocess {
 } //namespace boost {
 

Modified: branches/proto/v4/boost/interprocess/smart_ptr/detail/shared_count.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/smart_ptr/detail/shared_count.hpp (original)
+++ branches/proto/v4/boost/interprocess/smart_ptr/detail/shared_count.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -73,6 +73,11 @@
    {}
 
    template <class Ptr>
+ shared_count(const shared_count &other_shared_count, const Ptr &p)
+ : m_px(p), m_pi(other_shared_count.m_pi)
+ {}
+
+ template <class Ptr>
    shared_count(const Ptr &p, const VoidAllocator &a, Deleter d)
       : m_px(p), m_pi(0)
    {

Modified: branches/proto/v4/boost/interprocess/smart_ptr/detail/sp_counted_base.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/smart_ptr/detail/sp_counted_base.hpp (original)
+++ branches/proto/v4/boost/interprocess/smart_ptr/detail/sp_counted_base.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,14 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2007-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/interprocess for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_INTERPROCESS_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED
 #define BOOST_INTERPROCESS_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED
 

Modified: branches/proto/v4/boost/interprocess/smart_ptr/enable_shared_from_this.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/smart_ptr/enable_shared_from_this.hpp (original)
+++ branches/proto/v4/boost/interprocess/smart_ptr/enable_shared_from_this.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,6 +27,10 @@
 namespace boost{
 namespace interprocess{
 
+//!This class is used as a base class that allows a shared_ptr to the current
+//!object to be obtained from within a member function.
+//!enable_shared_from_this defines two member functions called shared_from_this
+//!that return a shared_ptr<T> and shared_ptr<T const>, depending on constness, to this.
 template<class T, class A, class D>
 class enable_shared_from_this
 {
@@ -60,7 +64,6 @@
       return p;
    }
 
- private:
    /// @cond
    typedef T element_type;
    mutable weak_ptr<element_type, A, D> _internal_weak_this;

Modified: branches/proto/v4/boost/interprocess/smart_ptr/shared_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/smart_ptr/shared_ptr.hpp (original)
+++ branches/proto/v4/boost/interprocess/smart_ptr/shared_ptr.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,6 +24,7 @@
 #include <boost/assert.hpp>
 #include <boost/interprocess/smart_ptr/detail/shared_count.hpp>
 #include <boost/interprocess/detail/mpl.hpp>
+#include <boost/interprocess/detail/move.hpp>
 #include <boost/interprocess/detail/type_traits.hpp>
 #include <boost/interprocess/allocators/allocator.hpp>
 #include <boost/interprocess/smart_ptr/deleter.hpp>
@@ -47,19 +48,21 @@
 
 template<class T, class VoidAllocator, class Deleter>
 inline void sp_enable_shared_from_this
- (shared_count<T, VoidAllocator, Deleter> const & pn,
- const typename pointer_to_other <typename shared_count<T, VoidAllocator, Deleter>::pointer,
- enable_shared_from_this<T, VoidAllocator, Deleter> >::type &pe,
- const typename shared_count<T, VoidAllocator, Deleter>::pointer &px)
+ (shared_count<T, VoidAllocator, Deleter> const & pn
+ ,enable_shared_from_this<T, VoidAllocator, Deleter> *pe
+ ,T *ptr)
+
 {
- if(pe != 0)
+ (void)ptr;
+ if(pe != 0){
       pe->_internal_weak_this._internal_assign(pn);
+ }
 }
-/*
+
 template<class T, class VoidAllocator, class Deleter>
 inline void sp_enable_shared_from_this(shared_count<T, VoidAllocator, Deleter> const &, ...)
 {}
-*/
+
 } // namespace detail
 
 //!shared_ptr stores a pointer to a dynamically allocated object.
@@ -122,9 +125,17 @@
       typedef typename detail::pointer_to_other<pointer, T>::type ParameterPointer;
       BOOST_STATIC_ASSERT((detail::is_same<pointer, ParameterPointer>::value) ||
                           (detail::is_pointer<pointer>::value));
- //detail::sp_enable_shared_from_this( m_pn, p, p );
+ detail::sp_enable_shared_from_this<T, VoidAllocator, Deleter>( m_pn, detail::get_pointer(p), detail::get_pointer(p) );
    }
 
+
+ //!Constructs a shared_ptr that shares ownership with r and stores p.
+ //!Postconditions: get() == p && use_count() == r.use_count().
+ //!Throws: nothing.
+ shared_ptr(const shared_ptr &other, const pointer &p)
+ : m_pn(other.m_pn, p)
+ {}
+
    //!If r is empty, constructs an empty shared_ptr. Otherwise, constructs
    //!a shared_ptr that shares ownership with r. Never throws.
    template<class Y>
@@ -139,6 +150,19 @@
       : m_pn(r.m_pn) // may throw
    {}
 
+ //!Move-Constructs a shared_ptr that takes ownership of other resource and
+ //!other is put in default-constructed state.
+ //!Throws: nothing.
+ #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
+ explicit shared_ptr(detail::moved_object<shared_ptr> other)
+ : m_pn()
+ { this->swap(other.get()); }
+ #else
+ explicit shared_ptr(shared_ptr &&other)
+ : m_pn()
+ { this->swap(other); }
+ #endif
+
    /// @cond
    template<class Y>
    shared_ptr(shared_ptr<Y, VoidAllocator, Deleter> const & r, detail::static_cast_tag)
@@ -172,6 +196,22 @@
       return *this;
    }
 
+ //!Move-assignment. Equivalent to shared_ptr(other).swap(*this).
+ //!Never throws
+ #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
+ shared_ptr & operator=(detail::moved_object<shared_ptr> other) // never throws
+ {
+ this_type(other).swap(*this);
+ return *this;
+ }
+ #else
+ shared_ptr & operator=(shared_ptr &&other) // never throws
+ {
+ this_type(other).swap(*this);
+ return *this;
+ }
+ #endif
+
    //!This is equivalent to:
    //!this_type().swap(*this);
    void reset()
@@ -192,6 +232,12 @@
       this_type(p, a, d).swap(*this);
    }
 
+ template<class Y>
+ void reset(shared_ptr<Y, VoidAllocator, Deleter> const & r, const pointer &p)
+ {
+ this_type(r, p).swap(*this);
+ }
+
    //!Returns a reference to the
    //!pointed type
    reference operator* () const // never throws
@@ -333,6 +379,18 @@
    get_deleter(shared_ptr<T, VoidAllocator, Deleter> const & p)
 { return static_cast<Deleter *>(p._internal_get_deleter(typeid(Deleter))); }
 */
+
+/// @cond
+
+//!This class has move constructor
+template <class T, class VA, class D>
+struct is_movable<boost::interprocess::shared_ptr<T, VA, D> >
+{
+ enum { value = true };
+};
+
+/// @endcond
+
 } // namespace interprocess
 
 /// @cond

Modified: branches/proto/v4/boost/interprocess/smart_ptr/unique_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/smart_ptr/unique_ptr.hpp (original)
+++ branches/proto/v4/boost/interprocess/smart_ptr/unique_ptr.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -142,7 +142,7 @@
    //!
    //!After the construction, u no longer owns a pointer.
    //![ Note: The deleter constructor can be implemented with
- //!std::forward<D>. -end note ]
+ //!std::detail::forward_impl<D>. -end note ]
    //!
    //!Postconditions: get() == value u.get() had before the construction.
    //!get_deleter() returns a reference to the internally stored deleter which
@@ -152,11 +152,11 @@
    //!Throws: nothing.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
    unique_ptr(detail::moved_object<unique_ptr> u)
- : ptr_(u.get().release(), move(u.get().get_deleter()))
+ : ptr_(u.get().release(), detail::move_impl(u.get().get_deleter()))
    {}
    #else
    unique_ptr(unique_ptr &&u)
- : ptr_(u.release(), forward<D>(u.get_deleter()))
+ : ptr_(u.release(), detail::forward_impl<D>(u.get_deleter()))
    {}
    #endif
 
@@ -192,12 +192,12 @@
             ,
             nat
>::type = nat())
- : ptr_(const_cast<unique_ptr<U,E>&>(u.get()).release(), move(u.get().get_deleter()))
+ : ptr_(const_cast<unique_ptr<U,E>&>(u.get()).release(), detail::move_impl(u.get().get_deleter()))
    {}
    #else
    template <class U, class E>
    unique_ptr(unique_ptr<U, E> && u,
- typename boost::enable_if_c<
+ typename detail::enable_if_c<
             detail::is_convertible<typename unique_ptr<U, E>::pointer, pointer>::value &&
             detail::is_convertible<E, D>::value &&
             (
@@ -207,7 +207,7 @@
             ,
             nat
>::type = nat())
- : ptr_(const_cast<unique_ptr<U,E>&>(u).release(), forward<D>(u.get_deleter()))
+ : ptr_(const_cast<unique_ptr<U,E>&>(u).release(), detail::forward_impl<D>(u.get_deleter()))
    {}
    #endif
 
@@ -234,14 +234,14 @@
    unique_ptr& operator=(detail::moved_object<unique_ptr> u)
    {
       reset(u.get().release());
- ptr_.second() = move(u.get().get_deleter());
+ ptr_.second() = detail::move_impl(u.get().get_deleter());
       return *this;
    }
    #else
- unique_ptr(unique_ptr && u)
+ unique_ptr& operator=(unique_ptr && u)
    {
       reset(u.release());
- ptr_.second() = move(u.get_deleter());
+ ptr_.second() = detail::move_impl(u.get_deleter());
       return *this;
    }
    #endif
@@ -265,14 +265,14 @@
    unique_ptr& operator=(detail::moved_object<unique_ptr<U, E> > mu)
    {
       reset(mu.get().release());
- ptr_.second() = move(mu.get().get_deleter());
+ ptr_.second() = detail::move_impl(mu.get().get_deleter());
       return *this;
    }
    #else
- unique_ptr(unique_ptr<U, E> && u)
+ unique_ptr& operator=(unique_ptr<U, E> && u)
    {
       reset(u.release());
- ptr_.second() = move(u.get_deleter());
+ ptr_.second() = detail::move_impl(u.get_deleter());
       return *this;
    }
    #endif
@@ -597,9 +597,13 @@
 //!with boost::interproces::deleter from a pointer
 //!of type T that has been allocated in the passed managed segment
 template<class T, class ManagedMemory>
+#ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
 inline typename detail::return_type
    <typename managed_unique_ptr<T, ManagedMemory>::type
>::type
+#else
+typename managed_unique_ptr<T, ManagedMemory>::type
+#endif
    make_managed_unique_ptr(T *constructed_object, ManagedMemory &managed_memory)
 {
    typename managed_unique_ptr<T, ManagedMemory>::type to_return

Modified: branches/proto/v4/boost/interprocess/smart_ptr/weak_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/smart_ptr/weak_ptr.hpp (original)
+++ branches/proto/v4/boost/interprocess/smart_ptr/weak_ptr.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -200,7 +200,10 @@
    
    template<class Y>
    void _internal_assign(const detail::shared_count<Y, A, D> & pn2)
- { m_pn = pn2; }
+ {
+
+ m_pn = pn2;
+ }
 
    private:
 

Modified: branches/proto/v4/boost/interprocess/sync/emulation/interprocess_condition.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/sync/emulation/interprocess_condition.hpp (original)
+++ branches/proto/v4/boost/interprocess/sync/emulation/interprocess_condition.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,7 +9,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 #include <boost/interprocess/detail/posix_time_types_wrk.hpp>
-
+#include <boost/interprocess/detail/move.hpp>
 namespace boost {
 namespace interprocess {
 
@@ -94,11 +94,11 @@
       InternalLock lock;
       if(tout_enabled){
          InternalLock dummy(m_enter_mut, abs_time);
- lock = move(dummy);
+ lock = detail::move_impl(dummy);
       }
       else{
          InternalLock dummy(m_enter_mut);
- lock = move(dummy);
+ lock = detail::move_impl(dummy);
       }
 
       if(!lock)
@@ -161,11 +161,11 @@
          InternalLock lock;
          if(tout_enabled){
             InternalLock dummy(m_check_mut, abs_time);
- lock = move(dummy);
+ lock = detail::move_impl(dummy);
          }
          else{
             InternalLock dummy(m_check_mut);
- lock = move(dummy);
+ lock = detail::move_impl(dummy);
          }
 
          if(!lock)

Modified: branches/proto/v4/boost/interprocess/sync/file_lock.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/sync/file_lock.hpp (original)
+++ branches/proto/v4/boost/interprocess/sync/file_lock.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,6 +32,8 @@
 //!A file lock, is a mutual exclusion utility similar to a mutex using a
 //!file. A file lock has sharable and exclusive locking capabilities and
 //!can be used with scoped_lock and sharable_lock classes.
+//!A file lock can't guarantee synchronization between threads of the same
+//!process so just use file locks to synchronize threads from different processes.
 class file_lock
 {
    /// @cond

Modified: branches/proto/v4/boost/interprocess/sync/interprocess_condition.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/sync/interprocess_condition.hpp (original)
+++ branches/proto/v4/boost/interprocess/sync/interprocess_condition.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -50,6 +50,8 @@
 
 class named_condition;
 
+//!This class is a condition variable that can be placed in shared memory or
+//!memory mapped files.
 class interprocess_condition
 {
    /// @cond

Modified: branches/proto/v4/boost/interprocess/sync/interprocess_upgradable_mutex.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/sync/interprocess_upgradable_mutex.hpp (original)
+++ branches/proto/v4/boost/interprocess/sync/interprocess_upgradable_mutex.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -266,6 +266,8 @@
    /// @endcond
 };
 
+/// @cond
+
 template <int Dummy>
 const unsigned interprocess_upgradable_mutex::base_constants_t<Dummy>::max_readers;
 
@@ -633,8 +635,9 @@
    return true;
 }
 
-} //namespace interprocess {
+/// @endcond
 
+} //namespace interprocess {
 } //namespace boost {
 
 

Modified: branches/proto/v4/boost/interprocess/sync/named_condition.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/sync/named_condition.hpp (original)
+++ branches/proto/v4/boost/interprocess/sync/named_condition.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -40,6 +40,9 @@
 namespace detail{ class interprocess_tester; }
 /// @endcond
 
+//! A global condition variable that can be created by name.
+//! This condition variable is designed to work with named_mutex and
+//! can't be placed in shared memory or memory mapped files.
 class named_condition
 {
    /// @cond
@@ -162,7 +165,7 @@
    {
       //lock internal before unlocking external to avoid race with a notifier
       scoped_lock<interprocess_mutex> internal_lock(*this->mutex(), abs_time);
- if(!external_unlock) return false;
+ if(!internal_lock) return false;
       lock_inverter<Lock> inverted_lock(lock);
       scoped_lock<lock_inverter<Lock> > external_unlock(inverted_lock);
 
@@ -183,6 +186,8 @@
    /// @endcond
 };
 
+/// @cond
+
 inline named_condition::~named_condition()
 {}
 
@@ -329,6 +334,8 @@
 inline bool named_condition::remove(const char *name)
 { return shared_memory_object::remove(name); }
 
+/// @endcond
+
 } //namespace interprocess
 } //namespace boost
 

Modified: branches/proto/v4/boost/interprocess/sync/named_recursive_mutex.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/sync/named_recursive_mutex.hpp (original)
+++ branches/proto/v4/boost/interprocess/sync/named_recursive_mutex.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -108,6 +108,8 @@
    /// @endcond
 };
 
+/// @cond
+
 inline named_recursive_mutex::~named_recursive_mutex()
 {}
 
@@ -159,6 +161,8 @@
 inline bool named_recursive_mutex::remove(const char *name)
 { return shared_memory_object::remove(name); }
 
+/// @endcond
+
 } //namespace interprocess {
 } //namespace boost {
 

Modified: branches/proto/v4/boost/interprocess/sync/named_upgradable_mutex.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/sync/named_upgradable_mutex.hpp (original)
+++ branches/proto/v4/boost/interprocess/sync/named_upgradable_mutex.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -233,6 +233,8 @@
    /// @endcond
 };
 
+/// @cond
+
 inline named_upgradable_mutex::~named_upgradable_mutex()
 {}
 
@@ -339,8 +341,9 @@
 inline bool named_upgradable_mutex::remove(const char *name)
 { return shared_memory_object::remove(name); }
 
-} //namespace interprocess {
+/// @endcond
 
+} //namespace interprocess {
 } //namespace boost {
 
 #include <boost/interprocess/detail/config_end.hpp>

Modified: branches/proto/v4/boost/interprocess/sync/scoped_lock.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/sync/scoped_lock.hpp (original)
+++ branches/proto/v4/boost/interprocess/sync/scoped_lock.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -122,15 +122,16 @@
    //! to thisscoped_lock with no blocking. If the scop scoped_lock does not
    //! own the mutex, then neither will this scoped_lock. Only a moved
    //! scoped_lock's will match this signature. An non-moved scoped_lock
- //! can be moved with the expression: "move(lock);". This
+ //! can be moved with the expression: "detail::move_impl(lock);". This
    //! constructor does not alter the state of the mutex, only potentially
    //! who owns it.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- explicit scoped_lock(detail::moved_object<scoped_lock<Mutex> > scop)
+ scoped_lock(detail::moved_object<scoped_lock<Mutex> > scop)
       : mp_mutex(0), m_locked(scop.get().owns())
    { mp_mutex = scop.get().release(); }
    #else
- explicit scoped_lock(scoped_lock<Mutex> &&scop)
+
+ scoped_lock(scoped_lock &&scop)
       : mp_mutex(0), m_locked(scop.owns())
    { mp_mutex = scop.release(); }
    #endif
@@ -144,11 +145,11 @@
    //! unlocking upgr. If upgr is unlocked, then this scoped_lock will be
    //! unlocked as well. Only a moved upgradable_lock's will match this
    //! signature. An non-moved upgradable_lock can be moved with
- //! the expression: "move(lock);" This constructor may block if
+ //! the expression: "detail::move_impl(lock);" This constructor may block if
    //! other threads hold a sharable_lock on this mutex (sharable_lock's can
    //! share ownership with an upgradable_lock).
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- explicit scoped_lock(detail::moved_object<upgradable_lock<Mutex> > upgr)
+ scoped_lock(detail::moved_object<upgradable_lock<Mutex> > upgr)
       : mp_mutex(0), m_locked(false)
    {
       upgradable_lock<mutex_type> &u_lock = upgr.get();
@@ -159,7 +160,7 @@
       mp_mutex = u_lock.release();
    }
    #else
- explicit scoped_lock(upgradable_lock<Mutex> &&upgr)
+ scoped_lock(upgradable_lock<Mutex> &&upgr)
       : mp_mutex(0), m_locked(false)
    {
       upgradable_lock<mutex_type> &u_lock = upgr;
@@ -326,7 +327,7 @@
    //! mutex after the assignment (and scop will not), but the mutex's lock
    //! count will be decremented by one.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- scoped_lock &operator=(detail::moved_object<scoped_lock<Mutex> > scop)
+ scoped_lock &operator=(detail::moved_object<scoped_lock> scop)
    {
       if(this->owns())
          this->unlock();
@@ -335,7 +336,7 @@
       return *this;
    }
    #else
- scoped_lock &operator=(scoped_lock<Mutex> &&scop)
+ scoped_lock &operator=(scoped_lock &&scop)
    {
       if(this->owns())
          this->unlock();

Modified: branches/proto/v4/boost/interprocess/sync/sharable_lock.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/sync/sharable_lock.hpp (original)
+++ branches/proto/v4/boost/interprocess/sync/sharable_lock.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -127,14 +127,14 @@
    //! sharable_lock with no blocking. If the upgr sharable_lock does not own the mutex, then
    //! neither will this sharable_lock. Only a moved sharable_lock's will match this
    //! signature. An non-moved sharable_lock can be moved with the expression:
- //! "move(lock);". This constructor does not alter the state of the mutex,
+ //! "detail::move_impl(lock);". This constructor does not alter the state of the mutex,
    //! only potentially who owns it.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- explicit sharable_lock(detail::moved_object<sharable_lock<mutex_type> > upgr)
+ sharable_lock(detail::moved_object<sharable_lock<mutex_type> > upgr)
       : mp_mutex(0), m_locked(upgr.get().owns())
    { mp_mutex = upgr.get().release(); }
    #else
- explicit sharable_lock(sharable_lock<mutex_type> &&upgr)
+ sharable_lock(sharable_lock<mutex_type> &&upgr)
       : mp_mutex(0), m_locked(upgr.owns())
    { mp_mutex = upgr.release(); }
    #endif
@@ -147,9 +147,9 @@
    //!Notes: If upgr is locked, this constructor will lock this sharable_lock while
    //! unlocking upgr. Only a moved sharable_lock's will match this
    //! signature. An non-moved upgradable_lock can be moved with the expression:
- //! "move(lock);".*/
+ //! "detail::move_impl(lock);".*/
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- explicit sharable_lock(detail::moved_object<upgradable_lock<mutex_type> > upgr)
+ sharable_lock(detail::moved_object<upgradable_lock<mutex_type> > upgr)
       : mp_mutex(0), m_locked(false)
    {
       upgradable_lock<mutex_type> &u_lock = upgr.get();
@@ -160,7 +160,7 @@
       mp_mutex = u_lock.release();
    }
    #else
- explicit sharable_lock(upgradable_lock<mutex_type> &&upgr)
+ sharable_lock(upgradable_lock<mutex_type> &&upgr)
       : mp_mutex(0), m_locked(false)
    {
       upgradable_lock<mutex_type> &u_lock = upgr;
@@ -181,9 +181,9 @@
    //! to a sharable-ownership of this sharable_lock.
    //! Only a moved scoped_lock's will match this
    //! signature. An non-moved scoped_lock can be moved with the expression:
- //! "move(lock);".*/
+ //! "detail::move_impl(lock);".*/
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- explicit sharable_lock(detail::moved_object<scoped_lock<mutex_type> > scop)
+ sharable_lock(detail::moved_object<scoped_lock<mutex_type> > scop)
       : mp_mutex(0), m_locked(false)
    {
       scoped_lock<mutex_type> &e_lock = scop.get();
@@ -194,7 +194,7 @@
       mp_mutex = e_lock.release();
    }
    #else
- explicit sharable_lock(scoped_lock<mutex_type> &&scop)
+ sharable_lock(scoped_lock<mutex_type> &&scop)
       : mp_mutex(0), m_locked(false)
    {
       scoped_lock<mutex_type> &e_lock = scop;

Modified: branches/proto/v4/boost/interprocess/sync/upgradable_lock.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/sync/upgradable_lock.hpp (original)
+++ branches/proto/v4/boost/interprocess/sync/upgradable_lock.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -121,14 +121,14 @@
    //! while unlocking upgr. If upgr is unlocked, then this upgradable_lock will
    //! be unlocked as well. Only a moved upgradable_lock's will match this
    //! signature. An non-moved upgradable_lock can be moved with the
- //! expression: "move(lock);". This constructor does not alter the
+ //! expression: "detail::move_impl(lock);". This constructor does not alter the
    //! state of the mutex, only potentially who owns it.
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- explicit upgradable_lock(detail::moved_object<upgradable_lock<mutex_type> > upgr)
+ upgradable_lock(detail::moved_object<upgradable_lock<mutex_type> > upgr)
       : mp_mutex(0), m_locked(upgr.get().owns())
    { mp_mutex = upgr.get().release(); }
    #else
- explicit upgradable_lock(upgradable_lock<mutex_type> &&upgr)
+ upgradable_lock(upgradable_lock<mutex_type> &&upgr)
       : mp_mutex(0), m_locked(upgr.owns())
    { mp_mutex = upgr.release(); }
    #endif
@@ -141,9 +141,9 @@
    //! to an upgradable-ownership of this upgradable_lock.
    //! Only a moved sharable_lock's will match this
    //! signature. An non-moved sharable_lock can be moved with the
- //! expression: "move(lock);".
+ //! expression: "detail::move_impl(lock);".
    #ifndef BOOST_INTERPROCESS_RVALUE_REFERENCE
- explicit upgradable_lock(detail::moved_object<scoped_lock<mutex_type> > scop)
+ upgradable_lock(detail::moved_object<scoped_lock<mutex_type> > scop)
       : mp_mutex(0), m_locked(false)
    {
       scoped_lock<mutex_type> &u_lock = scop.get();
@@ -154,7 +154,7 @@
       mp_mutex = u_lock.release();
    }
    #else
- explicit upgradable_lock(scoped_lock<mutex_type> &&scop)
+ upgradable_lock(scoped_lock<mutex_type> &&scop)
       : mp_mutex(0), m_locked(false)
    {
       scoped_lock<mutex_type> &u_lock = scop;

Modified: branches/proto/v4/boost/interprocess/windows_shared_memory.hpp
==============================================================================
--- branches/proto/v4/boost/interprocess/windows_shared_memory.hpp (original)
+++ branches/proto/v4/boost/interprocess/windows_shared_memory.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -104,7 +104,7 @@
    #else
    windows_shared_memory &operator=(windows_shared_memory &&moved)
    {
- windows_shared_memory tmp(move(moved));
+ windows_shared_memory tmp(detail::move_impl(moved));
       this->swap(tmp);
       return *this;
    }
@@ -143,6 +143,8 @@
    /// @endcond
 };
 
+/// @cond
+
 inline windows_shared_memory::windows_shared_memory()
    : m_handle(0)
 {}
@@ -235,8 +237,6 @@
    }
 }
 
-///@cond
-
 //!Trait class to detect if a type is
 //!movable
 template<>

Modified: branches/proto/v4/boost/intrusive/avltree_algorithms.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/avltree_algorithms.hpp (original)
+++ branches/proto/v4/boost/intrusive/avltree_algorithms.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -68,6 +68,7 @@
 class avltree_algorithms
 {
    public:
+ typedef typename NodeTraits::node node;
    typedef NodeTraits node_traits;
    typedef typename NodeTraits::node_ptr node_ptr;
    typedef typename NodeTraits::const_node_ptr const_node_ptr;
@@ -75,8 +76,6 @@
 
    /// @cond
    private:
-
- typedef typename NodeTraits::node node;
    typedef detail::tree_algorithms<NodeTraits> tree_algorithms;
 
    template<class F>

Modified: branches/proto/v4/boost/intrusive/circular_list_algorithms.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/circular_list_algorithms.hpp (original)
+++ branches/proto/v4/boost/intrusive/circular_list_algorithms.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -50,6 +50,7 @@
 class circular_list_algorithms
 {
    public:
+ typedef typename NodeTraits::node node;
    typedef typename NodeTraits::node_ptr node_ptr;
    typedef typename NodeTraits::const_node_ptr const_node_ptr;
    typedef NodeTraits node_traits;

Modified: branches/proto/v4/boost/intrusive/circular_slist_algorithms.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/circular_slist_algorithms.hpp (original)
+++ branches/proto/v4/boost/intrusive/circular_slist_algorithms.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -54,6 +54,7 @@
    typedef detail::common_slist_algorithms<NodeTraits> base_t;
    /// @endcond
    public:
+ typedef typename NodeTraits::node node;
    typedef typename NodeTraits::node_ptr node_ptr;
    typedef typename NodeTraits::const_node_ptr const_node_ptr;
    typedef NodeTraits node_traits;

Modified: branches/proto/v4/boost/intrusive/detail/common_slist_algorithms.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/detail/common_slist_algorithms.hpp (original)
+++ branches/proto/v4/boost/intrusive/detail/common_slist_algorithms.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,6 +26,7 @@
 class common_slist_algorithms
 {
    public:
+ typedef typename NodeTraits::node node;
    typedef typename NodeTraits::node_ptr node_ptr;
    typedef typename NodeTraits::const_node_ptr const_node_ptr;
    typedef NodeTraits node_traits;
@@ -53,7 +54,7 @@
    {
       node_ptr next = NodeTraits::get_next(this_node);
       return !next || next == this_node;
- }
+ }
 
    static bool inited(const_node_ptr this_node)
    { return !NodeTraits::get_next(this_node); }
@@ -75,7 +76,7 @@
 
    static void transfer_after(node_ptr p, node_ptr b, node_ptr e)
    {
- if (p != b && p != e) {
+ if (p != b && p != e && b != e) {
          node_ptr next_b = NodeTraits::get_next(b);
          node_ptr next_e = NodeTraits::get_next(e);
          node_ptr next_p = NodeTraits::get_next(p);

Modified: branches/proto/v4/boost/intrusive/detail/generic_hook.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/detail/generic_hook.hpp (original)
+++ branches/proto/v4/boost/intrusive/detail/generic_hook.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,6 +18,7 @@
 #include <boost/intrusive/detail/pointer_to_other.hpp>
 #include <boost/intrusive/link_mode.hpp>
 #include <boost/intrusive/detail/utilities.hpp>
+#include <boost/intrusive/detail/mpl.hpp>
 #include <boost/static_assert.hpp>
 
 namespace boost {
@@ -35,6 +36,7 @@
 , SplaySetBaseHook
 , AvlSetBaseHook
 , BsSetBaseHook
+, AnyBaseHook
 };
 
 struct no_default_definer{};
@@ -70,6 +72,10 @@
 struct default_definer<Hook, BsSetBaseHook>
 { typedef Hook default_bs_set_hook; };
 
+template <class Hook>
+struct default_definer<Hook, AnyBaseHook>
+{ typedef Hook default_any_hook; };
+
 template <class Hook, unsigned int BaseHookType>
 struct make_default_definer
 {
@@ -90,11 +96,11 @@
    typedef typename detail::if_c
       <!detail::is_same<Tag, member_tag>::value
       , detail::node_holder
- < typename GetNodeAlgorithms::type::node_traits::node
+ < typename GetNodeAlgorithms::type::node
          , Tag
          , LinkMode
          , HookType>
- , typename GetNodeAlgorithms::type::node_traits::node
+ , typename GetNodeAlgorithms::type::node
>::type type;
 };
 
@@ -122,38 +128,38 @@
    , public make_node_holder<GetNodeAlgorithms, Tag, LinkMode, HookType>::type
    /// @endcond
 {
- public:
    /// @cond
+ typedef typename GetNodeAlgorithms::type node_algorithms;
+ typedef typename node_algorithms::node node;
+ typedef typename node_algorithms::node_ptr node_ptr;
+ typedef typename node_algorithms::const_node_ptr const_node_ptr;
+
+ public:
    struct boost_intrusive_tags
    {
       static const int hook_type = HookType;
       static const link_mode_type link_mode = LinkMode;
- typedef Tag tag;
- typedef typename GetNodeAlgorithms::type node_algorithms;
- typedef typename node_algorithms::node_traits node_traits;
- typedef typename node_traits::node node;
- typedef typename node_traits::node_ptr node_ptr;
- typedef typename node_traits::const_node_ptr const_node_ptr;
+ typedef Tag tag;
+ typedef typename GetNodeAlgorithms::type::node_traits node_traits;
       static const bool is_base_hook = !detail::is_same<Tag, member_tag>::value;
- enum { safemode_or_autounlink =
- (int)link_mode == (int)auto_unlink ||
- (int)link_mode == (int)safe_link };
+ static const bool safemode_or_autounlink =
+ (int)link_mode == (int)auto_unlink || (int)link_mode == (int)safe_link;
    };
+
+ public:
    /// @endcond
 
    generic_hook()
    {
       if(boost_intrusive_tags::safemode_or_autounlink){
- boost_intrusive_tags::node_algorithms::init
- (static_cast<typename boost_intrusive_tags::node*>(this));
+ node_algorithms::init(static_cast<node*>(this));
       }
    }
 
    generic_hook(const generic_hook& )
    {
       if(boost_intrusive_tags::safemode_or_autounlink){
- boost_intrusive_tags::node_algorithms::init
- (static_cast<typename boost_intrusive_tags::node*>(this));
+ node_algorithms::init(static_cast<node*>(this));
       }
    }
 
@@ -168,26 +174,23 @@
 
    void swap_nodes(generic_hook &other)
    {
- boost_intrusive_tags::node_algorithms::swap_nodes
- ( static_cast<typename boost_intrusive_tags::node*>(this)
- , static_cast<typename boost_intrusive_tags::node*>(&other));
+ node_algorithms::swap_nodes
+ ( static_cast<node*>(this), static_cast<node*>(&other));
    }
 
    bool is_linked() const
    {
       //is_linked() can be only used in safe-mode or auto-unlink
       BOOST_STATIC_ASSERT(( boost_intrusive_tags::safemode_or_autounlink ));
- return !boost_intrusive_tags::node_algorithms::unique
- (static_cast<const typename boost_intrusive_tags::node*>(this));
+ return !node_algorithms::unique
+ (static_cast<const node*>(this));
    }
 
    void unlink()
    {
       BOOST_STATIC_ASSERT(( (int)boost_intrusive_tags::link_mode == (int)auto_unlink ));
- boost_intrusive_tags::node_algorithms::unlink
- (static_cast<typename boost_intrusive_tags::node*>(this));
- boost_intrusive_tags::node_algorithms::init
- (static_cast<typename boost_intrusive_tags::node*>(this));
+ node_algorithms::unlink(static_cast<node*>(this));
+ node_algorithms::init(static_cast<node*>(this));
    }
 };
 

Modified: branches/proto/v4/boost/intrusive/detail/hashtable_node.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/detail/hashtable_node.hpp (original)
+++ branches/proto/v4/boost/intrusive/detail/hashtable_node.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -104,13 +104,13 @@
             <typename Container::value_type, IsConst>::type
>
 {
- typedef typename Container::real_value_traits real_value_traits;
- typedef typename Container::siterator siterator;
- typedef typename Container::const_siterator const_siterator;
- typedef typename Container::bucket_type bucket_type;
+ typedef typename Container::real_value_traits real_value_traits;
+ typedef typename Container::siterator siterator;
+ typedef typename Container::const_siterator const_siterator;
+ typedef typename Container::bucket_type bucket_type;
    typedef typename boost::pointer_to_other
- < typename Container::pointer, const Container>::type const_cont_ptr;
- typedef typename Container::size_type size_type;
+ < typename Container::pointer, const Container>::type const_cont_ptr;
+ typedef typename Container::size_type size_type;
 
    static typename Container::node_ptr downcast_bucket(typename bucket_type::node_ptr p)
    { return typename Container::node_ptr(&static_cast<typename Container::node&>(*p)); }

Modified: branches/proto/v4/boost/intrusive/detail/list_node.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/detail/list_node.hpp (original)
+++ branches/proto/v4/boost/intrusive/detail/list_node.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,7 +18,6 @@
 #include <iterator>
 #include <boost/intrusive/detail/assert.hpp>
 #include <boost/intrusive/detail/pointer_to_other.hpp>
-#include <boost/intrusive/circular_list_algorithms.hpp>
 
 namespace boost {
 namespace intrusive {

Modified: branches/proto/v4/boost/intrusive/detail/parent_from_member.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/detail/parent_from_member.hpp (original)
+++ branches/proto/v4/boost/intrusive/detail/parent_from_member.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,25 +13,30 @@
 #define BOOST_INTRUSIVE_PARENT_FROM_MEMBER_HPP
 
 #include <boost/intrusive/detail/config_begin.hpp>
-#include <boost/static_assert.hpp>
 #include <cstddef>
 
+#if defined(BOOST_MSVC) || (defined (BOOST_WINDOWS) && defined(BOOST_INTEL))
+#define BOOST_INTRUSIVE_MSVC_COMPLIANT_PTR_TO_MEMBER
+#include <boost/cstdint.hpp>
+#endif
+
 namespace boost {
 namespace intrusive {
 namespace detail {
 
 template<class Parent, class Member>
-inline std::size_t offset_from_pointer_to_member(const Member Parent::* ptr_to_member)
+inline std::ptrdiff_t offset_from_pointer_to_member(const Member Parent::* ptr_to_member)
 {
- //BOOST_STATIC_ASSERT(( sizeof(std::ptrdiff_t) == sizeof(ptr_to_member) ));
    //The implementation of a pointer to member is compiler dependent.
- #if defined(BOOST_MSVC) || (defined (BOOST_WINDOWS) && defined(BOOST_INTEL))
+ #if defined(BOOST_INTRUSIVE_MSVC_COMPLIANT_PTR_TO_MEMBER)
+ //msvc compliant compilers use their the first 32 bits as offset (even in 64 bit mode)
+ return *(const boost::int32_t*)(void*)&ptr_to_member;
    //This works with gcc, msvc, ac++, ibmcpp
- return *(const std::ptrdiff_t*)(void*)&ptr_to_member;
- #elif defined(__GNUC__) || defined(__HP_aCC) || defined(BOOST_INTEL) || defined (__IBMCPP__) || defined (__DECCXX)
+ #elif defined(__GNUC__) || defined(__HP_aCC) || defined(BOOST_INTEL) || \
+ defined(__IBMCPP__) || defined(__DECCXX)
    const Parent * const parent = 0;
    const char *const member = reinterpret_cast<const char*>(&(parent->*ptr_to_member));
- return std::size_t(member - reinterpret_cast<const char*>(parent));
+ return std::ptrdiff_t(member - reinterpret_cast<const char*>(parent));
    #else
    //This is the traditional C-front approach: __MWERKS__, __DMC__, __SUNPRO_CC
    return (*(const std::ptrdiff_t*)(void*)&ptr_to_member) - 1;
@@ -56,6 +61,10 @@
 } //namespace intrusive {
 } //namespace boost {
 
+#ifdef BOOST_INTRUSIVE_MSVC_COMPLIANT_PTR_TO_MEMBER
+#undef BOOST_INTRUSIVE_MSVC_COMPLIANT_PTR_TO_MEMBER
+#endif
+
 #include <boost/intrusive/detail/config_end.hpp>
 
 #endif //#ifndef BOOST_INTRUSIVE_PARENT_FROM_MEMBER_HPP

Modified: branches/proto/v4/boost/intrusive/detail/slist_node.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/detail/slist_node.hpp (original)
+++ branches/proto/v4/boost/intrusive/detail/slist_node.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,7 +18,6 @@
 #include <iterator>
 #include <boost/intrusive/detail/assert.hpp>
 #include <boost/intrusive/detail/pointer_to_other.hpp>
-#include <boost/intrusive/circular_slist_algorithms.hpp>
 
 namespace boost {
 namespace intrusive {

Modified: branches/proto/v4/boost/intrusive/detail/tree_algorithms.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/detail/tree_algorithms.hpp (original)
+++ branches/proto/v4/boost/intrusive/detail/tree_algorithms.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -94,13 +94,8 @@
 template<class NodeTraits>
 class tree_algorithms
 {
- /// @cond
- private:
-
- typedef typename NodeTraits::node node;
- /// @endcond
-
    public:
+ typedef typename NodeTraits::node node;
    typedef NodeTraits node_traits;
    typedef typename NodeTraits::node_ptr node_ptr;
    typedef typename NodeTraits::const_node_ptr const_node_ptr;

Modified: branches/proto/v4/boost/intrusive/detail/utilities.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/detail/utilities.hpp (original)
+++ branches/proto/v4/boost/intrusive/detail/utilities.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -25,6 +25,7 @@
 #include <climits>
 #include <iterator>
 #include <boost/cstdint.hpp>
+#include <boost/static_assert.hpp>
 
 namespace boost {
 namespace intrusive {
@@ -56,6 +57,24 @@
 };
 
 template <class T>
+struct internal_any_hook_bool
+{
+ template<bool Add>
+ struct two_or_three {one _[2 + Add];};
+ template <class U> static one test(...);
+ template <class U> static two_or_three<U::is_any_hook>
+ test (detail::bool_<U::is_any_hook>* = 0);
+ static const std::size_t value = sizeof(test<T>(0));
+};
+
+template <class T>
+struct internal_any_hook_bool_is_true
+{
+ static const bool value = internal_any_hook_bool<T>::value > sizeof(one)*2;
+};
+
+
+template <class T>
 struct external_value_traits_bool
 {
    template<bool Add>
@@ -487,7 +506,7 @@
    for(std::size_t shift = Bits >> 1; shift; shift >>= 1){
       std::size_t tmp = n >> shift;
       if (tmp)
- log2 += shift, n = tmp;
+ log2 += shift, n = tmp;
    }
 
    return log2;

Modified: branches/proto/v4/boost/intrusive/hashtable.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/hashtable.hpp (original)
+++ branches/proto/v4/boost/intrusive/hashtable.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -83,9 +83,8 @@
 };
 
 template<class SupposedValueTraits>
-struct unordered_bucket_impl
+struct real_from_supposed_value_traits
 {
- /// @cond
    typedef typename detail::eval_if_c
       < detail::external_value_traits_is_true
          <SupposedValueTraits>::value
@@ -93,15 +92,33 @@
          <SupposedValueTraits>
       , detail::identity
          <SupposedValueTraits>
- >::type real_value_traits;
+ >::type type;
+};
 
+template<class SupposedValueTraits>
+struct get_slist_impl_from_supposed_value_traits
+{
+ typedef typename
+ real_from_supposed_value_traits
+ < SupposedValueTraits>::type real_value_traits;
    typedef typename detail::get_node_traits
       <real_value_traits>::type node_traits;
    typedef typename get_slist_impl
       <typename reduced_slist_node_traits
          <node_traits>::type
- >::type slist_impl;
+ >::type type;
+};
+
+
+template<class SupposedValueTraits>
+struct unordered_bucket_impl
+{
+ /// @cond
+ typedef typename
+ get_slist_impl_from_supposed_value_traits
+ <SupposedValueTraits>::type slist_impl;
    typedef detail::bucket_impl<slist_impl> implementation_defined;
+ /// @endcond
    typedef implementation_defined type;
 };
 
@@ -109,15 +126,6 @@
 struct unordered_bucket_ptr_impl
 {
    /// @cond
-
- typedef typename detail::eval_if_c
- < detail::external_value_traits_is_true
- <SupposedValueTraits>::value
- , detail::eval_value_traits
- <SupposedValueTraits>
- , detail::identity
- <SupposedValueTraits>
- >::type real_value_traits;
    typedef typename detail::get_node_traits
       <SupposedValueTraits>::type::node_ptr node_ptr;
    typedef typename unordered_bucket_impl
@@ -128,36 +136,6 @@
    typedef implementation_defined type;
 };
 
-} //namespace detail {
-
-/// @endcond
-
-template<class ValueTraitsOrHookOption>
-struct unordered_bucket
-{
- /// @cond
- typedef typename ValueTraitsOrHookOption::
- template pack<none>::value_traits supposed_value_traits;
- /// @endcond
- typedef typename detail::unordered_bucket_impl
- <supposed_value_traits>::type type;
-};
-
-template<class ValueTraitsOrHookOption>
-struct unordered_bucket_ptr
-{
- /// @cond
- typedef typename ValueTraitsOrHookOption::
- template pack<none>::value_traits supposed_value_traits;
- /// @endcond
- typedef typename detail::unordered_bucket_ptr_impl
- <supposed_value_traits>::type type;
-};
-
-/// @cond
-
-namespace detail{
-
 template <class T>
 struct store_hash_bool
 {
@@ -275,8 +253,6 @@
    std::size_t hash;
 };
 
-} //namespace detail {
-
 template <class T>
 struct internal_default_uset_hook
 {
@@ -285,6 +261,49 @@
    static const bool value = sizeof(test<T>(0)) == sizeof(detail::two);
 };
 
+} //namespace detail {
+
+//!This metafunction will obtain the type of a bucket
+//!from the value_traits or hook option to be used with
+//!a hash container.
+template<class ValueTraitsOrHookOption>
+struct unordered_bucket
+ : public detail::unordered_bucket_impl
+ <typename ValueTraitsOrHookOption::
+ template pack<none>::value_traits
+ >
+{};
+
+//!This metafunction will obtain the type of a bucket pointer
+//!from the value_traits or hook option to be used with
+//!a hash container.
+template<class ValueTraitsOrHookOption>
+struct unordered_bucket_ptr
+ : public detail::unordered_bucket_ptr_impl
+ <typename ValueTraitsOrHookOption::
+ template pack<none>::value_traits
+ >
+{};
+
+//!This metafunction will obtain the type of the default bucket traits
+//!(when the user does not specify the bucket_traits<> option) from the
+//!value_traits or hook option to be used with
+//!a hash container.
+template<class ValueTraitsOrHookOption>
+struct unordered_default_bucket_traits
+{
+ /// @cond
+ typedef typename ValueTraitsOrHookOption::
+ template pack<none>::value_traits supposed_value_traits;
+ typedef typename detail::
+ get_slist_impl_from_supposed_value_traits
+ <supposed_value_traits>::type slist_impl;
+ typedef detail::bucket_traits_impl
+ <slist_impl> implementation_defined;
+ /// @endcond
+ typedef implementation_defined type;
+};
+
 template <class T>
 struct get_default_uset_hook
 {
@@ -300,6 +319,7 @@
          , class BucketTraits
          , bool Power2Buckets
          , bool CacheBegin
+ , bool CompareHash
>
 struct usetopt
 {
@@ -312,6 +332,7 @@
    static const bool power_2_buckets = Power2Buckets;
    static const bool unique_keys = UniqueKeys;
    static const bool cache_begin = CacheBegin;
+ static const bool compare_hash = CompareHash;
 };
 
 struct default_bucket_traits;
@@ -322,7 +343,7 @@
       < none
       , base_hook
          < typename detail::eval_if_c
- < internal_default_uset_hook<T>::value
+ < detail::internal_default_uset_hook<T>::value
                , get_default_uset_hook<T>
                , detail::identity<none>
>::type
@@ -334,6 +355,7 @@
       , bucket_traits<default_bucket_traits>
       , power_2_buckets<false>
       , cache_begin<false>
+ , compare_hash<false>
>::type
 {};
 
@@ -441,17 +463,21 @@
       = detail::optimize_multikey_is_true<node_traits>::value && !unique_keys;
    static const bool power_2_buckets = Config::power_2_buckets;
    static const bool cache_begin = Config::cache_begin;
+ static const bool compare_hash = Config::compare_hash;
 
    /// @cond
    private:
+ //Configuration error: compare_hash<> can't be specified without store_hash<>
+ //See documentation for more explanations
+ BOOST_STATIC_ASSERT((!compare_hash || store_hash));
+
    typedef typename slist_impl::node_ptr slist_node_ptr;
    typedef typename boost::pointer_to_other
          <slist_node_ptr, void>::type void_pointer;
    //We'll define group traits, but these won't be instantiated if
    //optimize_multikey is not true
- typedef unordered_group_node_traits<void_pointer, node> group_traits;
+ typedef unordered_group_adapter<node_traits> group_traits;
    typedef circular_slist_algorithms<group_traits> group_algorithms;
-
    typedef detail::bool_<store_hash> store_hash_t;
    typedef detail::bool_<optimize_multikey> optimize_multikey_t;
    typedef detail::bool_<cache_begin> cache_begin_t;
@@ -831,7 +857,11 @@
       if(!found_equal){
          it = b.before_begin();
       }
- this->priv_insert_in_group(found_equal ? dcast_bucket_ptr(it.pointed_node()) : node_ptr(0), n, optimize_multikey_t());
+ if(optimize_multikey){
+ node_ptr first_in_group = found_equal ?
+ dcast_bucket_ptr(it.pointed_node()) : node_ptr(0);
+ this->priv_insert_in_group(first_in_group, n, optimize_multikey_t());
+ }
       priv_insertion_update_cache(bucket_num);
       this->priv_size_traits().increment();
       return iterator(b.insert_after(it, *n), this);
@@ -1136,10 +1166,10 @@
                               ,KeyValueEqual equal_func, Disposer disposer)
    {
       size_type bucket_num;
- std::size_t hash;
+ std::size_t h;
       siterator prev;
       siterator it =
- this->priv_find(key, hash_func, equal_func, bucket_num, hash, prev);
+ this->priv_find(key, hash_func, equal_func, bucket_num, h, prev);
       bool success = it != priv_invalid_local_it();
       size_type count(0);
       if(!success){
@@ -1156,7 +1186,14 @@
          bucket_type &b = this->priv_buckets()[bucket_num];
          for(siterator end = b.end(); it != end; ++count, ++it){
             slist_node_ptr n(it.pointed_node());
- if(!equal_func(key, priv_value_from_slist_node(n))){
+ const value_type &v = priv_value_from_slist_node(n);
+ if(compare_hash){
+ std::size_t vh = this->priv_stored_hash(v, store_hash_t());
+ if(h != vh || !equal_func(key, v)){
+ break;
+ }
+ }
+ else if(!equal_func(key, v)){
                break;
             }
             this->priv_size_traits().decrement();
@@ -1657,7 +1694,7 @@
       BOOST_INTRUSIVE_INVARIANT_ASSERT
       (!power_2_buckets || (0 == (new_buckets_len & (new_buckets_len-1u))));
 
- size_type n = this->priv_get_cache() - this->priv_buckets();
+ size_type n = priv_get_cache_bucket_num();
       const bool same_buffer = old_buckets == new_buckets;
       //If the new bucket length is a common factor
       //of the old one we can avoid hash calculations.
@@ -1665,8 +1702,10 @@
          (power_2_buckets ||(old_buckets_len % new_buckets_len) == 0);
       //If we are shrinking the same bucket array and it's
       //is a fast shrink, just rehash the last nodes
- if(same_buffer && fast_shrink){
+ size_type new_first_bucket_num = new_buckets_len;
+ if(same_buffer && fast_shrink && (n < new_buckets_len)){
          n = new_buckets_len;
+ new_first_bucket_num = priv_get_cache_bucket_num();
       }
 
       //Anti-exception stuff: they destroy the elements if something goes wrong
@@ -1696,6 +1735,8 @@
                const value_type &v = priv_value_from_slist_node(i.pointed_node());
                const std::size_t hash_value = this->priv_stored_hash(v, store_hash_t());
                const size_type new_n = priv_hash_to_bucket(hash_value, new_buckets_len);
+ if(cache_begin && new_n < new_first_bucket_num)
+ new_first_bucket_num = new_n;
                siterator last = bucket_type::s_iterator_to
                   (*priv_get_last_in_group(dcast_bucket_ptr(i.pointed_node())));
                if(same_buffer && new_n == n){
@@ -1710,6 +1751,8 @@
          }
          else{
             const size_type new_n = priv_hash_to_bucket(n, new_buckets_len);
+ if(cache_begin && new_n < new_first_bucket_num)
+ new_first_bucket_num = new_n;
             bucket_type &new_b = new_buckets[new_n];
             if(!old_bucket.empty()){
                new_b.splice_after( new_b.before_begin()
@@ -1723,8 +1766,8 @@
       this->priv_size_traits().set_size(size_backup);
       this->priv_real_bucket_traits() = new_bucket_traits;
       priv_initialize_cache();
- priv_insertion_update_cache(size_type(0u));
- priv_erasure_update_cache();
+ priv_insertion_update_cache(new_first_bucket_num);
+ //priv_erasure_update_cache();
       rollback1.release();
       rollback2.release();
    }
@@ -1912,16 +1955,16 @@
    static node_ptr dcast_bucket_ptr(typename slist_impl::node_ptr p)
    { return node_ptr(&static_cast<node&>(*p)); }
 
- std::size_t priv_stored_hash(const value_type &v, detail::true_)
+ std::size_t priv_stored_hash(const value_type &v, detail::true_) const
    { return node_traits::get_hash(this->get_real_value_traits().to_node_ptr(v)); }
 
- std::size_t priv_stored_hash(const value_type &v, detail::false_)
+ std::size_t priv_stored_hash(const value_type &v, detail::false_) const
    { return priv_hasher()(v); }
 
- std::size_t priv_stored_hash(slist_node_ptr n, detail::true_)
+ std::size_t priv_stored_hash(slist_node_ptr n, detail::true_) const
    { return node_traits::get_hash(dcast_bucket_ptr(n)); }
 
- std::size_t priv_stored_hash(slist_node_ptr, detail::false_)
+ std::size_t priv_stored_hash(slist_node_ptr, detail::false_) const
    {
       //This code should never be reached!
       BOOST_INTRUSIVE_INVARIANT_ASSERT(0);
@@ -2414,7 +2457,13 @@
 
       while(it != b.end()){
          const value_type &v = priv_value_from_slist_node(it.pointed_node());
- if(equal_func(key, v)){
+ if(compare_hash){
+ std::size_t vh = this->priv_stored_hash(v, store_hash_t());
+ if(h == vh && equal_func(key, v)){
+ return it;
+ }
+ }
+ else if(equal_func(key, v)){
             return it;
          }
          if(optimize_multikey){
@@ -2470,7 +2519,15 @@
          ++it;
          while(it != b.end()){
             const value_type &v = priv_value_from_slist_node(it.pointed_node());
- if(!equal_func(key, v)){
+ if(compare_hash){
+ std::size_t hv = this->priv_stored_hash(v, store_hash_t());
+ if(hv != h || !equal_func(key, v)){
+ to_return.second = it;
+ bucket_number_second = bucket_number_first;
+ return to_return;
+ }
+ }
+ else if(!equal_func(key, v)){
                to_return.second = it;
                bucket_number_second = bucket_number_first;
                return to_return;
@@ -2505,11 +2562,12 @@
          , class O3 = none, class O4 = none
          , class O5 = none, class O6 = none
          , class O7 = none, class O8 = none
+ , class O9 = none
>
 struct make_hashtable_opt
 {
    typedef typename pack_options
- < uset_defaults<T>, O1, O2, O3, O4, O5, O6, O7, O8>::type packed_options;
+ < uset_defaults<T>, O1, O2, O3, O4, O5, O6, O7, O8, O9>::type packed_options;
 
    //Real value traits must be calculated from options
    typedef typename detail::get_value_traits
@@ -2529,10 +2587,7 @@
    typedef typename detail::get_slist_impl
       <typename detail::reduced_slist_node_traits
          <typename real_value_traits::node_traits>::type
- >::type slist_impl;
-
- typedef typename detail::reduced_slist_node_traits
- <typename real_value_traits::node_traits>::type node_traits;
+ >::type slist_impl;
 
    typedef typename
       detail::if_c< detail::is_same
@@ -2553,6 +2608,7 @@
       , real_bucket_traits
       , packed_options::power_2_buckets
       , packed_options::cache_begin
+ , packed_options::compare_hash
> type;
 };
 /// @endcond
@@ -2566,6 +2622,7 @@
                 , class O3 = none, class O4 = none
                 , class O5 = none, class O6 = none
                 , class O7 = none, class O8 = none
+ , class O9 = none
>
 #endif
 struct make_hashtable
@@ -2573,7 +2630,7 @@
    /// @cond
    typedef hashtable_impl
       < typename make_hashtable_opt
- <T, false, O1, O2, O3, O4, O5, O6, O7, O8>::type
+ <T, false, O1, O2, O3, O4, O5, O6, O7, O8, O9>::type
> implementation_defined;
 
    /// @endcond
@@ -2581,12 +2638,12 @@
 };
 
 #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
-template<class T, class O1, class O2, class O3, class O4, class O5, class O6, class O7, class O8>
+template<class T, class O1, class O2, class O3, class O4, class O5, class O6, class O7, class O8, class O9>
 class hashtable
- : public make_hashtable<T, O1, O2, O3, O4, O5, O6, O7, O8>::type
+ : public make_hashtable<T, O1, O2, O3, O4, O5, O6, O7, O8, O9>::type
 {
    typedef typename make_hashtable
- <T, O1, O2, O3, O4, O5, O6, O7, O8>::type Base;
+ <T, O1, O2, O3, O4, O5, O6, O7, O8, O9>::type Base;
 
    public:
    typedef typename Base::value_traits value_traits;

Modified: branches/proto/v4/boost/intrusive/intrusive_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/intrusive_fwd.hpp (original)
+++ branches/proto/v4/boost/intrusive/intrusive_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -294,6 +294,7 @@
    , class O6 = none
    , class O7 = none
    , class O8 = none
+ , class O9 = none
>
 class hashtable;
 
@@ -307,6 +308,7 @@
    , class O6 = none
    , class O7 = none
    , class O8 = none
+ , class O9 = none
>
 class unordered_set;
 
@@ -320,6 +322,7 @@
    , class O6 = none
    , class O7 = none
    , class O8 = none
+ , class O9 = none
>
 class unordered_multiset;
 
@@ -339,6 +342,20 @@
>
 class unordered_set_member_hook;
 
+template
+ < class O1 = none
+ , class O2 = none
+ , class O3 = none
+ >
+class any_base_hook;
+
+template
+ < class O1 = none
+ , class O2 = none
+ , class O3 = none
+ >
+class any_member_hook;
+
 } //namespace intrusive {
 } //namespace boost {
 

Modified: branches/proto/v4/boost/intrusive/linear_slist_algorithms.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/linear_slist_algorithms.hpp (original)
+++ branches/proto/v4/boost/intrusive/linear_slist_algorithms.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -53,6 +53,7 @@
    typedef detail::common_slist_algorithms<NodeTraits> base_t;
    /// @endcond
    public:
+ typedef typename NodeTraits::node node;
    typedef typename NodeTraits::node_ptr node_ptr;
    typedef typename NodeTraits::const_node_ptr const_node_ptr;
    typedef NodeTraits node_traits;

Modified: branches/proto/v4/boost/intrusive/options.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/options.hpp (original)
+++ branches/proto/v4/boost/intrusive/options.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -49,15 +49,56 @@
    typedef typename BucketTraits::bucket_traits type;
 };
 
-template<class T, class BaseHook>
-struct get_base_value_traits
+template <class T, class BaseHook>
+struct concrete_hook_base_value_traits
+{
+ typedef typename BaseHook::boost_intrusive_tags tags;
+ typedef detail::base_hook_traits
+ < T
+ , typename tags::node_traits
+ , tags::link_mode
+ , typename tags::tag
+ , tags::hook_type> type;
+};
+
+template <class BaseHook>
+struct concrete_hook_base_node_traits
+{ typedef typename BaseHook::boost_intrusive_tags::node_traits type; };
+
+template <class T, class BaseHook>
+struct any_hook_base_value_traits
 {
+ typedef typename BaseHook::boost_intrusive_tags tags;
    typedef detail::base_hook_traits
       < T
- , typename BaseHook::boost_intrusive_tags::node_traits
- , BaseHook::boost_intrusive_tags::link_mode
- , typename BaseHook::boost_intrusive_tags::tag
- , BaseHook::boost_intrusive_tags::hook_type> type;
+ , typename BaseHook::node_traits
+ , tags::link_mode
+ , typename tags::tag
+ , tags::hook_type> type;
+};
+
+template <class BaseHook>
+struct any_hook_base_node_traits
+{ typedef typename BaseHook::node_traits type; };
+
+template<class T, class BaseHook>
+struct get_base_value_traits
+{
+ typedef typename detail::eval_if_c
+ < internal_any_hook_bool_is_true<BaseHook>::value
+ , any_hook_base_value_traits<T, BaseHook>
+ , concrete_hook_base_value_traits<T, BaseHook>
+ >::type type;
+};
+
+template<class BaseHook>
+struct get_base_node_traits
+{
+ typedef typename detail::eval_if_c
+ < internal_any_hook_bool_is_true<BaseHook>::value
+ , any_hook_base_node_traits<BaseHook>
+ , concrete_hook_base_node_traits<BaseHook>
+ >::type type;
 };
 
 template<class T, class MemberHook>
@@ -66,6 +107,12 @@
    typedef typename MemberHook::member_value_traits type;
 };
 
+template<class MemberHook>
+struct get_member_node_traits
+{
+ typedef typename MemberHook::member_value_traits::node_traits type;
+};
+
 template<class T, class SupposedValueTraits>
 struct get_value_traits
 {
@@ -86,25 +133,12 @@
>::type type;
 };
 
-template<class BaseHook>
-struct get_base_node_traits
-{
- typedef typename BaseHook::boost_intrusive_tags::node_traits type;
-};
-
-template<class MemberHook>
-struct get_member_node_traits
-{
- typedef typename MemberHook::member_value_traits::node_traits type;
-};
-
 template<class ValueTraits>
 struct get_explicit_node_traits
 {
    typedef typename ValueTraits::node_traits type;
 };
 
-
 template<class SupposedValueTraits>
 struct get_node_traits
 {
@@ -125,7 +159,6 @@
>::type type;
 };
 
-
 } //namespace detail{
 
 
@@ -258,7 +291,6 @@
 struct member_hook
 {
 /// @cond
- typedef char Parent::* GenericPtrToMember;
    typedef detail::member_hook_traits
       < Parent
       , MemberHook
@@ -272,6 +304,7 @@
 /// @endcond
 };
 
+
 //!This option setter specifies that the container
 //!must use the specified base hook
 template<typename BaseHook>
@@ -457,6 +490,25 @@
 /// @endcond
 };
 
+
+//!This option setter specifies if the container will compare the hash value
+//!before comparing objects. This option can't be specified if store_hash<>
+//!is not true.
+//!This is specially helpful when we have containers with a high load factor.
+//!and the comparison function is much more expensive that comparing already
+//!stored hash values.
+template<bool Enabled>
+struct compare_hash
+{
+/// @cond
+ template<class Base>
+ struct pack : Base
+ {
+ static const bool compare_hash = Enabled;
+ };
+/// @endcond
+};
+
 /// @cond
 
 template<class Prev, class Next>

Modified: branches/proto/v4/boost/intrusive/rbtree_algorithms.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/rbtree_algorithms.hpp (original)
+++ branches/proto/v4/boost/intrusive/rbtree_algorithms.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -116,6 +116,7 @@
 {
    public:
    typedef NodeTraits node_traits;
+ typedef typename NodeTraits::node node;
    typedef typename NodeTraits::node_ptr node_ptr;
    typedef typename NodeTraits::const_node_ptr const_node_ptr;
    typedef typename NodeTraits::color color;
@@ -123,7 +124,6 @@
    /// @cond
    private:
 
- typedef typename NodeTraits::node node;
    typedef detail::tree_algorithms<NodeTraits> tree_algorithms;
 
    template<class F>

Modified: branches/proto/v4/boost/intrusive/sgtree_algorithms.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/sgtree_algorithms.hpp (original)
+++ branches/proto/v4/boost/intrusive/sgtree_algorithms.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -58,6 +58,7 @@
 class sgtree_algorithms
 {
    public:
+ typedef typename NodeTraits::node node;
    typedef NodeTraits node_traits;
    typedef typename NodeTraits::node_ptr node_ptr;
    typedef typename NodeTraits::const_node_ptr const_node_ptr;
@@ -65,7 +66,6 @@
    /// @cond
    private:
 
- typedef typename NodeTraits::node node;
    typedef detail::tree_algorithms<NodeTraits> tree_algorithms;
 
    static node_ptr uncast(const_node_ptr ptr)

Modified: branches/proto/v4/boost/intrusive/slist.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/slist.hpp (original)
+++ branches/proto/v4/boost/intrusive/slist.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1653,7 +1653,7 @@
    private:
    void priv_splice_after(node_ptr prev_pos_n, slist_impl &x, node_ptr before_first_n, node_ptr before_last_n)
    {
- if (before_first_n != before_last_n && prev_pos_n != before_first_n && prev_pos_n != before_last_n)
+ if (before_first_n != before_last_n && prev_pos_n != before_first_n && prev_pos_n != before_last_n)
       {
          if(cache_last){
             if(node_traits::get_next(prev_pos_n) == this->get_end_node()){

Modified: branches/proto/v4/boost/intrusive/splaytree_algorithms.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/splaytree_algorithms.hpp (original)
+++ branches/proto/v4/boost/intrusive/splaytree_algorithms.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -130,11 +130,11 @@
 {
    /// @cond
    private:
- typedef typename NodeTraits::node node;
    typedef detail::tree_algorithms<NodeTraits> tree_algorithms;
    /// @endcond
 
    public:
+ typedef typename NodeTraits::node node;
    typedef NodeTraits node_traits;
    typedef typename NodeTraits::node_ptr node_ptr;
    typedef typename NodeTraits::const_node_ptr const_node_ptr;

Modified: branches/proto/v4/boost/intrusive/unordered_set.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/unordered_set.hpp (original)
+++ branches/proto/v4/boost/intrusive/unordered_set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -961,6 +961,7 @@
                 , class O3 = none, class O4 = none
                 , class O5 = none, class O6 = none
                 , class O7 = none, class O8 = none
+ , class O9 = none
>
 #endif
 struct make_unordered_set
@@ -968,19 +969,19 @@
    /// @cond
    typedef unordered_set_impl
       < typename make_hashtable_opt
- <T, true, O1, O2, O3, O4, O5, O6, O7, O8>::type
+ <T, true, O1, O2, O3, O4, O5, O6, O7, O8, O9>::type
> implementation_defined;
    /// @endcond
    typedef implementation_defined type;
 };
 
 #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
-template<class T, class O1, class O2, class O3, class O4, class O5, class O6, class O7, class O8>
+template<class T, class O1, class O2, class O3, class O4, class O5, class O6, class O7, class O8, class O9>
 class unordered_set
- : public make_unordered_set<T, O1, O2, O3, O4, O5, O6, O7, O8>::type
+ : public make_unordered_set<T, O1, O2, O3, O4, O5, O6, O7, O8, O9>::type
 {
    typedef typename make_unordered_set
- <T, O1, O2, O3, O4, O5, O6, O7, O8>::type Base;
+ <T, O1, O2, O3, O4, O5, O6, O7, O8, O9>::type Base;
 
    //Assert if passed value traits are compatible with the type
    BOOST_STATIC_ASSERT((detail::is_same<typename Base::value_traits::value_type, T>::value));
@@ -1894,6 +1895,7 @@
                 , class O3 = none, class O4 = none
                 , class O5 = none, class O6 = none
                 , class O7 = none, class O8 = none
+ , class O9 = none
>
 #endif
 struct make_unordered_multiset
@@ -1901,19 +1903,19 @@
    /// @cond
    typedef unordered_multiset_impl
       < typename make_hashtable_opt
- <T, false, O1, O2, O3, O4, O5, O6, O7, O8>::type
+ <T, false, O1, O2, O3, O4, O5, O6, O7, O8, O9>::type
> implementation_defined;
    /// @endcond
    typedef implementation_defined type;
 };
 
 #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
-template<class T, class O1, class O2, class O3, class O4, class O5, class O6, class O7, class O8>
+template<class T, class O1, class O2, class O3, class O4, class O5, class O6, class O7, class O8, class O9>
 class unordered_multiset
- : public make_unordered_multiset<T, O1, O2, O3, O4, O5, O6, O7, O8>::type
+ : public make_unordered_multiset<T, O1, O2, O3, O4, O5, O6, O7, O8, O9>::type
 {
    typedef typename make_unordered_multiset
- <T, O1, O2, O3, O4, O5, O6, O7, O8>::type Base;
+ <T, O1, O2, O3, O4, O5, O6, O7, O8, O9>::type Base;
    //Assert if passed value traits are compatible with the type
    BOOST_STATIC_ASSERT((detail::is_same<typename Base::value_traits::value_type, T>::value));
 

Modified: branches/proto/v4/boost/intrusive/unordered_set_hook.hpp
==============================================================================
--- branches/proto/v4/boost/intrusive/unordered_set_hook.hpp (original)
+++ branches/proto/v4/boost/intrusive/unordered_set_hook.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -35,7 +35,6 @@
       < VoidPointer
       , unordered_node<VoidPointer, StoreHash, OptimizeMultiKey>
>::type node_ptr;
-// node_ptr next_;
    node_ptr prev_in_group_;
    std::size_t hash_;
 };
@@ -48,7 +47,6 @@
       < VoidPointer
       , unordered_node<VoidPointer, false, true>
>::type node_ptr;
-// node_ptr next_;
    node_ptr prev_in_group_;
 };
 
@@ -60,7 +58,6 @@
       < VoidPointer
       , unordered_node<VoidPointer, true, false>
>::type node_ptr;
-// node_ptr next_;
    std::size_t hash_;
 };
 
@@ -97,34 +94,26 @@
    { n->hash_ = h; }
 };
 
-template<class VoidPointer, class Node>
-struct unordered_group_node_traits
+template<class NodeTraits>
+struct unordered_group_adapter
 {
- typedef Node node;
- typedef typename boost::pointer_to_other
- <VoidPointer, node>::type node_ptr;
- typedef typename boost::pointer_to_other
- <VoidPointer, const node>::type const_node_ptr;
+ typedef typename NodeTraits::node node;
+ typedef typename NodeTraits::node_ptr node_ptr;
+ typedef typename NodeTraits::const_node_ptr const_node_ptr;
 
    static node_ptr get_next(const_node_ptr n)
- { return n->prev_in_group_; }
+ { return NodeTraits::get_prev_in_group(n); }
 
    static void set_next(node_ptr n, node_ptr next)
- { n->prev_in_group_ = next; }
+ { NodeTraits::set_prev_in_group(n, next); }
 };
 
 template<class NodeTraits>
 struct unordered_algorithms
    : public circular_slist_algorithms<NodeTraits>
 {
- typedef circular_slist_algorithms<NodeTraits> base_type;
- typedef unordered_group_node_traits
- < typename boost::pointer_to_other
- < typename NodeTraits::node_ptr
- , void
- >::type
- , typename NodeTraits::node
- > group_traits;
+ typedef circular_slist_algorithms<NodeTraits> base_type;
+ typedef unordered_group_adapter<NodeTraits> group_traits;
    typedef circular_slist_algorithms<group_traits> group_algorithms;
 
    static void init(typename base_type::node_ptr n)

Modified: branches/proto/v4/boost/iostreams/detail/config/disable_warnings.hpp
==============================================================================
--- branches/proto/v4/boost/iostreams/detail/config/disable_warnings.hpp (original)
+++ branches/proto/v4/boost/iostreams/detail/config/disable_warnings.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,7 +16,9 @@
 # pragma warning(disable:4244) // Conversion: possible loss of data.
 # pragma warning(disable:4512) // Assignment operator could not be generated.
 # pragma warning(disable:4706) // Assignment within conditional expression.
-# pragma warning(disable:6334) // sizeof applied to an expression with an operator.
+# if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+# pragma warning(disable:6334) // sizeof applied to an expression with an operator.
+# endif
 #else
 # if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
 # pragma warn -8008 // Condition always true/false.

Modified: branches/proto/v4/boost/iostreams/detail/config/rtl.hpp
==============================================================================
--- branches/proto/v4/boost/iostreams/detail/config/rtl.hpp (original)
+++ branches/proto/v4/boost/iostreams/detail/config/rtl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -55,12 +55,16 @@
 
 # define BOOST_IOSTREAMS_FD_SEEK lseek64
 # define BOOST_IOSTREAMS_FD_TRUNCATE ftruncate64
+# define BOOST_IOSTREAMS_FD_MMAP mmap64
 # define BOOST_IOSTREAMS_FD_STAT stat64
+# define BOOST_IOSTREAMS_FD_FSTAT fstat64
 # define BOOST_IOSTREAMS_FD_OFFSET off64_t
 # else
 # define BOOST_IOSTREAMS_FD_SEEK lseek
 # define BOOST_IOSTREAMS_FD_TRUNCATE ftruncate
+# define BOOST_IOSTREAMS_FD_MMAP mmap
 # define BOOST_IOSTREAMS_FD_STAT stat
+# define BOOST_IOSTREAMS_FD_FSTAT fstat
 # define BOOST_IOSTREAMS_FD_OFFSET off_t
 # endif
 #endif

Modified: branches/proto/v4/boost/iostreams/device/file.hpp
==============================================================================
--- branches/proto/v4/boost/iostreams/device/file.hpp (original)
+++ branches/proto/v4/boost/iostreams/device/file.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,14 +5,6 @@
 
 // See http://www.boost.org/libs/iostreams for documentation.
 
-//
-// Contains wrappers for standard file buffers, together
-// with convenience typedefs:
-// - basic_file_source
-// - basic_file_sink
-// - basic_file
-//
-
 #ifndef BOOST_IOSTREAMS_FILE_HPP_INCLUDED
 #define BOOST_IOSTREAMS_FILE_HPP_INCLUDED
 

Modified: branches/proto/v4/boost/iostreams/device/file_descriptor.hpp
==============================================================================
--- branches/proto/v4/boost/iostreams/device/file_descriptor.hpp (original)
+++ branches/proto/v4/boost/iostreams/device/file_descriptor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,13 +15,15 @@
 # pragma once
 #endif
 
-#include <string> // file pathnames.
+#include <string>
 #include <boost/cstdint.hpp> // intmax_t.
 #include <boost/iostreams/categories.hpp> // tags.
 #include <boost/iostreams/detail/config/auto_link.hpp>
 #include <boost/iostreams/detail/config/dyn_link.hpp>
 #include <boost/iostreams/detail/config/windows_posix.hpp>
+#include <boost/iostreams/detail/file_handle.hpp>
 #include <boost/iostreams/detail/ios.hpp> // openmode, seekdir, int types.
+#include <boost/iostreams/detail/path.hpp>
 #include <boost/iostreams/positioning.hpp>
 #include <boost/shared_ptr.hpp>
 
@@ -30,82 +32,97 @@
 
 namespace boost { namespace iostreams {
 
+// Forward declarations
+class file_descriptor_source;
+class file_descriptor_sink;
+namespace detail { struct file_descriptor_impl; }
+
 class BOOST_IOSTREAMS_DECL file_descriptor {
 public:
-#ifdef BOOST_IOSTREAMS_WINDOWS
- typedef void* handle_type; // A.k.a HANDLE
-#else
- typedef int handle_type;
-#endif
- typedef char char_type;
+ friend class file_descriptor_source;
+ friend class file_descriptor_sink;
+ typedef detail::file_handle handle_type;
+ typedef char char_type;
     struct category
         : seekable_device_tag,
           closable_tag
         { };
+
+ // Default constructor
     file_descriptor();
+
+ // Constructors taking file desciptors
     explicit file_descriptor(handle_type fd, bool close_on_exit = false);
 #ifdef BOOST_IOSTREAMS_WINDOWS
     explicit file_descriptor(int fd, bool close_on_exit = false);
 #endif
+
+ // Constructor taking a std:: string
     explicit file_descriptor( const std::string& path,
                               BOOST_IOS::openmode mode =
- BOOST_IOS::in | BOOST_IOS::out,
- BOOST_IOS::openmode base_mode =
                                   BOOST_IOS::in | BOOST_IOS::out );
+
+ // Constructor taking a C-style string
     explicit file_descriptor( const char* path,
                               BOOST_IOS::openmode mode =
- BOOST_IOS::in | BOOST_IOS::out,
- BOOST_IOS::openmode base_mode =
                                   BOOST_IOS::in | BOOST_IOS::out );
+
+ // Constructor taking a Boost.Filesystem path
+ template<typename Path>
+ explicit file_descriptor( const Path& path,
+ BOOST_IOS::openmode mode =
+ BOOST_IOS::in | BOOST_IOS::out )
+ {
+ init();
+ open(detail::path(path), mode);
+ }
+
+ // Copy constructor
+ file_descriptor(const file_descriptor& other);
+
+ // open overloads taking file descriptors
+ void open(handle_type fd, bool close_on_exit = false);
+#ifdef BOOST_IOSTREAMS_WINDOWS
+ void open(int fd, bool close_on_exit = false);
+#endif
+
+ // open overload taking a std::string
     void open( const std::string& path,
- BOOST_IOS::openmode =
- BOOST_IOS::in | BOOST_IOS::out,
- BOOST_IOS::openmode base_mode =
+ BOOST_IOS::openmode mode =
                    BOOST_IOS::in | BOOST_IOS::out );
+
+ // open overload taking C-style string
     void open( const char* path,
- BOOST_IOS::openmode =
- BOOST_IOS::in | BOOST_IOS::out,
- BOOST_IOS::openmode base_mode =
+ BOOST_IOS::openmode mode =
                    BOOST_IOS::in | BOOST_IOS::out );
- bool is_open() const { return pimpl_->flags_ != 0; }
+
+ // open overload taking a Boost.Filesystem path
+ template<typename Path>
+ void open( const Path& path,
+ BOOST_IOS::openmode mode =
+ BOOST_IOS::in | BOOST_IOS::out )
+ { open(detail::path(path), mode); }
+
+ bool is_open() const;
+ void close();
     std::streamsize read(char_type* s, std::streamsize n);
     std::streamsize write(const char_type* s, std::streamsize n);
     std::streampos seek(stream_offset off, BOOST_IOS::seekdir way);
- void close();
- handle_type handle() const { return pimpl_->handle_; }
+ handle_type handle() const;
 private:
- struct impl {
- impl() :
- #ifdef BOOST_IOSTREAMS_WINDOWS
- handle_(reinterpret_cast<handle_type>(-1)),
- #else
- handle_(-1),
- #endif
- flags_(0)
- { }
- impl(handle_type fd, bool close_on_exit)
- : handle_(fd), flags_(0)
- { if (close_on_exit) flags_ |= impl::close_on_exit; }
- ~impl()
- { if (flags_ & close_on_exit) close_impl(*this); }
- enum flags {
- close_on_exit = 1,
- append = 4
- };
- handle_type handle_;
- int flags_;
- };
- friend struct impl;
+ void init();
 
- static void close_impl(impl&);
-#ifdef BOOST_IOSTREAMS_WINDOWS
- static handle_type int_to_handle(int fd);
-#endif
+ // open overload taking a detail::path
+ void open( const detail::path& path,
+ BOOST_IOS::openmode,
+ BOOST_IOS::openmode = BOOST_IOS::in | BOOST_IOS::out );
 
- shared_ptr<impl> pimpl_;
+ typedef detail::file_descriptor_impl impl_type;
+ shared_ptr<impl_type> pimpl_;
 };
 
-struct file_descriptor_source : private file_descriptor {
+class file_descriptor_source : private file_descriptor {
+public:
 #ifdef BOOST_IOSTREAMS_WINDOWS
     typedef void* handle_type; // A.k.a HANDLE
 #else
@@ -117,32 +134,61 @@
         device_tag,
         closable_tag
       { };
- using file_descriptor::read;
- using file_descriptor::seek;
- using file_descriptor::open;
     using file_descriptor::is_open;
     using file_descriptor::close;
+ using file_descriptor::read;
+ using file_descriptor::seek;
     using file_descriptor::handle;
+
+ // Default constructor
     file_descriptor_source() { }
- explicit file_descriptor_source(handle_type fd, bool close_on_exit = false)
- : file_descriptor(fd, close_on_exit)
- { }
-#ifdef BOOST_IOSTREAMS_WINDOWS
- explicit file_descriptor_source(int fd, bool close_on_exit = false)
- : file_descriptor(fd, close_on_exit)
- { }
+
+ // Constructors taking file desciptors
+ explicit file_descriptor_source(handle_type fd, bool close_on_exit = false);
+#ifdef BOOST_IOSTREAMS_WINDOWS
+ explicit file_descriptor_source(int fd, bool close_on_exit = false);
 #endif
+
+ // Constructor taking a std:: string
     explicit file_descriptor_source( const std::string& path,
- BOOST_IOS::openmode m = BOOST_IOS::in )
- : file_descriptor(path, m & ~BOOST_IOS::out, BOOST_IOS::in)
- { }
+ BOOST_IOS::openmode mode = BOOST_IOS::in );
+
+ // Constructor taking a C-style string
     explicit file_descriptor_source( const char* path,
- BOOST_IOS::openmode m = BOOST_IOS::in )
- : file_descriptor(path, m & ~BOOST_IOS::out, BOOST_IOS::in)
- { }
+ BOOST_IOS::openmode mode = BOOST_IOS::in );
+
+ // Constructor taking a Boost.Filesystem path
+ template<typename Path>
+ explicit file_descriptor_source( const Path& path,
+ BOOST_IOS::openmode mode = BOOST_IOS::in )
+ { open(detail::path(path), mode); }
+
+ // Copy constructor
+ file_descriptor_source(const file_descriptor_source& other);
+
+ // open overloads taking file descriptors
+ void open(handle_type fd, bool close_on_exit = false);
+#ifdef BOOST_IOSTREAMS_WINDOWS
+ void open(int fd, bool close_on_exit = false);
+#endif
+
+ // open overload taking a std::string
+ void open(const std::string& path, BOOST_IOS::openmode mode = BOOST_IOS::in);
+
+ // open overload taking C-style string
+ void open(const char* path, BOOST_IOS::openmode mode = BOOST_IOS::in);
+
+ // open overload taking a Boost.Filesystem path
+ template<typename Path>
+ void open(const Path& path, BOOST_IOS::openmode mode = BOOST_IOS::in);
+private:
+
+ // open overload taking a detail::path
+ void open(const detail::path& path, BOOST_IOS::openmode);
 };
 
-struct file_descriptor_sink : private file_descriptor {
+class file_descriptor_sink : private file_descriptor {
+public:
 #ifdef BOOST_IOSTREAMS_WINDOWS
     typedef void* handle_type; // A.k.a HANDLE
 #else
@@ -154,29 +200,61 @@
         device_tag,
         closable_tag
       { };
- using file_descriptor::write;
- using file_descriptor::seek;
- using file_descriptor::open;
     using file_descriptor::is_open;
     using file_descriptor::close;
+ using file_descriptor::write;
+ using file_descriptor::seek;
     using file_descriptor::handle;
+
+ // Default constructor
     file_descriptor_sink() { }
- explicit file_descriptor_sink(handle_type fd, bool close_on_exit = false)
- : file_descriptor(fd, close_on_exit)
- { }
-#ifdef BOOST_IOSTREAMS_WINDOWS
- explicit file_descriptor_sink(int fd, bool close_on_exit = false)
- : file_descriptor(fd, close_on_exit)
- { }
+
+ // Constructors taking file desciptors
+ explicit file_descriptor_sink(handle_type fd, bool close_on_exit = false);
+#ifdef BOOST_IOSTREAMS_WINDOWS
+ explicit file_descriptor_sink(int fd, bool close_on_exit = false);
 #endif
+
+ // Constructor taking a std:: string
     explicit file_descriptor_sink( const std::string& path,
- BOOST_IOS::openmode m = BOOST_IOS::out )
- : file_descriptor(path, m & ~BOOST_IOS::in, BOOST_IOS::out)
- { }
+ BOOST_IOS::openmode mode = BOOST_IOS::out );
+
+ // Constructor taking a C-style string
     explicit file_descriptor_sink( const char* path,
- BOOST_IOS::openmode m = BOOST_IOS::out )
- : file_descriptor(path, m & ~BOOST_IOS::in, BOOST_IOS::out)
- { }
+ BOOST_IOS::openmode mode = BOOST_IOS::out );
+
+ // Constructor taking a Boost.Filesystem path
+ template<typename Path>
+ explicit file_descriptor_sink( const Path& path,
+ BOOST_IOS::openmode mode = BOOST_IOS::out )
+ { open(detail::path(path), mode); }
+
+ // Copy constructor
+ file_descriptor_sink(const file_descriptor_sink& other);
+
+ // open overloads taking file descriptors
+ void open(handle_type fd, bool close_on_exit = false);
+#ifdef BOOST_IOSTREAMS_WINDOWS
+ void open(int fd, bool close_on_exit = false);
+#endif
+
+ // open overload taking a std::string
+ void open( const std::string& path,
+ BOOST_IOS::openmode mode = BOOST_IOS::out );
+
+ // open overload taking C-style string
+ void open( const char* path,
+ BOOST_IOS::openmode mode = BOOST_IOS::out );
+
+ // open overload taking a Boost.Filesystem path
+ template<typename Path>
+ void open( const Path& path,
+ BOOST_IOS::openmode mode = BOOST_IOS::out )
+ { open(detail::path(path), mode); }
+private:
+
+ // open overload taking a detail::path
+ void open(const detail::path& path, BOOST_IOS::openmode);
 };
 
 } } // End namespaces iostreams, boost.

Modified: branches/proto/v4/boost/iostreams/device/mapped_file.hpp
==============================================================================
--- branches/proto/v4/boost/iostreams/device/mapped_file.hpp (original)
+++ branches/proto/v4/boost/iostreams/device/mapped_file.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,35 +1,9 @@
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2003-2007 Jonathan Turkanis
+// (C) Copyright Jorge Lodos 2008.
+// (C) Copyright Jonathan Turkanis 2003.
 // (C) Copyright Craig Henderson 2002. 'boost/memmap.hpp' from sandbox
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
 
-// See http://www.boost.org/libs/iostreams for documentation.
-
-//
-// This header and its accompanying source file libs/iostreams/memmap.cpp are
-// an adaptation of Craig Henderson's memmory mapped file library. The
-// interface has been revised significantly, but the underlying OS-specific
-// code is essentially the same, with some code from Boost.Filesystem
-// mixed in. (See notations in source.)
-//
-// The following changes have been made:
-//
-// 1. OS-specific code put in a .cpp file.
-// 2. Name of main class changed to mapped_file.
-// 3. mapped_file given an interface similar to std::fstream (open(),
-// is_open(), close()) and std::string (data(), size(), begin(), end()).
-// 4. An additional class readonly_mapped_file has been provided as a
-// convenience.
-// 5. [Obsolete: Error states are reported using filesystem::error_code.]
-// 6. Read-only or read-write states are specified using ios_base::openmode.
-// 7. Access to the underlying file handles and to security parameters
-// has been removed.
-//
-
-#ifndef BOOST_IOSTREAMS_MAPPED_FILE_HPP_INCLUDED
-#define BOOST_IOSTREAMS_MAPPED_FILE_HPP_INCLUDED
-
 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
 # pragma once
 #endif
@@ -44,90 +18,181 @@
 #include <boost/iostreams/concepts.hpp>
 #include <boost/iostreams/detail/config/auto_link.hpp>
 #include <boost/iostreams/detail/config/dyn_link.hpp>
-#include <boost/iostreams/detail/ios.hpp> // openmode.
+#include <boost/iostreams/detail/config/wide_streams.hpp>
+#include <boost/iostreams/detail/ios.hpp> // openmode, failure
+#include <boost/iostreams/detail/path.hpp>
 #include <boost/iostreams/operations_fwd.hpp>
 #include <boost/iostreams/positioning.hpp>
 #include <boost/shared_ptr.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_same.hpp>
 
 // Must come last.
-#include <boost/iostreams/detail/config/disable_warnings.hpp>
 #include <boost/config/abi_prefix.hpp>
 
 namespace boost { namespace iostreams {
 
+//------------------Definition of mapped_file_base and mapped_file_params-----//
+
+// Forward declarations
+class mapped_file_source;
+class mapped_file_sink;
+class mapped_file;
+namespace detail { class mapped_file_impl; }
+
+class mapped_file_base {
+public:
+ enum mapmode {
+ readonly = 1,
+ readwrite = 2,
+ priv = 4
+ };
+};
+
+// Bitmask operations for mapped_file_base::mapmode
+mapped_file_base::mapmode
+operator|(mapped_file_base::mapmode a, mapped_file_base::mapmode b);
+
+mapped_file_base::mapmode
+operator&(mapped_file_base::mapmode a, mapped_file_base::mapmode b);
+
+mapped_file_base::mapmode
+operator^(mapped_file_base::mapmode a, mapped_file_base::mapmode b);
+
+mapped_file_base::mapmode
+operator~(mapped_file_base::mapmode a);
+
+mapped_file_base::mapmode
+operator|=(mapped_file_base::mapmode& a, mapped_file_base::mapmode b);
+
+mapped_file_base::mapmode
+operator&=(mapped_file_base::mapmode& a, mapped_file_base::mapmode b);
+
+mapped_file_base::mapmode
+operator^=(mapped_file_base::mapmode& a, mapped_file_base::mapmode b);
+
+//------------------Definition of mapped_file_params--------------------------//
+
 namespace detail {
 
-struct mapped_file_impl;
+struct mapped_file_params_base {
+ mapped_file_params_base()
+ : flags(static_cast<mapped_file_base::mapmode>(0)),
+ mode(), offset(0), length(static_cast<std::size_t>(-1)),
+ new_file_size(0), hint(0)
+ { }
+private:
+ friend class mapped_file_impl;
+ void normalize();
+public:
+ mapped_file_base::mapmode flags;
+ BOOST_IOS::openmode mode; // Deprecated
+ stream_offset offset;
+ std::size_t length;
+ stream_offset new_file_size;
+ const char* hint;
+};
 
 } // End namespace detail.
 
-struct mapped_file_params {
- explicit mapped_file_params()
- #if BOOST_WORKAROUND(BOOST_MSVC, < 1400) && defined(BOOST_RWSTD_VER) || \
- defined(__BORLANDC__) && defined(_CPPLIB_VER)
- /**/
- : mode(std::ios_base::openmode(0)),
- #else
- : mode(),
- #endif
- offset(0), length(static_cast<std::size_t>(-1)),
- new_file_size(0), hint(0)
+// This template allows Boost.Filesystem paths to be specified when creating or
+// reopening a memory mapped file, without creating a dependence on
+// Boost.Filesystem. Possible values of Path include std::string,
+// boost::filesystem::path, boost::filesystem::wpath,
+// and boost::iostreams::detail::path (used to store either a std::string or a
+// std::wstring).
+template<typename Path>
+struct basic_mapped_file_params
+ : detail::mapped_file_params_base
+{
+ typedef detail::mapped_file_params_base base_type;
+
+ // For wide paths, instantiate basic_mapped_file_params
+ // with boost::filesystem::wpath
+#ifndef BOOST_IOSTREAMS_NO_WIDE_STREAMS
+ BOOST_STATIC_ASSERT((!is_same<Path, std::wstring>::value));
+#endif
+
+ // Default constructor
+ basic_mapped_file_params() { }
+
+ // Construction from a Path
+ explicit basic_mapped_file_params(const Path& p) : path(p) { }
+
+ // Construction from a path of a different type
+ template<typename PathT>
+ explicit basic_mapped_file_params(const PathT& p) : path(p) { }
+
+ // Copy constructor
+ basic_mapped_file_params(const basic_mapped_file_params& other)
+ : base_type(other), path(other.path)
         { }
- explicit mapped_file_params(const std::string& path)
- : path(path),
- #if BOOST_WORKAROUND(BOOST_MSVC, < 1400) && defined(BOOST_RWSTD_VER) || \
- defined(__BORLANDC__) && defined(_CPPLIB_VER)
- mode(std::ios_base::openmode(0)),
- #else
- mode(),
- #endif
- offset(0), length(static_cast<std::size_t>(-1)),
- new_file_size(0), hint(0)
+
+ // Templated copy constructor
+ template<typename PathT>
+ basic_mapped_file_params(const basic_mapped_file_params<PathT>& other)
+ : base_type(other), path(other.path)
         { }
- std::string path;
- BOOST_IOS::openmode mode;
- stream_offset offset;
- std::size_t length;
- stream_offset new_file_size;
- const char* hint;
+
+ typedef Path path_type;
+ Path path;
 };
 
+typedef basic_mapped_file_params<std::string> mapped_file_params;
+
 //------------------Definition of mapped_file_source--------------------------//
 
-class BOOST_IOSTREAMS_DECL mapped_file_source {
+class BOOST_IOSTREAMS_DECL mapped_file_source : public mapped_file_base {
 private:
- struct safe_bool_helper { int x; }; // From Bronek Kozicki.
- typedef int safe_bool_helper::* safe_bool;
- friend struct operations<mapped_file_source>;
+ struct safe_bool_helper { int x; };
+ typedef int safe_bool_helper::* safe_bool;
+ typedef detail::mapped_file_impl impl_type;
+ typedef basic_mapped_file_params<detail::path> param_type;
+ friend class mapped_file;
+ friend class detail::mapped_file_impl;
+ friend struct boost::iostreams::operations<mapped_file_source>;
 public:
- typedef char char_type;
+ typedef char char_type;
     struct category
         : public source_tag,
           public direct_tag,
           public closable_tag
         { };
- typedef std::size_t size_type;
- typedef const char* iterator;
+ typedef std::size_t size_type;
+ typedef const char* iterator;
     BOOST_STATIC_CONSTANT(size_type, max_length = static_cast<size_type>(-1));
 
- mapped_file_source() { }
- explicit mapped_file_source(mapped_file_params);
- explicit mapped_file_source( const std::string& path,
+ // Default constructor
+ mapped_file_source();
+
+ // Constructor taking a parameters object
+ template<typename Path>
+ explicit mapped_file_source(const basic_mapped_file_params<Path>& p);
+
+ // Constructor taking a list of parameters
+ template<typename Path>
+ explicit mapped_file_source( const Path& path,
                                  size_type length = max_length,
                                  boost::intmax_t offset = 0 );
 
+ // Copy Constructor
+ mapped_file_source(const mapped_file_source& other);
+
     //--------------Stream interface------------------------------------------//
 
- void open(mapped_file_params params);
- void open( const std::string& path,
+ template<typename Path>
+ void open(const basic_mapped_file_params<Path>& p);
+
+ template<typename Path>
+ void open( const Path& path,
                size_type length = max_length,
                boost::intmax_t offset = 0 );
+
     bool is_open() const;
     void close();
-
     operator safe_bool() const;
     bool operator!() const;
- BOOST_IOS::openmode mode() const;
+ mapmode flags() const;
 
     //--------------Container interface---------------------------------------//
 
@@ -141,109 +206,308 @@
     // Returns the allocation granularity for virtual memory. Values passed
     // as offsets must be multiples of this value.
     static int alignment();
+
 private:
- friend class mapped_file;
- typedef detail::mapped_file_impl impl_type;
- void open_impl(mapped_file_params);
+ void init();
+ void open_impl(const param_type& p);
 
     boost::shared_ptr<impl_type> pimpl_;
 };
 
 //------------------Definition of mapped_file---------------------------------//
 
-class BOOST_IOSTREAMS_DECL mapped_file {
+class BOOST_IOSTREAMS_DECL mapped_file : public mapped_file_base {
 private:
- typedef mapped_file_source delegate_type;
- delegate_type delegate_;
- friend struct operations<mapped_file>;
+ typedef mapped_file_source delegate_type;
+ typedef delegate_type::safe_bool safe_bool;
+ typedef basic_mapped_file_params<detail::path> param_type;
+ friend struct boost::iostreams::operations<mapped_file >;
+ friend class mapped_file_sink;
 public:
- typedef char char_type;
+ typedef char char_type;
     struct category
         : public seekable_device_tag,
           public direct_tag,
           public closable_tag
         { };
- typedef mapped_file_source::size_type size_type;
- typedef char* iterator;
- typedef const char* const_iterator;
+ typedef mapped_file_source::size_type size_type;
+ typedef char* iterator;
+ typedef const char* const_iterator;
     BOOST_STATIC_CONSTANT(size_type, max_length = delegate_type::max_length);
+
+ // Default constructor
     mapped_file() { }
- explicit mapped_file(mapped_file_params p);
- explicit mapped_file( const std::string& path,
+
+ // Construstor taking a parameters object
+ template<typename Path>
+ explicit mapped_file(const basic_mapped_file_params<Path>& p);
+
+ // Constructor taking a list of parameters
+ template<typename Path>
+ mapped_file( const Path& path,
+ mapmode flags,
+ size_type length = max_length,
+ stream_offset offset = 0 );
+
+ // Constructor taking a list of parameters, including a
+ // std::ios_base::openmode (deprecated)
+ template<typename Path>
+ explicit mapped_file( const Path& path,
                           BOOST_IOS::openmode mode =
                               BOOST_IOS::in | BOOST_IOS::out,
                           size_type length = max_length,
                           stream_offset offset = 0 );
 
- //--------------Conversion to readonly_mapped_file------------------------//
+ // Copy Constructor
+ mapped_file(const mapped_file& other);
+
+ //--------------Conversion to mapped_file_source (deprecated)-------------//
 
     operator mapped_file_source&() { return delegate_; }
     operator const mapped_file_source&() const { return delegate_; }
 
     //--------------Stream interface------------------------------------------//
 
- void open(mapped_file_params p);
- void open( const std::string& path,
+ // open overload taking a parameters object
+ template<typename Path>
+ void open(const basic_mapped_file_params<Path>& p);
+
+ // open overload taking a list of parameters
+ template<typename Path>
+ void open( const Path& path,
+ mapmode mode,
+ size_type length = max_length,
+ stream_offset offset = 0 );
+
+ // open overload taking a list of parameters, including a
+ // std::ios_base::openmode (deprecated)
+ template<typename Path>
+ void open( const Path& path,
                BOOST_IOS::openmode mode =
                    BOOST_IOS::in | BOOST_IOS::out,
                size_type length = max_length,
                stream_offset offset = 0 );
+
     bool is_open() const { return delegate_.is_open(); }
     void close() { delegate_.close(); }
- operator delegate_type::safe_bool() const { return delegate_; }
- bool operator!() const { return !is_open(); }
- BOOST_IOS::openmode mode() const { return delegate_.mode(); }
+ operator safe_bool() const { return delegate_; }
+ bool operator!() const { return !delegate_; }
+ mapmode flags() const { return delegate_.flags(); }
 
     //--------------Container interface---------------------------------------//
 
     size_type size() const { return delegate_.size(); }
- char* data() const
- {
- return (mode() & BOOST_IOS::out) ?
- const_cast<char*>(delegate_.data()) :
- 0;
- }
+ char* data() const;
     const char* const_data() const { return delegate_.data(); }
     iterator begin() const { return data(); }
- const_iterator const_begin() const { return data(); }
+ const_iterator const_begin() const { return const_data(); }
     iterator end() const { return data() + size(); }
- const_iterator const_end() const { return data() + size(); }
+ const_iterator const_end() const { return const_data() + size(); }
 
     //--------------Query admissible offsets----------------------------------//
 
     // Returns the allocation granularity for virtual memory. Values passed
     // as offsets must be multiples of this value.
     static int alignment() { return mapped_file_source::alignment(); }
+
+ //--------------File access----------------------------------------------//
+
+ void resize(stream_offset new_size);
+private:
+ delegate_type delegate_;
 };
 
-struct BOOST_IOSTREAMS_DECL mapped_file_sink : private mapped_file {
- friend struct operations<mapped_file_sink>;
- typedef char char_type;
+//------------------Definition of mapped_file_sink----------------------------//
+
+class BOOST_IOSTREAMS_DECL mapped_file_sink : private mapped_file {
+public:
+ friend struct boost::iostreams::operations<mapped_file_sink>;
+ using mapped_file::mapmode;
+ using mapped_file::readonly;
+ using mapped_file::readwrite;
+ using mapped_file::priv;
+ using mapped_file::char_type;
     struct category
         : public sink_tag,
           public direct_tag,
           public closable_tag
         { };
+ using mapped_file::size_type;
+ using mapped_file::iterator;
+ using mapped_file::max_length;
+ using mapped_file::is_open;
     using mapped_file::close;
+ using mapped_file::operator safe_bool;
+ using mapped_file::operator !;
+ using mapped_file::flags;
     using mapped_file::size;
- explicit mapped_file_sink(mapped_file_params p);
- explicit mapped_file_sink( const std::string& path,
+ using mapped_file::data;
+ using mapped_file::begin;
+ using mapped_file::end;
+ using mapped_file::alignment;
+ using mapped_file::resize;
+
+ // Default constructor
+ mapped_file_sink() { }
+
+ // Constructor taking a parameters object
+ template<typename Path>
+ explicit mapped_file_sink(const basic_mapped_file_params<Path>& p);
+
+ // Constructor taking a list of parameters
+ template<typename Path>
+ explicit mapped_file_sink( const Path& path,
                                size_type length = max_length,
- boost::intmax_t offset = 0 );
- void open(mapped_file_params p);
- void open( const std::string& path,
+ boost::intmax_t offset = 0,
+ mapmode flags = readwrite );
+
+ // Copy Constructor
+ mapped_file_sink(const mapped_file_sink& other);
+
+ // open overload taking a parameters object
+ template<typename Path>
+ void open(const basic_mapped_file_params<Path>& p);
+
+ // open overload taking a list of parameters
+ template<typename Path>
+ void open( const Path& path,
                size_type length = max_length,
- boost::intmax_t offset = 0 );
+ boost::intmax_t offset = 0,
+ mapmode flags = readwrite );
 };
 
+//------------------Implementation of mapped_file_source----------------------//
+
+template<typename Path>
+mapped_file_source::mapped_file_source(const basic_mapped_file_params<Path>& p)
+{ init(); open(p); }
+
+template<typename Path>
+mapped_file_source::mapped_file_source(
+ const Path& path, size_type length, boost::intmax_t offset)
+{ init(); open(path, length, offset); }
+
+template<typename Path>
+void mapped_file_source::open(const basic_mapped_file_params<Path>& p)
+{
+ param_type params(p);
+ if (params.flags) {
+ if (params.flags != mapped_file::readonly)
+ throw new BOOST_IOSTREAMS_FAILURE("invalid flags");
+ } else {
+ if (params.mode & BOOST_IOS::out)
+ throw new BOOST_IOSTREAMS_FAILURE("invalid mode");
+ params.mode |= BOOST_IOS::in;
+ }
+ open_impl(params);
+}
+
+template<typename Path>
+void mapped_file_source::open(
+ const Path& path, size_type length, boost::intmax_t offset)
+{
+ param_type p(path);
+ p.length = length;
+ p.offset = offset;
+ open(p);
+}
+
+//------------------Implementation of mapped_file-----------------------------//
+
+template<typename Path>
+mapped_file::mapped_file(const basic_mapped_file_params<Path>& p)
+{ open(p); }
+
+template<typename Path>
+mapped_file::mapped_file(
+ const Path& path, mapmode flags,
+ size_type length, stream_offset offset )
+{ open(path, flags, length, offset); }
+
+template<typename Path>
+mapped_file::mapped_file(
+ const Path& path, BOOST_IOS::openmode mode,
+ size_type length, stream_offset offset )
+{ open(path, mode, length, offset); }
+
+template<typename Path>
+void mapped_file::open(const basic_mapped_file_params<Path>& p)
+{ delegate_.open_impl(p); }
+
+template<typename Path>
+void mapped_file::open(
+ const Path& path, mapmode flags,
+ size_type length, stream_offset offset )
+{
+ param_type p(path);
+ p.flags = flags;
+ p.length = length;
+ p.offset = offset;
+ open(p);
+}
+
+template<typename Path>
+void mapped_file::open(
+ const Path& path, BOOST_IOS::openmode mode,
+ size_type length, stream_offset offset )
+{
+ param_type p(path);
+ p.mode = mode;
+ p.length = length;
+ p.offset = offset;
+ open(p);
+}
+
+inline char* mapped_file::data() const
+{ return (flags() != readonly) ? const_cast<char*>(delegate_.data()) : 0; }
+
+//------------------Implementation of mapped_file_sink------------------------//
+
+template<typename Path>
+mapped_file_sink::mapped_file_sink(const basic_mapped_file_params<Path>& p)
+{ open(p); }
+
+template<typename Path>
+mapped_file_sink::mapped_file_sink(
+ const Path& path, size_type length,
+ boost::intmax_t offset, mapmode flags )
+{ open(path, length, offset, flags); }
+
+template<typename Path>
+void mapped_file_sink::open(const basic_mapped_file_params<Path>& p)
+{
+ param_type params(p);
+ if (params.flags) {
+ if (params.flags & mapped_file::readonly)
+ throw new BOOST_IOSTREAMS_FAILURE("invalid flags");
+ } else {
+ if (params.mode & BOOST_IOS::in)
+ throw new BOOST_IOSTREAMS_FAILURE("invalid mode");
+ params.mode |= BOOST_IOS::out;
+ }
+ mapped_file::open(params);
+}
+
+template<typename Path>
+void mapped_file_sink::open(
+ const Path& path, size_type length,
+ boost::intmax_t offset, mapmode flags )
+{
+ param_type p(path);
+ p.flags = flags;
+ p.length = length;
+ p.offset = offset;
+ open(p);
+}
+
 //------------------Specialization of direct_impl-----------------------------//
 
 template<>
-struct operations<boost::iostreams::mapped_file_source>
- : detail::close_impl<closable_tag>
+struct operations<mapped_file_source>
+ : boost::iostreams::detail::close_impl<closable_tag>
 {
     static std::pair<char*, char*>
- input_sequence(boost::iostreams::mapped_file_source& src)
+ input_sequence(mapped_file_source& src)
     {
         return std::make_pair( const_cast<char*>(src.begin()),
                                const_cast<char*>(src.end()) );
@@ -251,35 +515,79 @@
 };
 
 template<>
-struct operations<boost::iostreams::mapped_file_sink>
- : detail::close_impl<closable_tag>
+struct operations<mapped_file>
+ : boost::iostreams::detail::close_impl<closable_tag>
 {
     static std::pair<char*, char*>
- output_sequence(boost::iostreams::mapped_file_sink& sink)
+ input_sequence(mapped_file& file)
     {
- return std::make_pair(sink.begin(), sink.end());
+ return std::make_pair(file.begin(), file.end());
     }
-};
-
-template<>
-struct operations<boost::iostreams::mapped_file>
- : detail::close_impl<closable_tag>
-{
     static std::pair<char*, char*>
- input_sequence(boost::iostreams::mapped_file& file)
+ output_sequence(mapped_file& file)
     {
         return std::make_pair(file.begin(), file.end());
     }
+};
+
+template<>
+struct operations<mapped_file_sink>
+ : boost::iostreams::detail::close_impl<closable_tag>
+{
     static std::pair<char*, char*>
- output_sequence(boost::iostreams::mapped_file& file)
+ output_sequence(mapped_file_sink& sink)
     {
- return std::make_pair(file.begin(), file.end());
+ return std::make_pair(sink.begin(), sink.end());
     }
 };
+
+//------------------Definition of mapmode operators---------------------------//
+
+inline mapped_file::mapmode
+operator|(mapped_file::mapmode a, mapped_file::mapmode b)
+{
+ return static_cast<mapped_file::mapmode>
+ (static_cast<int>(a) | static_cast<int>(b));
+}
+
+inline mapped_file::mapmode
+operator&(mapped_file::mapmode a, mapped_file::mapmode b)
+{
+ return static_cast<mapped_file::mapmode>
+ (static_cast<int>(a) & static_cast<int>(b));
+}
+
+inline mapped_file::mapmode
+operator^(mapped_file::mapmode a, mapped_file::mapmode b)
+{
+ return static_cast<mapped_file::mapmode>
+ (static_cast<int>(a) ^ static_cast<int>(b));
+}
+
+inline mapped_file::mapmode
+operator~(mapped_file::mapmode a)
+{
+ return static_cast<mapped_file::mapmode>(~static_cast<int>(a));
+}
+
+inline mapped_file::mapmode
+operator|=(mapped_file::mapmode& a, mapped_file::mapmode b)
+{
+ return a = a | b;
+}
+
+inline mapped_file::mapmode
+operator&=(mapped_file::mapmode& a, mapped_file::mapmode b)
+{
+ return a = a & b;
+}
+
+inline mapped_file::mapmode
+operator^=(mapped_file::mapmode& a, mapped_file::mapmode b)
+{
+ return a = a ^ b;
+}
 
 } } // End namespaces iostreams, boost.
 
 #include <boost/config/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
-#include <boost/iostreams/detail/config/enable_warnings.hpp> // MSVC.
-
-#endif // #ifndef BOOST_IOSTREAMS_MAPPED_FILE_HPP_INCLUDED

Modified: branches/proto/v4/boost/lambda/algorithm.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/algorithm.hpp (original)
+++ branches/proto/v4/boost/lambda/algorithm.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 // -- algorithm.hpp -- Boost Lambda Library -----------------------------------
-// Copyright (C) 2002 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2002 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2002 Gary Powell (gwpowell_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/boost/lambda/bind.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/bind.hpp (original)
+++ branches/proto/v4/boost/lambda/bind.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // -- bind.hpp -- Boost Lambda Library --------------------------------------
 
-// Copyright (C) 1999-2001 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999-2001 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Gary Powell (gwpowell_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/boost/lambda/casts.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/casts.hpp (original)
+++ branches/proto/v4/boost/lambda/casts.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 // - casts.hpp -- BLambda Library -------------
 //
 // Copyright (C) 2000 Gary Powell (powellg_at_[hidden])
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/construct.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/construct.hpp (original)
+++ branches/proto/v4/boost/lambda/construct.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 // - construct.hpp -- Lambda Library -------------
 //
 // Copyright (C) 2000 Gary Powell (powellg_at_[hidden])
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/control_structures.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/control_structures.hpp (original)
+++ branches/proto/v4/boost/lambda/control_structures.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 // -- control_structures.hpp -- Boost Lambda Library --------------------------
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/core.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/core.hpp (original)
+++ branches/proto/v4/boost/lambda/core.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 // -- core.hpp -- Boost Lambda Library -------------------------------------
 //
 // Copyright (C) 2000 Gary Powell (powellg_at_[hidden])
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/actions.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/actions.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/actions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // -- Boost Lambda Library - actions.hpp ----------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/arity_code.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/arity_code.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/arity_code.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // -- Boost Lambda Library -------------------------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/bind_functions.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/bind_functions.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/bind_functions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // -- bind_functions.hpp -- Boost Lambda Library
 //
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/control_constructs_common.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/control_constructs_common.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/control_constructs_common.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library -- control_constructs_common.hpp -------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/boost/lambda/detail/control_structures_impl.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/control_structures_impl.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/control_structures_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library -- control_structures_impl.hpp ---------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/boost/lambda/detail/function_adaptors.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/function_adaptors.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/function_adaptors.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library - function_adaptors.hpp ----------------------------
  
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/is_instance_of.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/is_instance_of.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/is_instance_of.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library - is_instance_of.hpp ---------------------
 
-// Copyright (C) 2001 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/lambda_config.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/lambda_config.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/lambda_config.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library - lambda_config.hpp ------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/lambda_functor_base.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/lambda_functor_base.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/lambda_functor_base.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library lambda_functor_base.hpp -----------------------------
 //
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/lambda_functors.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/lambda_functors.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/lambda_functors.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library - lambda_functors.hpp -------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/lambda_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/lambda_fwd.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/lambda_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // lambda_fwd.hpp - Boost Lambda Library -------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/lambda_traits.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/lambda_traits.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/lambda_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // - lambda_traits.hpp --- Boost Lambda Library ----------------------------
 //
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/member_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/member_ptr.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/member_ptr.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library -- member_ptr.hpp ---------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000 Gary Powell (gary.powell_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/boost/lambda/detail/operator_actions.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/operator_actions.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/operator_actions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // -- operator_actions.hpp - Boost Lambda Library ----------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/operator_lambda_func_base.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/operator_lambda_func_base.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/operator_lambda_func_base.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library - operator_lambda_func_base.hpp -----------------
 //
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/operator_return_type_traits.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/operator_return_type_traits.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/operator_return_type_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // operator_return_type_traits.hpp -- Boost Lambda Library ------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/operators.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/operators.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/operators.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library - operators.hpp --------------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/ret.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/ret.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/ret.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library ret.hpp -----------------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/return_type_traits.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/return_type_traits.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/return_type_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // return_type_traits.hpp -- Boost Lambda Library ---------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/detail/select_functions.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/detail/select_functions.hpp (original)
+++ branches/proto/v4/boost/lambda/detail/select_functions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // -- select_functions.hpp -- Boost Lambda Library --------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/exceptions.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/exceptions.hpp (original)
+++ branches/proto/v4/boost/lambda/exceptions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 // -- Boost Lambda Library -- exceptions.hpp ----------------
 //
 // Copyright (C) 2000 Gary Powell (gwpowell_at_[hidden])
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/if.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/if.hpp (original)
+++ branches/proto/v4/boost/lambda/if.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library -- if.hpp ------------------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000 Gary Powell (powellg_at_[hidden])
 // Copyright (C) 2001-2002 Joel de Guzman
 //

Modified: branches/proto/v4/boost/lambda/lambda.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/lambda.hpp (original)
+++ branches/proto/v4/boost/lambda/lambda.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 // -- lambda.hpp -- Boost Lambda Library -----------------------------------
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/lambda/loops.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/loops.hpp (original)
+++ branches/proto/v4/boost/lambda/loops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Boost Lambda Library -- loops.hpp ----------------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000 Gary Powell (powellg_at_[hidden])
 // Copyright (c) 2001-2002 Joel de Guzman
 //

Modified: branches/proto/v4/boost/lambda/numeric.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/numeric.hpp (original)
+++ branches/proto/v4/boost/lambda/numeric.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 // -- numeric.hpp -- Boost Lambda Library -----------------------------------
-// Copyright (C) 2002 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2002 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2002 Gary Powell (gwpowell_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/boost/lambda/switch.hpp
==============================================================================
--- branches/proto/v4/boost/lambda/switch.hpp (original)
+++ branches/proto/v4/boost/lambda/switch.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 // Boost Lambda Library -- switch.hpp -----------------------------------
 //
 // Copyright (C) 2000 Gary Powell (powellg_at_[hidden])
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/limits.hpp
==============================================================================
--- branches/proto/v4/boost/limits.hpp (original)
+++ branches/proto/v4/boost/limits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,40 +19,29 @@
 # include <limits>
 #endif
 
+#include <boost/detail/extended_integer.hpp> // for BOOST_HAS_XINT, etc.
+
 #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
+#if !defined(BOOST_HAS_XINT) || !(BOOST_HAS_XINT)
+#error "Shouldn't have gotten here based on preceeding preprocessor statements"
 #endif
+#define BOOST_LLT ::boost::detail::xint_t
+#define BOOST_ULLT ::boost::detail::uxint_t
 
 #include <climits> // for CHAR_BIT
 
 namespace std
 {
   template<>
- class numeric_limits<BOOST_LLT>
+ 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
+ static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return BOOST_XINT_MIN; }
+ static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return BOOST_XINT_MAX; }
       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);
@@ -88,24 +77,13 @@
   };
 
   template<>
- class numeric_limits<BOOST_ULLT>
+ 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
+ static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return (BOOST_ULLT) 0u; }
+ static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return BOOST_UXINT_MAX; }
       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);

Modified: branches/proto/v4/boost/math/common_factor_rt.hpp
==============================================================================
--- branches/proto/v4/boost/math/common_factor_rt.hpp (original)
+++ branches/proto/v4/boost/math/common_factor_rt.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,6 +6,10 @@
 // without express or implied warranty, and with no claim as to its suitability
 // for any purpose.
 
+// boostinspect:nolicense (don't complain about the lack of a Boost license)
+// (Paul Moore hasn't been in contact for years, so there's no way to change the
+// license.)
+
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #ifndef BOOST_MATH_COMMON_FACTOR_RT_HPP

Modified: branches/proto/v4/boost/math/concepts/real_concept.hpp
==============================================================================
--- branches/proto/v4/boost/math/concepts/real_concept.hpp (original)
+++ branches/proto/v4/boost/math/concepts/real_concept.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -299,7 +299,7 @@
    is >> v;
    a = v;
    return is;
-#elif defined(__SGI_STL_PORT)
+#elif defined(__SGI_STL_PORT) || defined(_RWSTD_VER) || defined(__LIBCOMO__)
    std::string s;
    real_concept_base_type d;
    is >> s;

Modified: branches/proto/v4/boost/math/distributions/detail/generic_quantile.hpp
==============================================================================
--- branches/proto/v4/boost/math/distributions/detail/generic_quantile.hpp (original)
+++ branches/proto/v4/boost/math/distributions/detail/generic_quantile.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,7 @@
+// 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)
 
 #ifndef BOOST_MATH_DISTIBUTIONS_DETAIL_GENERIC_QUANTILE_HPP
 #define BOOST_MATH_DISTIBUTIONS_DETAIL_GENERIC_QUANTILE_HPP

Modified: branches/proto/v4/boost/math/distributions/non_central_chi_squared.hpp
==============================================================================
--- branches/proto/v4/boost/math/distributions/non_central_chi_squared.hpp (original)
+++ branches/proto/v4/boost/math/distributions/non_central_chi_squared.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -48,7 +48,7 @@
             // and the distribution of the square of the sample
             // multiple correlation coeficient.
             // D. Benton, K. Krishnamoorthy.
- // Computational Statistics & Data Analysis 43 (2003) 249 – 267
+ // Computational Statistics & Data Analysis 43 (2003) 249 - 267
             //
             BOOST_MATH_STD_USING
 
@@ -193,7 +193,7 @@
             // and the distribution of the square of the sample
             // multiple correlation coeficient.
             // D. Benton, K. Krishnamoorthy.
- // Computational Statistics & Data Analysis 43 (2003) 249 – 267
+ // Computational Statistics & Data Analysis 43 (2003) 249 - 267
             //
             // We're summing a Poisson weighting term multiplied by
             // a central chi squared distribution.

Modified: branches/proto/v4/boost/math/distributions/poisson.hpp
==============================================================================
--- branches/proto/v4/boost/math/distributions/poisson.hpp (original)
+++ branches/proto/v4/boost/math/distributions/poisson.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,7 @@
 // events, occurrences, failures or arrivals occurring in a fixed time,
 // assuming these events occur with a known average or mean rate (lambda)
 // and are independent of the time since the last event.
-// The distribution was discovered by Siméon-Denis Poisson (1781–1840).
+// The distribution was discovered by Simeon-Denis Poisson (1781-1840).
 
 // Parameter lambda is the mean number of events in the given time interval.
 // The random variate k is the number of events, occurrences or arrivals.

Modified: branches/proto/v4/boost/math/policies/error_handling.hpp
==============================================================================
--- branches/proto/v4/boost/math/policies/error_handling.hpp (original)
+++ branches/proto/v4/boost/math/policies/error_handling.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -62,6 +62,8 @@
 T user_evaluation_error(const char* function, const char* message, const T& val);
 template <class T>
 T user_rounding_error(const char* function, const char* message, const T& val);
+template <class T>
+T user_indeterminate_result_error(const char* function, const char* message, const T& val);
 
 namespace detail
 {
@@ -426,6 +428,57 @@
    return user_rounding_error(function, message, val);
 }
 
+template <class T, class R>
+inline T raise_indeterminate_result_error(
+ const char* function,
+ const char* message,
+ const T& val,
+ const R& ,
+ const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::throw_on_error>&)
+{
+ raise_error<std::domain_error, T>(function, message, val);
+ // we never get here:
+ return std::numeric_limits<T>::quiet_NaN();
+}
+
+template <class T, class R>
+inline T raise_indeterminate_result_error(
+ const char* ,
+ const char* ,
+ const T& ,
+ const R& result,
+ const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::ignore_error>&)
+{
+ // This may or may not do the right thing, but the user asked for the error
+ // to be ignored so here we go anyway:
+ return result;
+}
+
+template <class T, class R>
+inline T raise_indeterminate_result_error(
+ const char* ,
+ const char* ,
+ const T& ,
+ const R& result,
+ const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::errno_on_error>&)
+{
+ errno = EDOM;
+ // This may or may not do the right thing, but the user asked for the error
+ // to be silent so here we go anyway:
+ return result;
+}
+
+template <class T, class R>
+inline T raise_indeterminate_result_error(
+ const char* function,
+ const char* message,
+ const T& val,
+ const R& ,
+ const ::boost::math::policies::indeterminate_result_error< ::boost::math::policies::user_error>&)
+{
+ return user_indeterminate_result_error(function, message, val);
+}
+
 } // namespace detail
 
 template <class T, class Policy>
@@ -492,6 +545,15 @@
       val, policy_type());
 }
 
+template <class T, class R, class Policy>
+inline T raise_indeterminate_result_error(const char* function, const char* message, const T& val, const R& result, const Policy&)
+{
+ typedef typename Policy::indeterminate_result_error_type policy_type;
+ return detail::raise_indeterminate_result_error(
+ function, message ? message : "Indeterminate result with value %1%",
+ val, result, policy_type());
+}
+
 //
 // checked_narrowing_cast:
 //

Modified: branches/proto/v4/boost/math/policies/policy.hpp
==============================================================================
--- branches/proto/v4/boost/math/policies/policy.hpp (original)
+++ branches/proto/v4/boost/math/policies/policy.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -63,6 +63,9 @@
 #ifndef BOOST_MATH_DENORM_ERROR_POLICY
 #define BOOST_MATH_DENORM_ERROR_POLICY ignore_error
 #endif
+#ifndef BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY
+#define BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY ignore_error
+#endif
 #ifndef BOOST_MATH_DIGITS10_POLICY
 #define BOOST_MATH_DIGITS10_POLICY 0
 #endif
@@ -182,6 +185,7 @@
 BOOST_MATH_META_INT(error_policy_type, denorm_error, BOOST_MATH_DENORM_ERROR_POLICY)
 BOOST_MATH_META_INT(error_policy_type, evaluation_error, BOOST_MATH_EVALUATION_ERROR_POLICY)
 BOOST_MATH_META_INT(error_policy_type, rounding_error, BOOST_MATH_ROUNDING_ERROR_POLICY)
+BOOST_MATH_META_INT(error_policy_type, indeterminate_result_error, BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY)
 
 //
 // Policy types for internal promotion:
@@ -403,6 +407,7 @@
    typedef typename detail::find_arg<arg_list, is_denorm_error<mpl::_1>, denorm_error<> >::type denorm_error_type;
    typedef typename detail::find_arg<arg_list, is_evaluation_error<mpl::_1>, evaluation_error<> >::type evaluation_error_type;
    typedef typename detail::find_arg<arg_list, is_rounding_error<mpl::_1>, rounding_error<> >::type rounding_error_type;
+ typedef typename detail::find_arg<arg_list, is_indeterminate_result_error<mpl::_1>, indeterminate_result_error<> >::type indeterminate_result_error_type;
 private:
    //
    // Now work out the precision:
@@ -446,6 +451,7 @@
    typedef denorm_error<> denorm_error_type;
    typedef evaluation_error<> evaluation_error_type;
    typedef rounding_error<> rounding_error_type;
+ typedef indeterminate_result_error<> indeterminate_result_error_type;
 #if BOOST_MATH_DIGITS10_POLICY == 0
    typedef digits2<> precision_type;
 #else
@@ -470,6 +476,7 @@
    typedef denorm_error<> denorm_error_type;
    typedef evaluation_error<> evaluation_error_type;
    typedef rounding_error<> rounding_error_type;
+ typedef indeterminate_result_error<> indeterminate_result_error_type;
 #if BOOST_MATH_DIGITS10_POLICY == 0
    typedef digits2<> precision_type;
 #else
@@ -508,6 +515,7 @@
    typedef typename detail::find_arg<arg_list, is_denorm_error<mpl::_1>, typename Policy::denorm_error_type >::type denorm_error_type;
    typedef typename detail::find_arg<arg_list, is_evaluation_error<mpl::_1>, typename Policy::evaluation_error_type >::type evaluation_error_type;
    typedef typename detail::find_arg<arg_list, is_rounding_error<mpl::_1>, typename Policy::rounding_error_type >::type rounding_error_type;
+ typedef typename detail::find_arg<arg_list, is_indeterminate_result_error<mpl::_1>, typename Policy::indeterminate_result_error_type >::type indeterminate_result_error_type;
    //
    // Now work out the precision:
    //
@@ -543,6 +551,7 @@
       denorm_error_type,
       evaluation_error_type,
       rounding_error_type,
+ indeterminate_result_error_type,
       precision_type,
       promote_float_type,
       promote_double_type,
@@ -667,6 +676,13 @@
    return result_type();
 }
 
+template <class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11>
+inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&, const A7&, const A8&, const A9&, const A10&, const A11&)
+{
+ typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::type result_type;
+ return result_type();
+}
+
 //
 // Traits class to handle internal promotion:
 //

Modified: branches/proto/v4/boost/math/special_functions/detail/t_distribution_inv.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/detail/t_distribution_inv.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/detail/t_distribution_inv.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,7 +20,7 @@
 //
 // The main method used is due to Hill:
 //
-// G. W. Hill, Algorithm 396, Student’s t-Quantiles,
+// G. W. Hill, Algorithm 396, Student's t-Quantiles,
 // Communications of the ACM, 13(10): 619-620, Oct., 1970.
 //
 template <class T, class Policy>
@@ -67,9 +67,9 @@
 //
 // Tail and body series are due to Shaw:
 //
-// www.mth.kcl.ac.uk/˜shaww/web_page/papers/Tdistribution06.pdf
+// www.mth.kcl.ac.uk/~shaww/web_page/papers/Tdistribution06.pdf
 //
-// Shaw, W.T., 2006, "Sampling Student’s T distribution – use of
+// Shaw, W.T., 2006, "Sampling Student's T distribution - use of
 // the inverse cumulative distribution function."
 // Journal of Computational Finance, Vol 9 Issue 4, pp 37-73, Summer 2006
 //

Modified: branches/proto/v4/boost/math/special_functions/fpclassify.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/fpclassify.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/fpclassify.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -38,8 +38,15 @@
 #define BOOST_HAS_FPCLASSIFY
 
 #ifndef fpclassify
-# if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) && defined(_GLIBCXX_USE_C99_MATH) && !(defined(_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) && (_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC != 0))
-# define BOOST_FPCLASSIFY_PREFIX ::std::
+# if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) \
+ && defined(_GLIBCXX_USE_C99_MATH) \
+ && !(defined(_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) \
+ && (_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC != 0))
+# ifdef _STLP_VENDOR_CSTD
+# define BOOST_FPCLASSIFY_PREFIX ::_STLP_VENDOR_CSTD::
+# else
+# define BOOST_FPCLASSIFY_PREFIX ::std::
+# endif
 # else
 # undef BOOST_HAS_FPCLASSIFY
 # define BOOST_FPCLASSIFY_PREFIX
@@ -177,7 +184,7 @@
    case _FPCLASS_SNAN /* Signaling NaN */ :
    case _FPCLASS_QNAN /* Quiet NaN */ :
       return FP_NAN;
- case _FPCLASS_NINF /*Negative infinity ( –INF) */ :
+ case _FPCLASS_NINF /*Negative infinity ( -INF) */ :
    case _FPCLASS_PINF /* Positive infinity (+INF) */ :
       return FP_INFINITE;
    case _FPCLASS_NN /* Negative normalized non-zero */ :
@@ -186,7 +193,7 @@
    case _FPCLASS_ND /* Negative denormalized */:
    case _FPCLASS_PD /* Positive denormalized */ :
       return FP_SUBNORMAL;
- case _FPCLASS_NZ /* Negative zero ( – 0) */ :
+ case _FPCLASS_NZ /* Negative zero ( - 0) */ :
    case _FPCLASS_PZ /* Positive 0 (+0) */ :
       return FP_ZERO;
    default:
@@ -243,3 +250,4 @@
 
 
 
+

Modified: branches/proto/v4/boost/math/special_functions/gamma.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/gamma.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/gamma.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -142,26 +142,29 @@
 #endif
    static const char* function = "boost::math::tgamma<%1%>(%1%)";
 
- if((z <= 0) && (floor(z) == z))
- return policies::raise_pole_error<T>(function, "Evaluation of tgamma at a negative integer %1%.", z, pol);
- if(z <= -20)
+ if(z <= 0)
    {
- result = gamma_imp(-z, pol, l) * sinpx(z);
- if((fabs(result) < 1) && (tools::max_value<T>() * fabs(result) < boost::math::constants::pi<T>()))
- return policies::raise_overflow_error<T>(function, "Result of tgamma is too large to represent.", pol);
- result = -boost::math::constants::pi<T>() / result;
- if(result == 0)
- return policies::raise_underflow_error<T>(function, "Result of tgamma is too small to represent.", pol);
- if((boost::math::fpclassify)(result) == (int)FP_SUBNORMAL)
- return policies::raise_denorm_error<T>(function, "Result of tgamma is denormalized.", result, pol);
- return result;
- }
+ if(floor(z) == z)
+ return policies::raise_pole_error<T>(function, "Evaluation of tgamma at a negative integer %1%.", z, pol);
+ if(z <= -20)
+ {
+ result = gamma_imp(-z, pol, l) * sinpx(z);
+ if((fabs(result) < 1) && (tools::max_value<T>() * fabs(result) < boost::math::constants::pi<T>()))
+ return policies::raise_overflow_error<T>(function, "Result of tgamma is too large to represent.", pol);
+ result = -boost::math::constants::pi<T>() / result;
+ if(result == 0)
+ return policies::raise_underflow_error<T>(function, "Result of tgamma is too small to represent.", pol);
+ if((boost::math::fpclassify)(result) == (int)FP_SUBNORMAL)
+ return policies::raise_denorm_error<T>(function, "Result of tgamma is denormalized.", result, pol);
+ return result;
+ }
 
- // shift z to > 1:
- while(z < 1)
- {
- result /= z;
- z += 1;
+ // shift z to > 1:
+ while(z < 0)
+ {
+ result /= z;
+ z += 1;
+ }
    }
    if((floor(z) == z) && (z < max_factorial<T>::value))
    {

Modified: branches/proto/v4/boost/math/special_functions/lanczos.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/lanczos.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/lanczos.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1229,6 +1229,10 @@
 } // namespace math
 } // namespace boost
 
+#if (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || defined(__SSE2__)
+#include <boost/math/special_functions/detail/lanczos_sse2.hpp>
+#endif
+
 #endif // BOOST_MATH_SPECIAL_FUNCTIONS_LANCZOS
 
 

Modified: branches/proto/v4/boost/math/special_functions/log1p.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/log1p.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/log1p.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,6 +15,7 @@
 #include <boost/limits.hpp>
 #include <boost/math/tools/config.hpp>
 #include <boost/math/tools/series.hpp>
+#include <boost/math/tools/rational.hpp>
 #include <boost/math/policies/error_handling.hpp>
 #include <boost/math/special_functions/math_fwd.hpp>
 
@@ -59,8 +60,6 @@
      log1p_series& operator=(const log1p_series&);
   };
 
-} // namespace detail
-
 // Algorithm log1p is part of C99, but is not yet provided by many compilers.
 //
 // This version uses a Taylor series expansion for 0.5 > x > epsilon, which may
@@ -71,9 +70,8 @@
 // it performs no better than log(1+x): which is to say not very well at all.
 //
 template <class T, class Policy>
-typename tools::promote_args<T>::type log1p(T x, const Policy& pol)
+T log1p_imp(T const & x, const Policy& pol, const mpl::int_<0>&)
 { // The function returns the natural logarithm of 1 + x.
- // A domain error occurs if x < -1. TODO should there be a check?
    typedef typename tools::promote_args<T>::type result_type;
    BOOST_MATH_STD_USING
    using std::abs;
@@ -106,6 +104,192 @@
    return result;
 }
 
+template <class T, class Policy>
+T log1p_imp(T const& x, const Policy& pol, const mpl::int_<53>&)
+{ // The function returns the natural logarithm of 1 + x.
+ BOOST_MATH_STD_USING
+
+ static const char* function = "boost::math::log1p<%1%>(%1%)";
+
+ if(x < -1)
+ return policies::raise_domain_error<T>(
+ function, "log1p(x) requires x > -1, but got x = %1%.", x, pol);
+ if(x == -1)
+ return -policies::raise_overflow_error<T>(
+ function, 0, pol);
+
+ T a = fabs(x);
+ if(a > 0.5f)
+ return log(1 + x);
+ // Note that without numeric_limits specialisation support,
+ // epsilon just returns zero, and our "optimisation" will always fail:
+ if(a < tools::epsilon<T>())
+ return x;
+
+ // Maximum Deviation Found: 1.846e-017
+ // Expected Error Term: 1.843e-017
+ // Maximum Relative Change in Control Points: 8.138e-004
+ // Max Error found at double precision = 3.250766e-016
+ static const T P[] = {
+ 0.15141069795941984e-16L,
+ 0.35495104378055055e-15L,
+ 0.33333333333332835L,
+ 0.99249063543365859L,
+ 1.1143969784156509L,
+ 0.58052937949269651L,
+ 0.13703234928513215L,
+ 0.011294864812099712L
+ };
+ static const T Q[] = {
+ 1L,
+ 3.7274719063011499L,
+ 5.5387948649720334L,
+ 4.159201143419005L,
+ 1.6423855110312755L,
+ 0.31706251443180914L,
+ 0.022665554431410243L,
+ -0.29252538135177773e-5L
+ };
+
+ T result = 1 - x / 2 + tools::evaluate_polynomial(P, x) / tools::evaluate_polynomial(Q, x);
+ result *= x;
+
+ return result;
+}
+
+template <class T, class Policy>
+T log1p_imp(T const& x, const Policy& pol, const mpl::int_<64>&)
+{ // The function returns the natural logarithm of 1 + x.
+ BOOST_MATH_STD_USING
+
+ static const char* function = "boost::math::log1p<%1%>(%1%)";
+
+ if(x < -1)
+ return policies::raise_domain_error<T>(
+ function, "log1p(x) requires x > -1, but got x = %1%.", x, pol);
+ if(x == -1)
+ return -policies::raise_overflow_error<T>(
+ function, 0, pol);
+
+ T a = fabs(x);
+ if(a > 0.5f)
+ return log(1 + x);
+ // Note that without numeric_limits specialisation support,
+ // epsilon just returns zero, and our "optimisation" will always fail:
+ if(a < tools::epsilon<T>())
+ return x;
+
+ // Maximum Deviation Found: 8.089e-20
+ // Expected Error Term: 8.088e-20
+ // Maximum Relative Change in Control Points: 9.648e-05
+ // Max Error found at long double precision = 2.242324e-19
+ static const T P[] = {
+ -0.807533446680736736712e-19L,
+ -0.490881544804798926426e-18L,
+ 0.333333333333333373941L,
+ 1.17141290782087994162L,
+ 1.62790522814926264694L,
+ 1.13156411870766876113L,
+ 0.408087379932853785336L,
+ 0.0706537026422828914622L,
+ 0.00441709903782239229447L
+ };
+ static const T Q[] = {
+ 1L,
+ 4.26423872346263928361L,
+ 7.48189472704477708962L,
+ 6.94757016732904280913L,
+ 3.6493508622280767304L,
+ 1.06884863623790638317L,
+ 0.158292216998514145947L,
+ 0.00885295524069924328658L,
+ -0.560026216133415663808e-6L
+ };
+
+ T result = 1 - x / 2 + tools::evaluate_polynomial(P, x) / tools::evaluate_polynomial(Q, x);
+ result *= x;
+
+ return result;
+}
+
+template <class T, class Policy>
+T log1p_imp(T const& x, const Policy& pol, const mpl::int_<24>&)
+{ // The function returns the natural logarithm of 1 + x.
+ BOOST_MATH_STD_USING
+
+ static const char* function = "boost::math::log1p<%1%>(%1%)";
+
+ if(x < -1)
+ return policies::raise_domain_error<T>(
+ function, "log1p(x) requires x > -1, but got x = %1%.", x, pol);
+ if(x == -1)
+ return -policies::raise_overflow_error<T>(
+ function, 0, pol);
+
+ T a = fabs(x);
+ if(a > 0.5f)
+ return log(1 + x);
+ // Note that without numeric_limits specialisation support,
+ // epsilon just returns zero, and our "optimisation" will always fail:
+ if(a < tools::epsilon<T>())
+ return x;
+
+ // Maximum Deviation Found: 6.910e-08
+ // Expected Error Term: 6.910e-08
+ // Maximum Relative Change in Control Points: 2.509e-04
+ // Max Error found at double precision = 6.910422e-08
+ // Max Error found at float precision = 8.357242e-08
+ static const T P[] = {
+ -0.671192866803148236519e-7L,
+ 0.119670999140731844725e-6L,
+ 0.333339469182083148598L,
+ 0.237827183019664122066L
+ };
+ static const T Q[] = {
+ 1L,
+ 1.46348272586988539733L,
+ 0.497859871350117338894L,
+ -0.00471666268910169651936L
+ };
+
+ T result = 1 - x / 2 + tools::evaluate_polynomial(P, x) / tools::evaluate_polynomial(Q, x);
+ result *= x;
+
+ return result;
+}
+
+} // namespace detail
+
+template <class T, class Policy>
+inline typename tools::promote_args<T>::type log1p(T x, const Policy&)
+{
+ typedef typename tools::promote_args<T>::type result_type;
+ typedef typename policies::evaluation<result_type, Policy>::type value_type;
+ typedef typename policies::precision<result_type, Policy>::type precision_type;
+ typedef typename policies::normalise<
+ Policy,
+ policies::promote_float<false>,
+ policies::promote_double<false>,
+ policies::discrete_quantile<>,
+ policies::assert_undefined<> >::type forwarding_policy;
+
+ typedef typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<0> >,
+ mpl::int_<0>,
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<53> >,
+ mpl::int_<53>, // double
+ typename mpl::if_<
+ mpl::less_equal<precision_type, mpl::int_<64> >,
+ mpl::int_<64>, // 80-bit long double
+ mpl::int_<0> // too many bits, use generic version.
+ >::type
+ >::type
+ >::type tag_type;
+ return policies::checked_narrowing_cast<result_type, forwarding_policy>(
+ detail::log1p_imp(static_cast<value_type>(x), forwarding_policy(), tag_type()), "boost::math::log1p<%1%>(%1%)");
+}
+
 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
 // These overloads work around a type deduction bug:
 inline float log1p(float z)

Modified: branches/proto/v4/boost/math/special_functions/next.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/next.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/next.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -37,7 +37,11 @@
 template <class T>
 inline T get_smallest_value()
 {
- return get_smallest_value<T>(mpl::bool_<std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::has_denorm>());
+#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1310)
+ return get_smallest_value<T>(mpl::bool_<std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::has_denorm == 1)>());
+#else
+ return get_smallest_value<T>(mpl::bool_<std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::has_denorm == std::denorm_present)>());
+#endif
 }
 
 }

Modified: branches/proto/v4/boost/math/special_functions/pow.hpp
==============================================================================
--- branches/proto/v4/boost/math/special_functions/pow.hpp (original)
+++ branches/proto/v4/boost/math/special_functions/pow.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,60 +26,45 @@
 namespace detail {
 
 
-template <int N, bool odd>
-struct positive_power;
-
-template <>
-struct positive_power<0, false>
-{
- template <typename T>
- static typename tools::promote_args<T>::type result(T)
- { return 1; }
-};
-
-template <>
-struct positive_power<1, true>
-{
- template <typename T>
- static typename tools::promote_args<T>::type result(T x)
- { return x; }
-};
-
-template <>
-struct positive_power<2, false>
+template <int N, int M = N%2>
+struct positive_power
 {
     template <typename T>
     static typename tools::promote_args<T>::type result(T base)
- { return base*base; }
+ {
+ typename tools::promote_args<T>::type power =
+ positive_power<N/2>::result(base);
+ return power * power;
+ }
 };
 
-template <int N, bool odd>
-struct positive_power
+template <int N>
+struct positive_power<N, 1>
 {
     template <typename T>
     static typename tools::promote_args<T>::type result(T base)
     {
- return base*positive_power<N-1, (N-1)%2>::result(base);
+ typename tools::promote_args<T>::type power =
+ positive_power<N/2>::result(base);
+ return base * power * power;
     }
 };
 
-template <int N>
-struct positive_power<N, false>
+template <>
+struct positive_power<1, 1>
 {
     template <typename T>
     static typename tools::promote_args<T>::type result(T base)
- {
- return positive_power<2, false>::result(
- positive_power<N/2, (N/2)%2>::result(base));
- }
+ { return base; }
 };
 
+
 template <int N, bool>
 struct power_if_positive
 {
     template <typename T, class Policy>
     static typename tools::promote_args<T>::type result(T base, const Policy&)
- { return positive_power<N, N%2>::result(base); }
+ { return positive_power<N>::result(base); }
 };
 
 template <int N>
@@ -98,7 +83,29 @@
                    );
         }
 
- return T(1) / positive_power<-N, (-N)%2>::result(base);
+ return T(1) / positive_power<-N>::result(base);
+ }
+};
+
+template <>
+struct power_if_positive<0, true>
+{
+ template <typename T, class Policy>
+ static typename tools::promote_args<T>::type
+ result(T base, const Policy& policy)
+ {
+ if (base == 0)
+ {
+ return policies::raise_indeterminate_result_error<T>(
+ "boost::math::pow(%1%)",
+ "The result of pow<0>(%1%) is undetermined",
+ base,
+ T(1),
+ policy
+ );
+ }
+
+ return T(1);
     }
 };
 

Modified: branches/proto/v4/boost/math/tools/config.hpp
==============================================================================
--- branches/proto/v4/boost/math/tools/config.hpp (original)
+++ branches/proto/v4/boost/math/tools/config.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -60,7 +60,7 @@
 # define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
 #endif
 
-#ifdef BOOST_MSVC
+#if defined(BOOST_MSVC) && !defined(_WIN32_WCE)
    // Better safe than sorry, our tests don't support hardware exceptions:
 # define BOOST_MATH_CONTROL_FP _control87(MCW_EM,MCW_EM)
 #endif

Modified: branches/proto/v4/boost/math/tools/rational.hpp
==============================================================================
--- branches/proto/v4/boost/math/tools/rational.hpp (original)
+++ branches/proto/v4/boost/math/tools/rational.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -40,6 +40,128 @@
 # include BOOST_HEADER()
 # undef BOOST_HEADER
 #endif
+
+#if 0
+//
+// This just allows dependency trackers to find the headers
+// used in the above PP-magic.
+//
+#include <boost/math/tools/detail/polynomial_horner1_2.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_3.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_4.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_5.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_6.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_7.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_8.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_9.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_10.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_11.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_12.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_13.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_14.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_15.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_16.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_17.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_18.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_19.hpp>
+#include <boost/math/tools/detail/polynomial_horner1_20.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_2.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_3.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_4.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_5.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_6.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_7.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_8.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_9.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_10.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_11.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_12.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_13.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_14.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_15.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_16.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_17.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_18.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_19.hpp>
+#include <boost/math/tools/detail/polynomial_horner2_20.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_2.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_3.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_4.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_5.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_6.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_7.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_8.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_9.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_10.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_11.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_12.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_13.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_14.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_15.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_16.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_17.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_18.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_19.hpp>
+#include <boost/math/tools/detail/polynomial_horner3_20.hpp>
+#include <boost/math/tools/detail/rational_horner1_2.hpp>
+#include <boost/math/tools/detail/rational_horner1_3.hpp>
+#include <boost/math/tools/detail/rational_horner1_4.hpp>
+#include <boost/math/tools/detail/rational_horner1_5.hpp>
+#include <boost/math/tools/detail/rational_horner1_6.hpp>
+#include <boost/math/tools/detail/rational_horner1_7.hpp>
+#include <boost/math/tools/detail/rational_horner1_8.hpp>
+#include <boost/math/tools/detail/rational_horner1_9.hpp>
+#include <boost/math/tools/detail/rational_horner1_10.hpp>
+#include <boost/math/tools/detail/rational_horner1_11.hpp>
+#include <boost/math/tools/detail/rational_horner1_12.hpp>
+#include <boost/math/tools/detail/rational_horner1_13.hpp>
+#include <boost/math/tools/detail/rational_horner1_14.hpp>
+#include <boost/math/tools/detail/rational_horner1_15.hpp>
+#include <boost/math/tools/detail/rational_horner1_16.hpp>
+#include <boost/math/tools/detail/rational_horner1_17.hpp>
+#include <boost/math/tools/detail/rational_horner1_18.hpp>
+#include <boost/math/tools/detail/rational_horner1_19.hpp>
+#include <boost/math/tools/detail/rational_horner1_20.hpp>
+#include <boost/math/tools/detail/rational_horner2_2.hpp>
+#include <boost/math/tools/detail/rational_horner2_3.hpp>
+#include <boost/math/tools/detail/rational_horner2_4.hpp>
+#include <boost/math/tools/detail/rational_horner2_5.hpp>
+#include <boost/math/tools/detail/rational_horner2_6.hpp>
+#include <boost/math/tools/detail/rational_horner2_7.hpp>
+#include <boost/math/tools/detail/rational_horner2_8.hpp>
+#include <boost/math/tools/detail/rational_horner2_9.hpp>
+#include <boost/math/tools/detail/rational_horner2_10.hpp>
+#include <boost/math/tools/detail/rational_horner2_11.hpp>
+#include <boost/math/tools/detail/rational_horner2_12.hpp>
+#include <boost/math/tools/detail/rational_horner2_13.hpp>
+#include <boost/math/tools/detail/rational_horner2_14.hpp>
+#include <boost/math/tools/detail/rational_horner2_15.hpp>
+#include <boost/math/tools/detail/rational_horner2_16.hpp>
+#include <boost/math/tools/detail/rational_horner2_17.hpp>
+#include <boost/math/tools/detail/rational_horner2_18.hpp>
+#include <boost/math/tools/detail/rational_horner2_19.hpp>
+#include <boost/math/tools/detail/rational_horner2_20.hpp>
+#include <boost/math/tools/detail/rational_horner3_2.hpp>
+#include <boost/math/tools/detail/rational_horner3_3.hpp>
+#include <boost/math/tools/detail/rational_horner3_4.hpp>
+#include <boost/math/tools/detail/rational_horner3_5.hpp>
+#include <boost/math/tools/detail/rational_horner3_6.hpp>
+#include <boost/math/tools/detail/rational_horner3_7.hpp>
+#include <boost/math/tools/detail/rational_horner3_8.hpp>
+#include <boost/math/tools/detail/rational_horner3_9.hpp>
+#include <boost/math/tools/detail/rational_horner3_10.hpp>
+#include <boost/math/tools/detail/rational_horner3_11.hpp>
+#include <boost/math/tools/detail/rational_horner3_12.hpp>
+#include <boost/math/tools/detail/rational_horner3_13.hpp>
+#include <boost/math/tools/detail/rational_horner3_14.hpp>
+#include <boost/math/tools/detail/rational_horner3_15.hpp>
+#include <boost/math/tools/detail/rational_horner3_16.hpp>
+#include <boost/math/tools/detail/rational_horner3_17.hpp>
+#include <boost/math/tools/detail/rational_horner3_18.hpp>
+#include <boost/math/tools/detail/rational_horner3_19.hpp>
+#include <boost/math/tools/detail/rational_horner3_20.hpp>
+#endif
+
 namespace boost{ namespace math{ namespace tools{
 
 //

Modified: branches/proto/v4/boost/math/tr1.hpp
==============================================================================
--- branches/proto/v4/boost/math/tr1.hpp (original)
+++ branches/proto/v4/boost/math/tr1.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -109,259 +109,259 @@
 #endif
 
 // C99 Functions:
-double BOOST_MATH_TR1_DECL acosh(double x);
-float BOOST_MATH_TR1_DECL acoshf(float x);
-long double BOOST_MATH_TR1_DECL acoshl(long double x);
-
-double BOOST_MATH_TR1_DECL asinh(double x);
-float BOOST_MATH_TR1_DECL asinhf(float x);
-long double BOOST_MATH_TR1_DECL asinhl(long double x);
-
-double BOOST_MATH_TR1_DECL atanh(double x);
-float BOOST_MATH_TR1_DECL atanhf(float x);
-long double BOOST_MATH_TR1_DECL atanhl(long double x);
-
-double BOOST_MATH_TR1_DECL cbrt(double x);
-float BOOST_MATH_TR1_DECL cbrtf(float x);
-long double BOOST_MATH_TR1_DECL cbrtl(long double x);
-
-double BOOST_MATH_TR1_DECL copysign(double x, double y);
-float BOOST_MATH_TR1_DECL copysignf(float x, float y);
-long double BOOST_MATH_TR1_DECL copysignl(long double x, long double y);
-
-double BOOST_MATH_TR1_DECL erf(double x);
-float BOOST_MATH_TR1_DECL erff(float x);
-long double BOOST_MATH_TR1_DECL erfl(long double x);
-
-double BOOST_MATH_TR1_DECL erfc(double x);
-float BOOST_MATH_TR1_DECL erfcf(float x);
-long double BOOST_MATH_TR1_DECL erfcl(long double x);
-#if 0
-double BOOST_MATH_TR1_DECL exp2(double x);
-float BOOST_MATH_TR1_DECL exp2f(float x);
-long double BOOST_MATH_TR1_DECL exp2l(long double x);
-#endif
-double BOOST_MATH_TR1_DECL boost_expm1(double x);
-float BOOST_MATH_TR1_DECL boost_expm1f(float x);
-long double BOOST_MATH_TR1_DECL boost_expm1l(long double x);
-#if 0
-double BOOST_MATH_TR1_DECL fdim(double x, double y);
-float BOOST_MATH_TR1_DECL fdimf(float x, float y);
-long double BOOST_MATH_TR1_DECL fdiml(long double x, long double y);
-double BOOST_MATH_TR1_DECL fma(double x, double y, double z);
-float BOOST_MATH_TR1_DECL fmaf(float x, float y, float z);
-long double BOOST_MATH_TR1_DECL fmal(long double x, long double y, long double z);
-#endif
-double BOOST_MATH_TR1_DECL fmax(double x, double y);
-float BOOST_MATH_TR1_DECL fmaxf(float x, float y);
-long double BOOST_MATH_TR1_DECL fmaxl(long double x, long double y);
-
-double BOOST_MATH_TR1_DECL fmin(double x, double y);
-float BOOST_MATH_TR1_DECL fminf(float x, float y);
-long double BOOST_MATH_TR1_DECL fminl(long double x, long double y);
-
-double BOOST_MATH_TR1_DECL hypot(double x, double y);
-float BOOST_MATH_TR1_DECL hypotf(float x, float y);
-long double BOOST_MATH_TR1_DECL hypotl(long double x, long double y);
-#if 0
-int BOOST_MATH_TR1_DECL ilogb(double x);
-int BOOST_MATH_TR1_DECL ilogbf(float x);
-int BOOST_MATH_TR1_DECL ilogbl(long double x);
-#endif
-double BOOST_MATH_TR1_DECL lgamma(double x);
-float BOOST_MATH_TR1_DECL lgammaf(float x);
-long double BOOST_MATH_TR1_DECL lgammal(long double x);
-#if 0
-long long BOOST_MATH_TR1_DECL llrint(double x);
-long long BOOST_MATH_TR1_DECL llrintf(float x);
-long long BOOST_MATH_TR1_DECL llrintl(long double x);
-#endif
-long long BOOST_MATH_TR1_DECL llround(double x);
-long long BOOST_MATH_TR1_DECL llroundf(float x);
-long long BOOST_MATH_TR1_DECL llroundl(long double x);
-
-double BOOST_MATH_TR1_DECL boost_log1p(double x);
-float BOOST_MATH_TR1_DECL boost_log1pf(float x);
-long double BOOST_MATH_TR1_DECL boost_log1pl(long double x);
-#if 0
-double BOOST_MATH_TR1_DECL log2(double x);
-float BOOST_MATH_TR1_DECL log2f(float x);
-long double BOOST_MATH_TR1_DECL log2l(long double x);
-
-double BOOST_MATH_TR1_DECL logb(double x);
-float BOOST_MATH_TR1_DECL logbf(float x);
-long double BOOST_MATH_TR1_DECL logbl(long double x);
-long BOOST_MATH_TR1_DECL lrint(double x);
-long BOOST_MATH_TR1_DECL lrintf(float x);
-long BOOST_MATH_TR1_DECL lrintl(long double x);
-#endif
-long BOOST_MATH_TR1_DECL lround(double x);
-long BOOST_MATH_TR1_DECL lroundf(float x);
-long BOOST_MATH_TR1_DECL lroundl(long double x);
-#if 0
-double BOOST_MATH_TR1_DECL nan(const char *str);
-float BOOST_MATH_TR1_DECL nanf(const char *str);
-long double BOOST_MATH_TR1_DECL nanl(const char *str);
-double BOOST_MATH_TR1_DECL nearbyint(double x);
-float BOOST_MATH_TR1_DECL nearbyintf(float x);
-long double BOOST_MATH_TR1_DECL nearbyintl(long double x);
-#endif
-double BOOST_MATH_TR1_DECL boost_nextafter(double x, double y);
-float BOOST_MATH_TR1_DECL boost_nextafterf(float x, float y);
-long double BOOST_MATH_TR1_DECL boost_nextafterl(long double x, long double y);
-
-double BOOST_MATH_TR1_DECL nexttoward(double x, long double y);
-float BOOST_MATH_TR1_DECL nexttowardf(float x, long double y);
-long double BOOST_MATH_TR1_DECL nexttowardl(long double x, long double y);
-#if 0
-double BOOST_MATH_TR1_DECL remainder(double x, double y);
-float BOOST_MATH_TR1_DECL remainderf(float x, float y);
-long double BOOST_MATH_TR1_DECL remainderl(long double x, long double y);
-double BOOST_MATH_TR1_DECL remquo(double x, double y, int *pquo);
-float BOOST_MATH_TR1_DECL remquof(float x, float y, int *pquo);
-long double BOOST_MATH_TR1_DECL remquol(long double x, long double y, int *pquo);
-double BOOST_MATH_TR1_DECL rint(double x);
-float BOOST_MATH_TR1_DECL rintf(float x);
-long double BOOST_MATH_TR1_DECL rintl(long double x);
-#endif
-double BOOST_MATH_TR1_DECL round(double x);
-float BOOST_MATH_TR1_DECL roundf(float x);
-long double BOOST_MATH_TR1_DECL roundl(long double x);
-#if 0
-double BOOST_MATH_TR1_DECL scalbln(double x, long ex);
-float BOOST_MATH_TR1_DECL scalblnf(float x, long ex);
-long double BOOST_MATH_TR1_DECL scalblnl(long double x, long ex);
-double BOOST_MATH_TR1_DECL scalbn(double x, int ex);
-float BOOST_MATH_TR1_DECL scalbnf(float x, int ex);
-long double BOOST_MATH_TR1_DECL scalbnl(long double x, int ex);
-#endif
-double BOOST_MATH_TR1_DECL tgamma(double x);
-float BOOST_MATH_TR1_DECL tgammaf(float x);
-long double BOOST_MATH_TR1_DECL tgammal(long double x);
-
-double BOOST_MATH_TR1_DECL trunc(double x);
-float BOOST_MATH_TR1_DECL truncf(float x);
-long double BOOST_MATH_TR1_DECL truncl(long double x);
+double BOOST_MATH_TR1_DECL acosh BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL acoshf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL acoshl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+
+double BOOST_MATH_TR1_DECL asinh BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL asinhf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL asinhl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+
+double BOOST_MATH_TR1_DECL atanh BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL atanhf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL atanhl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+
+double BOOST_MATH_TR1_DECL cbrt BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL cbrtf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL cbrtl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+
+double BOOST_MATH_TR1_DECL copysign BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y);
+float BOOST_MATH_TR1_DECL copysignf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y);
+long double BOOST_MATH_TR1_DECL copysignl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
+
+double BOOST_MATH_TR1_DECL erf BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL erff BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL erfl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+
+double BOOST_MATH_TR1_DECL erfc BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL erfcf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL erfcl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#if 0
+double BOOST_MATH_TR1_DECL exp2 BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL exp2f BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL exp2l BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+double BOOST_MATH_TR1_DECL boost_expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL boost_expm1f BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL boost_expm1l BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#if 0
+double BOOST_MATH_TR1_DECL fdim BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y);
+float BOOST_MATH_TR1_DECL fdimf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y);
+long double BOOST_MATH_TR1_DECL fdiml BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
+double BOOST_MATH_TR1_DECL fma BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y, double z);
+float BOOST_MATH_TR1_DECL fmaf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y, float z);
+long double BOOST_MATH_TR1_DECL fmal BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y, long double z);
+#endif
+double BOOST_MATH_TR1_DECL fmax BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y);
+float BOOST_MATH_TR1_DECL fmaxf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y);
+long double BOOST_MATH_TR1_DECL fmaxl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
+
+double BOOST_MATH_TR1_DECL fmin BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y);
+float BOOST_MATH_TR1_DECL fminf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y);
+long double BOOST_MATH_TR1_DECL fminl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
+
+double BOOST_MATH_TR1_DECL hypot BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y);
+float BOOST_MATH_TR1_DECL hypotf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y);
+long double BOOST_MATH_TR1_DECL hypotl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
+#if 0
+int BOOST_MATH_TR1_DECL ilogb BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+int BOOST_MATH_TR1_DECL ilogbf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+int BOOST_MATH_TR1_DECL ilogbl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+double BOOST_MATH_TR1_DECL lgamma BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL lgammaf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL lgammal BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#if 0
+long long BOOST_MATH_TR1_DECL llrint BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+long long BOOST_MATH_TR1_DECL llrintf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long long BOOST_MATH_TR1_DECL llrintl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+long long BOOST_MATH_TR1_DECL llround BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+long long BOOST_MATH_TR1_DECL llroundf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long long BOOST_MATH_TR1_DECL llroundl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+
+double BOOST_MATH_TR1_DECL boost_log1p BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL boost_log1pf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL boost_log1pl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#if 0
+double BOOST_MATH_TR1_DECL log2 BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL log2f BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL log2l BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+
+double BOOST_MATH_TR1_DECL logb BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL logbf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL logbl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+long BOOST_MATH_TR1_DECL lrint BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+long BOOST_MATH_TR1_DECL lrintf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long BOOST_MATH_TR1_DECL lrintl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+long BOOST_MATH_TR1_DECL lround BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+long BOOST_MATH_TR1_DECL lroundf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long BOOST_MATH_TR1_DECL lroundl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#if 0
+double BOOST_MATH_TR1_DECL nan BOOST_PREVENT_MACRO_SUBSTITUTION(const char *str);
+float BOOST_MATH_TR1_DECL nanf BOOST_PREVENT_MACRO_SUBSTITUTION(const char *str);
+long double BOOST_MATH_TR1_DECL nanl BOOST_PREVENT_MACRO_SUBSTITUTION(const char *str);
+double BOOST_MATH_TR1_DECL nearbyint BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL nearbyintf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL nearbyintl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+double BOOST_MATH_TR1_DECL boost_nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y);
+float BOOST_MATH_TR1_DECL boost_nextafterf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y);
+long double BOOST_MATH_TR1_DECL boost_nextafterl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
+
+double BOOST_MATH_TR1_DECL nexttoward BOOST_PREVENT_MACRO_SUBSTITUTION(double x, long double y);
+float BOOST_MATH_TR1_DECL nexttowardf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, long double y);
+long double BOOST_MATH_TR1_DECL nexttowardl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
+#if 0
+double BOOST_MATH_TR1_DECL remainder BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y);
+float BOOST_MATH_TR1_DECL remainderf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y);
+long double BOOST_MATH_TR1_DECL remainderl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
+double BOOST_MATH_TR1_DECL remquo BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y, int *pquo);
+float BOOST_MATH_TR1_DECL remquof BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y, int *pquo);
+long double BOOST_MATH_TR1_DECL remquol BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y, int *pquo);
+double BOOST_MATH_TR1_DECL rint BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL rintf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL rintl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+double BOOST_MATH_TR1_DECL round BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL roundf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL roundl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#if 0
+double BOOST_MATH_TR1_DECL scalbln BOOST_PREVENT_MACRO_SUBSTITUTION(double x, long ex);
+float BOOST_MATH_TR1_DECL scalblnf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, long ex);
+long double BOOST_MATH_TR1_DECL scalblnl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long ex);
+double BOOST_MATH_TR1_DECL scalbn BOOST_PREVENT_MACRO_SUBSTITUTION(double x, int ex);
+float BOOST_MATH_TR1_DECL scalbnf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, int ex);
+long double BOOST_MATH_TR1_DECL scalbnl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, int ex);
+#endif
+double BOOST_MATH_TR1_DECL tgamma BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL tgammaf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL tgammal BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+
+double BOOST_MATH_TR1_DECL trunc BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL truncf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL truncl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
 
 // [5.2.1.1] associated Laguerre polynomials:
-double BOOST_MATH_TR1_DECL assoc_laguerre(unsigned n, unsigned m, double x);
-float BOOST_MATH_TR1_DECL assoc_laguerref(unsigned n, unsigned m, float x);
-long double BOOST_MATH_TR1_DECL assoc_laguerrel(unsigned n, unsigned m, long double x);
+double BOOST_MATH_TR1_DECL assoc_laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, double x);
+float BOOST_MATH_TR1_DECL assoc_laguerref BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, float x);
+long double BOOST_MATH_TR1_DECL assoc_laguerrel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, long double x);
 
 // [5.2.1.2] associated Legendre functions:
-double BOOST_MATH_TR1_DECL assoc_legendre(unsigned l, unsigned m, double x);
-float BOOST_MATH_TR1_DECL assoc_legendref(unsigned l, unsigned m, float x);
-long double BOOST_MATH_TR1_DECL assoc_legendrel(unsigned l, unsigned m, long double x);
+double BOOST_MATH_TR1_DECL assoc_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, double x);
+float BOOST_MATH_TR1_DECL assoc_legendref BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float x);
+long double BOOST_MATH_TR1_DECL assoc_legendrel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double x);
 
 // [5.2.1.3] beta function:
-double BOOST_MATH_TR1_DECL beta(double x, double y);
-float BOOST_MATH_TR1_DECL betaf(float x, float y);
-long double BOOST_MATH_TR1_DECL betal(long double x, long double y);
+double BOOST_MATH_TR1_DECL beta BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y);
+float BOOST_MATH_TR1_DECL betaf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y);
+long double BOOST_MATH_TR1_DECL betal BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
 
 // [5.2.1.4] (complete) elliptic integral of the first kind:
-double BOOST_MATH_TR1_DECL comp_ellint_1(double k);
-float BOOST_MATH_TR1_DECL comp_ellint_1f(float k);
-long double BOOST_MATH_TR1_DECL comp_ellint_1l(long double k);
+double BOOST_MATH_TR1_DECL comp_ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(double k);
+float BOOST_MATH_TR1_DECL comp_ellint_1f BOOST_PREVENT_MACRO_SUBSTITUTION(float k);
+long double BOOST_MATH_TR1_DECL comp_ellint_1l BOOST_PREVENT_MACRO_SUBSTITUTION(long double k);
 
 // [5.2.1.5] (complete) elliptic integral of the second kind:
-double BOOST_MATH_TR1_DECL comp_ellint_2(double k);
-float BOOST_MATH_TR1_DECL comp_ellint_2f(float k);
-long double BOOST_MATH_TR1_DECL comp_ellint_2l(long double k);
+double BOOST_MATH_TR1_DECL comp_ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(double k);
+float BOOST_MATH_TR1_DECL comp_ellint_2f BOOST_PREVENT_MACRO_SUBSTITUTION(float k);
+long double BOOST_MATH_TR1_DECL comp_ellint_2l BOOST_PREVENT_MACRO_SUBSTITUTION(long double k);
 
 // [5.2.1.6] (complete) elliptic integral of the third kind:
-double BOOST_MATH_TR1_DECL comp_ellint_3(double k, double nu);
-float BOOST_MATH_TR1_DECL comp_ellint_3f(float k, float nu);
-long double BOOST_MATH_TR1_DECL comp_ellint_3l(long double k, long double nu);
+double BOOST_MATH_TR1_DECL comp_ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(double k, double nu);
+float BOOST_MATH_TR1_DECL comp_ellint_3f BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float nu);
+long double BOOST_MATH_TR1_DECL comp_ellint_3l BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double nu);
 #if 0
 // [5.2.1.7] confluent hypergeometric functions:
-double BOOST_MATH_TR1_DECL conf_hyperg(double a, double c, double x);
-float BOOST_MATH_TR1_DECL conf_hypergf(float a, float c, float x);
-long double BOOST_MATH_TR1_DECL conf_hypergl(long double a, long double c, long double x);
+double BOOST_MATH_TR1_DECL conf_hyperg BOOST_PREVENT_MACRO_SUBSTITUTION(double a, double c, double x);
+float BOOST_MATH_TR1_DECL conf_hypergf BOOST_PREVENT_MACRO_SUBSTITUTION(float a, float c, float x);
+long double BOOST_MATH_TR1_DECL conf_hypergl BOOST_PREVENT_MACRO_SUBSTITUTION(long double a, long double c, long double x);
 #endif
 // [5.2.1.8] regular modified cylindrical Bessel functions:
-double BOOST_MATH_TR1_DECL cyl_bessel_i(double nu, double x);
-float BOOST_MATH_TR1_DECL cyl_bessel_if(float nu, float x);
-long double BOOST_MATH_TR1_DECL cyl_bessel_il(long double nu, long double x);
+double BOOST_MATH_TR1_DECL cyl_bessel_i BOOST_PREVENT_MACRO_SUBSTITUTION(double nu, double x);
+float BOOST_MATH_TR1_DECL cyl_bessel_if BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x);
+long double BOOST_MATH_TR1_DECL cyl_bessel_il BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x);
 
 // [5.2.1.9] cylindrical Bessel functions (of the first kind):
-double BOOST_MATH_TR1_DECL cyl_bessel_j(double nu, double x);
-float BOOST_MATH_TR1_DECL cyl_bessel_jf(float nu, float x);
-long double BOOST_MATH_TR1_DECL cyl_bessel_jl(long double nu, long double x);
+double BOOST_MATH_TR1_DECL cyl_bessel_j BOOST_PREVENT_MACRO_SUBSTITUTION(double nu, double x);
+float BOOST_MATH_TR1_DECL cyl_bessel_jf BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x);
+long double BOOST_MATH_TR1_DECL cyl_bessel_jl BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x);
 
 // [5.2.1.10] irregular modified cylindrical Bessel functions:
-double BOOST_MATH_TR1_DECL cyl_bessel_k(double nu, double x);
-float BOOST_MATH_TR1_DECL cyl_bessel_kf(float nu, float x);
-long double BOOST_MATH_TR1_DECL cyl_bessel_kl(long double nu, long double x);
+double BOOST_MATH_TR1_DECL cyl_bessel_k BOOST_PREVENT_MACRO_SUBSTITUTION(double nu, double x);
+float BOOST_MATH_TR1_DECL cyl_bessel_kf BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x);
+long double BOOST_MATH_TR1_DECL cyl_bessel_kl BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x);
 
 // [5.2.1.11] cylindrical Neumann functions;
 // cylindrical Bessel functions (of the second kind):
-double BOOST_MATH_TR1_DECL cyl_neumann(double nu, double x);
-float BOOST_MATH_TR1_DECL cyl_neumannf(float nu, float x);
-long double BOOST_MATH_TR1_DECL cyl_neumannl(long double nu, long double x);
+double BOOST_MATH_TR1_DECL cyl_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(double nu, double x);
+float BOOST_MATH_TR1_DECL cyl_neumannf BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x);
+long double BOOST_MATH_TR1_DECL cyl_neumannl BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x);
 
 // [5.2.1.12] (incomplete) elliptic integral of the first kind:
-double BOOST_MATH_TR1_DECL ellint_1(double k, double phi);
-float BOOST_MATH_TR1_DECL ellint_1f(float k, float phi);
-long double BOOST_MATH_TR1_DECL ellint_1l(long double k, long double phi);
+double BOOST_MATH_TR1_DECL ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(double k, double phi);
+float BOOST_MATH_TR1_DECL ellint_1f BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float phi);
+long double BOOST_MATH_TR1_DECL ellint_1l BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi);
 
 // [5.2.1.13] (incomplete) elliptic integral of the second kind:
-double BOOST_MATH_TR1_DECL ellint_2(double k, double phi);
-float BOOST_MATH_TR1_DECL ellint_2f(float k, float phi);
-long double BOOST_MATH_TR1_DECL ellint_2l(long double k, long double phi);
+double BOOST_MATH_TR1_DECL ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(double k, double phi);
+float BOOST_MATH_TR1_DECL ellint_2f BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float phi);
+long double BOOST_MATH_TR1_DECL ellint_2l BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi);
 
 // [5.2.1.14] (incomplete) elliptic integral of the third kind:
-double BOOST_MATH_TR1_DECL ellint_3(double k, double nu, double phi);
-float BOOST_MATH_TR1_DECL ellint_3f(float k, float nu, float phi);
-long double BOOST_MATH_TR1_DECL ellint_3l(long double k, long double nu, long double phi);
+double BOOST_MATH_TR1_DECL ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(double k, double nu, double phi);
+float BOOST_MATH_TR1_DECL ellint_3f BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float nu, float phi);
+long double BOOST_MATH_TR1_DECL ellint_3l BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double nu, long double phi);
 
 // [5.2.1.15] exponential integral:
-double BOOST_MATH_TR1_DECL expint(double x);
-float BOOST_MATH_TR1_DECL expintf(float x);
-long double BOOST_MATH_TR1_DECL expintl(long double x);
+double BOOST_MATH_TR1_DECL expint BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float BOOST_MATH_TR1_DECL expintf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double BOOST_MATH_TR1_DECL expintl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
 
 // [5.2.1.16] Hermite polynomials:
-double BOOST_MATH_TR1_DECL hermite(unsigned n, double x);
-float BOOST_MATH_TR1_DECL hermitef(unsigned n, float x);
-long double BOOST_MATH_TR1_DECL hermitel(unsigned n, long double x);
+double BOOST_MATH_TR1_DECL hermite BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x);
+float BOOST_MATH_TR1_DECL hermitef BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x);
+long double BOOST_MATH_TR1_DECL hermitel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x);
 
 #if 0
 // [5.2.1.17] hypergeometric functions:
-double BOOST_MATH_TR1_DECL hyperg(double a, double b, double c, double x);
-float BOOST_MATH_TR1_DECL hypergf(float a, float b, float c, float x);
-long double BOOST_MATH_TR1_DECL hypergl(long double a, long double b, long double c,
+double BOOST_MATH_TR1_DECL hyperg BOOST_PREVENT_MACRO_SUBSTITUTION(double a, double b, double c, double x);
+float BOOST_MATH_TR1_DECL hypergf BOOST_PREVENT_MACRO_SUBSTITUTION(float a, float b, float c, float x);
+long double BOOST_MATH_TR1_DECL hypergl BOOST_PREVENT_MACRO_SUBSTITUTION(long double a, long double b, long double c,
 long double x);
 #endif
 
 // [5.2.1.18] Laguerre polynomials:
-double BOOST_MATH_TR1_DECL laguerre(unsigned n, double x);
-float BOOST_MATH_TR1_DECL laguerref(unsigned n, float x);
-long double BOOST_MATH_TR1_DECL laguerrel(unsigned n, long double x);
+double BOOST_MATH_TR1_DECL laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x);
+float BOOST_MATH_TR1_DECL laguerref BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x);
+long double BOOST_MATH_TR1_DECL laguerrel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x);
 
 // [5.2.1.19] Legendre polynomials:
-double BOOST_MATH_TR1_DECL legendre(unsigned l, double x);
-float BOOST_MATH_TR1_DECL legendref(unsigned l, float x);
-long double BOOST_MATH_TR1_DECL legendrel(unsigned l, long double x);
+double BOOST_MATH_TR1_DECL legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, double x);
+float BOOST_MATH_TR1_DECL legendref BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, float x);
+long double BOOST_MATH_TR1_DECL legendrel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, long double x);
 
 // [5.2.1.20] Riemann zeta function:
-double BOOST_MATH_TR1_DECL riemann_zeta(double);
-float BOOST_MATH_TR1_DECL riemann_zetaf(float);
-long double BOOST_MATH_TR1_DECL riemann_zetal(long double);
+double BOOST_MATH_TR1_DECL riemann_zeta BOOST_PREVENT_MACRO_SUBSTITUTION(double);
+float BOOST_MATH_TR1_DECL riemann_zetaf BOOST_PREVENT_MACRO_SUBSTITUTION(float);
+long double BOOST_MATH_TR1_DECL riemann_zetal BOOST_PREVENT_MACRO_SUBSTITUTION(long double);
 
 // [5.2.1.21] spherical Bessel functions (of the first kind):
-double BOOST_MATH_TR1_DECL sph_bessel(unsigned n, double x);
-float BOOST_MATH_TR1_DECL sph_besself(unsigned n, float x);
-long double BOOST_MATH_TR1_DECL sph_bessell(unsigned n, long double x);
+double BOOST_MATH_TR1_DECL sph_bessel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x);
+float BOOST_MATH_TR1_DECL sph_besself BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x);
+long double BOOST_MATH_TR1_DECL sph_bessell BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x);
 
 // [5.2.1.22] spherical associated Legendre functions:
-double BOOST_MATH_TR1_DECL sph_legendre(unsigned l, unsigned m, double theta);
-float BOOST_MATH_TR1_DECL sph_legendref(unsigned l, unsigned m, float theta);
-long double BOOST_MATH_TR1_DECL sph_legendrel(unsigned l, unsigned m, long double theta);
+double BOOST_MATH_TR1_DECL sph_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, double theta);
+float BOOST_MATH_TR1_DECL sph_legendref BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float theta);
+long double BOOST_MATH_TR1_DECL sph_legendrel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double theta);
 
 // [5.2.1.23] spherical Neumann functions;
 // spherical Bessel functions (of the second kind):
-double BOOST_MATH_TR1_DECL sph_neumann(unsigned n, double x);
-float BOOST_MATH_TR1_DECL sph_neumannf(unsigned n, float x);
-long double BOOST_MATH_TR1_DECL sph_neumannl(unsigned n, long double x);
+double BOOST_MATH_TR1_DECL sph_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x);
+float BOOST_MATH_TR1_DECL sph_neumannf BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x);
+long double BOOST_MATH_TR1_DECL sph_neumannl BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x);
 
 #ifdef __cplusplus
 
@@ -375,233 +375,233 @@
 // C interfaces:
 //
 // C99 Functions:
-inline float acosh(float x)
-{ return boost::math::tr1::acoshf(x); }
-inline long double acosh(long double x)
-{ return boost::math::tr1::acoshl(x); }
-template <class T>
-inline typename tools::promote_args<T>::type acosh(T x)
-{ return boost::math::tr1::acosh(static_cast<typename tools::promote_args<T>::type>(x)); }
-
-inline float asinh(float x){ return boost::math::tr1::asinhf(x); }
-inline long double asinh(long double x){ return boost::math::tr1::asinhl(x); }
-template <class T>
-inline typename tools::promote_args<T>::type asinh(T x)
-{ return boost::math::tr1::asinh(static_cast<typename tools::promote_args<T>::type>(x)); }
-
-inline float atanh(float x){ return boost::math::tr1::atanhf(x); }
-inline long double atanh(long double x){ return boost::math::tr1::atanhl(x); }
-template <class T>
-inline typename tools::promote_args<T>::type atanh(T x)
-{ return boost::math::tr1::atanh(static_cast<typename tools::promote_args<T>::type>(x)); }
-
-inline float cbrt(float x)
-{ return boost::math::tr1::cbrtf(x); }
-inline long double cbrt(long double x)
-{ return boost::math::tr1::cbrtl(x); }
-template <class T>
-inline typename tools::promote_args<T>::type cbrt(T x)
-{ return boost::math::tr1::cbrt(static_cast<typename tools::promote_args<T>::type>(x)); }
-
-inline float copysign(float x, float y)
-{ return boost::math::tr1::copysignf(x, y); }
-inline long double copysign(long double x, long double y)
-{ return boost::math::tr1::copysignl(x, y); }
-template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type copysign(T1 x, T2 y)
-{ return boost::math::tr1::copysign(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
-
-inline float erf(float x)
-{ return boost::math::tr1::erff(x); }
-inline long double erf(long double x)
-{ return boost::math::tr1::erfl(x); }
-template <class T>
-inline typename tools::promote_args<T>::type erf(T x)
-{ return boost::math::tr1::erf(static_cast<typename tools::promote_args<T>::type>(x)); }
-
-inline float erfc(float x)
-{ return boost::math::tr1::erfcf(x); }
-inline long double erfc(long double x)
-{ return boost::math::tr1::erfcl(x); }
-template <class T>
-inline typename tools::promote_args<T>::type erfc(T x)
-{ return boost::math::tr1::erfc(static_cast<typename tools::promote_args<T>::type>(x)); }
-#if 0
-double exp2(double x);
-float exp2f(float x);
-long double exp2l(long double x);
-#endif
-inline float expm1f(float x)
-{ return boost::math::tr1::boost_expm1f(x); }
-inline double expm1(double x)
-{ return boost::math::tr1::boost_expm1(x); }
-inline long double expm1l(long double x)
-{ return boost::math::tr1::boost_expm1l(x); }
-inline float expm1(float x)
-{ return boost::math::tr1::expm1f(x); }
-inline long double expm1(long double x)
-{ return boost::math::tr1::expm1l(x); }
-template <class T>
-inline typename tools::promote_args<T>::type expm1(T x)
-{ return boost::math::tr1::expm1(static_cast<typename tools::promote_args<T>::type>(x)); }
-#if 0
-double fdim(double x, double y);
-float fdimf(float x, float y);
-long double fdiml(long double x, long double y);
-double fma(double x, double y, double z);
-float fmaf(float x, float y, float z);
-long double fmal(long double x, long double y, long double z);
-#endif
-inline float fmax(float x, float y)
-{ return boost::math::tr1::fmaxf(x, y); }
-inline long double fmax(long double x, long double y)
-{ return boost::math::tr1::fmaxl(x, y); }
-template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type fmax(T1 x, T2 y)
-{ return boost::math::tr1::fmax(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
-
-inline float fmin(float x, float y)
-{ return boost::math::tr1::fminf(x, y); }
-inline long double fmin(long double x, long double y)
-{ return boost::math::tr1::fminl(x, y); }
-template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type fmin(T1 x, T2 y)
-{ return boost::math::tr1::fmin(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
-
-inline float hypot(float x, float y)
-{ return boost::math::tr1::hypotf(x, y); }
-inline long double hypot(long double x, long double y)
-{ return boost::math::tr1::hypotl(x, y); }
-template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type hypot(T1 x, T2 y)
-{ return boost::math::tr1::hypot(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
-#if 0
-int ilogb(double x);
-int ilogbf(float x);
-int ilogbl(long double x);
-#endif
-inline float lgamma(float x)
-{ return boost::math::tr1::lgammaf(x); }
-inline long double lgamma(long double x)
-{ return boost::math::tr1::lgammal(x); }
-template <class T>
-inline typename tools::promote_args<T>::type lgamma(T x)
-{ return boost::math::tr1::lgamma(static_cast<typename tools::promote_args<T>::type>(x)); }
-#if 0
-long long llrint(double x);
-long long llrintf(float x);
-long long llrintl(long double x);
-#endif
-inline long long llround(float x)
-{ return boost::math::tr1::llroundf(x); }
-inline long long llround(long double x)
-{ return boost::math::tr1::llroundl(x); }
-template <class T>
-inline long long llround(T x)
-{ return llround(static_cast<double>(x)); }
-
-inline float log1pf(float x)
-{ return boost::math::tr1::boost_log1pf(x); }
-inline double log1p(double x)
-{ return boost::math::tr1::boost_log1p(x); }
-inline long double log1pl(long double x)
-{ return boost::math::tr1::boost_log1pl(x); }
-inline float log1p(float x)
-{ return boost::math::tr1::log1pf(x); }
-inline long double log1p(long double x)
-{ return boost::math::tr1::log1pl(x); }
-template <class T>
-inline typename tools::promote_args<T>::type log1p(T x)
-{ return boost::math::tr1::log1p(static_cast<typename tools::promote_args<T>::type>(x)); }
-#if 0
-double log2(double x);
-float log2f(float x);
-long double log2l(long double x);
-
-double logb(double x);
-float logbf(float x);
-long double logbl(long double x);
-long lrint(double x);
-long lrintf(float x);
-long lrintl(long double x);
-#endif
-inline long lround(float x)
-{ return boost::math::tr1::lroundf(x); }
-inline long lround(long double x)
-{ return boost::math::tr1::lroundl(x); }
-template <class T>
-long lround(T x)
-{ return boost::math::tr1::lround(static_cast<double>(x)); }
-#if 0
-double nan(const char *str);
-float nanf(const char *str);
-long double nanl(const char *str);
-double nearbyint(double x);
-float nearbyintf(float x);
-long double nearbyintl(long double x);
-#endif
-inline float nextafterf(float x, float y)
-{ return boost::math::tr1::boost_nextafterf(x, y); }
-inline double nextafter(double x, double y)
-{ return boost::math::tr1::boost_nextafter(x, y); }
-inline long double nextafterl(long double x, long double y)
-{ return boost::math::tr1::boost_nextafterl(x, y); }
-inline float nextafter(float x, float y)
-{ return boost::math::tr1::nextafterf(x, y); }
-inline long double nextafter(long double x, long double y)
-{ return boost::math::tr1::nextafterl(x, y); }
-template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type nextafter(T1 x, T2 y)
-{ return boost::math::tr1::nextafter(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
-
-inline float nexttoward(float x, long double y)
-{ return boost::math::tr1::nexttowardf(x, y); }
-inline long double nexttoward(long double x, long double y)
-{ return boost::math::tr1::nexttowardl(x, y); }
-template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type nexttoward(T1 x, T2 y)
-{ return boost::math::tr1::nexttoward(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<long double>(y)); }
-#if 0
-double remainder(double x, double y);
-float remainderf(float x, float y);
-long double remainderl(long double x, long double y);
-double remquo(double x, double y, int *pquo);
-float remquof(float x, float y, int *pquo);
-long double remquol(long double x, long double y, int *pquo);
-double rint(double x);
-float rintf(float x);
-long double rintl(long double x);
-#endif
-inline float round(float x)
-{ return boost::math::tr1::roundf(x); }
-inline long double round(long double x)
-{ return boost::math::tr1::roundl(x); }
-template <class T>
-inline typename tools::promote_args<T>::type round(T x)
-{ return boost::math::tr1::round(static_cast<typename tools::promote_args<T>::type>(x)); }
-#if 0
-double scalbln(double x, long ex);
-float scalblnf(float x, long ex);
-long double scalblnl(long double x, long ex);
-double scalbn(double x, int ex);
-float scalbnf(float x, int ex);
-long double scalbnl(long double x, int ex);
-#endif
-inline float tgamma(float x)
-{ return boost::math::tr1::tgammaf(x); }
-inline long double tgamma(long double x)
-{ return boost::math::tr1::tgammal(x); }
-template <class T>
-inline typename tools::promote_args<T>::type tgamma(T x)
-{ return boost::math::tr1::tgamma(static_cast<typename tools::promote_args<T>::type>(x)); }
-
-inline float trunc(float x)
-{ return boost::math::tr1::truncf(x); }
-inline long double trunc(long double x)
-{ return boost::math::tr1::truncl(x); }
+inline float acosh BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::acoshf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double acosh BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::acoshl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline typename tools::promote_args<T>::type acosh BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::acosh BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+
+inline float asinh BOOST_PREVENT_MACRO_SUBSTITUTION(float x){ return boost::math::tr1::asinhf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double asinh BOOST_PREVENT_MACRO_SUBSTITUTION(long double x){ return boost::math::tr1::asinhl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline typename tools::promote_args<T>::type asinh BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::asinh BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+
+inline float atanh BOOST_PREVENT_MACRO_SUBSTITUTION(float x){ return boost::math::tr1::atanhf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double atanh BOOST_PREVENT_MACRO_SUBSTITUTION(long double x){ return boost::math::tr1::atanhl(x); }
+template <class T>
+inline typename tools::promote_args<T>::type atanh BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::atanh BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+
+inline float cbrt BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::cbrtf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double cbrt BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::cbrtl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline typename tools::promote_args<T>::type cbrt BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::cbrt BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+
+inline float copysign BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
+{ return boost::math::tr1::copysignf BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+inline long double copysign BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
+{ return boost::math::tr1::copysignl BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type copysign BOOST_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)
+{ return boost::math::tr1::copysign BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
+
+inline float erf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::erff BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double erf BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::erfl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline typename tools::promote_args<T>::type erf BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::erf BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+
+inline float erfc BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::erfcf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double erfc BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::erfcl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline typename tools::promote_args<T>::type erfc BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::erfc BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+#if 0
+double exp2 BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float exp2f BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double exp2l BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+inline float expm1f BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::boost_expm1f BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline double expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
+{ return boost::math::tr1::boost_expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double expm1l BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::boost_expm1l BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline float expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::expm1f BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::expm1l BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline typename tools::promote_args<T>::type expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+#if 0
+double fdim BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y);
+float fdimf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y);
+long double fdiml BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
+double fma BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y, double z);
+float fmaf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y, float z);
+long double fmal BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y, long double z);
+#endif
+inline float fmax BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
+{ return boost::math::tr1::fmaxf BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+inline long double fmax BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
+{ return boost::math::tr1::fmaxl BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type fmax BOOST_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)
+{ return boost::math::tr1::fmax BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
+
+inline float fmin BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
+{ return boost::math::tr1::fminf BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+inline long double fmin BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
+{ return boost::math::tr1::fminl BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type fmin BOOST_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)
+{ return boost::math::tr1::fmin BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
+
+inline float hypot BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
+{ return boost::math::tr1::hypotf BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+inline long double hypot BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
+{ return boost::math::tr1::hypotl BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type hypot BOOST_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)
+{ return boost::math::tr1::hypot BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
+#if 0
+int ilogb BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+int ilogbf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+int ilogbl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+inline float lgamma BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::lgammaf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double lgamma BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::lgammal BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline typename tools::promote_args<T>::type lgamma BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::lgamma BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+#if 0
+long long llrint BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+long long llrintf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long long llrintl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+inline long long llround BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::llroundf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long long llround BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::llroundl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline long long llround BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return llround BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<double>(x)); }
+
+inline float log1pf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::boost_log1pf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline double log1p BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
+{ return boost::math::tr1::boost_log1p BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double log1pl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::boost_log1pl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline float log1p BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::log1pf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double log1p BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::log1pl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline typename tools::promote_args<T>::type log1p BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::log1p BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+#if 0
+double log2 BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float log2f BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double log2l BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+
+double logb BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float logbf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double logbl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+long lrint BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+long lrintf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long lrintl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+inline long lround BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::lroundf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long lround BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::lroundl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+long lround BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::lround BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<double>(x)); }
+#if 0
+double nan BOOST_PREVENT_MACRO_SUBSTITUTION(const char *str);
+float nanf BOOST_PREVENT_MACRO_SUBSTITUTION(const char *str);
+long double nanl BOOST_PREVENT_MACRO_SUBSTITUTION(const char *str);
+double nearbyint BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float nearbyintf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double nearbyintl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+inline float nextafterf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
+{ return boost::math::tr1::boost_nextafterf BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+inline double nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y)
+{ return boost::math::tr1::boost_nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+inline long double nextafterl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
+{ return boost::math::tr1::boost_nextafterl BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+inline float nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
+{ return boost::math::tr1::nextafterf BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+inline long double nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
+{ return boost::math::tr1::nextafterl BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)
+{ return boost::math::tr1::nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
+
+inline float nexttoward BOOST_PREVENT_MACRO_SUBSTITUTION(float x, long double y)
+{ return boost::math::tr1::nexttowardf BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+inline long double nexttoward BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
+{ return boost::math::tr1::nexttowardl BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+template <class T1, class T2>
+inline typename tools::promote_args<T1, T2>::type nexttoward BOOST_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)
+{ return boost::math::tr1::nexttoward BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<long double>(y)); }
+#if 0
+double remainder BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y);
+float remainderf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y);
+long double remainderl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);
+double remquo BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y, int *pquo);
+float remquof BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y, int *pquo);
+long double remquol BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y, int *pquo);
+double rint BOOST_PREVENT_MACRO_SUBSTITUTION(double x);
+float rintf BOOST_PREVENT_MACRO_SUBSTITUTION(float x);
+long double rintl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x);
+#endif
+inline float round BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::roundf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double round BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::roundl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline typename tools::promote_args<T>::type round BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::round BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+#if 0
+double scalbln BOOST_PREVENT_MACRO_SUBSTITUTION(double x, long ex);
+float scalblnf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, long ex);
+long double scalblnl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long ex);
+double scalbn BOOST_PREVENT_MACRO_SUBSTITUTION(double x, int ex);
+float scalbnf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, int ex);
+long double scalbnl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, int ex);
+#endif
+inline float tgamma BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::tgammaf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double tgamma BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::tgammal BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+template <class T>
+inline typename tools::promote_args<T>::type tgamma BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::tgamma BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
+
+inline float trunc BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::truncf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double trunc BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::truncl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
 template <class T>
-inline typename tools::promote_args<T>::type trunc(T x)
-{ return boost::math::tr1::trunc(static_cast<typename tools::promote_args<T>::type>(x)); }
+inline typename tools::promote_args<T>::type trunc BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::trunc BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
 
 # define NO_MACRO_EXPAND /**/
 // C99 macros defined as C++ templates
@@ -644,210 +644,210 @@
 #undef NO_MACRO_EXPAND
    
 // [5.2.1.1] associated Laguerre polynomials:
-inline float assoc_laguerre(unsigned n, unsigned m, float x)
-{ return boost::math::tr1::assoc_laguerref(n, m, x); }
-inline long double assoc_laguerre(unsigned n, unsigned m, long double x)
-{ return boost::math::tr1::assoc_laguerrel(n, m, x); }
+inline float assoc_laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, float x)
+{ return boost::math::tr1::assoc_laguerref BOOST_PREVENT_MACRO_SUBSTITUTION(n, m, x); }
+inline long double assoc_laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, long double x)
+{ return boost::math::tr1::assoc_laguerrel BOOST_PREVENT_MACRO_SUBSTITUTION(n, m, x); }
 template <class T>
-inline typename tools::promote_args<T>::type assoc_laguerre(unsigned n, unsigned m, T x)
-{ return boost::math::tr1::assoc_laguerre(n, m, static_cast<typename tools::promote_args<T>::type>(x)); }
+inline typename tools::promote_args<T>::type assoc_laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, T x)
+{ return boost::math::tr1::assoc_laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(n, m, static_cast<typename tools::promote_args<T>::type>(x)); }
 
 // [5.2.1.2] associated Legendre functions:
-inline float assoc_legendre(unsigned l, unsigned m, float x)
-{ return boost::math::tr1::assoc_legendref(l, m, x); }
-inline long double assoc_legendre(unsigned l, unsigned m, long double x)
-{ return boost::math::tr1::assoc_legendrel(l, m, x); }
+inline float assoc_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float x)
+{ return boost::math::tr1::assoc_legendref BOOST_PREVENT_MACRO_SUBSTITUTION(l, m, x); }
+inline long double assoc_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double x)
+{ return boost::math::tr1::assoc_legendrel BOOST_PREVENT_MACRO_SUBSTITUTION(l, m, x); }
 template <class T>
-inline typename tools::promote_args<T>::type assoc_legendre(unsigned l, unsigned m, T x)
-{ return boost::math::tr1::assoc_legendre(l, m, static_cast<typename tools::promote_args<T>::type>(x)); }
+inline typename tools::promote_args<T>::type assoc_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, T x)
+{ return boost::math::tr1::assoc_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(l, m, static_cast<typename tools::promote_args<T>::type>(x)); }
 
 // [5.2.1.3] beta function:
-inline float beta(float x, float y)
-{ return boost::math::tr1::betaf(x, y); }
-inline long double beta(long double x, long double y)
-{ return boost::math::tr1::betal(x, y); }
+inline float beta BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
+{ return boost::math::tr1::betaf BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
+inline long double beta BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
+{ return boost::math::tr1::betal BOOST_PREVENT_MACRO_SUBSTITUTION(x, y); }
 template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type beta(T2 x, T1 y)
-{ return boost::math::tr1::beta(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
+inline typename tools::promote_args<T1, T2>::type beta BOOST_PREVENT_MACRO_SUBSTITUTION(T2 x, T1 y)
+{ return boost::math::tr1::beta BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }
 
 // [5.2.1.4] (complete) elliptic integral of the first kind:
-inline float comp_ellint_1(float k)
-{ return boost::math::tr1::comp_ellint_1f(k); }
-inline long double comp_ellint_1(long double k)
-{ return boost::math::tr1::comp_ellint_1l(k); }
+inline float comp_ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(float k)
+{ return boost::math::tr1::comp_ellint_1f BOOST_PREVENT_MACRO_SUBSTITUTION(k); }
+inline long double comp_ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(long double k)
+{ return boost::math::tr1::comp_ellint_1l BOOST_PREVENT_MACRO_SUBSTITUTION(k); }
 template <class T>
-inline typename tools::promote_args<T>::type comp_ellint_1(T k)
-{ return boost::math::tr1::comp_ellint_1(static_cast<typename tools::promote_args<T>::type>(k)); }
+inline typename tools::promote_args<T>::type comp_ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(T k)
+{ return boost::math::tr1::comp_ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(k)); }
 
-// [5.2.1.5] (complete) elliptic integral of the second kind:
+// [5.2.1.5] BOOST_PREVENT_MACRO_SUBSTITUTION(complete) elliptic integral of the second kind:
 inline float comp_ellint_2(float k)
 { return boost::math::tr1::comp_ellint_2f(k); }
 inline long double comp_ellint_2(long double k)
 { return boost::math::tr1::comp_ellint_2l(k); }
 template <class T>
 inline typename tools::promote_args<T>::type comp_ellint_2(T k)
-{ return boost::math::tr1::comp_ellint_2(static_cast<typename tools::promote_args<T>::type>(k)); }
+{ return boost::math::tr1::comp_ellint_2(static_cast<typename tools::promote_args<T>::type> BOOST_PREVENT_MACRO_SUBSTITUTION(k)); }
 
-// [5.2.1.6] (complete) elliptic integral of the third kind:
+// [5.2.1.6] BOOST_PREVENT_MACRO_SUBSTITUTION(complete) elliptic integral of the third kind:
 inline float comp_ellint_3(float k, float nu)
 { return boost::math::tr1::comp_ellint_3f(k, nu); }
 inline long double comp_ellint_3(long double k, long double nu)
 { return boost::math::tr1::comp_ellint_3l(k, nu); }
 template <class T1, class T2>
 inline typename tools::promote_args<T1, T2>::type comp_ellint_3(T1 k, T2 nu)
-{ return boost::math::tr1::comp_ellint_3(static_cast<typename tools::promote_args<T1, T2>::type>(k), static_cast<typename tools::promote_args<T1, T2>::type>(nu)); }
+{ return boost::math::tr1::comp_ellint_3(static_cast<typename tools::promote_args<T1, T2>::type> BOOST_PREVENT_MACRO_SUBSTITUTION(k), static_cast<typename tools::promote_args<T1, T2>::type> BOOST_PREVENT_MACRO_SUBSTITUTION(nu)); }
 
 #if 0
 // [5.2.1.7] confluent hypergeometric functions:
-double conf_hyperg(double a, double c, double x);
-float conf_hypergf(float a, float c, float x);
-long double conf_hypergl(long double a, long double c, long double x);
+double conf_hyperg BOOST_PREVENT_MACRO_SUBSTITUTION(double a, double c, double x);
+float conf_hypergf BOOST_PREVENT_MACRO_SUBSTITUTION(float a, float c, float x);
+long double conf_hypergl BOOST_PREVENT_MACRO_SUBSTITUTION(long double a, long double c, long double x);
 #endif
 
 // [5.2.1.8] regular modified cylindrical Bessel functions:
-inline float cyl_bessel_i(float nu, float x)
-{ return boost::math::tr1::cyl_bessel_if(nu, x); }
-inline long double cyl_bessel_i(long double nu, long double x)
-{ return boost::math::tr1::cyl_bessel_il(nu, x); }
+inline float cyl_bessel_i BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x)
+{ return boost::math::tr1::cyl_bessel_if BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x); }
+inline long double cyl_bessel_i BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)
+{ return boost::math::tr1::cyl_bessel_il BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x); }
 template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type cyl_bessel_i(T1 nu, T2 x)
-{ return boost::math::tr1::cyl_bessel_i(static_cast<typename tools::promote_args<T1, T2>::type>(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }
+inline typename tools::promote_args<T1, T2>::type cyl_bessel_i BOOST_PREVENT_MACRO_SUBSTITUTION(T1 nu, T2 x)
+{ return boost::math::tr1::cyl_bessel_i BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }
 
 // [5.2.1.9] cylindrical Bessel functions (of the first kind):
-inline float cyl_bessel_j(float nu, float x)
-{ return boost::math::tr1::cyl_bessel_jf(nu, x); }
-inline long double cyl_bessel_j(long double nu, long double x)
-{ return boost::math::tr1::cyl_bessel_jl(nu, x); }
+inline float cyl_bessel_j BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x)
+{ return boost::math::tr1::cyl_bessel_jf BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x); }
+inline long double cyl_bessel_j BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)
+{ return boost::math::tr1::cyl_bessel_jl BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x); }
 template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type cyl_bessel_j(T1 nu, T2 x)
-{ return boost::math::tr1::cyl_bessel_j(static_cast<typename tools::promote_args<T1, T2>::type>(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }
+inline typename tools::promote_args<T1, T2>::type cyl_bessel_j BOOST_PREVENT_MACRO_SUBSTITUTION(T1 nu, T2 x)
+{ return boost::math::tr1::cyl_bessel_j BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }
 
 // [5.2.1.10] irregular modified cylindrical Bessel functions:
-inline float cyl_bessel_k(float nu, float x)
-{ return boost::math::tr1::cyl_bessel_kf(nu, x); }
-inline long double cyl_bessel_k(long double nu, long double x)
-{ return boost::math::tr1::cyl_bessel_kl(nu, x); }
+inline float cyl_bessel_k BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x)
+{ return boost::math::tr1::cyl_bessel_kf BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x); }
+inline long double cyl_bessel_k BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)
+{ return boost::math::tr1::cyl_bessel_kl BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x); }
 template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type cyl_bessel_k(T1 nu, T2 x)
-{ return boost::math::tr1::cyl_bessel_k(static_cast<typename tools::promote_args<T1, T2>::type>(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }
+inline typename tools::promote_args<T1, T2>::type cyl_bessel_k BOOST_PREVENT_MACRO_SUBSTITUTION(T1 nu, T2 x)
+{ return boost::math::tr1::cyl_bessel_k BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type> BOOST_PREVENT_MACRO_SUBSTITUTION(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }
 
 // [5.2.1.11] cylindrical Neumann functions;
 // cylindrical Bessel functions (of the second kind):
-inline float cyl_neumann(float nu, float x)
-{ return boost::math::tr1::cyl_neumannf(nu, x); }
-inline long double cyl_neumann(long double nu, long double x)
-{ return boost::math::tr1::cyl_neumannl(nu, x); }
+inline float cyl_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x)
+{ return boost::math::tr1::cyl_neumannf BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x); }
+inline long double cyl_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)
+{ return boost::math::tr1::cyl_neumannl BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x); }
 template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type cyl_neumann(T1 nu, T2 x)
-{ return boost::math::tr1::cyl_neumann(static_cast<typename tools::promote_args<T1, T2>::type>(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }
+inline typename tools::promote_args<T1, T2>::type cyl_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(T1 nu, T2 x)
+{ return boost::math::tr1::cyl_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }
 
 // [5.2.1.12] (incomplete) elliptic integral of the first kind:
-inline float ellint_1(float k, float phi)
-{ return boost::math::tr1::ellint_1f(k, phi); }
-inline long double ellint_1(long double k, long double phi)
-{ return boost::math::tr1::ellint_1l(k, phi); }
+inline float ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float phi)
+{ return boost::math::tr1::ellint_1f BOOST_PREVENT_MACRO_SUBSTITUTION(k, phi); }
+inline long double ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi)
+{ return boost::math::tr1::ellint_1l BOOST_PREVENT_MACRO_SUBSTITUTION(k, phi); }
 template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type ellint_1(T1 k, T2 phi)
-{ return boost::math::tr1::ellint_1(static_cast<typename tools::promote_args<T1, T2>::type>(k), static_cast<typename tools::promote_args<T1, T2>::type>(phi)); }
+inline typename tools::promote_args<T1, T2>::type ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(T1 k, T2 phi)
+{ return boost::math::tr1::ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(k), static_cast<typename tools::promote_args<T1, T2>::type>(phi)); }
 
 // [5.2.1.13] (incomplete) elliptic integral of the second kind:
-inline float ellint_2(float k, float phi)
-{ return boost::math::tr1::ellint_2f(k, phi); }
-inline long double ellint_2(long double k, long double phi)
-{ return boost::math::tr1::ellint_2l(k, phi); }
+inline float ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float phi)
+{ return boost::math::tr1::ellint_2f BOOST_PREVENT_MACRO_SUBSTITUTION(k, phi); }
+inline long double ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi)
+{ return boost::math::tr1::ellint_2l BOOST_PREVENT_MACRO_SUBSTITUTION(k, phi); }
 template <class T1, class T2>
-inline typename tools::promote_args<T1, T2>::type ellint_2(T1 k, T2 phi)
-{ return boost::math::tr1::ellint_2(static_cast<typename tools::promote_args<T1, T2>::type>(k), static_cast<typename tools::promote_args<T1, T2>::type>(phi)); }
+inline typename tools::promote_args<T1, T2>::type ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(T1 k, T2 phi)
+{ return boost::math::tr1::ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(k), static_cast<typename tools::promote_args<T1, T2>::type>(phi)); }
 
 // [5.2.1.14] (incomplete) elliptic integral of the third kind:
-inline float ellint_3(float k, float nu, float phi)
-{ return boost::math::tr1::ellint_3f(k, nu, phi); }
-inline long double ellint_3(long double k, long double nu, long double phi)
-{ return boost::math::tr1::ellint_3l(k, nu, phi); }
+inline float ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float nu, float phi)
+{ return boost::math::tr1::ellint_3f BOOST_PREVENT_MACRO_SUBSTITUTION(k, nu, phi); }
+inline long double ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double nu, long double phi)
+{ return boost::math::tr1::ellint_3l BOOST_PREVENT_MACRO_SUBSTITUTION(k, nu, phi); }
 template <class T1, class T2, class T3>
-inline typename tools::promote_args<T1, T2, T3>::type ellint_3(T1 k, T2 nu, T3 phi)
-{ return boost::math::tr1::ellint_3(static_cast<typename tools::promote_args<T1, T2, T3>::type>(k), static_cast<typename tools::promote_args<T1, T2, T3>::type>(nu), static_cast<typename tools::promote_args<T1, T2, T3>::type>(phi)); }
+inline typename tools::promote_args<T1, T2, T3>::type ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(T1 k, T2 nu, T3 phi)
+{ return boost::math::tr1::ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2, T3>::type>(k), static_cast<typename tools::promote_args<T1, T2, T3>::type>(nu), static_cast<typename tools::promote_args<T1, T2, T3>::type>(phi)); }
 
 // [5.2.1.15] exponential integral:
-inline float expint(float x)
-{ return boost::math::tr1::expintf(x); }
-inline long double expint(long double x)
-{ return boost::math::tr1::expintl(x); }
+inline float expint BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
+{ return boost::math::tr1::expintf BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
+inline long double expint BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
+{ return boost::math::tr1::expintl BOOST_PREVENT_MACRO_SUBSTITUTION(x); }
 template <class T>
-inline typename tools::promote_args<T>::type expint(T x)
-{ return boost::math::tr1::expint(static_cast<typename tools::promote_args<T>::type>(x)); }
+inline typename tools::promote_args<T>::type expint BOOST_PREVENT_MACRO_SUBSTITUTION(T x)
+{ return boost::math::tr1::expint BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }
 
 // [5.2.1.16] Hermite polynomials:
-inline float hermite(unsigned n, float x)
-{ return boost::math::tr1::hermitef(n, x); }
-inline long double hermite(unsigned n, long double x)
-{ return boost::math::tr1::hermitel(n, x); }
+inline float hermite BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)
+{ return boost::math::tr1::hermitef BOOST_PREVENT_MACRO_SUBSTITUTION(n, x); }
+inline long double hermite BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)
+{ return boost::math::tr1::hermitel BOOST_PREVENT_MACRO_SUBSTITUTION(n, x); }
 template <class T>
-inline typename tools::promote_args<T>::type hermite(unsigned n, T x)
-{ return boost::math::tr1::hermite(n, static_cast<typename tools::promote_args<T>::type>(x)); }
+inline typename tools::promote_args<T>::type hermite BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, T x)
+{ return boost::math::tr1::hermite BOOST_PREVENT_MACRO_SUBSTITUTION(n, static_cast<typename tools::promote_args<T>::type>(x)); }
 
 #if 0
 // [5.2.1.17] hypergeometric functions:
-double hyperg(double a, double b, double c, double x);
-float hypergf(float a, float b, float c, float x);
-long double hypergl(long double a, long double b, long double c,
+double hyperg BOOST_PREVENT_MACRO_SUBSTITUTION(double a, double b, double c, double x);
+float hypergf BOOST_PREVENT_MACRO_SUBSTITUTION(float a, float b, float c, float x);
+long double hypergl BOOST_PREVENT_MACRO_SUBSTITUTION(long double a, long double b, long double c,
 long double x);
 #endif
 
 // [5.2.1.18] Laguerre polynomials:
-inline float laguerre(unsigned n, float x)
-{ return boost::math::tr1::laguerref(n, x); }
-inline long double laguerre(unsigned n, long double x)
-{ return boost::math::tr1::laguerrel(n, x); }
+inline float laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)
+{ return boost::math::tr1::laguerref BOOST_PREVENT_MACRO_SUBSTITUTION(n, x); }
+inline long double laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)
+{ return boost::math::tr1::laguerrel BOOST_PREVENT_MACRO_SUBSTITUTION(n, x); }
 template <class T>
-inline typename tools::promote_args<T>::type laguerre(unsigned n, T x)
-{ return boost::math::tr1::laguerre(n, static_cast<typename tools::promote_args<T>::type>(x)); }
+inline typename tools::promote_args<T>::type laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, T x)
+{ return boost::math::tr1::laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(n, static_cast<typename tools::promote_args<T>::type>(x)); }
 
 // [5.2.1.19] Legendre polynomials:
-inline float legendre(unsigned l, float x)
-{ return boost::math::tr1::legendref(l, x); }
-inline long double legendre(unsigned l, long double x)
-{ return boost::math::tr1::legendrel(l, x); }
+inline float legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, float x)
+{ return boost::math::tr1::legendref BOOST_PREVENT_MACRO_SUBSTITUTION(l, x); }
+inline long double legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, long double x)
+{ return boost::math::tr1::legendrel BOOST_PREVENT_MACRO_SUBSTITUTION(l, x); }
 template <class T>
-inline typename tools::promote_args<T>::type legendre(unsigned l, T x)
-{ return boost::math::tr1::legendre(l, static_cast<typename tools::promote_args<T>::type>(x)); }
+inline typename tools::promote_args<T>::type legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, T x)
+{ return boost::math::tr1::legendre BOOST_PREVENT_MACRO_SUBSTITUTION(l, static_cast<typename tools::promote_args<T>::type>(x)); }
 
 // [5.2.1.20] Riemann zeta function:
-inline float riemann_zeta(float z)
-{ return boost::math::tr1::riemann_zetaf(z); }
-inline long double riemann_zeta(long double z)
-{ return boost::math::tr1::riemann_zetal(z); }
+inline float riemann_zeta BOOST_PREVENT_MACRO_SUBSTITUTION(float z)
+{ return boost::math::tr1::riemann_zetaf BOOST_PREVENT_MACRO_SUBSTITUTION(z); }
+inline long double riemann_zeta BOOST_PREVENT_MACRO_SUBSTITUTION(long double z)
+{ return boost::math::tr1::riemann_zetal BOOST_PREVENT_MACRO_SUBSTITUTION(z); }
 template <class T>
-inline typename tools::promote_args<T>::type riemann_zeta(T z)
-{ return boost::math::tr1::riemann_zeta(static_cast<typename tools::promote_args<T>::type>(z)); }
+inline typename tools::promote_args<T>::type riemann_zeta BOOST_PREVENT_MACRO_SUBSTITUTION(T z)
+{ return boost::math::tr1::riemann_zeta BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(z)); }
 
 // [5.2.1.21] spherical Bessel functions (of the first kind):
-inline float sph_bessel(unsigned n, float x)
-{ return boost::math::tr1::sph_besself(n, x); }
-inline long double sph_bessel(unsigned n, long double x)
-{ return boost::math::tr1::sph_bessell(n, x); }
+inline float sph_bessel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)
+{ return boost::math::tr1::sph_besself BOOST_PREVENT_MACRO_SUBSTITUTION(n, x); }
+inline long double sph_bessel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)
+{ return boost::math::tr1::sph_bessell BOOST_PREVENT_MACRO_SUBSTITUTION(n, x); }
 template <class T>
-inline typename tools::promote_args<T>::type sph_bessel(unsigned n, T x)
-{ return boost::math::tr1::sph_bessel(n, static_cast<typename tools::promote_args<T>::type>(x)); }
+inline typename tools::promote_args<T>::type sph_bessel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, T x)
+{ return boost::math::tr1::sph_bessel BOOST_PREVENT_MACRO_SUBSTITUTION(n, static_cast<typename tools::promote_args<T>::type>(x)); }
 
 // [5.2.1.22] spherical associated Legendre functions:
-inline float sph_legendre(unsigned l, unsigned m, float theta)
-{ return boost::math::tr1::sph_legendref(l, m, theta); }
-inline long double sph_legendre(unsigned l, unsigned m, long double theta)
-{ return boost::math::tr1::sph_legendrel(l, m, theta); }
+inline float sph_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float theta)
+{ return boost::math::tr1::sph_legendref BOOST_PREVENT_MACRO_SUBSTITUTION(l, m, theta); }
+inline long double sph_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double theta)
+{ return boost::math::tr1::sph_legendrel BOOST_PREVENT_MACRO_SUBSTITUTION(l, m, theta); }
 template <class T>
-inline typename tools::promote_args<T>::type sph_legendre(unsigned l, unsigned m, T theta)
-{ return boost::math::tr1::sph_legendre(l, m, static_cast<typename tools::promote_args<T>::type>(theta)); }
+inline typename tools::promote_args<T>::type sph_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, T theta)
+{ return boost::math::tr1::sph_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(l, m, static_cast<typename tools::promote_args<T>::type>(theta)); }
 
 // [5.2.1.23] spherical Neumann functions;
 // spherical Bessel functions (of the second kind):
-inline float sph_neumann(unsigned n, float x)
-{ return boost::math::tr1::sph_neumannf(n, x); }
-inline long double sph_neumann(unsigned n, long double x)
-{ return boost::math::tr1::sph_neumannl(n, x); }
+inline float sph_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)
+{ return boost::math::tr1::sph_neumannf BOOST_PREVENT_MACRO_SUBSTITUTION(n, x); }
+inline long double sph_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)
+{ return boost::math::tr1::sph_neumannl BOOST_PREVENT_MACRO_SUBSTITUTION(n, x); }
 template <class T>
-inline typename tools::promote_args<T>::type sph_neumann(unsigned n, T x)
-{ return boost::math::tr1::sph_neumann(n, static_cast<typename tools::promote_args<T>::type>(x)); }
+inline typename tools::promote_args<T>::type sph_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, T x)
+{ return boost::math::tr1::sph_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(n, static_cast<typename tools::promote_args<T>::type>(x)); }
 
 }}} // namespaces
 

Modified: branches/proto/v4/boost/mpi/collectives/scatter.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/collectives/scatter.hpp (original)
+++ branches/proto/v4/boost/mpi/collectives/scatter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -131,7 +131,7 @@
         int root)
 {
   if (comm.rank() == root)
- detail::scatter_impl(comm, in_values, n, out_values, root,
+ detail::scatter_impl(comm, in_values, out_values, n, root,
                          is_mpi_datatype<T>());
   else
     detail::scatter_impl(comm, out_values, n, root, is_mpi_datatype<T>());

Modified: branches/proto/v4/boost/mpi/communicator.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/communicator.hpp (original)
+++ branches/proto/v4/boost/mpi/communicator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1141,7 +1141,7 @@
 {
   BOOST_MPI_CHECK_RESULT(MPI_Send,
                          (const_cast<T*>(values), n,
- get_mpi_datatype<T>(*values),
+ get_mpi_datatype<T>(*values),
                           dest, tag, MPI_Comm(*this)));
 }
 
@@ -1174,7 +1174,7 @@
 
   BOOST_MPI_CHECK_RESULT(MPI_Recv,
                          (const_cast<T*>(&value), 1,
- get_mpi_datatype<T>(value),
+ get_mpi_datatype<T>(value),
                           source, tag, MPI_Comm(*this), &stat.m_status));
   return stat;
 }
@@ -1209,7 +1209,7 @@
   status stat;
   BOOST_MPI_CHECK_RESULT(MPI_Recv,
                          (const_cast<T*>(values), n,
- get_mpi_datatype<T>(*values),
+ get_mpi_datatype<T>(*values),
                           source, tag, MPI_Comm(*this), &stat.m_status));
   return stat;
 }
@@ -1256,7 +1256,7 @@
   request req;
   BOOST_MPI_CHECK_RESULT(MPI_Isend,
                          (const_cast<T*>(&value), 1,
- get_mpi_datatype<T>(value),
+ get_mpi_datatype<T>(value),
                           dest, tag, MPI_Comm(*this), &req.m_requests[0]));
   return req;
 }
@@ -1291,7 +1291,7 @@
   request req;
   BOOST_MPI_CHECK_RESULT(MPI_Isend,
                          (const_cast<T*>(values), n,
- get_mpi_datatype<T>(*values),
+ get_mpi_datatype<T>(*values),
                           dest, tag, MPI_Comm(*this), &req.m_requests[0]));
   return req;
 }
@@ -1531,7 +1531,7 @@
   request req;
   BOOST_MPI_CHECK_RESULT(MPI_Irecv,
                          (const_cast<T*>(&value), 1,
- get_mpi_datatype<T>(value),
+ get_mpi_datatype<T>(value),
                           source, tag, MPI_Comm(*this), &req.m_requests[0]));
   return req;
 }
@@ -1548,7 +1548,7 @@
 
   BOOST_MPI_CHECK_RESULT(MPI_Irecv,
                          (&data->count, 1,
- get_mpi_datatype<std::size_t>(data->count),
+ get_mpi_datatype<std::size_t>(data->count),
                           source, tag, MPI_Comm(*this), &req.m_requests[0]));
   
   return req;
@@ -1569,7 +1569,7 @@
   request req;
   BOOST_MPI_CHECK_RESULT(MPI_Irecv,
                          (const_cast<T*>(values), n,
- get_mpi_datatype<T>(*values),
+ get_mpi_datatype<T>(*values),
                           source, tag, MPI_Comm(*this), &req.m_requests[0]));
   return req;
 }
@@ -1587,7 +1587,7 @@
 
   BOOST_MPI_CHECK_RESULT(MPI_Irecv,
                          (&data->count, 1,
- get_mpi_datatype<std::size_t>(data->count),
+ get_mpi_datatype<std::size_t>(data->count),
                           source, tag, MPI_Comm(*this), &req.m_requests[0]));
 
   return req;

Modified: branches/proto/v4/boost/mpi/detail/content_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/content_oarchive.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/content_oarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -61,5 +61,5 @@
 // required by export
 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::detail::content_oarchive)
 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::detail::ignore_skeleton_oarchive<boost::mpi::detail::content_oarchive>)
-
+BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(boost::mpi::detail::content_oarchive)
 #endif // BOOST_MPI_DETAIL_CONTENT_OARCHIVE_HPP

Modified: branches/proto/v4/boost/mpi/detail/forward_iprimitive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/forward_iprimitive.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/forward_iprimitive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -28,26 +28,26 @@
 
     /// the type of the archive to which the loading of primitive types will be forwarded
     typedef ImplementationArchive implementation_archive_type;
-
- /// the constructor takes a reference to the implementation archive used for loading primitve types
+
+ /// the constructor takes a reference to the implementation archive used for loading primitve types
     forward_iprimitive(implementation_archive_type& ar)
- : implementation_archive(ar)
+ : implementation_archive(ar)
     {}
 
- /// binary loading is forwarded to the implementation archive
+ /// binary loading is forwarded to the implementation archive
     void load_binary(void * address, std::size_t count )
- {
- implementation_archive.load_binary(address,count);
- }
-
- /// loading of arrays is forwarded to the implementation archive
+ {
+ implementation_archive.load_binary(address,count);
+ }
+
+ /// loading of arrays is forwarded to the implementation archive
     template<class T>
     void load_array(serialization::array<T> & x, unsigned int file_version )
     {
- implementation_archive.load_array(x,file_version);
+ implementation_archive.load_array(x,file_version);
     }
 
- typedef typename ImplementationArchive::use_array_optimization use_array_optimization;
+ typedef typename ImplementationArchive::use_array_optimization use_array_optimization;
 
 #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
     friend class archive::load_access;
@@ -60,9 +60,9 @@
     template<class T>
     void load(T & t)
     {
- implementation_archive >> t;
+ implementation_archive >> t;
     }
-
+
 private:
     implementation_archive_type& implementation_archive;
 };

Modified: branches/proto/v4/boost/mpi/detail/forward_oprimitive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/forward_oprimitive.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/forward_oprimitive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -29,26 +29,26 @@
 
     /// the type of the archive to which the saving of primitive types will be forwarded
     typedef ImplementationArchive implementation_archive_type;
-
- /// the constructor takes a reference to the implementation archive used for saving primitve types
+
+ /// the constructor takes a reference to the implementation archive used for saving primitve types
     forward_oprimitive(implementation_archive_type& ar)
- : implementation_archive(ar)
+ : implementation_archive(ar)
     {}
 
- /// binary saving is forwarded to the implementation archive
+ /// binary saving is forwarded to the implementation archive
     void save_binary(const void * address, std::size_t count)
- {
- implementation_archive.save_binary(address,count);
- }
-
- /// saving of arrays is forwarded to the implementation archive
+ {
+ implementation_archive.save_binary(address,count);
+ }
+
+ /// saving of arrays is forwarded to the implementation archive
     template<class T>
     void save_array(serialization::array<T> const& x, unsigned int file_version )
     {
- implementation_archive.save_array(x,file_version);
+ implementation_archive.save_array(x,file_version);
     }
 
- typedef typename ImplementationArchive::use_array_optimization use_array_optimization;
+ typedef typename ImplementationArchive::use_array_optimization use_array_optimization;
 
 #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
     friend class archive::save_access;
@@ -61,9 +61,9 @@
     template<class T>
     void save(const T & t)
     {
- implementation_archive << t;
+ implementation_archive << t;
     }
-
+
 private:
     implementation_archive_type& implementation_archive;
 };

Modified: branches/proto/v4/boost/mpi/detail/forward_skeleton_iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/forward_skeleton_iarchive.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/forward_skeleton_iarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,26 +14,25 @@
 #include <boost/archive/detail/auto_link_archive.hpp>
 #include <boost/archive/detail/iserializer.hpp>
 #include <boost/archive/detail/interface_iarchive.hpp>
-#include <boost/archive/array/iarchive.hpp>
+#include <boost/archive/detail/common_iarchive.hpp>
 #include <boost/serialization/collection_size_type.hpp>
-#include <boost/archive/array/iarchive.hpp>
 
 namespace boost { namespace mpi { namespace detail {
 
 template<class Archive, class ImplementationArchive>
 class forward_skeleton_iarchive
- : public archive::array::iarchive<Archive>
+ : public archive::detail::common_iarchive<Archive>
 {
 public:
 
     typedef ImplementationArchive implementation_archive_type;
-
+
     forward_skeleton_iarchive(implementation_archive_type& ar)
- : archive::array::iarchive<Archive>(archive::no_header),
- implementation_archive(ar)
- {
- }
-
+ : archive::detail::common_iarchive<Archive>(archive::no_header),
+ implementation_archive(ar)
+ {
+ }
+
 #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 public:
 #else
@@ -50,12 +49,12 @@
     {
         archive::load(* this->This(), t);
     }
-
+
 #define BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(T) \
     void load_override(T & t , int) \
- { \
- implementation_archive >> t; \
- }
+ { \
+ implementation_archive >> t; \
+ }
 
 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::class_id_optional_type)
 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::version_type)

Modified: branches/proto/v4/boost/mpi/detail/forward_skeleton_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/forward_skeleton_oarchive.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/forward_skeleton_oarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,26 +14,25 @@
 #include <boost/archive/detail/auto_link_archive.hpp>
 #include <boost/archive/detail/oserializer.hpp>
 #include <boost/archive/detail/interface_oarchive.hpp>
-#include <boost/archive/array/oarchive.hpp>
+#include <boost/archive/detail/common_oarchive.hpp>
 #include <boost/serialization/collection_size_type.hpp>
-#include <boost/archive/array/oarchive.hpp>
 
 namespace boost { namespace mpi { namespace detail {
 
 template<class Archive, class ImplementationArchive>
 class forward_skeleton_oarchive
- : public archive::array::oarchive<Archive>
+ : public archive::detail::common_oarchive<Archive>
 {
 public:
 
     typedef ImplementationArchive implementation_archive_type;
-
+
     forward_skeleton_oarchive(implementation_archive_type& ar)
- : archive::array::oarchive<Archive>(archive::no_header),
- implementation_archive(ar)
- {
- }
-
+ : archive::detail::common_oarchive<Archive>(archive::no_header),
+ implementation_archive(ar)
+ {
+ }
+
 #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 public:
 #else
@@ -50,12 +49,12 @@
     {
         archive::save(* this->This(), t);
     }
-
+
 #define BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(T) \
     void save_override(T const & t , int) \
- { \
- implementation_archive << t; \
- }
+ { \
+ implementation_archive << t; \
+ }
 
 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::class_id_optional_type)
 BOOST_ARCHIVE_FORWARD_IMPLEMENTATION(archive::version_type)

Modified: branches/proto/v4/boost/mpi/detail/ignore_skeleton_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/ignore_skeleton_oarchive.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/ignore_skeleton_oarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,7 +12,7 @@
 #include <boost/pfto.hpp>
 
 #include <boost/archive/detail/auto_link_archive.hpp>
-#include <boost/archive/array/oarchive.hpp>
+#include <boost/archive/detail/common_oarchive.hpp>
 #include <boost/archive/basic_archive.hpp>
 #include <boost/archive/detail/oserializer.hpp>
 #include <boost/serialization/collection_size_type.hpp>
@@ -21,15 +21,14 @@
 
 template<class Archive>
 class ignore_skeleton_oarchive
- : public archive::array::oarchive<Archive>
+ : public archive::detail::common_oarchive<Archive>
 {
 public:
-
     ignore_skeleton_oarchive()
- : archive::array::oarchive<Archive>(archive::no_header)
- {
- }
-
+ : archive::detail::common_oarchive<Archive>(archive::no_header)
+ {
+ }
+
 #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 public:
 #else
@@ -46,10 +45,10 @@
     {
         archive::save(* this->This(), t);
     }
-
+
 #define BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(T) \
     void save_override(T const & , int) \
- {}
+ {}
 
 BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::class_id_optional_type)
 BOOST_ARCHIVE_IGNORE_IMPLEMENTATION(archive::version_type)

Modified: branches/proto/v4/boost/mpi/detail/mpi_datatype_cache.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/mpi_datatype_cache.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/mpi_datatype_cache.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -69,12 +69,12 @@
 
     // check whether the type already exists
     std::type_info const* t = &typeid(T);
- MPI_Datatype datatype = get(t);
- if (datatype == MPI_DATATYPE_NULL) {
+ MPI_Datatype datatype = get(t);
+ if (datatype == MPI_DATATYPE_NULL) {
       // need to create a type
       mpi_datatype_oarchive ar(x);
- datatype = ar.get_mpi_datatype();
- set(t, datatype);
+ datatype = ar.get_mpi_datatype();
+ set(t, datatype);
     }
 
     return datatype;

Modified: branches/proto/v4/boost/mpi/detail/mpi_datatype_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/mpi_datatype_oarchive.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/mpi_datatype_oarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -43,5 +43,6 @@
 // required by export
 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::detail::mpi_datatype_oarchive)
 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::detail::ignore_skeleton_oarchive<boost::mpi::detail::mpi_datatype_oarchive>)
+BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(boost::mpi::detail::mpi_datatype_oarchive)
 
 #endif // BOOST_MPI_DETAIL_MPI_DATATYPE_OARCHIVE_HPP

Modified: branches/proto/v4/boost/mpi/detail/text_skeleton_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/detail/text_skeleton_oarchive.hpp (original)
+++ branches/proto/v4/boost/mpi/detail/text_skeleton_oarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,6 @@
 #include <boost/archive/text_oarchive.hpp>
 #include <boost/mpi/detail/forward_skeleton_oarchive.hpp>
 #include <boost/mpi/detail/ignore_oprimitive.hpp>
-#include <boost/archive/array/oarchive.hpp>
 
 namespace boost { namespace mpi {
 
@@ -25,9 +24,9 @@
 {
 public:
     text_skeleton_oarchive(std::ostream & s, unsigned int flags = 0)
- : detail::forward_skeleton_oarchive<text_skeleton_oarchive,boost::archive::text_oarchive>(skeleton_archive_)
+ : detail::forward_skeleton_oarchive<text_skeleton_oarchive,boost::archive::text_oarchive>(skeleton_archive_)
      , skeleton_archive_(s,flags)
- {}
+ {}
 
 private:
     boost::archive::text_oarchive skeleton_archive_;

Modified: branches/proto/v4/boost/mpi/packed_iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/packed_iarchive.hpp (original)
+++ branches/proto/v4/boost/mpi/packed_iarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -125,5 +125,6 @@
 
 BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(boost::mpi::packed_iarchive)
 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::packed_iarchive)
+BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(boost::mpi::packed_iarchive)
 
 #endif // BOOST_MPI_PACKED_IARCHIVE_HPP

Modified: branches/proto/v4/boost/mpi/packed_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/packed_oarchive.hpp (original)
+++ branches/proto/v4/boost/mpi/packed_oarchive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -113,6 +113,7 @@
 
 // required by export
 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::packed_oarchive)
+BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(boost::mpi::packed_oarchive)
 
 
 

Modified: branches/proto/v4/boost/mpi/skeleton_and_content.hpp
==============================================================================
--- branches/proto/v4/boost/mpi/skeleton_and_content.hpp (original)
+++ branches/proto/v4/boost/mpi/skeleton_and_content.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -385,4 +385,7 @@
 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::detail::type1)
 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::mpi::detail::type2)
 
+BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(boost::mpi::packed_skeleton_oarchive)
+BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(boost::mpi::packed_skeleton_iarchive)
+
 #endif // BOOST_MPI_SKELETON_AND_CONTENT_HPP

Modified: branches/proto/v4/boost/mpl/aux_/begin_end_impl.hpp
==============================================================================
--- branches/proto/v4/boost/mpl/aux_/begin_end_impl.hpp (original)
+++ branches/proto/v4/boost/mpl/aux_/begin_end_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -93,8 +93,8 @@
 # undef AUX778076_IMPL_SPEC
 
 
-BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1,begin_impl)
-BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1,end_impl)
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,begin_impl)
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,end_impl)
 
 }}
 

Modified: branches/proto/v4/boost/mpl/aux_/push_back_impl.hpp
==============================================================================
--- branches/proto/v4/boost/mpl/aux_/push_back_impl.hpp (original)
+++ branches/proto/v4/boost/mpl/aux_/push_back_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 #ifndef BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
 #define BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
 
-// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Aleksey Gurtovoy 2000-2008
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -15,19 +15,35 @@
 // $Revision$
 
 #include <boost/mpl/push_back_fwd.hpp>
+#include <boost/mpl/assert.hpp>
 #include <boost/mpl/aux_/has_type.hpp>
 #include <boost/mpl/aux_/traits_lambda_spec.hpp>
 #include <boost/mpl/aux_/config/forwarding.hpp>
 #include <boost/mpl/aux_/config/static_constant.hpp>
 
+#include <boost/type_traits/is_same.hpp>
+
 namespace boost { namespace mpl {
 
+template< typename Tag >
+struct has_push_back_impl;
+
 // agurt 05/feb/04: no default implementation; the stub definition is needed
 // to enable the default 'has_push_back' implementation below
 template< typename Tag >
 struct push_back_impl
 {
- template< typename Sequence, typename T > struct apply {};
+ template< typename Sequence, typename T > struct apply
+ {
+ // should be instantiated only in the context of 'has_push_back_impl';
+ // if you've got an assert here, you are requesting a 'push_back'
+ // specialization that doesn't exist.
+ BOOST_MPL_ASSERT_MSG(
+ ( boost::is_same< T, has_push_back_impl<T> >::value )
+ , REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST
+ , ( Sequence )
+ );
+ };
 };
 
 template< typename Tag >
@@ -35,13 +51,13 @@
 {
     template< typename Seq > struct apply
 #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
- : aux::has_type< push_back<Seq,int> >
+ : aux::has_type< push_back< Seq, has_push_back_impl<Tag> > >
     {
 #else
     {
- typedef aux::has_type< push_back<Seq,int> > type;
+ typedef aux::has_type< push_back< Seq, has_push_back_impl<Tag> > > type;
         BOOST_STATIC_CONSTANT(bool, value =
- (aux::has_type< push_back<Seq,int> >::value)
+ (aux::has_type< push_back< Seq, has_push_back_impl<Tag> > >::value)
             );
 #endif
     };

Modified: branches/proto/v4/boost/mpl/aux_/push_front_impl.hpp
==============================================================================
--- branches/proto/v4/boost/mpl/aux_/push_front_impl.hpp (original)
+++ branches/proto/v4/boost/mpl/aux_/push_front_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 #ifndef BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
 #define BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
 
-// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Aleksey Gurtovoy 2000-2008
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -15,20 +15,36 @@
 // $Revision$
 
 #include <boost/mpl/push_front_fwd.hpp>
+#include <boost/mpl/assert.hpp>
 #include <boost/mpl/aux_/has_type.hpp>
 #include <boost/mpl/aux_/traits_lambda_spec.hpp>
 #include <boost/mpl/aux_/config/forwarding.hpp>
 #include <boost/mpl/aux_/config/static_constant.hpp>
 
+#include <boost/type_traits/is_same.hpp>
+
 namespace boost { namespace mpl {
 
+template< typename Tag >
+struct has_push_front_impl;
+
 // agurt 05/feb/04: no default implementation; the stub definition is needed
 // to enable the default 'has_push_front' implementation below
 
 template< typename Tag >
 struct push_front_impl
 {
- template< typename Sequence, typename T > struct apply {};
+ template< typename Sequence, typename T > struct apply
+ {
+ // should be instantiated only in the context of 'has_push_front_impl';
+ // if you've got an assert here, you are requesting a 'push_front'
+ // specialization that doesn't exist.
+ BOOST_MPL_ASSERT_MSG(
+ ( boost::is_same< T, has_push_front_impl<T> >::value )
+ , REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST
+ , ( Sequence )
+ );
+ };
 };
 
 template< typename Tag >
@@ -36,13 +52,13 @@
 {
     template< typename Seq > struct apply
 #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
- : aux::has_type< push_front<Seq,int> >
+ : aux::has_type< push_front< Seq, has_push_front_impl<Tag> > >
     {
 #else
     {
- typedef aux::has_type< push_front<Seq,int> > type;
+ typedef aux::has_type< push_front< Seq, has_push_front_impl<Tag> > > type;
         BOOST_STATIC_CONSTANT(bool, value =
- (aux::has_type< push_front<Seq,int> >::value)
+ (aux::has_type< push_front< Seq, has_push_front_impl<Tag> > >::value)
             );
 #endif
     };

Modified: branches/proto/v4/boost/mpl/aux_/traits_lambda_spec.hpp
==============================================================================
--- branches/proto/v4/boost/mpl/aux_/traits_lambda_spec.hpp (original)
+++ branches/proto/v4/boost/mpl/aux_/traits_lambda_spec.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 #ifndef BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
 #define BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
 
-// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Aleksey Gurtovoy 2000-2008
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -14,17 +14,18 @@
 // $Date$
 // $Revision$
 
+#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(i, trait) /**/
+# 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(i, trait) \
+# define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
 template<> struct trait<void_> \
 { \
     template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
@@ -35,7 +36,7 @@
 
 #else
 
-# define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(i, trait) \
+# define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
 template<> struct trait<void_> \
 { \
     template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
@@ -53,4 +54,10 @@
 
 #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

Modified: branches/proto/v4/boost/mpl/for_each.hpp
==============================================================================
--- branches/proto/v4/boost/mpl/for_each.hpp (original)
+++ branches/proto/v4/boost/mpl/for_each.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 #ifndef BOOST_MPL_FOR_EACH_HPP_INCLUDED
 #define BOOST_MPL_FOR_EACH_HPP_INCLUDED
 
-// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Aleksey Gurtovoy 2000-2008
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -14,12 +14,14 @@
 // $Date$
 // $Revision$
 
+#include <boost/mpl/is_sequence.hpp>
 #include <boost/mpl/begin_end.hpp>
 #include <boost/mpl/apply.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/next_prior.hpp>
 #include <boost/mpl/deref.hpp>
 #include <boost/mpl/identity.hpp>
+#include <boost/mpl/assert.hpp>
 #include <boost/mpl/aux_/unwrap.hpp>
 
 #include <boost/type_traits/is_same.hpp>
@@ -90,6 +92,8 @@
 inline
 void for_each(F f, Sequence* = 0, TransformOp* = 0)
 {
+ BOOST_MPL_ASSERT(( is_sequence<Sequence> ));
+
     typedef typename begin<Sequence>::type first;
     typedef typename end<Sequence>::type last;
 

Modified: branches/proto/v4/boost/mpl/min_max.hpp
==============================================================================
--- branches/proto/v4/boost/mpl/min_max.hpp (original)
+++ branches/proto/v4/boost/mpl/min_max.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,8 @@
 
-#ifndef BOOST_MPL_MAX_HPP_INCLUDED
-#define BOOST_MPL_MAX_HPP_INCLUDED
+#ifndef BOOST_MPL_MIN_MAX_HPP_INCLUDED
+#define BOOST_MPL_MIN_MAX_HPP_INCLUDED
 
-// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Aleksey Gurtovoy 2000-2008
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -43,4 +43,4 @@
 
 }}
 
-#endif // BOOST_MPL_MAX_HPP_INCLUDED
+#endif // BOOST_MPL_MIN_MAX_HPP_INCLUDED

Modified: branches/proto/v4/boost/mpl/vector/aux_/front.hpp
==============================================================================
--- branches/proto/v4/boost/mpl/vector/aux_/front.hpp (original)
+++ branches/proto/v4/boost/mpl/vector/aux_/front.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,8 @@
 
-#ifndef BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
+#ifndef BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
 
-// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Aleksey Gurtovoy 2000-2008
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -53,4 +53,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
+#endif // BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED

Modified: branches/proto/v4/boost/mpl/zip_view.hpp
==============================================================================
--- branches/proto/v4/boost/mpl/zip_view.hpp (original)
+++ branches/proto/v4/boost/mpl/zip_view.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -37,7 +37,7 @@
     typedef zip_iterator<
           typename transform1<
                 IteratorSeq
- , next<_1>
+ , mpl::next<_1>
>::type
> next;
 };
@@ -48,8 +48,8 @@
 struct zip_view
 {
  private:
- typedef typename transform1< Sequences, begin<_1> >::type first_ones_;
- typedef typename transform1< Sequences, end<_1> >::type last_ones_;
+ typedef typename transform1< Sequences, mpl::begin<_1> >::type first_ones_;
+ typedef typename transform1< Sequences, mpl::end<_1> >::type last_ones_;
     
  public:
     typedef nested_begin_end_tag tag;

Modified: branches/proto/v4/boost/multi_index/composite_key.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/composite_key.hpp (original)
+++ branches/proto/v4/boost/multi_index/composite_key.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/access_specifier.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/access_specifier.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/access_specifier.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2006 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/adl_swap.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/adl_swap.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/adl_swap.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/archive_constructed.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/archive_constructed.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/archive_constructed.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/auto_space.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/auto_space.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/auto_space.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/base_type.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/base_type.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/base_type.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/bidir_node_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/bidir_node_iterator.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/bidir_node_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -31,10 +31,10 @@
  * iterators (ordered and sequenced indices.)
  */
 
-template<typename Node,typename Derived=mpl::na>
+template<typename Node>
 class bidir_node_iterator:
   public bidirectional_iterator_helper<
- bidir_node_iterator<Node,Derived>,
+ bidir_node_iterator<Node>,
     typename Node::value_type,
     std::ptrdiff_t,
     const typename Node::value_type*,
@@ -96,10 +96,10 @@
   Node* node;
 };
 
-template<typename Node,typename Derived>
+template<typename Node>
 bool operator==(
- const bidir_node_iterator<Node,Derived>& x,
- const bidir_node_iterator<Node,Derived>& y)
+ const bidir_node_iterator<Node>& x,
+ const bidir_node_iterator<Node>& y)
 {
   return x.get_node()==y.get_node();
 }

Modified: branches/proto/v4/boost/multi_index/detail/bucket_array.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/bucket_array.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/bucket_array.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -90,7 +90,7 @@
     hashed_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         Allocator,
- void
+ char
>::type
>
>::type node_impl_type;

Modified: branches/proto/v4/boost/multi_index/detail/converter.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/converter.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/converter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/copy_map.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/copy_map.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/copy_map.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/duplicates_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/duplicates_iterator.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/duplicates_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2006 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/has_tag.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/has_tag.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/has_tag.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/hash_index_args.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/hash_index_args.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/hash_index_args.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/hash_index_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/hash_index_iterator.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/hash_index_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -30,10 +30,10 @@
 /* Iterator class for hashed indices.
  */
 
-template<typename Node,typename BucketArray,typename Derived=mpl::na>
+template<typename Node,typename BucketArray>
 class hashed_index_iterator:
   public forward_iterator_helper<
- hashed_index_iterator<Node,BucketArray,Derived>,
+ hashed_index_iterator<Node,BucketArray>,
     typename Node::value_type,
     std::ptrdiff_t,
     const typename Node::value_type*,
@@ -94,10 +94,10 @@
   BucketArray* buckets;
 };
 
-template<typename Node,typename BucketArray,typename Derived>
+template<typename Node,typename BucketArray>
 bool operator==(
- const hashed_index_iterator<Node,BucketArray,Derived>& x,
- const hashed_index_iterator<Node,BucketArray,Derived>& y)
+ const hashed_index_iterator<Node,BucketArray>& x,
+ const hashed_index_iterator<Node,BucketArray>& y)
 {
   return x.get_node()==y.get_node();
 }

Modified: branches/proto/v4/boost/multi_index/detail/hash_index_node.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/hash_index_node.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/hash_index_node.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -47,12 +47,12 @@
 
   /* algorithmic stuff */
 
- static void increment(pointer& x,pointer bbegin,pointer bbend)
+ static void increment(pointer& x,pointer bbegin,pointer bend)
   {
     std::less_equal<pointer> leq;
 
     x=x->next();
- if(leq(bbegin,x)&&leq(x,bbend)){ /* bucket node */
+ if(leq(bbegin,x)&&leq(x,bend)){ /* bucket node */
       do{
         ++x;
       }while(x->next()==x);
@@ -96,7 +96,7 @@
     hashed_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         typename Super::allocator_type,
- void
+ char
>::type
>
>::type
@@ -106,7 +106,7 @@
     hashed_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         typename Super::allocator_type,
- void
+ char
>::type
>
>::type impl_type;

Modified: branches/proto/v4/boost/multi_index/detail/header_holder.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/header_holder.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/header_holder.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/index_base.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/index_base.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/index_base.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/index_loader.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/index_loader.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/index_loader.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/index_matcher.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/index_matcher.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/index_matcher.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/index_node_base.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/index_node_base.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/index_node_base.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/index_saver.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/index_saver.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/index_saver.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/invariant_assert.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/invariant_assert.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/invariant_assert.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/is_index_list.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/is_index_list.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/is_index_list.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/iter_adaptor.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/iter_adaptor.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/iter_adaptor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/modify_key_adaptor.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/modify_key_adaptor.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/modify_key_adaptor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/msvc_index_specifier.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/msvc_index_specifier.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/msvc_index_specifier.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/no_duplicate_tags.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/no_duplicate_tags.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/no_duplicate_tags.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/node_type.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/node_type.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/node_type.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/ord_index_args.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/ord_index_args.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/ord_index_args.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/ord_index_node.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/ord_index_node.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/ord_index_node.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -562,7 +562,7 @@
     ordered_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         typename Super::allocator_type,
- void
+ char
>::type
>
>::type
@@ -572,7 +572,7 @@
     ordered_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         typename Super::allocator_type,
- void
+ char
>::type
>
>::type impl_type;

Modified: branches/proto/v4/boost/multi_index/detail/ord_index_ops.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/ord_index_ops.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/ord_index_ops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/prevent_eti.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/prevent_eti.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/prevent_eti.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/rnd_index_loader.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/rnd_index_loader.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/rnd_index_loader.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -50,7 +50,7 @@
     random_access_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         Allocator,
- void
+ char
>::type
>
>::type node_impl_type;

Modified: branches/proto/v4/boost/multi_index/detail/rnd_index_node.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/rnd_index_node.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/rnd_index_node.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -186,7 +186,7 @@
     random_access_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         typename Super::allocator_type,
- void
+ char
>::type
>
>::type
@@ -196,7 +196,7 @@
     random_access_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         typename Super::allocator_type,
- void
+ char
>::type
>
>::type impl_type;

Modified: branches/proto/v4/boost/multi_index/detail/rnd_index_ops.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/rnd_index_ops.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/rnd_index_ops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/rnd_index_ptr_array.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/rnd_index_ptr_array.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/rnd_index_ptr_array.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -38,7 +38,7 @@
     random_access_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         Allocator,
- void
+ char
>::type
>
>::type node_impl_type;

Modified: branches/proto/v4/boost/multi_index/detail/rnd_node_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/rnd_node_iterator.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/rnd_node_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -29,10 +29,10 @@
 
 /* Iterator class for node-based indices with random access iterators. */
 
-template<typename Node,typename Derived=mpl::na>
+template<typename Node>
 class rnd_node_iterator:
   public random_access_iterator_helper<
- rnd_node_iterator<Node,Derived>,
+ rnd_node_iterator<Node>,
     typename Node::value_type,
     std::ptrdiff_t,
     const typename Node::value_type*,
@@ -106,26 +106,26 @@
   Node* node;
 };
 
-template<typename Node,typename Derived>
+template<typename Node>
 bool operator==(
- const rnd_node_iterator<Node,Derived>& x,
- const rnd_node_iterator<Node,Derived>& y)
+ const rnd_node_iterator<Node>& x,
+ const rnd_node_iterator<Node>& y)
 {
   return x.get_node()==y.get_node();
 }
 
-template<typename Node,typename Derived>
+template<typename Node>
 bool operator<(
- const rnd_node_iterator<Node,Derived>& x,
- const rnd_node_iterator<Node,Derived>& y)
+ const rnd_node_iterator<Node>& x,
+ const rnd_node_iterator<Node>& y)
 {
   return Node::distance(x.get_node(),y.get_node())>0;
 }
 
-template<typename Node,typename Derived>
+template<typename Node>
 std::ptrdiff_t operator-(
- const rnd_node_iterator<Node,Derived>& x,
- const rnd_node_iterator<Node,Derived>& y)
+ const rnd_node_iterator<Node>& x,
+ const rnd_node_iterator<Node>& y)
 {
   return Node::distance(y.get_node(),x.get_node());
 }

Modified: branches/proto/v4/boost/multi_index/detail/safe_ctr_proxy.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/safe_ctr_proxy.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/safe_ctr_proxy.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2006 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/safe_mode.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/safe_mode.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/safe_mode.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2006 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/scope_guard.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/scope_guard.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/scope_guard.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/seq_index_node.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/seq_index_node.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/seq_index_node.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -141,7 +141,7 @@
     sequenced_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         typename Super::allocator_type,
- void
+ char
>::type
>
>::type
@@ -151,7 +151,7 @@
     sequenced_index_node_impl<
       typename boost::detail::allocator::rebind_to<
         typename Super::allocator_type,
- void
+ char
>::type
>
>::type impl_type;

Modified: branches/proto/v4/boost/multi_index/detail/seq_index_ops.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/seq_index_ops.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/seq_index_ops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/uintptr_type.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/uintptr_type.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/uintptr_type.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/unbounded.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/unbounded.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/unbounded.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/detail/value_compare.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/detail/value_compare.hpp (original)
+++ branches/proto/v4/boost/multi_index/detail/value_compare.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/global_fun.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/global_fun.hpp (original)
+++ branches/proto/v4/boost/multi_index/global_fun.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/hashed_index.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/hashed_index.hpp (original)
+++ branches/proto/v4/boost/multi_index/hashed_index.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -808,39 +808,30 @@
 
   bool modify_(node_type* x)
   {
- unlink(x);
-
- std::size_t buc;
- node_impl_pointer pos;
- BOOST_TRY
- {
+ std::size_t buc;
+ bool b;
+ BOOST_TRY{
       buc=find_bucket(x->value());
- pos=buckets.at(buc);
- if(!link_point(x->value(),pos,Category())){
- first_bucket=buckets.first_nonempty(first_bucket);
- super::erase_(x);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- detach_iterators(x);
-#endif
- return false;
- }
-
+ b=in_place(x->impl(),key(x->value()),buc,Category());
     }
     BOOST_CATCH(...){
- first_bucket=buckets.first_nonempty(first_bucket);
- super::erase_(x);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- detach_iterators(x);
-#endif
-
+ erase_(x);
       BOOST_RETHROW;
     }
     BOOST_CATCH_END
+ if(!b){
+ unlink(x);
+ BOOST_TRY{
+ node_impl_pointer pos=buckets.at(buc);
+ if(!link_point(x->value(),pos,Category())){
+ first_bucket=buckets.first_nonempty(first_bucket);
+ super::erase_(x);
 
- BOOST_TRY{
- if(super::modify_(x)){
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+ detach_iterators(x);
+#endif
+ return false;
+ }
         link(x,pos);
         if(first_bucket>buc){
           first_bucket=buc;
@@ -848,17 +839,33 @@
         else if(first_bucket<buc){
           first_bucket=buckets.first_nonempty(first_bucket);
         }
- return true;
       }
-
- first_bucket=buckets.first_nonempty(first_bucket);
+ BOOST_CATCH(...){
+ first_bucket=buckets.first_nonempty(first_bucket);
+ super::erase_(x);
 
 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
       detach_iterators(x);
 #endif
- return false;
+
+ BOOST_RETHROW;
+ }
+ BOOST_CATCH_END
+ }
+
+ BOOST_TRY{
+ if(!super::modify_(x)){
+ unlink(x);
+ first_bucket=buckets.first_nonempty(first_bucket);
+#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
+ detach_iterators(x);
+#endif
+ return false;
+ }
+ else return true;
     }
     BOOST_CATCH(...){
+ unlink(x);
       first_bucket=buckets.first_nonempty(first_bucket);
 
 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
@@ -872,11 +879,15 @@
 
   bool modify_rollback_(node_type* x)
   {
+ std::size_t buc=find_bucket(x->value());
+ if(in_place(x->impl(),key(x->value()),buc,Category())){
+ return super::modify_rollback_(x);
+ }
+
     node_impl_pointer y=prev(x);
     unlink_next(y);
 
     BOOST_TRY{
- std::size_t buc=find_bucket(x->value());
       node_impl_pointer pos=buckets.at(buc);
       if(link_point(x->value(),pos,Category())&&super::modify_rollback_(x)){
         link(x,pos);
@@ -993,17 +1004,17 @@
     return true;
   }
   
- void link(node_type* x,node_impl_pointer pos)
+ static void link(node_type* x,node_impl_pointer pos)
   {
     node_impl_type::link(x->impl(),pos);
   };
 
- void link(node_impl_pointer x,node_impl_pointer pos)
+ static void link(node_impl_pointer x,node_impl_pointer pos)
   {
     node_impl_type::link(x,pos);
   };
 
- void unlink(node_type* x)
+ static void unlink(node_type* x)
   {
     node_impl_type::unlink(x->impl());
   };
@@ -1013,6 +1024,11 @@
     return node_impl_type::prev(x->impl());
   }
 
+ static node_impl_pointer prev_from(node_type* x,node_impl_pointer y)
+ {
+ return node_impl_type::prev_from(x->impl(),y);
+ }
+
   static void unlink_next(node_impl_pointer x)
   {
     node_impl_type::unlink_next(x);
@@ -1069,6 +1085,68 @@
     first_bucket=buckets.first_nonempty(0);
   }
 
+ bool in_place(
+ node_impl_pointer x,key_param_type k,std::size_t buc,
+ hashed_unique_tag)const
+ {
+ std::less_equal<node_impl_pointer> leq;
+ node_impl_pointer bbegin=buckets.begin();
+ node_impl_pointer bend=buckets.end();
+ node_impl_pointer pbuc=x->next();
+
+ while(!leq(bbegin,pbuc)||!leq(pbuc,bend))pbuc=pbuc->next();
+ if(buc!=static_cast<std::size_t>(pbuc-bbegin))return false;
+
+ node_impl_pointer y=x;
+ while(y->next()!=x){
+ y=y->next();
+ if(y==pbuc)continue;
+ if(eq(k,key(node_type::from_impl(y)->value())))return false;
+ }
+ return true;
+ }
+
+ bool in_place(
+ node_impl_pointer x,key_param_type k,std::size_t buc,
+ hashed_non_unique_tag)const
+ {
+ std::less_equal<node_impl_pointer> leq;
+ node_impl_pointer bbegin=buckets.begin();
+ node_impl_pointer bend=buckets.end();
+ node_impl_pointer pbuc=x->next();
+
+ while(!leq(bbegin,pbuc)||!leq(pbuc,bend))pbuc=pbuc->next();
+ if(buc!=static_cast<std::size_t>(pbuc-bbegin))return false;
+
+ node_impl_pointer y=x->next();
+ if(y!=pbuc){
+ if(eq(k,key(node_type::from_impl(y)->value()))){
+ /* adjacent to equivalent element -> in place */
+ return true;
+ }
+ else{
+ y=y->next();
+ while(y!=pbuc){
+ if(eq(k,key(node_type::from_impl(y)->value())))return false;
+ y=y->next();
+ }
+ }
+ }
+ while(y->next()!=x){
+ y=y->next();
+ if(eq(k,key(node_type::from_impl(y)->value()))){
+ while(y->next()!=x){
+ y=y->next();
+ if(!eq(k,key(node_type::from_impl(y)->value())))return false;
+ }
+ /* after a group of equivalent elements --> in place */
+ return true;
+ }
+ }
+ return true;
+ }
+
+
 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
   void detach_iterators(node_type* x)
   {

Modified: branches/proto/v4/boost/multi_index/hashed_index_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/hashed_index_fwd.hpp (original)
+++ branches/proto/v4/boost/multi_index/hashed_index_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/identity.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/identity.hpp (original)
+++ branches/proto/v4/boost/multi_index/identity.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2006 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/identity_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/identity_fwd.hpp (original)
+++ branches/proto/v4/boost/multi_index/identity_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/indexed_by.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/indexed_by.hpp (original)
+++ branches/proto/v4/boost/multi_index/indexed_by.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/key_extractors.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/key_extractors.hpp (original)
+++ branches/proto/v4/boost/multi_index/key_extractors.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/mem_fun.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/mem_fun.hpp (original)
+++ branches/proto/v4/boost/multi_index/mem_fun.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/member.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/member.hpp (original)
+++ branches/proto/v4/boost/multi_index/member.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2006 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/ordered_index.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/ordered_index.hpp (original)
+++ branches/proto/v4/boost/multi_index/ordered_index.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/ordered_index_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/ordered_index_fwd.hpp (original)
+++ branches/proto/v4/boost/multi_index/ordered_index_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/random_access_index.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/random_access_index.hpp (original)
+++ branches/proto/v4/boost/multi_index/random_access_index.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/random_access_index_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/random_access_index_fwd.hpp (original)
+++ branches/proto/v4/boost/multi_index/random_access_index_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/safe_mode_errors.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/safe_mode_errors.hpp (original)
+++ branches/proto/v4/boost/multi_index/safe_mode_errors.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2006 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/sequenced_index.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/sequenced_index.hpp (original)
+++ branches/proto/v4/boost/multi_index/sequenced_index.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2007 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/sequenced_index_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/sequenced_index_fwd.hpp (original)
+++ branches/proto/v4/boost/multi_index/sequenced_index_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index/tag.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index/tag.hpp (original)
+++ branches/proto/v4/boost/multi_index/tag.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/multi_index_container.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index_container.hpp (original)
+++ branches/proto/v4/boost/multi_index_container.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Multiply indexed container.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -193,6 +193,14 @@
     BOOST_MULTI_INDEX_CHECK_INVARIANT;
   }
 
+ explicit multi_index_container(const allocator_type& al):
+ bfm_allocator(al),
+ super(ctor_args_list(),bfm_allocator::member),
+ node_count(0)
+ {
+ BOOST_MULTI_INDEX_CHECK_INVARIANT;
+ }
+
   template<typename InputIterator>
   multi_index_container(
     InputIterator first,InputIterator last,

Modified: branches/proto/v4/boost/multi_index_container_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/multi_index_container_fwd.hpp (original)
+++ branches/proto/v4/boost/multi_index_container_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-/* Copyright 2003-2005 Joaquín M López Muñoz.
+/* Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/boost/numeric/ublas/vector_expression.hpp
==============================================================================
--- branches/proto/v4/boost/numeric/ublas/vector_expression.hpp (original)
+++ branches/proto/v4/boost/numeric/ublas/vector_expression.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1424,6 +1424,7 @@
         typedef vector_scalar_unary<E, F> self_type;
     public:
         typedef typename F::result_type value_type;
+ typedef typename E::difference_type difference_type;
         typedef const self_type const_closure_type;
         typedef const_closure_type closure_type;
         typedef unknown_storage_tag storage_category;
@@ -1555,6 +1556,7 @@
     public:
         static const unsigned complexity = 1;
         typedef typename F::result_type value_type;
+ typedef typename E1::difference_type difference_type;
         typedef const self_type const_closure_type;
         typedef const_closure_type closure_type;
         typedef unknown_storage_tag storage_category;

Modified: branches/proto/v4/boost/progress.hpp
==============================================================================
--- branches/proto/v4/boost/progress.hpp (original)
+++ branches/proto/v4/boost/progress.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -51,7 +51,7 @@
       std::istream::fmtflags old_flags = m_os.setf( std::istream::fixed,
                                                    std::istream::floatfield );
       std::streamsize old_prec = m_os.precision( 2 );
- m_os << elapsed() << " s\n" // "s" is System International d'Unités std
+ m_os << elapsed() << " s\n" // "s" is System International d'Unites std
                         << std::endl;
       m_os.flags( old_flags );
       m_os.precision( old_prec );

Modified: branches/proto/v4/boost/ptr_container/clone_allocator.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/clone_allocator.hpp (original)
+++ branches/proto/v4/boost/ptr_container/clone_allocator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -74,7 +74,7 @@
         }
 
         template< class U >
- static void deallocate_clone( const U* r )
+ static void deallocate_clone( const U* /*r*/ )
         {
             // do nothing
         }

Modified: branches/proto/v4/boost/ptr_container/detail/associative_ptr_container.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/detail/associative_ptr_container.hpp (original)
+++ branches/proto/v4/boost/ptr_container/detail/associative_ptr_container.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -78,7 +78,7 @@
         template< class Compare, class Allocator >
         associative_ptr_container( const Compare& comp,
                                    const Allocator& a )
- : base_type( comp, a )
+ : base_type( comp, a, container_type() )
         { }
         
         template< class Hash, class Pred, class Allocator >
@@ -88,11 +88,6 @@
          : base_type( hash, pred, a )
         { }
 
- template< class InputIterator >
- associative_ptr_container( InputIterator first, InputIterator last )
- : base_type( first, last, container_type() )
- { }
-
         template< class InputIterator, class Compare, class Allocator >
         associative_ptr_container( InputIterator first, InputIterator last,
                                    const Compare& comp,
@@ -113,12 +108,12 @@
          : base_type( r )
         { }
 
- explicit associative_ptr_container( const associative_ptr_container& r )
+ associative_ptr_container( const associative_ptr_container& r )
          : base_type( r.begin(), r.end(), container_type() )
         { }
         
         template< class C, class V >
- explicit associative_ptr_container( const associative_ptr_container<C,V>& r )
+ associative_ptr_container( const associative_ptr_container<C,V>& r )
          : base_type( r.begin(), r.end(), container_type() )
         { }
         
@@ -129,18 +124,9 @@
            return *this;
         }
         
- template< class C, class V >
- associative_ptr_container& operator=( const associative_ptr_container<C,V>& r ) // strong
- {
- associative_ptr_container clone( r );
- this->swap( clone );
- return *this;
- }
-
- associative_ptr_container& operator=( const associative_ptr_container& r ) // strong
+ associative_ptr_container& operator=( associative_ptr_container r ) // strong
         {
- associative_ptr_container clone( r );
- this->swap( clone );
+ this->swap( r );
            return *this;
         }
 
@@ -347,10 +333,42 @@
         }
 
     public:
- using base_type::begin;
- using base_type::end;
- using base_type::cbegin;
- using base_type::cend;
+#if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(70190006))
+ iterator begin()
+ {
+ return base_type::begin();
+ }
+
+ const_iterator begin() const
+ {
+ return base_type::begin();
+ }
+
+ iterator end()
+ {
+ return base_type::end();
+ }
+
+ const_iterator end() const
+ {
+ return base_type::end();
+ }
+
+ const_iterator cbegin() const
+ {
+ return base_type::cbegin();
+ }
+
+ const_iterator cend() const
+ {
+ return base_type::cend();
+ }
+#else
+ using base_type::begin;
+ using base_type::end;
+ using base_type::cbegin;
+ using base_type::cend;
+#endif
 
     protected:
         local_iterator begin( size_type n )

Modified: branches/proto/v4/boost/ptr_container/detail/map_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/detail/map_iterator.hpp (original)
+++ branches/proto/v4/boost/ptr_container/detail/map_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,6 +21,11 @@
 #include <boost/utility/compare_pointees.hpp>
 #include <utility>
 
+#if defined(BOOST_MSVC)
+# pragma warning(push)
+# pragma warning(disable:4512) // Assignment operator could not be generated.
+#endif
+
 namespace boost
 {
     namespace ptr_container_detail
@@ -120,4 +125,8 @@
 
 }
 
+#if defined(BOOST_MSVC)
+# pragma warning(pop)
+#endif
+
 #endif

Modified: branches/proto/v4/boost/ptr_container/detail/reversible_ptr_container.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/detail/reversible_ptr_container.hpp (original)
+++ branches/proto/v4/boost/ptr_container/detail/reversible_ptr_container.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -67,6 +67,7 @@
     struct is_pointer_or_integral_tag {};
     struct is_range_tag {};
     struct sequence_tag {};
+ struct fixed_length_sequence_tag : sequence_tag {};
     struct associative_container_tag {};
     struct ordered_associative_container_tag : associative_container_tag {};
     struct unordered_associative_container_tag : associative_container_tag {};
@@ -139,6 +140,7 @@
 
     public:
         Cont& base() { return c_; }
+ protected: // having this public could break encapsulation
         const Cont& base() const { return c_; }
         
     public: // typedefs
@@ -313,10 +315,21 @@
         reversible_ptr_container( SizeType n, unordered_associative_container_tag )
           : c_( n )
         { }
+
+ template< class SizeType >
+ reversible_ptr_container( SizeType n, fixed_length_sequence_tag )
+ : c_( n )
+ { }
+
+ template< class SizeType >
+ reversible_ptr_container( SizeType n, const allocator_type& a,
+ fixed_length_sequence_tag )
+ : c_( n, a )
+ { }
         
         explicit reversible_ptr_container( const allocator_type& a )
          : c_( a )
- {}
+ { }
         
         template< class PtrContainer >
         explicit reversible_ptr_container( std::auto_ptr<PtrContainer> clone )
@@ -324,18 +337,17 @@
             swap( *clone );
         }
 
- explicit reversible_ptr_container( const reversible_ptr_container& r )
+ reversible_ptr_container( const reversible_ptr_container& r )
         {
             constructor_impl( r.begin(), r.end(), std::forward_iterator_tag() );
         }
 
         template< class C, class V >
- explicit reversible_ptr_container( const reversible_ptr_container<C,V>& r )
+ reversible_ptr_container( const reversible_ptr_container<C,V>& r )
         {
             constructor_impl( r.begin(), r.end(), std::forward_iterator_tag() );
         }
 
-
         template< class PtrContainer >
         reversible_ptr_container& operator=( std::auto_ptr<PtrContainer> clone ) // nothrow
         {
@@ -343,18 +355,9 @@
             return *this;
         }
 
- reversible_ptr_container& operator=( const reversible_ptr_container& r ) // strong
- {
- reversible_ptr_container clone( r );
- swap( clone );
- return *this;
- }
-
- template< class C, class V >
- reversible_ptr_container& operator=( const reversible_ptr_container<C,V>& r ) // strong
+ reversible_ptr_container& operator=( reversible_ptr_container r ) // strong
         {
- reversible_ptr_container clone( r );
- swap( clone );
+ swap( r );
             return *this;
         }
         
@@ -364,7 +367,7 @@
         reversible_ptr_container( InputIterator first,
                                   InputIterator last,
                                   const allocator_type& a = allocator_type() ) // basic, strong
- : c_( a )
+ : c_( a )
         {
             constructor_impl( first, last,
 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
@@ -377,8 +380,40 @@
         template< class Compare >
         reversible_ptr_container( const Compare& comp,
                                   const allocator_type& a )
- : c_( comp, a ) {}
+ : c_( comp, a ) {}
 
+ template< class ForwardIterator >
+ reversible_ptr_container( ForwardIterator first,
+ ForwardIterator last,
+ fixed_length_sequence_tag )
+ : c_( std::distance(first,last) )
+ {
+ constructor_impl( first, last,
+ std::forward_iterator_tag() );
+ }
+
+ template< class SizeType, class InputIterator >
+ reversible_ptr_container( SizeType n,
+ InputIterator first,
+ InputIterator last,
+ fixed_length_sequence_tag )
+ : c_( n )
+ {
+ constructor_impl( first, last,
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#else
+ BOOST_DEDUCED_TYPENAME
+#endif
+ iterator_category<InputIterator>::type() );
+ }
+
+ template< class Compare >
+ reversible_ptr_container( const Compare& comp,
+ const allocator_type& a,
+ associative_container_tag )
+ : c_( comp, a )
+ { }
+
         template< class InputIterator >
         reversible_ptr_container( InputIterator first,
                                   InputIterator last,
@@ -393,19 +428,19 @@
                                   const Compare& comp,
                                   const allocator_type& a,
                                   associative_container_tag )
- : c_( comp, a )
+ : c_( comp, a )
         {
             associative_constructor_impl( first, last );
         }
 
         explicit reversible_ptr_container( size_type n )
- : c_( n ) {}
+ : c_( n ) {}
 
         template< class Hash, class Pred >
         reversible_ptr_container( const Hash& hash,
                                   const Pred& pred,
                                   const allocator_type& a )
- : c_( hash, pred, a ) {}
+ : c_( hash, pred, a ) {}
 
         template< class InputIterator, class Hash, class Pred >
         reversible_ptr_container( InputIterator first,
@@ -413,7 +448,7 @@
                                   const Hash& hash,
                                   const Pred& pred,
                                   const allocator_type& a )
- : c_( hash, pred, a )
+ : c_( hash, pred, a )
         {
             associative_constructor_impl( first, last );
         }
@@ -662,24 +697,14 @@
 #define BOOST_PTR_CONTAINER_DEFINE_COPY_CONSTRUCTORS( PC, base_type ) \
                                                                       \
     template< class U > \
- explicit PC( const PC& r ) : base_type( r ) { } \
- \
- template< class U > \
- explicit PC( const PC<U>& r ) : base_type( r ) { } \
+ PC( const PC<U>& r ) : base_type( r ) { } \
                                                                       \
- PC& operator=( const PC& r ) \
+ PC& operator=( PC r ) \
     { \
- base_type::operator=( r ); \
+ this->swap( r ); \
         return *this; \
     } \
- \
- template< class U > \
- PC& operator=( const PC<U>& r ) \
- { \
- base_type::operator=( r ); \
- return *this; \
- }
-
+
 
 #define BOOST_PTR_CONTAINER_DEFINE_CONSTRUCTORS( PC, base_type ) \
     typedef BOOST_DEDUCED_TYPENAME base_type::iterator iterator; \

Modified: branches/proto/v4/boost/ptr_container/detail/serialize_ptr_map_adapter.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/detail/serialize_ptr_map_adapter.hpp (original)
+++ branches/proto/v4/boost/ptr_container/detail/serialize_ptr_map_adapter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,7 +17,7 @@
 {
 
 template<class Archive, class T, class VoidPtrMap, class CloneAllocator, bool Ordered>
-void save(Archive& ar, const ptr_container_detail::ptr_map_adapter_base<T, VoidPtrMap, CloneAllocator,Ordered>& c, unsigned int version)
+void save(Archive& ar, const ptr_container_detail::ptr_map_adapter_base<T, VoidPtrMap, CloneAllocator,Ordered>& c, unsigned int /*version*/)
 {
     typedef ptr_container_detail::ptr_map_adapter_base<T, VoidPtrMap, CloneAllocator,Ordered> container;
     typedef BOOST_DEDUCED_TYPENAME container::const_iterator const_iterator;
@@ -35,7 +35,7 @@
 }
 
 template<class Archive, class T, class VoidPtrMap, class CloneAllocator, bool Ordered>
-void load(Archive& ar, ptr_map_adapter<T, VoidPtrMap, CloneAllocator,Ordered>& c, unsigned int version)
+void load(Archive& ar, ptr_map_adapter<T, VoidPtrMap, CloneAllocator,Ordered>& c, unsigned int /*version*/)
 {
     typedef ptr_map_adapter<T, VoidPtrMap, CloneAllocator,Ordered> container;
     typedef BOOST_DEDUCED_TYPENAME container::key_type key_type;
@@ -58,7 +58,7 @@
 }
 
 template<class Archive, class T, class VoidPtrMap, class CloneAllocator, bool Ordered>
-void load(Archive& ar, ptr_multimap_adapter<T, VoidPtrMap, CloneAllocator,Ordered>& c, unsigned int version)
+void load(Archive& ar, ptr_multimap_adapter<T, VoidPtrMap, CloneAllocator,Ordered>& c, unsigned int /*version*/)
 {
     typedef ptr_multimap_adapter<T, VoidPtrMap, CloneAllocator,Ordered> container;
     typedef BOOST_DEDUCED_TYPENAME container::key_type key_type;

Modified: branches/proto/v4/boost/ptr_container/detail/serialize_reversible_cont.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/detail/serialize_reversible_cont.hpp (original)
+++ branches/proto/v4/boost/ptr_container/detail/serialize_reversible_cont.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,12 +16,6 @@
 namespace ptr_container_detail
 {
 
-template<class T>
-inline T const& serialize_as_const(T const& r)
-{
- return r;
-}
-
 template<class Archive, class Config, class CloneAllocator>
 void save_helper(Archive& ar, const ptr_container_detail::reversible_ptr_container<Config, CloneAllocator>& c)
 {
@@ -66,7 +60,7 @@
 {
 
 template<class Archive, class Config, class CloneAllocator>
-void save(Archive& ar, const ptr_container_detail::reversible_ptr_container<Config, CloneAllocator>& c, unsigned int version)
+void save(Archive& ar, const ptr_container_detail::reversible_ptr_container<Config, CloneAllocator>& c, unsigned int /*version*/)
 {
     ar << boost::serialization::make_nvp( ptr_container_detail::count(),
                                           ptr_container_detail::serialize_as_const(c.size()) );
@@ -74,7 +68,7 @@
 }
 
 template<class Archive, class Config, class CloneAllocator>
-void load(Archive& ar, ptr_container_detail::reversible_ptr_container<Config, CloneAllocator>& c, unsigned int version)
+void load(Archive& ar, ptr_container_detail::reversible_ptr_container<Config, CloneAllocator>& c, unsigned int /*version*/)
 {
     typedef ptr_container_detail::reversible_ptr_container<Config, CloneAllocator> container_type;
     typedef BOOST_DEDUCED_TYPENAME container_type::size_type size_type;

Modified: branches/proto/v4/boost/ptr_container/detail/serialize_xml_names.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/detail/serialize_xml_names.hpp (original)
+++ branches/proto/v4/boost/ptr_container/detail/serialize_xml_names.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,6 +20,12 @@
         inline const char* item() { return "item"; }
         inline const char* first() { return "first"; }
         inline const char* second() { return "second"; }
+
+ template<class T>
+ inline T const& serialize_as_const(T const& r)
+ {
+ return r;
+ }
     }
 }
 #endif

Modified: branches/proto/v4/boost/ptr_container/ptr_array.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_array.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_array.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -36,12 +36,12 @@
         public:
             typedef Allocator allocator_type;
 
- ptr_array_impl( Allocator a = Allocator() )
+ ptr_array_impl( Allocator /*a*/ = Allocator() )
             {
                 this->assign( 0 );
             }
 
- ptr_array_impl( size_t, T*, Allocator a = Allocator() )
+ ptr_array_impl( size_t, T*, Allocator /*a*/ = Allocator() )
             {
                 this->assign( 0 );
             }
@@ -83,41 +83,30 @@
         ptr_array() : base_class()
         { }
 
- explicit ptr_array( const ptr_array& r )
+ ptr_array( const ptr_array& r )
         {
             size_t i = 0;
             for( ; i != N; ++i )
                 this->base()[i] = this->null_policy_allocate_clone(
- static_cast<T*>( r.base()[i] ) );
+ static_cast<const T*>( &r[i] ) );
         }
 
         template< class U >
- explicit ptr_array( const ptr_array<U,N>& r )
+ ptr_array( const ptr_array<U,N>& r )
         {
             size_t i = 0;
             for( ; i != N; ++i )
                 this->base()[i] = this->null_policy_allocate_clone(
- static_cast<U*>( r.base()[i] ) );
+ static_cast<const T*>( &r[i] ) );
         }
 
         explicit ptr_array( std::auto_ptr<this_type> r )
         : base_class( r ) { }
 
- ptr_array& operator=( const ptr_array& r )
+ ptr_array& operator=( ptr_array r )
         {
- ptr_array clone( r );
- this->swap( clone );
- return *this;
-
- }
-
- template< class U >
- ptr_array& operator=( const ptr_array<U,N>& r )
- {
- ptr_array clone( r );
- this->swap( clone );
- return *this;
-
+ this->swap( r );
+ return *this;
         }
 
         ptr_array& operator=( std::auto_ptr<this_type> r )

Modified: branches/proto/v4/boost/ptr_container/ptr_circular_buffer.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_circular_buffer.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_circular_buffer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -48,12 +48,56 @@
         typedef typename base_type::size_type size_type;
         typedef typename base_type::allocator_type allocator_type;
         typedef typename base_type::iterator iterator;
+ typedef typename base_type::const_iterator const_iterator;
         typedef typename base_type::auto_type auto_type;
         
- typedef std::pair<pointer*,size_type> array_range;
- typedef std::pair<const_pointer*,size_type> const_array_range;
+ typedef std::pair<pointer,size_type> array_range;
+ typedef std::pair<const_pointer,size_type> const_array_range;
         typedef typename circular_buffer_type::capacity_type capacity_type;
+
+ public: // constructors
+ ptr_circular_buffer()
+ { }
+
+ explicit ptr_circular_buffer( capacity_type n )
+ : base_type( n, ptr_container_detail::fixed_length_sequence_tag() )
+ { }
         
+ ptr_circular_buffer( capacity_type n,
+ const allocator_type& alloc )
+ : base_type( n, alloc, ptr_container_detail::fixed_length_sequence_tag() )
+ { }
+
+ template< class ForwardIterator >
+ ptr_circular_buffer( ForwardIterator first, ForwardIterator last )
+ : base_type( first, last, ptr_container_detail::fixed_length_sequence_tag() )
+ { }
+
+ template< class InputIterator >
+ ptr_circular_buffer( capacity_type n, InputIterator first, InputIterator last )
+ : base_type( n, first, last, ptr_container_detail::fixed_length_sequence_tag() )
+ { }
+
+ ptr_circular_buffer( const ptr_circular_buffer& r )
+ : base_type( r.size(), r.begin(), r.end(),
+ ptr_container_detail::fixed_length_sequence_tag() )
+ { }
+
+ template< class U >
+ ptr_circular_buffer( const ptr_circular_buffer<U>& r )
+ : base_type( r.size(), r.begin(), r.end(),
+ ptr_container_detail::fixed_length_sequence_tag() )
+ { }
+
+ ptr_circular_buffer& operator=( ptr_circular_buffer r )
+ {
+ this->swap( r );
+ return *this;
+ }
+
+ BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( ptr_circular_buffer,
+ base_type, this_type )
+
     public: // allocators
         allocator_type& get_allocator()
         {
@@ -69,30 +113,30 @@
         array_range array_one() // nothrow
         {
             typename circular_buffer_type::array_range r = this->base().array_one();
- return array_range( static_cast<pointer>(r.first,r.second) );
+ return array_range( reinterpret_cast<pointer>(r.first), r.second );
         }
 
         const_array_range array_one() const // nothrow
         {
             typename circular_buffer_type::const_array_range r = this->base().array_one();
- return array_range( static_cast<pointer>(r.first,r.second) );
+ return const_array_range( reinterpret_cast<const_pointer>(r.first), r.second );
         }
 
         array_range array_two() // nothrow
         {
- typename circular_buffer_type::const_array_range r = this->base().array_two();
- return const_array_range( static_cast<pointer>(r.first,r.second) );
+ typename circular_buffer_type::array_range r = this->base().array_two();
+ return array_range( reinterpret_cast<pointer>(r.first), r.second );
         }
 
         const_array_range array_two() const // nothrow
         {
             typename circular_buffer_type::const_array_range r = this->base().array_two();
- return const_array_range( static_cast<pointer>(r.first,r.second) );
+ return const_array_range( reinterpret_cast<const_pointer>(r.first), r.second );
         }
 
- pointer linearise() // nothrow
+ pointer linearize() // nothrow
         {
- return this->base().linearise();
+ return reinterpret_cast<pointer>(this->base().linearize());
         }
 
         bool full() const // nothrow
@@ -105,6 +149,12 @@
             return this->base().reserve();
         }
 
+ void reserve( size_type n ) // strong
+ {
+ if( capacity() < n )
+ set_capacity( n );
+ }
+
         capacity_type capacity() const // nothrow
         {
             return this->base().capacity();
@@ -129,22 +179,99 @@
             this->base().rset_capacity( new_capacity );
         }
 
- using base_type::assign;
+ void resize( size_type size ) // basic
+ {
+ size_type old_size = this->size();
+ if( old_size > size )
+ {
+ this->erase( boost::next( this->begin(), size ), this->end() );
+ }
+ else if( size > old_size )
+ {
+ for( ; old_size != size; ++old_size )
+ this->push_back( new BOOST_DEDUCED_TYPENAME
+ boost::remove_pointer<value_type>::type );
+ }
+
+ BOOST_ASSERT( this->size() == size );
+ }
+
+ void resize( size_type size, value_type to_clone ) // basic
+ {
+ size_type old_size = this->size();
+ if( old_size > size )
+ {
+ this->erase( boost::next( this->begin(), size ), this->end() );
+ }
+ else if( size > old_size )
+ {
+ for( ; old_size != size; ++old_size )
+ this->push_back( this->null_policy_allocate_clone( to_clone ) );
+ }
+
+ BOOST_ASSERT( this->size() == size );
+ }
+
+ void rresize( size_type size ) // basic
+ {
+ size_type old_size = this->size();
+ if( old_size > size )
+ {
+ this->erase( this->begin(),
+ boost::next( this->begin(), old_size - size ) );
+ }
+ else if( size > old_size )
+ {
+ for( ; old_size != size; ++old_size )
+ this->push_front( new BOOST_DEDUCED_TYPENAME
+ boost::remove_pointer<value_type>::type );
+ }
+
+ BOOST_ASSERT( this->size() == size );
+ }
+
+ void rresize( size_type size, value_type to_clone ) // basic
+ {
+ size_type old_size = this->size();
+ if( old_size > size )
+ {
+ this->erase( this->begin(),
+ boost::next( this->begin(), old_size - size ) );
+ }
+ else if( size > old_size )
+ {
+ for( ; old_size != size; ++old_size )
+ this->push_front( this->null_policy_allocate_clone( to_clone ) );
+ }
+
+ BOOST_ASSERT( this->size() == size );
+ }
+
+ template< class InputIterator >
+ void assign( InputIterator first, InputIterator last ) // strong
+ {
+ ptr_circular_buffer temp( first, last );
+ this->swap( temp );
+ }
+
+ template< class Range >
+ void assign( const Range& r ) // strong
+ {
+ assign( boost::begin(r), boost::end(r ) );
+ }
 
         void assign( size_type n, value_type to_clone ) // strong
         {
- base_type temp;
+ ptr_circular_buffer temp( n );
             for( size_type i = 0u; i != n; ++i )
                temp.push_back( this->null_policy_allocate_clone( to_clone ) );
- temp->base().set_capacity( n );
             this->swap( temp );
         }
         
         void assign( capacity_type capacity, size_type n,
                      value_type to_clone ) // basic
         {
- this->assign( n, to_clone );
- this->base().set_capacity( capacity );
+ this->assign( (std::min)(n,capacity), to_clone );
         }
 
         template< class InputIterator >
@@ -152,12 +279,14 @@
                      InputIterator first, InputIterator last ) // basic
         {
             this->assign( first, last );
- this->base().set_capacity( capacity );
+ this->set_capacity( capacity );
         }
 
         void push_back( value_type ptr ) // nothrow
         {
- BOOST_ASSERT( capacity() > 0 );
+ BOOST_ASSERT( capacity() > 0 );
+ this->enforce_null_policy( ptr, "Null pointer in 'push_back()'" );
+
             auto_type old_ptr;
             if( full() )
                 old_ptr.reset( &*this->begin() );
@@ -173,10 +302,12 @@
         void push_front( value_type ptr ) // nothrow
         {
             BOOST_ASSERT( capacity() > 0 );
+ this->enforce_null_policy( ptr, "Null pointer in 'push_front()'" );
+
             auto_type old_ptr;
             if( full() )
                 old_ptr.reset( &*(--this->end()) );
- this->base().push_back( ptr );
+ this->base().push_front( ptr );
         }
 
         template< class U >
@@ -188,6 +319,8 @@
         iterator insert( iterator pos, value_type ptr ) // nothrow
         {
             BOOST_ASSERT( capacity() > 0 );
+ this->enforce_null_policy( ptr, "Null pointer in 'insert()'" );
+
             auto_type new_ptr( ptr );
             iterator b = this->begin();
             if( full() && pos == b )
@@ -208,9 +341,10 @@
         }
 
         template< class InputIterator >
- void insert( iterator pos, InputIterator first, InputIterator last )
+ void insert( iterator pos, InputIterator first, InputIterator last ) // basic
         {
- // @todo
+ for( ; first != last; ++first, ++pos )
+ pos = insert( pos, this->null_policy_allocate_clone( &*first ) );
         }
 
 #if defined(BOOST_NO_SFINAE) || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
@@ -228,6 +362,8 @@
         iterator rinsert( iterator pos, value_type ptr ) // nothrow
         {
             BOOST_ASSERT( capacity() > 0 );
+ this->enforce_null_policy( ptr, "Null pointer in 'rinsert()'" );
+
             auto_type new_ptr( ptr );
             iterator b = this->end();
             if (full() && pos == b)
@@ -249,9 +385,10 @@
 
  
         template< class InputIterator >
- void rinsert( iterator pos, InputIterator first, InputIterator last )
+ void rinsert( iterator pos, InputIterator first, InputIterator last ) // basic
         {
- // @todo
+ for( ; first != last; ++first, ++pos )
+ pos = rinsert( pos, this->null_policy_allocate_clone( &*first ) );
         }
 
 #if defined(BOOST_NO_SFINAE) || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
@@ -266,29 +403,109 @@
 
 #endif
 
- void rerase( iterator pos )
+ iterator rerase( iterator pos ) // nothrow
         {
- // @todo
+ BOOST_ASSERT( !this->empty() );
+ BOOST_ASSERT( pos != this->end() );
+
+ this->remove( pos );
+ return iterator( this->base().rerase( pos.base() ) );
         }
 
- void rerase( iterator first, iterator last )
+ iterator rerase( iterator first, iterator last ) // nothrow
         {
- // @todo
+ this->remove( first, last );
+ return iterator( this->base().rerase( first.base(),
+ last.base() ) );
         }
 
-
- public: // constructors
-
- BOOST_PTR_CONTAINER_DEFINE_SEQEUENCE_MEMBERS( ptr_circular_buffer,
- base_type,
- this_type );
+ template< class Range >
+ iterator rerase( const Range& r ) // nothrow
+ {
+ return rerase( boost::begin(r), boost::end(r) );
+ }
+
+ void rotate( const_iterator new_begin ) // nothrow
+ {
+ this->base().rotate( new_begin.base() );
+ }
+
+ public: // transfer
+ template< class PtrSeqAdapter >
+ void transfer( iterator before,
+ BOOST_DEDUCED_TYPENAME PtrSeqAdapter::iterator first,
+ BOOST_DEDUCED_TYPENAME PtrSeqAdapter::iterator last,
+ PtrSeqAdapter& from ) // nothrow
+ {
+ BOOST_ASSERT( (void*)&from != (void*)this );
+ if( from.empty() )
+ return;
+ for( BOOST_DEDUCED_TYPENAME PtrSeqAdapter::iterator begin = first;
+ begin != last; ++begin, ++before )
+ before = insert( before, &*begin ); // nothrow
+ from.base().erase( first.base(), last.base() ); // nothrow
+ }
+
+ template< class PtrSeqAdapter >
+ void transfer( iterator before,
+ BOOST_DEDUCED_TYPENAME PtrSeqAdapter::iterator object,
+ PtrSeqAdapter& from ) // nothrow
+ {
+ BOOST_ASSERT( (void*)&from != (void*)this );
+ if( from.empty() )
+ return;
+ insert( before, &*object ); // nothrow
+ from.base().erase( object.base() ); // nothrow
+ }
+
+#if defined(BOOST_NO_SFINAE) || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+#else
         
- explicit ptr_circular_buffer( capacity_type n,
- const allocator_type& alloc = allocator_type() )
- : base_type(alloc)
+ template< class PtrSeqAdapter, class Range >
+ BOOST_DEDUCED_TYPENAME boost::disable_if< boost::is_same< Range,
+ BOOST_DEDUCED_TYPENAME PtrSeqAdapter::iterator > >::type
+ transfer( iterator before, const Range& r, PtrSeqAdapter& from ) // nothrow
+ {
+ transfer( before, boost::begin(r), boost::end(r), from );
+ }
+
+#endif
+ template< class PtrSeqAdapter >
+ void transfer( iterator before, PtrSeqAdapter& from ) // nothrow
         {
- this->base().set_capacity( n );
- }
+ transfer( before, from.begin(), from.end(), from );
+ }
+
+ public: // C-array support
+
+ void transfer( iterator before, value_type* from,
+ size_type size, bool delete_from = true ) // nothrow
+ {
+ BOOST_ASSERT( from != 0 );
+ if( delete_from )
+ {
+ BOOST_DEDUCED_TYPENAME base_type::scoped_deleter
+ deleter( from, size ); // nothrow
+ for( size_type i = 0u; i != size; ++i, ++before )
+ before = insert( before, *(from+i) ); // nothrow
+ deleter.release(); // nothrow
+ }
+ else
+ {
+ for( size_type i = 0u; i != size; ++i, ++before )
+ before = insert( before, *(from+i) ); // nothrow
+ }
+ }
+
+ value_type* c_array() // nothrow
+ {
+ if( this->empty() )
+ return 0;
+ this->linearize();
+ T** res = reinterpret_cast<T**>( &this->begin().base()[0] );
+ return res;
+ }
+
     };
 
     //////////////////////////////////////////////////////////////////////////////

Modified: branches/proto/v4/boost/ptr_container/ptr_container.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_container.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_container.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,6 +24,7 @@
 #include <boost/ptr_container/ptr_vector.hpp>
 #include <boost/ptr_container/ptr_unordered_map.hpp>
 #include <boost/ptr_container/ptr_unordered_set.hpp>
+#include <boost/ptr_container/ptr_circular_buffer.hpp>
 #include <boost/ptr_container/ptr_inserter.hpp>
 
 #endif

Modified: branches/proto/v4/boost/ptr_container/ptr_deque.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_deque.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_deque.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -44,7 +44,7 @@
 
       BOOST_PTR_CONTAINER_DEFINE_SEQEUENCE_MEMBERS( ptr_deque,
                                                     base_class,
- this_type );
+ this_type )
     };
 
     //////////////////////////////////////////////////////////////////////////////

Modified: branches/proto/v4/boost/ptr_container/ptr_list.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_list.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_list.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -38,12 +38,14 @@
                                          CloneAllocator >
             base_class;
 
- typedef ptr_list<T,CloneAllocator,Allocator> this_type;
+ typedef ptr_list<T,CloneAllocator,Allocator> this_type;
         
     public:
         BOOST_PTR_CONTAINER_DEFINE_SEQEUENCE_MEMBERS( ptr_list,
                                                       base_class,
- this_type );
+ this_type )
+
+ typedef BOOST_DEDUCED_TYPENAME base_class::value_type value_type;
         
     public:
         using base_class::merge;
@@ -69,6 +71,20 @@
             this->base().sort( void_ptr_indirect_fun<Compare,T>( comp ) );
         }
 
+ template< class Pred >
+ void erase_if( iterator first, iterator last, Pred pred )
+ {
+ base_class::erase_if( first, last, pred );
+ }
+
+ template< class Pred >
+ void erase_if( Pred pred )
+ {
+ this->base().remove_if( BOOST_DEDUCED_TYPENAME base_class::
+ BOOST_NESTED_TEMPLATE void_ptr_delete_if<Pred,value_type>
+ (pred) );
+ }
+
     }; // class 'ptr_list'
 
     //////////////////////////////////////////////////////////////////////////////

Modified: branches/proto/v4/boost/ptr_container/ptr_map.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_map.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_map.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -61,16 +61,15 @@
         { }
 
         BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( ptr_map, base_type,
- this_type );
+ this_type )
 
         template< class U >
         ptr_map( const ptr_map<Key,U>& r ) : base_type( r )
         { }
 
- template< class U >
- ptr_map& operator=( const ptr_map<Key,U>& r )
+ ptr_map& operator=( ptr_map r )
         {
- base_type::operator=( r );
+ this->swap( r );
             return *this;
         }
     };
@@ -117,16 +116,15 @@
 
         BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( ptr_multimap,
                                                       base_type,
- this_type );
+ this_type )
 
         template< class U >
         ptr_multimap( const ptr_multimap<Key,U>& r ) : base_type( r )
         { }
 
- template< class U >
- ptr_multimap& operator=( const ptr_multimap<Key,U>& r )
+ ptr_multimap& operator=( ptr_multimap r )
         {
- base_type::operator=( r );
+ this->swap( r );
             return *this;
         }
     };

Modified: branches/proto/v4/boost/ptr_container/ptr_map_adapter.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_map_adapter.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_map_adapter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -195,6 +195,9 @@
             }
 
             void release() { released_ = true; }
+
+ private:
+ eraser& operator=(const eraser&);
         };
 
         mapped_reference insert_lookup( const key_type& key )
@@ -227,7 +230,7 @@
 
         template< class Compare, class Allocator >
         ptr_map_adapter_base( const Compare& comp,
- const allocator_type& a )
+ const Allocator& a )
         : base_type( comp, a )
         { }
 
@@ -473,13 +476,13 @@
             map_basic_clone_and_insert( first, last );
         }
                 
- explicit ptr_map_adapter( const ptr_map_adapter& r )
+ ptr_map_adapter( const ptr_map_adapter& r )
         {
             map_basic_clone_and_insert( r.begin(), r.end() );
         }
         
         template< class Key, class U, class CA, bool b >
- explicit ptr_map_adapter( const ptr_map_adapter<Key,U,CA,b>& r )
+ ptr_map_adapter( const ptr_map_adapter<Key,U,CA,b>& r )
         {
             map_basic_clone_and_insert( r.begin(), r.end() );
         }
@@ -488,18 +491,9 @@
         ptr_map_adapter( std::auto_ptr<U> r ) : base_type( r )
         { }
 
- ptr_map_adapter& operator=( const ptr_map_adapter& r )
+ ptr_map_adapter& operator=( ptr_map_adapter r )
         {
- ptr_map_adapter clone( r );
- this->swap( clone );
- return *this;
- }
-
- template< class Key, class U, class CA, bool b >
- ptr_map_adapter& operator=( const ptr_map_adapter<Key,U,CA,b>& r )
- {
- ptr_map_adapter clone( r );
- this->swap( clone );
+ this->swap( r );
             return *this;
         }
 
@@ -731,13 +725,13 @@
             map_basic_clone_and_insert( first, last );
         }
 
- explicit ptr_multimap_adapter( const ptr_multimap_adapter& r )
+ ptr_multimap_adapter( const ptr_multimap_adapter& r )
         {
             map_basic_clone_and_insert( r.begin(), r.end() );
         }
         
         template< class Key, class U, class CA, bool b >
- explicit ptr_multimap_adapter( const ptr_multimap_adapter<Key,U,CA,b>& r )
+ ptr_multimap_adapter( const ptr_multimap_adapter<Key,U,CA,b>& r )
         {
             map_basic_clone_and_insert( r.begin(), r.end() );
         }
@@ -746,21 +740,12 @@
         explicit ptr_multimap_adapter( std::auto_ptr<U> r ) : base_type( r )
         { }
 
- ptr_multimap_adapter& operator=( const ptr_multimap_adapter& r )
+ ptr_multimap_adapter& operator=( ptr_multimap_adapter r )
         {
- ptr_multimap_adapter clone( r );
- this->swap( clone );
+ this->swap( r );
             return *this;
         }
 
- template< class Key, class U, class CA, bool b >
- ptr_multimap_adapter& operator=( const ptr_multimap_adapter<Key,U,CA,b>& r )
- {
- ptr_multimap_adapter clone( r );
- this->swap( clone );
- return *this;
- }
-
         template< class U >
         ptr_multimap_adapter& operator=( std::auto_ptr<U> r )
         {

Modified: branches/proto/v4/boost/ptr_container/ptr_sequence_adapter.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_sequence_adapter.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_sequence_adapter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -134,36 +134,100 @@
                                                     CloneAllocator >
              base_type;
         
- typedef BOOST_DEDUCED_TYPENAME base_type::scoped_deleter scoped_deleter;
-
         typedef ptr_sequence_adapter<T,VoidPtrSeq,CloneAllocator>
             this_type;
+
+ protected:
+ typedef BOOST_DEDUCED_TYPENAME base_type::scoped_deleter scoped_deleter;
          
     public:
         typedef BOOST_DEDUCED_TYPENAME base_type::value_type value_type;
         typedef BOOST_DEDUCED_TYPENAME base_type::reference reference;
+ typedef BOOST_DEDUCED_TYPENAME base_type::const_reference
+ const_reference;
         typedef BOOST_DEDUCED_TYPENAME base_type::auto_type auto_type;
         typedef BOOST_DEDUCED_TYPENAME base_type::clone_allocator_type
                                                               clone_allocator_type;
-
- BOOST_PTR_CONTAINER_DEFINE_CONSTRUCTORS( ptr_sequence_adapter,
- base_type )
+ typedef BOOST_DEDUCED_TYPENAME base_type::iterator iterator;
+ typedef BOOST_DEDUCED_TYPENAME base_type::size_type size_type;
+ typedef BOOST_DEDUCED_TYPENAME base_type::allocator_type
+ allocator_type;
+
+ ptr_sequence_adapter()
+ { }
+
+ template< class Allocator >
+ explicit ptr_sequence_adapter( const Allocator& a )
+ : base_type( a )
+ { }
+
+ template< class SizeType >
+ ptr_sequence_adapter( SizeType n,
+ ptr_container_detail::fixed_length_sequence_tag tag )
+ : base_type( n, tag )
+ { }
+
+ template< class SizeType, class Allocator >
+ ptr_sequence_adapter( SizeType n, const Allocator& a,
+ ptr_container_detail::fixed_length_sequence_tag tag )
+ : base_type( n, a, tag )
+ { }
+
+ template< class InputIterator >
+ ptr_sequence_adapter( InputIterator first, InputIterator last )
+ : base_type( first, last )
+ { }
+
+ template< class InputIterator, class Allocator >
+ ptr_sequence_adapter( InputIterator first, InputIterator last,
+ const Allocator& a )
+ : base_type( first, last, a )
+ { }
+
+ template< class ForwardIterator >
+ ptr_sequence_adapter( ForwardIterator first,
+ ForwardIterator last,
+ ptr_container_detail::fixed_length_sequence_tag tag )
+ : base_type( first, last, tag )
+ { }
+
+ template< class SizeType, class ForwardIterator >
+ ptr_sequence_adapter( SizeType n,
+ ForwardIterator first,
+ ForwardIterator last,
+ ptr_container_detail::fixed_length_sequence_tag tag )
+ : base_type( n, first, last, tag )
+ { }
 
+ ptr_sequence_adapter( const ptr_sequence_adapter& r )
+ : base_type( r )
+ { }
+
         template< class U >
- explicit ptr_sequence_adapter( const ptr_sequence_adapter<U,VoidPtrSeq>& r )
+ ptr_sequence_adapter( const ptr_sequence_adapter<U,VoidPtrSeq,CloneAllocator>& r )
           : base_type( r )
         { }
         
+ ptr_sequence_adapter( const ptr_sequence_adapter& r,
+ ptr_container_detail::fixed_length_sequence_tag tag )
+ : base_type( r, tag )
+ { }
+
+ template< class U >
+ ptr_sequence_adapter( const ptr_sequence_adapter<U,VoidPtrSeq,CloneAllocator>& r,
+ ptr_container_detail::fixed_length_sequence_tag tag )
+ : base_type( r, tag )
+ { }
+
         template< class PtrContainer >
         explicit ptr_sequence_adapter( std::auto_ptr<PtrContainer> clone )
           : base_type( clone )
         { }
 
- template< class U >
- ptr_sequence_adapter& operator=( const ptr_sequence_adapter<U,VoidPtrSeq>& r )
+ ptr_sequence_adapter& operator=( const ptr_sequence_adapter r )
         {
- base_type::operator=( r );
- return *this;
+ this->swap( r );
+ return *this;
         }
         
         template< class PtrContainer >
@@ -563,6 +627,7 @@
             }
         };
 
+ protected:
         template< class Fun, class Arg1 >
         class void_ptr_delete_if
         {
@@ -588,9 +653,9 @@
             }
         };
 
+ private:
         void compact_and_erase_nulls( iterator first, iterator last ) // nothrow
         {
-
             typename base_type::ptr_iterator p = std::stable_partition(
                                                     first.base(),
                                                     last.base(),

Modified: branches/proto/v4/boost/ptr_container/ptr_set.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_set.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -64,7 +64,8 @@
 
         BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( ptr_set,
                                                       base_type,
- this_type );
+ this_type )
+
         BOOST_PTR_CONTAINER_DEFINE_COPY_CONSTRUCTORS( ptr_set, base_type )
                 
     };
@@ -112,9 +113,10 @@
 
         BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( ptr_multiset,
                                                       base_type,
- this_type );
+ this_type )
+
         BOOST_PTR_CONTAINER_DEFINE_COPY_CONSTRUCTORS( ptr_multiset,
- base_type );
+ base_type )
 
     };
 

Modified: branches/proto/v4/boost/ptr_container/ptr_set_adapter.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_set_adapter.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_set_adapter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -158,11 +158,6 @@
          : base_type( hash, pred, a )
         { }
 
- template< class InputIterator >
- ptr_set_adapter_base( InputIterator first, InputIterator last )
- : base_type( first, last )
- { }
-
         template< class InputIterator, class Compare, class Allocator >
         ptr_set_adapter_base( InputIterator first, InputIterator last,
                               const Compare& comp,
@@ -179,11 +174,11 @@
         { }
                
         template< class U, class Set, class CA, bool b >
- explicit ptr_set_adapter_base( const ptr_set_adapter_base<U,Set,CA,b>& r )
+ ptr_set_adapter_base( const ptr_set_adapter_base<U,Set,CA,b>& r )
           : base_type( r )
         { }
 
- explicit ptr_set_adapter_base( const ptr_set_adapter_base& r )
+ ptr_set_adapter_base( const ptr_set_adapter_base& r )
           : base_type( r )
         { }
                 
@@ -191,11 +186,10 @@
         explicit ptr_set_adapter_base( std::auto_ptr<PtrContainer> clone )
          : base_type( clone )
         { }
-
- template< class U, class Set, class CA, bool b >
- ptr_set_adapter_base& operator=( const ptr_set_adapter_base<U,Set,CA,b>& r )
+
+ ptr_set_adapter_base& operator=( ptr_set_adapter_base r )
         {
- base_type::operator=( r );
+ this->swap( r );
             return *this;
         }
         

Modified: branches/proto/v4/boost/ptr_container/ptr_unordered_map.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_unordered_map.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_unordered_map.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -101,16 +101,15 @@
 
         BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( ptr_unordered_map,
                                                       base_type,
- this_type );
+ this_type )
 
         template< class U >
         ptr_unordered_map( const ptr_unordered_map<Key,U>& r ) : base_type( r )
         { }
 
- template< class U >
- ptr_unordered_map& operator=( const ptr_unordered_map<Key,U>& r )
+ ptr_unordered_map& operator=( ptr_unordered_map r )
         {
- base_type::operator=( r );
+ this->swap( r );
             return *this;
         }
     };
@@ -196,16 +195,15 @@
 
         BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( ptr_unordered_multimap,
                                                       base_type,
- this_type );
+ this_type )
 
         template< class U >
         ptr_unordered_multimap( const ptr_unordered_multimap<Key,U>& r ) : base_type( r )
         { }
 
- template< class U >
- ptr_unordered_multimap& operator=( const ptr_unordered_multimap<Key,U>& r )
+ ptr_unordered_multimap& operator=( ptr_unordered_multimap r )
         {
- base_type::operator=( r );
+ this->swap( r );
             return *this;
         }
     };

Modified: branches/proto/v4/boost/ptr_container/ptr_unordered_set.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_unordered_set.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_unordered_set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -105,13 +105,14 @@
 
         BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( ptr_unordered_set,
                                                       base_type,
- this_type );
- BOOST_PTR_CONTAINER_DEFINE_COPY_CONSTRUCTORS( ptr_unordered_set, base_type )
+ this_type )
+
+ BOOST_PTR_CONTAINER_DEFINE_COPY_CONSTRUCTORS( ptr_unordered_set,
+ base_type )
                 
     };
         
         
-
     template
     <
         class Key,
@@ -193,9 +194,10 @@
 
         BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( ptr_unordered_multiset,
                                                       base_type,
- this_type );
+ this_type )
+
         BOOST_PTR_CONTAINER_DEFINE_COPY_CONSTRUCTORS( ptr_unordered_multiset,
- base_type );
+ base_type )
 
     };
 

Modified: branches/proto/v4/boost/ptr_container/ptr_vector.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/ptr_vector.hpp (original)
+++ branches/proto/v4/boost/ptr_container/ptr_vector.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -44,7 +44,7 @@
 
         BOOST_PTR_CONTAINER_DEFINE_SEQEUENCE_MEMBERS( ptr_vector,
                                                       base_class,
- this_type );
+ this_type )
         
         explicit ptr_vector( size_type n,
                              const allocator_type& alloc = allocator_type() )

Modified: branches/proto/v4/boost/ptr_container/serialize_ptr_array.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/serialize_ptr_array.hpp (original)
+++ branches/proto/v4/boost/ptr_container/serialize_ptr_array.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,13 +16,13 @@
 {
 
 template<class Archive, class T, std::size_t N, class CloneAllocator>
-void save(Archive& ar, const ptr_array<T, N, CloneAllocator>& c, unsigned int version)
+void save(Archive& ar, const ptr_array<T, N, CloneAllocator>& c, unsigned int /*version*/)
 {
     ptr_container_detail::save_helper(ar, c);
 }
 
 template<class Archive, class T, std::size_t N, class CloneAllocator>
-void load(Archive& ar, ptr_array<T, N, CloneAllocator>& c, unsigned int version)
+void load(Archive& ar, ptr_array<T, N, CloneAllocator>& c, unsigned int /*version*/)
 {
     typedef ptr_array<T, N, CloneAllocator> container_type;
     typedef BOOST_DEDUCED_TYPENAME container_type::size_type size_type;

Modified: branches/proto/v4/boost/ptr_container/serialize_ptr_circular_buffer.hpp
==============================================================================
Binary files. No diff available.

Modified: branches/proto/v4/boost/ptr_container/serialize_ptr_container.hpp
==============================================================================
Binary files. No diff available.

Modified: branches/proto/v4/boost/ptr_container/serialize_ptr_vector.hpp
==============================================================================
--- branches/proto/v4/boost/ptr_container/serialize_ptr_vector.hpp (original)
+++ branches/proto/v4/boost/ptr_container/serialize_ptr_vector.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,7 +16,7 @@
 {
 
 template<class Archive, class T, class CloneAllocator, class Allocator>
-void load(Archive& ar, ptr_vector<T, CloneAllocator, Allocator>& c, unsigned int version)
+void load(Archive& ar, ptr_vector<T, CloneAllocator, Allocator>& c, unsigned int /*version*/)
 {
     typedef ptr_vector<T, CloneAllocator, Allocator> container_type;
     typedef BOOST_DEDUCED_TYPENAME container_type::size_type size_type;

Modified: branches/proto/v4/boost/python/object_core.hpp
==============================================================================
--- branches/proto/v4/boost/python/object_core.hpp (original)
+++ branches/proto/v4/boost/python/object_core.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -42,6 +42,12 @@
 
 namespace boost { namespace python {
 
+namespace detail
+{
+ class kwds_proxy;
+ class args_proxy;
+}
+
 namespace converter
 {
   template <class T> struct arg_to_python;
@@ -102,6 +108,11 @@
 
 # define BOOST_PP_ITERATION_PARAMS_1 (3, (1, BOOST_PYTHON_MAX_ARITY, <boost/python/object_call.hpp>))
 # include BOOST_PP_ITERATE()
+
+ detail::args_proxy operator* () const;
+ object operator()(detail::args_proxy const &args) const;
+ object operator()(detail::args_proxy const &args,
+ detail::kwds_proxy const &kwds) const;
 
       // truth value testing
       //
@@ -416,6 +427,62 @@
 // implementation
 //
 
+namespace detail
+{
+
+class call_proxy
+{
+public:
+ call_proxy(object target) : m_target(target) {}
+ operator object() const { return m_target;}
+
+ private:
+ object m_target;
+};
+
+class kwds_proxy : public call_proxy
+{
+public:
+ kwds_proxy(object o = object()) : call_proxy(o) {}
+};
+class args_proxy : public call_proxy
+{
+public:
+ args_proxy(object o) : call_proxy(o) {}
+ kwds_proxy operator* () const { return kwds_proxy(*this);}
+};
+}
+
+template <typename U>
+detail::args_proxy api::object_operators<U>::operator* () const
+{
+ object_cref2 x = *static_cast<U const*>(this);
+ return detail::args_proxy(x);
+}
+
+template <typename U>
+object api::object_operators<U>::operator()(detail::args_proxy const &args) const
+{
+ U const& self = *static_cast<U const*>(this);
+ PyObject *result = PyObject_Call(get_managed_object(self, tag),
+ args.operator object().ptr(),
+ 0);
+ return object(detail::new_reference(result));
+
+}
+
+template <typename U>
+object api::object_operators<U>::operator()(detail::args_proxy const &args,
+ detail::kwds_proxy const &kwds) const
+{
+ U const& self = *static_cast<U const*>(this);
+ PyObject *result = PyObject_Call(get_managed_object(self, tag),
+ args.operator object().ptr(),
+ kwds.operator object().ptr());
+ return object(detail::new_reference(result));
+
+}
+
 inline object::object()
     : object_base(python::incref(Py_None))
 {}

Modified: branches/proto/v4/boost/python/ptr.hpp
==============================================================================
--- branches/proto/v4/boost/python/ptr.hpp (original)
+++ branches/proto/v4/boost/python/ptr.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,7 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 //
 // Based on boost/ref.hpp, thus:
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2001 Peter Dimov
 
 # if _MSC_VER+0 >= 1020

Modified: branches/proto/v4/boost/random/detail/signed_unsigned_tools.hpp
==============================================================================
--- branches/proto/v4/boost/random/detail/signed_unsigned_tools.hpp (original)
+++ branches/proto/v4/boost/random/detail/signed_unsigned_tools.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,87 +13,12 @@
 
 #include <boost/limits.hpp>
 #include <boost/config.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
 
 namespace boost {
 namespace random {
 namespace detail {
 
-/*
- * Given an (integral) type T, returns the type "unsigned T".
- * (type_traits appears to be lacking the feature)
- */
-
-template<class T>
-struct make_unsigned { };
-
-template<>
-struct make_unsigned<char>
-{
- typedef unsigned char type;
-};
-
-template<>
-struct make_unsigned<signed char>
-{
- typedef unsigned char type;
-};
-
-template<>
-struct make_unsigned<unsigned char>
-{
- typedef unsigned char type;
-};
-
-template<>
-struct make_unsigned<short>
-{
- typedef unsigned short type;
-};
-
-template<>
-struct make_unsigned<unsigned short>
-{
- typedef unsigned short type;
-};
-
-template<>
-struct make_unsigned<int>
-{
- typedef unsigned int type;
-};
-
-template<>
-struct make_unsigned<unsigned int>
-{
- typedef unsigned int type;
-};
-
-template<>
-struct make_unsigned<long>
-{
- typedef unsigned long type;
-};
-
-template<>
-struct make_unsigned<unsigned long>
-{
- typedef unsigned long type;
-};
-
-#ifdef BOOST_HAS_LONG_LONG
-template<>
-struct make_unsigned<long long>
-{
- typedef unsigned long long type;
-};
-
-template<>
-struct make_unsigned<unsigned long long>
-{
- typedef unsigned long long type;
-};
-#endif
-
 
 /*
  * Compute x - y, we know that x >= y, return an unsigned value.

Modified: branches/proto/v4/boost/random/uniform_int.hpp
==============================================================================
--- branches/proto/v4/boost/random/uniform_int.hpp (original)
+++ branches/proto/v4/boost/random/uniform_int.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -25,6 +25,7 @@
 #include <boost/detail/workaround.hpp>
 #include <boost/random/uniform_smallint.hpp>
 #include <boost/random/detail/signed_unsigned_tools.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
 #ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
 #include <boost/type_traits/is_float.hpp>
 #endif
@@ -38,7 +39,7 @@
 public:
   typedef IntType input_type;
   typedef IntType result_type;
- typedef typename random::detail::make_unsigned<result_type>::type range_type;
+ typedef typename make_unsigned<result_type>::type range_type;
 
   explicit uniform_int(IntType min_arg = 0, IntType max_arg = 9)
     : _min(min_arg), _max(max_arg)
@@ -61,7 +62,7 @@
   {
     typedef typename Engine::result_type base_result;
     // ranges are always unsigned
- typedef typename random::detail::make_unsigned<base_result>::type base_unsigned;
+ typedef typename make_unsigned<base_result>::type base_unsigned;
     const base_result bmin = (eng.min)();
     const base_unsigned brange =
       random::detail::subtract<base_result>()((eng.max)(), (eng.min)());

Modified: branches/proto/v4/boost/range/as_literal.hpp
==============================================================================
--- branches/proto/v4/boost/range/as_literal.hpp (original)
+++ branches/proto/v4/boost/range/as_literal.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -25,7 +25,9 @@
 #include <boost/detail/workaround.hpp>
 
 #include <cstring>
+#ifndef BOOST_NO_CWCHAR
 #include <cwchar>
+#endif
 
 namespace boost
 {
@@ -36,10 +38,12 @@
             return strlen( s );
         }
 
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
         inline std::size_t length( const wchar_t* s )
         {
             return wcslen( s );
         }
+#endif
 
         //
         // Remark: the compiler cannot choose between T* and T[sz]
@@ -57,7 +61,7 @@
             return true;
         }
 
-
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
         inline bool is_char_ptr( wchar_t* )
         {
             return true;
@@ -67,6 +71,7 @@
         {
             return true;
         }
+#endif
         
         template< class T >
         inline long is_char_ptr( T /* r */ )

Modified: branches/proto/v4/boost/range/begin.hpp
==============================================================================
--- branches/proto/v4/boost/range/begin.hpp (original)
+++ branches/proto/v4/boost/range/begin.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -73,15 +73,15 @@
     // 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 (&array)[sz] )
+ inline const T* range_begin( const T (&a)[sz] )
     {
- return array;
+ return a;
     }
 
     template< typename T, std::size_t sz >
- inline T* range_begin( T (&array)[sz] )
+ inline T* range_begin( T (&a)[sz] )
     {
- return array;
+ return a;
     }
 
 

Modified: branches/proto/v4/boost/range/end.hpp
==============================================================================
--- branches/proto/v4/boost/range/end.hpp (original)
+++ branches/proto/v4/boost/range/end.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -71,15 +71,15 @@
         //////////////////////////////////////////////////////////////////////
 
         template< typename T, std::size_t sz >
- inline const T* range_end( const T (&array)[sz] )
+ inline const T* range_end( const T (&a)[sz] )
         {
- return range_detail::array_end<T,sz>( array );
+ return range_detail::array_end<T,sz>( a );
         }
 
         template< typename T, std::size_t sz >
- inline T* range_end( T (&array)[sz] )
+ inline T* range_end( T (&a)[sz] )
         {
- return range_detail::array_end<T,sz>( array );
+ return range_detail::array_end<T,sz>( a );
         }
 
 #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \

Modified: branches/proto/v4/boost/range/iterator_range.hpp
==============================================================================
--- branches/proto/v4/boost/range/iterator_range.hpp (original)
+++ branches/proto/v4/boost/range/iterator_range.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -185,7 +185,7 @@
                 m_Begin(Begin), m_End(End)
                 #ifndef NDEBUG
             , singular(false)
- #endif
+ #endif
             {}
 
             //! Constructor from a Range
@@ -210,7 +210,7 @@
             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
+ #ifndef NDEBUG
             , singular(false)
                 #endif
             {}
@@ -219,7 +219,7 @@
             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
+ #ifndef NDEBUG
             , singular(false)
                 #endif
             {}
@@ -390,13 +390,15 @@
             bool singular;
             #endif
 
- #ifndef NDEBUG
         public:
             bool is_singular() const
             {
+ #ifndef NDEBUG
                  return singular;
+ #else
+ return false;
+ #endif
             }
- #endif
 
         protected:
             //

Modified: branches/proto/v4/boost/range/sub_range.hpp
==============================================================================
--- branches/proto/v4/boost/range/sub_range.hpp (original)
+++ branches/proto/v4/boost/range/sub_range.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -23,6 +23,8 @@
 #include <boost/range/size_type.hpp>
 #include <boost/range/difference_type.hpp>
 #include <boost/assert.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/remove_reference.hpp>
 
 namespace boost
 {
@@ -41,6 +43,12 @@
         typedef BOOST_DEDUCED_TYPENAME range_difference<ForwardRange>::type difference_type;
         typedef BOOST_DEDUCED_TYPENAME range_size<ForwardRange>::type size_type;
         typedef BOOST_DEDUCED_TYPENAME base::reference reference;
+
+ public: // for return value of front/back
+ typedef BOOST_DEDUCED_TYPENAME
+ boost::mpl::if_< boost::is_reference<reference>,
+ const BOOST_DEDUCED_TYPENAME boost::remove_reference<reference>::type&,
+ reference >::type const_reference;
 
     public:
         sub_range() : base()
@@ -112,7 +120,7 @@
             return base::front();
         }
 
- const value_type& front() const
+ const_reference front() const
         {
             return base::front();
         }
@@ -122,7 +130,7 @@
             return base::back();
         }
 
- const value_type& back() const
+ const_reference back() const
         {
             return base::back();
         }
@@ -132,7 +140,7 @@
             return base::operator[](sz);
         }
 
- const value_type& operator[]( difference_type sz ) const
+ const_reference operator[]( difference_type sz ) const
         {
             return base::operator[](sz);
         }

Modified: branches/proto/v4/boost/rational.hpp
==============================================================================
--- branches/proto/v4/boost/rational.hpp (original)
+++ branches/proto/v4/boost/rational.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,6 +5,10 @@
 // in all copies. This software is provided "as is" without express or
 // implied warranty, and with no claim as to its suitability for any purpose.
 
+// boostinspect:nolicense (don't complain about the lack of a Boost license)
+// (Paul Moore hasn't been in contact for years, so there's no way to change the
+// license.)
+
 // See http://www.boost.org/libs/rational for documentation.
 
 // Credits:

Modified: branches/proto/v4/boost/ref.hpp
==============================================================================
--- branches/proto/v4/boost/ref.hpp (original)
+++ branches/proto/v4/boost/ref.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,7 +15,7 @@
 //
 // ref.hpp - ref/cref, useful helper functions
 //
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2001, 2002 Peter Dimov
 // Copyright (C) 2002 David Abrahams
 //
@@ -173,6 +173,12 @@
 
 # endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
+template <class T> inline typename unwrap_reference<T>::type&
+unwrap_ref(T& t)
+{
+ return t;
+}
+
 } // namespace boost
 
 #endif // #ifndef BOOST_REF_HPP_INCLUDED

Modified: branches/proto/v4/boost/regex/v4/cpp_regex_traits.hpp
==============================================================================
--- branches/proto/v4/boost/regex/v4/cpp_regex_traits.hpp (original)
+++ branches/proto/v4/boost/regex/v4/cpp_regex_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -293,7 +293,9 @@
    //
    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));
@@ -303,12 +305,14 @@
             }
          }
          this->m_pmessages->close(cat);
+#ifndef BOOST_NO_EXCEPTIONS
       }
       catch(...)
       {
          this->m_pmessages->close(cat);
          throw;
       }
+#endif
    }
    else
    {
@@ -1055,3 +1059,4 @@
 
 #endif
 
+

Modified: branches/proto/v4/boost/serialization/array.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/array.hpp (original)
+++ branches/proto/v4/boost/serialization/array.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,15 +7,40 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 
 #include <boost/serialization/nvp.hpp>
-#include <boost/serialization/split_free.hpp>
+#include <boost/serialization/split_member.hpp>
 #include <boost/serialization/wrapper.hpp>
-#include <boost/serialization/collection_size_type.hpp>
-#include <boost/archive/archive_exception.hpp>
-#include <boost/throw_exception.hpp>
+#include <boost/mpl/always.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/array.hpp>
 #include <iostream>
 
+#include <cstddef> // std::size_t
+#include <cstddef>
+#include <boost/config.hpp> // msvc 6.0 needs this for warning suppression
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::size_t;
+} // namespace std
+#endif
+
 namespace boost { namespace serialization {
 
+// traits to specify whether to use an optimized array serialization
+
+#ifdef __BORLANDC__
+// workaround for Borland compiler
+template <class Archive>
+struct use_array_optimization {
+ template <class T> struct apply : boost::mpl::false_ {};
+};
+
+#else
+template <class Archive>
+struct use_array_optimization : boost::mpl::always<boost::mpl::false_> {};
+#endif
+
 template<class T>
 class array
  : public wrapper_traits<array<T> >
@@ -30,7 +55,7 @@
     
     // default implementation
     template<class Archive>
- void serialize(Archive &ar, const unsigned int) const
+ void serialize_optimized(Archive &ar, const unsigned int, mpl::false_ ) const
     {
       // default implemention does the loop
       std::size_t c = count();
@@ -38,6 +63,38 @@
       while(0 < c--)
             ar & make_nvp("item", *t++);
     }
+
+ // optimized implementation
+ template<class Archive>
+ void serialize_optimized(Archive &ar, const unsigned int version, mpl::true_ )
+ {
+ boost::serialization::split_member(ar, *this, version);
+ }
+
+ // default implementation
+ template<class Archive>
+ void save(Archive &ar, const unsigned int version) const
+ {
+ ar.save_array(*this,version);
+ }
+
+ // default implementation
+ template<class Archive>
+ void load(Archive &ar, const unsigned int version)
+ {
+ ar.load_array(*this,version);
+ }
+
+ // default implementation
+ template<class Archive>
+ void serialize(Archive &ar, const unsigned int version)
+ {
+ typedef BOOST_DEDUCED_TYPENAME
+ boost::serialization::use_array_optimization<Archive>::template apply<
+ BOOST_DEDUCED_TYPENAME remove_const<T>::type
+ >::type use_optimized;
+ serialize_optimized(ar,version,use_optimized());
+ }
     
     value_type* address() const
     {
@@ -64,44 +121,30 @@
     return array<T>(t, s);
 }
 
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// T[N]
-
-/*
 
-template<class Archive, class U, std::size_t N>
-void save( Archive & ar, U const (& t)[N], const unsigned int file_version )
-{
- const serialization::collection_size_type count(N);
- ar << BOOST_SERIALIZATION_NVP(count);
- if (N)
- ar << serialization::make_array(&t[0],N);
-}
+template <class Archive, class T, std::size_t N>
 
-template<class Archive, class U, std::size_t N>
-void load( Archive & ar, U (& t)[N], const unsigned int file_version )
+void serialize(Archive& ar, boost::array<T,N>& a, const unsigned int version)
 {
- serialization::collection_size_type count;
- ar >> BOOST_SERIALIZATION_NVP(count);
- if(count > N)
- boost::throw_exception(archive::archive_exception(
- boost::archive::archive_exception::array_size_too_short
- ));
- if (N)
- ar >> serialization::make_array(&t[0],count);
+ ar & make_nvp("elems",a.elems);
 }
 
 
-// split non-intrusive serialization function member into separate
-// non intrusive save/load member functions
-template<class Archive, class U, std::size_t N>
-inline void serialize( Archive & ar, U (& t)[N], const unsigned int file_version)
-{
- boost::serialization::split_free(ar, t, file_version);
-}
-*/
-
 
 } } // end namespace boost::serialization
 
+#ifdef __BORLANDC__
+// ignore optimizations for Borland
+#define BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(Archive)
+#else
+#define BOOST_SERIALIZATION_USE_ARRAY_OPTIMIZATION(Archive) \
+namespace boost { namespace serialization { \
+template <> struct use_array_optimization<Archive> { \
+ template <class ValueType> \
+ struct apply : boost::mpl::apply1<Archive::use_array_optimization \
+ , BOOST_DEDUCED_TYPENAME boost::remove_const<ValueType>::type \
+ >::type {}; \
+}; }}
+#endif // __BORLANDC__
+
 #endif //BOOST_SERIALIZATION_ARRAY_HPP

Modified: branches/proto/v4/boost/serialization/collections_load_imp.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/collections_load_imp.hpp (original)
+++ branches/proto/v4/boost/serialization/collections_load_imp.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -23,7 +23,13 @@
 // helper function templates for serialization of collections
 
 #include <cassert>
-#include <boost/config.hpp>
+#include <cstddef> // size_t
+#include <boost/config.hpp> // msvc 6.0 needs this for warning suppression
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::size_t;
+} // namespace std
+#endif
 #include <boost/detail/workaround.hpp>
 
 #include <boost/serialization/access.hpp>
@@ -31,6 +37,7 @@
 #include <boost/serialization/detail/stack_constructor.hpp>
 #include <boost/serialization/collection_size_type.hpp>
 
+
 namespace boost{
 namespace serialization {
 namespace stl {
@@ -57,9 +64,61 @@
     }
 };
 
-// map and set input
+// map input
+template<class Archive, class Container>
+struct archive_input_map
+{
+ inline void operator()(
+ Archive &ar,
+ Container &s,
+ const unsigned int v
+ ){
+ typedef BOOST_DEDUCED_TYPENAME Container::value_type type;
+ detail::stack_construct<Archive, type> t(ar, v);
+ // borland fails silently w/o full namespace
+ ar >> boost::serialization::make_nvp("item", t.reference());
+ std::pair<BOOST_DEDUCED_TYPENAME Container::const_iterator, bool> result =
+ s.insert(t.reference());
+ // note: the following presumes that the map::value_type was NOT tracked
+ // in the archive. This is the usual case, but here there is no way
+ // to determine that.
+ if(result.second){
+ ar.reset_object_address(
+ & (result.first->second),
+ & t.reference().second
+ );
+ }
+ }
+};
+
+// multimap input
+template<class Archive, class Container>
+struct archive_input_multimap
+{
+ inline void operator()(
+ Archive &ar,
+ Container &s,
+ const unsigned int v
+ ){
+ typedef BOOST_DEDUCED_TYPENAME Container::value_type type;
+ detail::stack_construct<Archive, type> t(ar, v);
+ // borland fails silently w/o full namespace
+ ar >> boost::serialization::make_nvp("item", t.reference());
+ BOOST_DEDUCED_TYPENAME Container::const_iterator result
+ = s.insert(t.reference());
+ // note: the following presumes that the map::value_type was NOT tracked
+ // in the archive. This is the usual case, but here there is no way
+ // to determine that.
+ ar.reset_object_address(
+ & result->second,
+ & t.reference()
+ );
+ }
+};
+
+// set input
 template<class Archive, class Container>
-struct archive_input_unique
+struct archive_input_set
 {
     inline void operator()(
         Archive &ar,
@@ -77,9 +136,9 @@
     }
 };
 
-// multiset and multimap input
+// multiset input
 template<class Archive, class Container>
-struct archive_input_multi
+struct archive_input_multiset
 {
     inline void operator()(
         Archive &ar,

Modified: branches/proto/v4/boost/serialization/detail/shared_count_132.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/detail/shared_count_132.hpp (original)
+++ branches/proto/v4/boost/serialization/detail/shared_count_132.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -38,6 +38,13 @@
 #include <typeinfo> // std::type_info in get_deleter
 #include <cstddef> // std::size_t
 
+#include <boost/config.hpp> // msvc 6.0 needs this for warning suppression
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::size_t;
+} // namespace std
+#endif
+
 #ifdef __BORLANDC__
 # pragma warn -8026 // Functions with excep. spec. are not expanded inline
 # pragma warn -8027 // Functions containing try are not expanded inline

Modified: branches/proto/v4/boost/serialization/export.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/export.hpp (original)
+++ branches/proto/v4/boost/serialization/export.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -22,6 +22,7 @@
 // that are to be serialized through pointers.
 
 #include <utility>
+#include <cstddef> // NULL
 
 #include <boost/config.hpp>
 #include <boost/static_assert.hpp>
@@ -62,14 +63,14 @@
 {
     static const basic_pointer_iserializer &
     enable_load(mpl::true_){
- return /* BOOST_DEDUCED_TYPENAME */ boost::serialization::singleton<
+ return boost::serialization::singleton<
             pointer_iserializer<Archive, Serializable>
>::get_const_instance();
     }
 
     static const basic_pointer_oserializer &
     enable_save(mpl::true_){
- return /* BOOST_DEDUCED_TYPENAME */ boost::serialization::singleton<
+ return boost::serialization::singleton<
             pointer_oserializer<Archive, Serializable>
>::get_const_instance();
     }
@@ -87,13 +88,11 @@
 {
 # if defined(BOOST_MSVC)
     virtual BOOST_DLLEXPORT void instantiate() BOOST_USED;
-# elif defined(__INTEL_COMPILER)
- virtual BOOST_DLLEXPORT void instantiate() BOOST_USED;
 # elif defined(__BORLANDC__)
- static BOOST_DLLEXPORT void instantiate();
+ static BOOST_DLLEXPORT void instantiate() BOOST_USED;
     enum { x = sizeof(instantiate(),3) };
 # else
- static void instantiate();
+ static BOOST_DLLEXPORT void instantiate() BOOST_USED;
     typedef instantiate_function<
         &ptr_serialization_support::instantiate
> x;
@@ -101,21 +100,28 @@
 };
 
 template <class Archive, class Serializable>
-BOOST_DLLEXPORT void ptr_serialization_support<Archive,Serializable>::instantiate()
+BOOST_DLLEXPORT void
+ptr_serialization_support<Archive,Serializable>::instantiate()
 {
     export_impl<Archive,Serializable>::enable_save(
- BOOST_DEDUCED_TYPENAME Archive::is_saving()
+ #if ! defined(__BORLANDC__)
+ BOOST_DEDUCED_TYPENAME
+ #endif
+ Archive::is_saving()
     );
 
     export_impl<Archive,Serializable>::enable_load(
- BOOST_DEDUCED_TYPENAME Archive::is_loading()
+ #if ! defined(__BORLANDC__)
+ BOOST_DEDUCED_TYPENAME
+ #endif
+ Archive::is_loading()
     );
 }
 
 template<class T>
 struct guid_initializer
 {
- const guid_initializer & export_guid(char const* key, mpl::false_){
+ const guid_initializer & export_guid(char const* /* key */, mpl::false_){
         // generates the statically-initialized objects whose constructors
         // register the information allowing serialization of T objects
         // through pointers to their base classes.

Modified: branches/proto/v4/boost/serialization/extended_type_info.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/extended_type_info.hpp (original)
+++ branches/proto/v4/boost/serialization/extended_type_info.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,6 +20,7 @@
 // this could change in the future.
 #include <cstdarg>
 #include <cassert>
+#include <cstddef> // NULL
 #include <boost/config.hpp>
 #include <boost/serialization/config.hpp>
 

Modified: branches/proto/v4/boost/serialization/factory.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/factory.hpp (original)
+++ branches/proto/v4/boost/serialization/factory.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cstdarg>
+#include <cstddef> // NULL
 
 #include <boost/preprocessor/control/if.hpp>
 #include <boost/preprocessor/comparison/greater.hpp>

Modified: branches/proto/v4/boost/serialization/hash_map.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/hash_map.hpp (original)
+++ branches/proto/v4/boost/serialization/hash_map.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -70,7 +70,7 @@
         BOOST_STD_EXTENSION_NAMESPACE::hash_map<
             Key, HashFcn, EqualKey, Allocator
>,
- boost::serialization::stl::archive_input_unique<
+ boost::serialization::stl::archive_input_map<
             Archive,
             BOOST_STD_EXTENSION_NAMESPACE::hash_map<
                 Key, HashFcn, EqualKey, Allocator
@@ -140,7 +140,7 @@
         BOOST_STD_EXTENSION_NAMESPACE::hash_multimap<
             Key, HashFcn, EqualKey, Allocator
>,
- boost::serialization::stl::archive_input_multi<
+ boost::serialization::stl::archive_input_multimap<
             Archive,
             BOOST_STD_EXTENSION_NAMESPACE::hash_multimap<
                 Key, HashFcn, EqualKey, Allocator

Modified: branches/proto/v4/boost/serialization/hash_set.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/hash_set.hpp (original)
+++ branches/proto/v4/boost/serialization/hash_set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -68,7 +68,7 @@
         BOOST_STD_EXTENSION_NAMESPACE::hash_set<
             Key, HashFcn, EqualKey, Allocator
>,
- boost::serialization::stl::archive_input_unique<
+ boost::serialization::stl::archive_input_set<
             Archive,
             BOOST_STD_EXTENSION_NAMESPACE::hash_set<
                 Key, HashFcn, EqualKey, Allocator
@@ -138,7 +138,7 @@
         BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<
             Key, HashFcn, EqualKey, Allocator
>,
- boost::serialization::stl::archive_input_multi<
+ boost::serialization::stl::archive_input_multiset<
             Archive,
             BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<
                 Key, HashFcn, EqualKey, Allocator

Modified: branches/proto/v4/boost/serialization/map.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/map.hpp (original)
+++ branches/proto/v4/boost/serialization/map.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -50,7 +50,7 @@
     boost::serialization::stl::load_collection<
         Archive,
         std::map<Key, Type, Compare, Allocator>,
- boost::serialization::stl::archive_input_unique<
+ boost::serialization::stl::archive_input_map<
             Archive, std::map<Key, Type, Compare, Allocator> >,
             boost::serialization::stl::no_reserve_imp<std::map<
                 Key, Type, Compare, Allocator
@@ -92,7 +92,7 @@
     boost::serialization::stl::load_collection<
         Archive,
         std::multimap<Key, Type, Compare, Allocator>,
- boost::serialization::stl::archive_input_multi<
+ boost::serialization::stl::archive_input_multimap<
             Archive, std::multimap<Key, Type, Compare, Allocator>
>,
         boost::serialization::stl::no_reserve_imp<

Modified: branches/proto/v4/boost/serialization/serialization.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/serialization.hpp (original)
+++ branches/proto/v4/boost/serialization/serialization.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,14 +10,7 @@
 # pragma warning (disable : 4675) // suppress ADL warning
 #endif
 
-#include <cstddef> // size_t
 #include <boost/config.hpp>
-#if defined(BOOST_NO_STDC_NAMESPACE)
-namespace std{
- using ::size_t;
-} // namespace std
-#endif
-
 #include <boost/strong_typedef.hpp>
 #include <boost/pfto.hpp>
 #include <boost/throw_exception.hpp>

Modified: branches/proto/v4/boost/serialization/set.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/set.hpp (original)
+++ branches/proto/v4/boost/serialization/set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -47,7 +47,7 @@
     boost::serialization::stl::load_collection<
         Archive,
         std::set<Key, Compare, Allocator>,
- boost::serialization::stl::archive_input_unique<
+ boost::serialization::stl::archive_input_set<
             Archive, std::set<Key, Compare, Allocator>
>,
         boost::serialization::stl::no_reserve_imp<std::set<
@@ -89,7 +89,7 @@
     boost::serialization::stl::load_collection<
         Archive,
         std::multiset<Key, Compare, Allocator>,
- boost::serialization::stl::archive_input_multi<
+ boost::serialization::stl::archive_input_multiset<
             Archive, std::multiset<Key, Compare, Allocator>
>,
         boost::serialization::stl::no_reserve_imp<

Modified: branches/proto/v4/boost/serialization/shared_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/shared_ptr.hpp (original)
+++ branches/proto/v4/boost/serialization/shared_ptr.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <map>
+#include <cstddef> // NULL
 
 #include <boost/config.hpp>
 #include <boost/mpl/integral_c.hpp>

Modified: branches/proto/v4/boost/serialization/shared_ptr_132.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/shared_ptr_132.hpp (original)
+++ branches/proto/v4/boost/serialization/shared_ptr_132.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -23,6 +23,7 @@
 #include <boost/config.hpp>
 
 #include <list>
+#include <cstddef> // NULL
 
 #include <boost/serialization/assume_abstract.hpp>
 #include <boost/serialization/split_free.hpp>

Modified: branches/proto/v4/boost/serialization/singleton.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/singleton.hpp (original)
+++ branches/proto/v4/boost/serialization/singleton.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -67,7 +67,9 @@
 // make a singleton to lock/unlock all singletons for alteration.
 // The intent is that all singletons created/used by this code
 // are to be initialized before main is called. A test program
-// can lock all the single
+// can lock all the singletons when main is entereed. This any
+// attempt to retieve a mutable instances while locked will
+// generate a assertion if compiled for debug.
 
 class singleton_module : public boost::noncopyable
 {
@@ -98,7 +100,7 @@
     BOOST_DLLEXPORT static T & instance;
     // include this to provoke instantiation at pre-execution time
     static void use(T const &) {}
- static T & get_instance(){
+ BOOST_DLLEXPORT static T & get_instance() {
         static T t;
         // refer to instance, causing it to be instantiated (and
         // initialized at startup on working compilers)
@@ -106,14 +108,13 @@
         return t;
     }
 public:
- static T & get_mutable_instance(){
+ BOOST_DLLEXPORT static T & get_mutable_instance(){
         assert(! is_locked());
         return get_instance();
     }
- static const T & get_const_instance(){
+ BOOST_DLLEXPORT static const T & get_const_instance(){
         return get_instance();
     }
-
 };
 
 template<class T>

Modified: branches/proto/v4/boost/serialization/slist.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/slist.hpp (original)
+++ branches/proto/v4/boost/serialization/slist.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,7 +16,14 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
-#include <boost/config.hpp>
+#include <cstddef> // size_t
+#include <boost/config.hpp> // msvc 6.0 needs this for warning suppression
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::size_t;
+} // namespace std
+#endif
+
 #ifdef BOOST_HAS_SLIST
 #include BOOST_SLIST_HEADER
 

Modified: branches/proto/v4/boost/serialization/utility.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/utility.hpp (original)
+++ branches/proto/v4/boost/serialization/utility.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -50,10 +50,6 @@
 {
 };
 
-//template <class T, class U>
-//struct implementation_level<std::pair<T,U> >
-// : mpl::int_<object_serializable> {} ;
-
 } // serialization
 } // namespace boost
 

Modified: branches/proto/v4/boost/serialization/valarray.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/valarray.hpp (original)
+++ branches/proto/v4/boost/serialization/valarray.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,7 +7,7 @@
 #endif
 
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// vector.hpp: serialization for stl vector templates
+// valarray.hpp: serialization for stl vector templates
 
 // (C) Copyright 2005 Matthias Troyer .
 // Use, modification and distribution is subject to the Boost Software

Modified: branches/proto/v4/boost/serialization/vector.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/vector.hpp (original)
+++ branches/proto/v4/boost/serialization/vector.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,9 +27,14 @@
 #include <boost/serialization/split_free.hpp>
 #include <boost/serialization/array.hpp>
 #include <boost/serialization/detail/get_data.hpp>
-#include <boost/detail/has_default_constructor.hpp>
 #include <boost/mpl/bool.hpp>
 
+// default is being compatible with version 1.34.1 files, not 1.35 files
+#ifndef BOOST_SERIALIZATION_VECTOR_VERSION
+#define BOOST_SERIALIZATION_VECTOR_VERSION 3
+#endif
+
+
 namespace boost {
 namespace serialization {
 
@@ -78,7 +83,11 @@
 ){
     const collection_size_type count(t.size());
     ar << BOOST_SERIALIZATION_NVP(count);
- if (!t.empty())
+ if(BOOST_SERIALIZATION_VECTOR_VERSION < ar.get_library_version()) {
+ const unsigned int item_version = version<U>::value;
+ ar << BOOST_SERIALIZATION_NVP(item_version);
+ }
+ if (!t.empty())
       ar << make_array(detail::get_data(t),t.size());
 }
 
@@ -92,6 +101,9 @@
     collection_size_type count(t.size());
     ar >> BOOST_SERIALIZATION_NVP(count);
     t.resize(count);
+ unsigned int item_version=0;
+ if(BOOST_SERIALIZATION_VECTOR_VERSION < ar.get_library_version())
+ ar >> BOOST_SERIALIZATION_NVP(item_version);
     if (!t.empty())
       ar >> make_array(detail::get_data(t),t.size());
   }
@@ -104,7 +116,7 @@
     const std::vector<U, Allocator> &t,
     const unsigned int file_version
 ){
- save(ar,t,file_version, boost::detail::has_default_constructor<U>());
+ save(ar,t,file_version, BOOST_DEDUCED_TYPENAME use_array_optimization<Archive>::template apply<U>::type());
 }
 
 template<class Archive, class U, class Allocator>
@@ -113,7 +125,7 @@
     std::vector<U, Allocator> &t,
     const unsigned int file_version
 ){
- load(ar,t,file_version, boost::detail::has_default_constructor<U>());
+ load(ar,t,file_version, BOOST_DEDUCED_TYPENAME use_array_optimization<Archive>::template apply<U>::type());
 }
 
 // split non-intrusive serialization function member into separate

Modified: branches/proto/v4/boost/serialization/void_cast.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/void_cast.hpp (original)
+++ branches/proto/v4/boost/serialization/void_cast.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -22,6 +22,7 @@
 #include <boost/serialization/force_include.hpp>
 #include <boost/serialization/type_info_implementation.hpp>
 #include <boost/serialization/config.hpp>
+#include <boost/serialization/force_include.hpp>
 #include <boost/config/abi_prefix.hpp> // must be the last header
 
 #ifdef BOOST_MSVC
@@ -32,7 +33,7 @@
 namespace boost {
 namespace serialization {
 
-class extended_type_info;
+BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY()) class extended_type_info;
 
 // Given a void *, assume that it really points to an instance of one type
 // and alter it so that it would point to an instance of a related type.
@@ -138,12 +139,12 @@
         return b;
     }
 public:
- void_caster_primitive();
+ BOOST_DLLEXPORT void_caster_primitive() BOOST_USED;
     ~void_caster_primitive();
 };
 
 template <class Derived, class Base>
-void_caster_primitive<Derived, Base>::void_caster_primitive() :
+BOOST_DLLEXPORT void_caster_primitive<Derived, Base>::void_caster_primitive() :
     void_caster(
         type_info_implementation<Derived>::type::get_const_instance(),
         type_info_implementation<Base>::type::get_const_instance()

Modified: branches/proto/v4/boost/serialization/void_cast_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/void_cast_fwd.hpp (original)
+++ branches/proto/v4/boost/serialization/void_cast_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,7 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
+#include <cstddef> // NULL
 #include <boost/serialization/force_include.hpp>
 
 namespace boost {

Modified: branches/proto/v4/boost/shared_ptr.hpp
==============================================================================
--- branches/proto/v4/boost/shared_ptr.hpp (original)
+++ branches/proto/v4/boost/shared_ptr.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,7 +5,7 @@
 // shared_ptr.hpp
 //
 // (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
-// Copyright (c) 2001-2007 Peter Dimov
+// 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
@@ -516,65 +516,11 @@
         return pn < rhs.pn;
     }
 
- // atomic access
-
-#if !defined(BOOST_SP_NO_ATOMIC_ACCESS)
-
- shared_ptr<T> atomic_load( memory_order /*mo*/ = memory_order_seq_cst ) const
- {
- boost::detail::spinlock_pool<2>::scoped_lock lock( this );
- return *this;
- }
-
- void atomic_store( shared_ptr<T> r, memory_order /*mo*/ = memory_order_seq_cst )
- {
- boost::detail::spinlock_pool<2>::scoped_lock lock( this );
- swap( r );
- }
-
- shared_ptr<T> atomic_swap( shared_ptr<T> r, memory_order /*mo*/ = memory_order_seq_cst )
+ bool _internal_equiv( shared_ptr const & r ) const
     {
- boost::detail::spinlock & sp = boost::detail::spinlock_pool<2>::spinlock_for( this );
-
- sp.lock();
- swap( r );
- sp.unlock();
-
- return r; // return std::move(r)
+ return px == r.px && pn == r.pn;
     }
 
- bool atomic_compare_swap( shared_ptr<T> & v, shared_ptr<T> w )
- {
- boost::detail::spinlock & sp = boost::detail::spinlock_pool<2>::spinlock_for( this );
-
- sp.lock();
-
- if( px == v.px && pn == v.pn )
- {
- swap( w );
-
- sp.unlock();
-
- return true;
- }
- else
- {
- shared_ptr tmp( *this );
-
- sp.unlock();
-
- tmp.swap( v );
- return false;
- }
- }
-
- inline bool atomic_compare_swap( shared_ptr<T> & v, shared_ptr<T> w, memory_order /*success*/, memory_order /*failure*/ )
- {
- return atomic_compare_swap( v, w ); // std::move( w )
- }
-
-#endif
-
 // Tasteless as this may seem, making all members public allows member templates
 // to work in the absence of member template friends. (Matthew Langston)
 
@@ -784,6 +730,85 @@
     return del;
 }
 
+// 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

Modified: branches/proto/v4/boost/signals/signal1.hpp
==============================================================================
--- branches/proto/v4/boost/signals/signal1.hpp (original)
+++ branches/proto/v4/boost/signals/signal1.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 #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;
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg1_type;
 
 #include <boost/signals/signal_template.hpp>
 

Modified: branches/proto/v4/boost/signals/signal10.hpp
==============================================================================
--- branches/proto/v4/boost/signals/signal10.hpp (original)
+++ branches/proto/v4/boost/signals/signal10.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 #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;
+#define BOOST_SIGNALS_ARG_TYPES 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;
 
 #include <boost/signals/signal_template.hpp>
 

Modified: branches/proto/v4/boost/signals/signal2.hpp
==============================================================================
--- branches/proto/v4/boost/signals/signal2.hpp (original)
+++ branches/proto/v4/boost/signals/signal2.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 #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;
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg1_type; typedef T2 arg2_type;
 
 #include <boost/signals/signal_template.hpp>
 

Modified: branches/proto/v4/boost/signals/signal3.hpp
==============================================================================
--- branches/proto/v4/boost/signals/signal3.hpp (original)
+++ branches/proto/v4/boost/signals/signal3.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 #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;
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg1_type; typedef T2 arg2_type; typedef T3 arg3_type;
 
 #include <boost/signals/signal_template.hpp>
 

Modified: branches/proto/v4/boost/signals/signal4.hpp
==============================================================================
--- branches/proto/v4/boost/signals/signal4.hpp (original)
+++ branches/proto/v4/boost/signals/signal4.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 #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;
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg1_type; typedef T2 arg2_type; typedef T3 arg3_type; typedef T4 arg4_type;
 
 #include <boost/signals/signal_template.hpp>
 

Modified: branches/proto/v4/boost/signals/signal5.hpp
==============================================================================
--- branches/proto/v4/boost/signals/signal5.hpp (original)
+++ branches/proto/v4/boost/signals/signal5.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 #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;
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg1_type; typedef T2 arg2_type; typedef T3 arg3_type; typedef T4 arg4_type; typedef T5 arg5_type;
 
 #include <boost/signals/signal_template.hpp>
 

Modified: branches/proto/v4/boost/signals/signal6.hpp
==============================================================================
--- branches/proto/v4/boost/signals/signal6.hpp (original)
+++ branches/proto/v4/boost/signals/signal6.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 #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;
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg1_type; typedef T2 arg2_type; typedef T3 arg3_type; typedef T4 arg4_type; typedef T5 arg5_type; typedef T6 arg6_type;
 
 #include <boost/signals/signal_template.hpp>
 

Modified: branches/proto/v4/boost/signals/signal7.hpp
==============================================================================
--- branches/proto/v4/boost/signals/signal7.hpp (original)
+++ branches/proto/v4/boost/signals/signal7.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 #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;
+#define BOOST_SIGNALS_ARG_TYPES 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;
 
 #include <boost/signals/signal_template.hpp>
 

Modified: branches/proto/v4/boost/signals/signal8.hpp
==============================================================================
--- branches/proto/v4/boost/signals/signal8.hpp (original)
+++ branches/proto/v4/boost/signals/signal8.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 #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;
+#define BOOST_SIGNALS_ARG_TYPES 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;
 
 #include <boost/signals/signal_template.hpp>
 

Modified: branches/proto/v4/boost/signals/signal9.hpp
==============================================================================
--- branches/proto/v4/boost/signals/signal9.hpp (original)
+++ branches/proto/v4/boost/signals/signal9.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 #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;
+#define BOOST_SIGNALS_ARG_TYPES 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;
 
 #include <boost/signals/signal_template.hpp>
 

Modified: branches/proto/v4/boost/smart_cast.hpp
==============================================================================
--- branches/proto/v4/boost/smart_cast.hpp (original)
+++ branches/proto/v4/boost/smart_cast.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -36,6 +36,7 @@
 
 #include <exception>
 #include <typeinfo>
+#include <cstddef> // NULL
 
 #include <boost/config.hpp>
 #include <boost/static_assert.hpp>

Modified: branches/proto/v4/boost/spirit.hpp
==============================================================================
--- branches/proto/v4/boost/spirit.hpp (original)
+++ branches/proto/v4/boost/spirit.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SPIRIT
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SPIRIT
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/assign_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/assign_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/assign_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSIGN_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSIGN_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_assign_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_assign_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/assign_key_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/assign_key_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/assign_key_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSIGN_KEY_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSIGN_KEY_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_assign_key_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_assign_key_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/clear_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/clear_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/clear_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CLEAR_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CLEAR_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_clear_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_clear_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/decrement_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/decrement_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/decrement_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DECREMENT_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_DECREMENT_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_decrement_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_decrement_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/erase_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/erase_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/erase_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ERASE_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ERASE_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_erase_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_erase_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/increment_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/increment_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/increment_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_INCREMENT_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_INCREMENT_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_increment_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_increment_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/insert_at_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/insert_at_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/insert_at_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_INSERT_AT_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_INSERT_AT_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_insert_at_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_insert_at_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/insert_key_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/insert_key_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/insert_key_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_INSERT_KEY_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_INSERT_KEY_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_insert_key_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_insert_key_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/push_back_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/push_back_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/push_back_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PUSH_BACK_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PUSH_BACK_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_push_back_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_push_back_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/push_front_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/push_front_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/push_front_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PUSH_FRONT_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PUSH_FRONT_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_push_front_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_push_front_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/ref_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/ref_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/ref_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ref_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_ref_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/ref_const_ref_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/ref_const_ref_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/ref_const_ref_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/ref_const_ref_const_ref_a.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/ref_const_ref_const_ref_a.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/ref_const_ref_const_ref_a.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_CONST_REF_A
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_CONST_REF_A
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_const_ref_a.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/ref_const_ref_value_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/ref_const_ref_value_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/ref_const_ref_value_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_VALUE_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_CONST_REF_VALUE_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_value_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_ref_const_ref_value_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/ref_value_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/ref_value_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/ref_value_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_VALUE_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_REF_VALUE_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ref_value_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_ref_value_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/swap_actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/swap_actor.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/swap_actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SWAP_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SWAP_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_swap_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_swap_actor.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/actor/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/actor/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/actor/typeof.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/attribute.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ATTRIBUTE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ATTRIBUTE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_attribute.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_attribute.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/attribute/closure.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute/closure.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute/closure.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_closure.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_closure.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/attribute/closure_context.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute/closure_context.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute/closure_context.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE_CONTEXT
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE_CONTEXT
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_closure_context.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_closure_context.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/attribute/closure_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute/closure_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute/closure_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURE_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_closure_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_closure_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/attribute/parametric.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute/parametric.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute/parametric.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARAMETRIC
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARAMETRIC
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parametric.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_parametric.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/attribute/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/attribute/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/attribute/typeof.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core.hpp (original)
+++ branches/proto/v4/boost/spirit/core.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CORE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CORE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_core.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_core.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/assert.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/assert.hpp (original)
+++ branches/proto/v4/boost/spirit/core/assert.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSERT
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ASSERT
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_assert.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_assert.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/actions.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/actions.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/actions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTIONS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTIONS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_actions.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_actions.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/alternative.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/alternative.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/alternative.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ALTERNATIVE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ALTERNATIVE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_alternative.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_alternative.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/composite.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/composite.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/composite.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_COMPOSITE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_COMPOSITE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_composite.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_composite.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/difference.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/difference.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/difference.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DIFFERENCE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_DIFFERENCE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_difference.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_difference.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/directives.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/directives.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/directives.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DIRECTIVES
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_DIRECTIVES
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_directives.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_directives.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/epsilon.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/epsilon.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/epsilon.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_EPSILON
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_EPSILON
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_epsilon.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_epsilon.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/exclusive_or.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/exclusive_or.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/exclusive_or.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCLUSIVE_OR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCLUSIVE_OR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_exclusive_or.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_exclusive_or.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/intersection.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/intersection.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/intersection.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_INTERSECTION
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_INTERSECTION
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_intersection.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_intersection.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/kleene_star.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/kleene_star.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/kleene_star.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_KLEENE_STAR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_KLEENE_STAR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_kleene_star.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_kleene_star.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/list.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/list.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/list.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_LIST
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_LIST
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_list.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_list.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/no_actions.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/no_actions.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/no_actions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_NO_ACTIONS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_NO_ACTIONS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_no_actions.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_no_actions.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/operators.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/operators.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/operators.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_OPERATORS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_OPERATORS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_operators.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_operators.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/optional.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/optional.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/optional.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_OPTIONAL
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_OPTIONAL
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_optional.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_optional.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/positive.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/positive.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/positive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITIVE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITIVE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_positive.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_positive.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/sequence.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/sequence.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/sequence.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENCE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENCE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_sequence.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_sequence.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/sequential_and.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/sequential_and.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/sequential_and.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENTIAL_AND
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENTIAL_AND
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_sequential_and.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_sequential_and.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/composite/sequential_or.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/composite/sequential_or.hpp (original)
+++ branches/proto/v4/boost/spirit/core/composite/sequential_or.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENTIAL_OR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SEQUENTIAL_OR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_sequential_or.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_sequential_or.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/config.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/config.hpp (original)
+++ branches/proto/v4/boost/spirit/core/config.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIG
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIG
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_config.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_config.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/match.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/match.hpp (original)
+++ branches/proto/v4/boost/spirit/core/match.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_MATCH
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_MATCH
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_match.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_match.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/nil.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/nil.hpp (original)
+++ branches/proto/v4/boost/spirit/core/nil.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_NIL
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_NIL
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_nil.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_nil.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/non_terminal/grammar.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/grammar.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/grammar.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_grammar.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_grammar.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/non_terminal/parser_context.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/parser_context.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/parser_context.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_CONTEXT
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_CONTEXT
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parser_context.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_parser_context.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/non_terminal/parser_id.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/parser_id.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/parser_id.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_ID
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_ID
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parser_id.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_parser_id.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/non_terminal/rule.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/rule.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/rule.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_rule.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_rule.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/non_terminal/subrule.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/subrule.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/subrule.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SUBRULE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SUBRULE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_subrule.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_subrule.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/non_terminal/subrule_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/non_terminal/subrule_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/core/non_terminal/subrule_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SUBRULE_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SUBRULE_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_subrule_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_subrule_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/parser.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/parser.hpp (original)
+++ branches/proto/v4/boost/spirit/core/parser.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parser.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_parser.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/primitives/numerics.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/primitives/numerics.hpp (original)
+++ branches/proto/v4/boost/spirit/core/primitives/numerics.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_NUMERICS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_NUMERICS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_numerics.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_numerics.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/primitives/numerics_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/primitives/numerics_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/core/primitives/numerics_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_NUMERICS_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_NUMERICS_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_numerics_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_numerics_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/primitives/primitives.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/primitives/primitives.hpp (original)
+++ branches/proto/v4/boost/spirit/core/primitives/primitives.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PRIMITIVES
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PRIMITIVES
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_primitives.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_primitives.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/safe_bool.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/safe_bool.hpp (original)
+++ branches/proto/v4/boost/spirit/core/safe_bool.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SAFE_BOOL
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SAFE_BOOL
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_safe_bool.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_safe_bool.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/scanner/scanner.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/scanner/scanner.hpp (original)
+++ branches/proto/v4/boost/spirit/core/scanner/scanner.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SCANNER
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SCANNER
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_scanner.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_scanner.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/scanner/scanner_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/scanner/scanner_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/core/scanner/scanner_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SCANNER_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SCANNER_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_scanner_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_scanner_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/scanner/skipper.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/scanner/skipper.hpp (original)
+++ branches/proto/v4/boost/spirit/core/scanner/skipper.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SKIPPER
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SKIPPER
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_skipper.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_skipper.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/scanner/skipper_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/scanner/skipper_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/core/scanner/skipper_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SKIPPER_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SKIPPER_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_skipper_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_skipper_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/core/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/core/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/core/typeof.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/debug.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/debug.hpp (original)
+++ branches/proto/v4/boost/spirit/debug.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DEBUG
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_DEBUG
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_debug.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_debug.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/debug/debug_node.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/debug/debug_node.hpp (original)
+++ branches/proto/v4/boost/spirit/debug/debug_node.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DEBUG_NODE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_DEBUG_NODE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_debug_node.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_debug_node.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/debug/minimal.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/debug/minimal.hpp (original)
+++ branches/proto/v4/boost/spirit/debug/minimal.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_MINIMAL
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_MINIMAL
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_minimal.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_minimal.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/debug/parser_names.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/debug/parser_names.hpp (original)
+++ branches/proto/v4/boost/spirit/debug/parser_names.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_NAMES
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_NAMES
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parser_names.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_parser_names.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/debug/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/debug/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/debug/typeof.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DYNAMIC
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_DYNAMIC
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_dynamic.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_dynamic.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic/for.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/for.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/for.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_FOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_for.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_for.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic/if.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/if.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/if.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_IF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_IF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_if.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_if.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic/lazy.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/lazy.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/lazy.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_LAZY
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_LAZY
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_lazy.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_lazy.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic/rule_alias.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/rule_alias.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/rule_alias.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE_ALIAS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE_ALIAS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_rule_alias.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_rule_alias.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic/select.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/select.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/select.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SELECT
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SELECT
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_select.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_select.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic/stored_rule.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/stored_rule.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/stored_rule.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_STORED_RULE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_STORED_RULE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_stored_rule.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_stored_rule.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic/stored_rule_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/stored_rule_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/stored_rule_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_STORED_RULE_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_STORED_RULE_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_stored_rule_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_stored_rule_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic/switch.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/switch.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/switch.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SWITCH
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SWITCH
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_switch.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_switch.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/typeof.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/dynamic/while.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/dynamic/while.hpp (original)
+++ branches/proto/v4/boost/spirit/dynamic/while.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_WHILE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_WHILE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_while.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_while.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/error_handling.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/error_handling.hpp (original)
+++ branches/proto/v4/boost/spirit/error_handling.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ERROR_HANDLING
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ERROR_HANDLING
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_error_handling.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_error_handling.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/error_handling/exceptions.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/error_handling/exceptions.hpp (original)
+++ branches/proto/v4/boost/spirit/error_handling/exceptions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCEPTIONS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCEPTIONS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_exceptions.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_exceptions.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/error_handling/exceptions_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/error_handling/exceptions_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/error_handling/exceptions_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCEPTIONS_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_EXCEPTIONS_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_exceptions_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_exceptions_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/error_handling/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/error_handling/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/error_handling/typeof.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/home/classic/core/non_terminal/impl/static.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/classic/core/non_terminal/impl/static.hpp (original)
+++ branches/proto/v4/boost/spirit/home/classic/core/non_terminal/impl/static.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 2006 João Abecasis
+ Copyright (c) 2006 Joao Abecasis
     http://spirit.sourceforge.net/
 
   Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -34,7 +34,7 @@
     // Requirements:
     // T is default constructible
     // (There's an alternate implementation that relaxes this
- // requirement -- João Abecasis)
+ // requirement -- Joao Abecasis)
     // T::T() MUST not throw!
     // this is a requirement of boost::call_once.
     //
@@ -42,29 +42,33 @@
     struct static_
         : boost::noncopyable
     {
- typedef T value_type;
- typedef typename boost::call_traits<T>::reference reference;
- typedef typename boost::call_traits<T>::const_reference const_reference;
+ private:
 
- static_(Tag = Tag())
+ struct destructor
         {
- struct destructor
+ ~destructor()
             {
- ~destructor()
- {
- static_::get_address()->~value_type();
- }
- };
+ static_::get_address()->~value_type();
+ }
+ };
 
- struct default_ctor
+ struct default_ctor
+ {
+ static void construct()
             {
- static void construct()
- {
- ::new (static_::get_address()) value_type();
- static destructor d;
- }
- };
+ ::new (static_::get_address()) value_type();
+ static destructor d;
+ }
+ };
+
+ public:
 
+ typedef T value_type;
+ typedef typename boost::call_traits<T>::reference reference;
+ typedef typename boost::call_traits<T>::const_reference const_reference;
+
+ static_(Tag = Tag())
+ {
             boost::call_once(&default_ctor::construct, constructed_);
         }
 

Modified: branches/proto/v4/boost/spirit/home/classic/phoenix/closures.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/classic/phoenix/closures.hpp (original)
+++ branches/proto/v4/boost/spirit/home/classic/phoenix/closures.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -348,8 +348,6 @@
 
                             closure()
                             : frame() { closure_frame_holder_ref(&frame); }
- closure_frame_t& context() { assert(frame!=0); return frame.get(); }
- closure_frame_t const& context() const { assert(frame!=0); return frame.get(); }
 
     typedef actor<closure_member<0, self_t> > member1;
     typedef actor<closure_member<1, self_t> > member2;

Modified: branches/proto/v4/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp
==============================================================================
--- branches/proto/v4/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp (original)
+++ branches/proto/v4/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,6 +15,7 @@
 #include <cstdarg>
 #include <locale>
 #include <string>
+#include <cstring>
 
 #include <map>
 #include <iostream>
@@ -24,7 +25,7 @@
 #ifdef BOOST_NO_STRINGSTREAM
 #include <strstream>
 #define BOOST_SPIRIT_OSSTREAM std::ostrstream
-inline
+inline
 std::string BOOST_SPIRIT_GETSTRING(std::ostrstream& ss)
 {
     ss << std::ends;
@@ -45,32 +46,32 @@
 namespace impl {
 
     ///////////////////////////////////////////////////////////////////////////
- template <typename CharT>
+ template <typename CharT>
     struct string_lit;
-
- template <>
+
+ template <>
     struct string_lit<char>
     {
         static char get(char c) { return c; }
         static std::string get(char const* str = "") { return str; }
     };
 
- template <>
+ template <>
     struct string_lit<wchar_t>
     {
- static wchar_t get(char c)
- {
+ static wchar_t get(char c)
+ {
             typedef std::ctype<wchar_t> ctype_t;
- return std::use_facet<ctype_t>(std::locale()).widen(c);
+ return std::use_facet<ctype_t>(std::locale()).widen(c);
         }
- static std::basic_string<wchar_t> get(char const* source = "")
- {
+ static std::basic_string<wchar_t> get(char const* source = "")
+ {
             using namespace std; // some systems have size_t in ns std
             size_t len = strlen(source);
             std::auto_ptr<wchar_t> result (new wchar_t[len+1]);
             result.get()[len] = '\0';
 
- // working with wide character streams is supported only if the
+ // working with wide character streams is supported only if the
             // platform provides the std::ctype<wchar_t> facet
             BOOST_ASSERT(std::has_facet<std::ctype<wchar_t> >(std::locale()));
 
@@ -126,8 +127,8 @@
         {
         }
 
- attribute (std::basic_string<CharT> const& key_,
- std::basic_string<CharT> const& value_)
+ attribute (std::basic_string<CharT> const& key_,
+ std::basic_string<CharT> const& value_)
           : key (key_), value(value_)
         {
         }
@@ -147,8 +148,8 @@
     {
         if (0 == attr.key.size())
             return ostrm;
- ostrm << impl::string_lit<CharT>::get(" ") << encode(attr.key)
- << impl::string_lit<CharT>::get("=\"") << encode(attr.value)
+ ostrm << impl::string_lit<CharT>::get(" ") << encode(attr.key)
+ << impl::string_lit<CharT>::get("=\"") << encode(attr.value)
               << impl::string_lit<CharT>::get("\"");
         return ostrm;
     }
@@ -158,7 +159,7 @@
     class element
     {
     protected:
- element(std::basic_ostream<CharT> &ostrm_, bool incr_indent_ = true)
+ element(std::basic_ostream<CharT> &ostrm_, bool incr_indent_ = true)
         : ostrm(ostrm_), incr_indent(incr_indent_)
         {
             if (incr_indent) ++get_indent();
@@ -192,29 +193,29 @@
     class node : public element<CharT>
     {
     public:
- node (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& tag_, attribute<CharT> &attr)
+ node (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag_, attribute<CharT> &attr)
         : element<CharT>(ostrm_), tag(tag_)
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("<") << tag_ << attr
+ this->ostrm
+ << impl::string_lit<CharT>::get("<") << tag_ << attr
                   << impl::string_lit<CharT>::get(">\n");
         }
- node (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& tag_)
+ node (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag_)
         : element<CharT>(ostrm_), tag(tag_)
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("<") << tag_
+ this->ostrm
+ << impl::string_lit<CharT>::get("<") << tag_
                   << impl::string_lit<CharT>::get(">\n");
         }
         ~node()
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("</") << tag
+ this->ostrm
+ << impl::string_lit<CharT>::get("</") << tag
                   << impl::string_lit<CharT>::get(">\n");
         }
 
@@ -226,44 +227,44 @@
     class text : public element<CharT>
     {
     public:
- text (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& tag,
- std::basic_string<CharT> const& textlit)
+ text (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag,
+ std::basic_string<CharT> const& textlit)
         : element<CharT>(ostrm_)
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("<") << tag
+ this->ostrm
+ << impl::string_lit<CharT>::get("<") << tag
                   << impl::string_lit<CharT>::get(">") << encode(textlit)
- << impl::string_lit<CharT>::get("</") << tag
+ << impl::string_lit<CharT>::get("</") << tag
                   << impl::string_lit<CharT>::get(">\n");
         }
 
- text (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& tag,
- std::basic_string<CharT> const& textlit,
- attribute<CharT> &attr)
+ text (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag,
+ std::basic_string<CharT> const& textlit,
+ attribute<CharT> &attr)
         : element<CharT>(ostrm_)
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("<") << tag << attr
+ this->ostrm
+ << impl::string_lit<CharT>::get("<") << tag << attr
                   << impl::string_lit<CharT>::get(">") << encode(textlit)
- << impl::string_lit<CharT>::get("</") << tag
+ << impl::string_lit<CharT>::get("</") << tag
                   << impl::string_lit<CharT>::get(">\n");
         }
 
- text (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& tag,
- std::basic_string<CharT> const& textlit,
- attribute<CharT> &attr1, attribute<CharT> &attr2)
+ text (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& tag,
+ std::basic_string<CharT> const& textlit,
+ attribute<CharT> &attr1, attribute<CharT> &attr2)
         : element<CharT>(ostrm_)
         {
             this->output_space();
- this->ostrm
- << impl::string_lit<CharT>::get("<") << tag << attr1 << attr2
+ this->ostrm
+ << impl::string_lit<CharT>::get("<") << tag << attr1 << attr2
                   << impl::string_lit<CharT>::get(">") << encode(textlit)
- << impl::string_lit<CharT>::get("</") << tag
+ << impl::string_lit<CharT>::get("</") << tag
                   << impl::string_lit<CharT>::get(">\n");
         }
     };
@@ -273,15 +274,15 @@
     class comment : public element<CharT>
     {
     public:
- comment (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& commentlit)
+ comment (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& commentlit)
         : element<CharT>(ostrm_, false)
         {
             if ('\0' != commentlit[0])
             {
                 this->output_space();
- this->ostrm << impl::string_lit<CharT>::get("<!-- ")
- << encode(commentlit)
+ this->ostrm << impl::string_lit<CharT>::get("<!-- ")
+ << encode(commentlit)
                       << impl::string_lit<CharT>::get(" -->\n");
             }
         }
@@ -292,7 +293,7 @@
     class document : public element<CharT>
     {
     public:
- document (std::basic_ostream<CharT> &ostrm_)
+ document (std::basic_ostream<CharT> &ostrm_)
         : element<CharT>(ostrm_)
         {
             this->get_indent() = -1;
@@ -300,9 +301,9 @@
                 "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n");
         }
 
- document (std::basic_ostream<CharT> &ostrm_,
- std::basic_string<CharT> const& mainnode,
- std::basic_string<CharT> const& dtd)
+ document (std::basic_ostream<CharT> &ostrm_,
+ std::basic_string<CharT> const& mainnode,
+ std::basic_string<CharT> const& dtd)
         : element<CharT>(ostrm_)
         {
             this->get_indent() = -1;
@@ -310,7 +311,7 @@
                 "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n");
 
             this->output_space();
- this->ostrm << impl::string_lit<CharT>::get("<!DOCTYPE ") << mainnode
+ this->ostrm << impl::string_lit<CharT>::get("<!DOCTYPE ") << mainnode
                   << impl::string_lit<CharT>::get(" SYSTEM \"") << dtd
                   << impl::string_lit<CharT>::get("\">\n");
         }
@@ -324,7 +325,7 @@
 
 namespace impl {
 
- ///////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////////////
     // look up the rule name from the given parser_id
     template <typename AssocContainerT>
     inline typename AssocContainerT::value_type::second_type
@@ -343,23 +344,23 @@
         typename CharT, typename IteratorT, typename GetIdT, typename GetValueT
>
     inline void
- token_to_xml (std::basic_ostream<CharT> &ostrm, IteratorT const &it,
+ token_to_xml (std::basic_ostream<CharT> &ostrm, IteratorT const &it,
         bool is_root, GetIdT const &get_token_id, GetValueT const &get_token_value)
     {
         BOOST_SPIRIT_OSSTREAM stream;
 
         stream << get_token_id(*it) << std::ends;
         xml::attribute<CharT> token_id (
- impl::string_lit<CharT>::get("id"),
+ impl::string_lit<CharT>::get("id"),
                 BOOST_SPIRIT_GETSTRING(stream).c_str());
         xml::attribute<CharT> is_root_attr (
- impl::string_lit<CharT>::get("is_root"),
+ impl::string_lit<CharT>::get("is_root"),
                 impl::string_lit<CharT>::get(is_root ? "1" : ""));
         xml::attribute<CharT> nil;
- xml::text<CharT>(ostrm,
- impl::string_lit<CharT>::get("token"),
+ xml::text<CharT>(ostrm,
+ impl::string_lit<CharT>::get("token"),
                 get_token_value(*it).c_str(),
- token_id,
+ token_id,
                 is_root_attr.has_value() ? is_root_attr : nil);
     }
 
@@ -385,7 +386,7 @@
             xml::attribute<CharT> id (
                 impl::string_lit<CharT>::get("rule"),
                 get_rulename(id_to_name_map, (*it).value.id()).c_str());
- xml::node<CharT> currnode (ostrm,
+ xml::node<CharT> currnode (ostrm,
                 impl::string_lit<CharT>::get("parsenode"),
                 (*it).value.id() != 0 && id.has_value() ? id : nil);
 
@@ -399,7 +400,7 @@
             }
             else if (cnt > 1)
             {
- xml::node<CharT> value (ostrm,
+ xml::node<CharT> value (ostrm,
                         impl::string_lit<CharT>::get("value"));
                 bool is_root = (*it).value.is_root();
 
@@ -431,7 +432,7 @@
             xml::attribute<CharT> id (
                 impl::string_lit<CharT>::get("rule"),
                 get_rulename(id_to_name_map, (*it).value.id()).c_str());
- xml::node<CharT> currnode (ostrm,
+ xml::node<CharT> currnode (ostrm,
                 impl::string_lit<CharT>::get("parsenode"),
                 (*it).value.id() != parser_id() && id.has_value() ? id : nil);
 
@@ -446,7 +447,7 @@
                     xml::attribute<CharT> is_root (
                         impl::string_lit<CharT>::get("is_root"),
                         impl::string_lit<CharT>::get((*it).value.is_root() ? "1" : ""));
- xml::text<CharT>(ostrm,
+ xml::text<CharT>(ostrm,
                         impl::string_lit<CharT>::get("value"), tokens.c_str(),
                         is_root.has_value() ? is_root : nil);
                 }
@@ -471,14 +472,14 @@
         GetIdT const &get_token_id, GetValueT const &get_token_value)
 {
     // generate xml dump
- xml::document<CharT> doc (ostrm,
- impl::string_lit<CharT>::get("parsetree"),
+ xml::document<CharT> doc (ostrm,
+ impl::string_lit<CharT>::get("parsetree"),
             impl::string_lit<CharT>::get("parsetree.dtd"));
     xml::comment<CharT> input (ostrm, input_line.c_str());
     xml::attribute<CharT> ver (
- impl::string_lit<CharT>::get("version"),
+ impl::string_lit<CharT>::get("version"),
             impl::string_lit<CharT>::get("1.0"));
- xml::node<CharT> mainnode (ostrm,
+ xml::node<CharT> mainnode (ostrm,
             impl::string_lit<CharT>::get("parsetree"), ver);
 
     impl::tree_node_to_xml (ostrm, tree, id_to_name, get_token_id,
@@ -489,18 +490,18 @@
 template <typename CharT, typename TreeNodeT, typename AssocContainerT>
 inline void
 basic_tree_to_xml (std::basic_ostream<CharT> &ostrm, TreeNodeT const &tree,
- std::basic_string<CharT> const &input_line,
+ std::basic_string<CharT> const &input_line,
         AssocContainerT const& id_to_name)
 {
     // generate xml dump
- xml::document<CharT> doc (ostrm,
- impl::string_lit<CharT>::get("parsetree"),
+ xml::document<CharT> doc (ostrm,
+ impl::string_lit<CharT>::get("parsetree"),
             impl::string_lit<CharT>::get("parsetree.dtd"));
     xml::comment<CharT> input (ostrm, input_line.c_str());
     xml::attribute<CharT> ver (
- impl::string_lit<CharT>::get("version"),
+ impl::string_lit<CharT>::get("version"),
             impl::string_lit<CharT>::get("1.0"));
- xml::node<CharT> mainnode (ostrm,
+ xml::node<CharT> mainnode (ostrm,
             impl::string_lit<CharT>::get("parsetree"), ver);
 
     impl::tree_node_to_xml(ostrm, tree, id_to_name);

Modified: branches/proto/v4/boost/spirit/home/karma/action/action.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/action/action.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/action/action.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -49,7 +49,7 @@
                 result_of::left<Component>::type::director
             director;
             typedef typename is_same<director, sequence>::type is_sequence;
-
+
             typedef typename
                 attribute<Component, Context, unused_type>::type
             param_type;
@@ -65,8 +65,7 @@
 
             // call the function, passing the parameter, the context
             // and a bool flag that the client can set to false to
- // fail parsing.
- // call the function, passing the attribute, the context.
+ // fail generating.
             // The client can return false to fail parsing.
             bool pass = spirit::detail::action_dispatch(
                 spirit::right(component), p, ctx, is_sequence());
@@ -75,13 +74,13 @@
                 director::generate(spirit::left(component), sink, ctx, d, p);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             typedef typename
                 spirit::result_of::left<Component>::type::director
             director;
- return director::what(spirit::left(component));
+ return director::what(spirit::left(component), ctx);
         }
     };
 

Modified: branches/proto/v4/boost/spirit/home/karma/auxiliary.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/auxiliary.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/auxiliary.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 #include <boost/spirit/home/karma/auxiliary/none.hpp>
 #include <boost/spirit/home/karma/auxiliary/eps.hpp>
+#include <boost/spirit/home/karma/auxiliary/eol.hpp>
 #include <boost/spirit/home/karma/auxiliary/lazy.hpp>
 #include <boost/spirit/home/karma/auxiliary/functor.hpp>
 #include <boost/spirit/home/karma/auxiliary/functor_director.hpp>

Modified: branches/proto/v4/boost/spirit/home/karma/auxiliary/eps.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/auxiliary/eps.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/auxiliary/eps.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_EPS_APRIL_21_2007_0246PM)
@@ -21,18 +21,18 @@
             typedef unused_type type;
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& /*component*/, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
+ static bool
+ generate(Component const& /*component*/, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
         {
             karma::delimit(sink, d);
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "eps";
         }
@@ -46,18 +46,18 @@
             typedef unused_type type;
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& /*param*/)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& /*param*/)
         {
             karma::delimit(sink, d);
             return fusion::at_c<0>(component.elements)(unused, ctx);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "semantic-predicate";
         }

Modified: branches/proto/v4/boost/spirit/home/karma/auxiliary/functor_director.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/auxiliary/functor_director.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/auxiliary/functor_director.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -41,8 +41,8 @@
             return result;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "functor";
         }

Modified: branches/proto/v4/boost/spirit/home/karma/auxiliary/lazy.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/auxiliary/lazy.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/auxiliary/lazy.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -74,8 +74,8 @@
                 generate(subject, sink, ctx, d, param);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "lazy[";
             // FIXME: need to get at the what of the embedded component

Modified: branches/proto/v4/boost/spirit/home/karma/auxiliary/meta_grammar.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/auxiliary/meta_grammar.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/auxiliary/meta_grammar.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,6 +24,7 @@
     ///////////////////////////////////////////////////////////////////////////
     struct none;
     struct eps_generator;
+ struct eol_generator;
     struct semantic_predicate;
     struct lazy_generator;
     struct functor_director;
@@ -45,6 +46,8 @@
                 karma::domain, tag::none, none>,
             meta_grammar::empty_terminal_rule<
                 karma::domain, tag::eps, eps_generator>,
+ meta_grammar::empty_terminal_rule<
+ karma::domain, tag::eol, eol_generator>,
             meta_grammar::function1_rule<
                 karma::domain, tag::eps, semantic_predicate>,
             meta_grammar::function1_rule<

Modified: branches/proto/v4/boost/spirit/home/karma/auxiliary/none.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/auxiliary/none.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/auxiliary/none.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -30,8 +30,8 @@
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "none";
         }

Modified: branches/proto/v4/boost/spirit/home/karma/binary/binary.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/binary/binary.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/binary/binary.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -136,8 +136,8 @@
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return karma::detail::what<endian>::is();
         }
@@ -173,8 +173,8 @@
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return karma::detail::what<endian>::is();
         }

Modified: branches/proto/v4/boost/spirit/home/karma/binary/padding.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/binary/padding.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/binary/padding.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,6 +6,8 @@
 #if !defined(BOOST_SPIRIT_KARMA_PADDING_MAY_06_2008_0436PM)
 #define BOOST_SPIRIT_KARMA_PADDING_MAY_06_2008_0436PM
 
+#include <boost/lexical_cast.hpp>
+
 #include <boost/spirit/home/karma/domain.hpp>
 #include <boost/spirit/home/karma/delimit.hpp>
 #include <boost/spirit/home/support/unused.hpp>
@@ -42,8 +44,8 @@
             return result;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return std::string("pad(") +
                 boost::lexical_cast<std::string>(

Modified: branches/proto/v4/boost/spirit/home/karma/char/char.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/char/char.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/char/char.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_CHAR_FEB_21_2007_0543PM)
@@ -24,13 +24,13 @@
 #include <boost/fusion/include/cons.hpp>
 #include <boost/utility/enable_if.hpp>
 
-namespace boost { namespace spirit { namespace karma
-{
+namespace boost { namespace spirit { namespace karma
+{
     ///////////////////////////////////////////////////////////////////////////
     //
- // any_char
+ // any_char
     // generates a single character from the associated parameter
- //
+ //
     // Note: this generator has to have an associated parameter
     //
     ///////////////////////////////////////////////////////////////////////////
@@ -44,31 +44,31 @@
         };
 
         // any_char has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const&, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const&, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& param)
         {
             detail::generate_to(sink, param);
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return true;
         }
 
- // this any_char has no parameter attached, it needs to have been
+ // this any_char has no parameter attached, it needs to have been
         // initialized from a direct literal
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter>
- static bool
- generate(Component const&, OutputIterator&, Context&, Delimiter const&,
- unused_type)
+ static bool
+ generate(Component const&, OutputIterator&, Context&, Delimiter const&,
+ unused_type)
         {
             BOOST_MPL_ASSERT_MSG(false, char__not_usable_without_parameter, ());
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "any-char";
         }
@@ -76,13 +76,13 @@
 
     ///////////////////////////////////////////////////////////////////////////
     //
- // literal_char
+ // literal_char
     // generates a single character given by a literal it was initialized
     // from
     //
     ///////////////////////////////////////////////////////////////////////////
     template <typename Char>
- struct literal_char
+ struct literal_char
     {
         template <typename Component, typename Context, typename Unused>
         struct attribute
@@ -91,19 +91,19 @@
         };
 
         // any_char has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
         {
             detail::generate_to(sink, fusion::at_c<0>(component.elements));
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return std::string("'")
                 + spirit::detail::to_narrow_char(
@@ -114,12 +114,12 @@
 
     ///////////////////////////////////////////////////////////////////////////
     //
- // lazy_char
- // generates a single character given by a functor it was initialized
+ // lazy_char
+ // generates a single character given by a functor it was initialized
     // from
     //
     ///////////////////////////////////////////////////////////////////////////
- struct lazy_char
+ struct lazy_char
     {
         template <typename Component, typename Context, typename Unused>
         struct attribute
@@ -128,20 +128,20 @@
         };
 
         // any_char has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& /*param*/)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& /*param*/)
         {
- detail::generate_to(sink,
+ detail::generate_to(sink,
                 fusion::at_c<0>(component.elements)(unused, ctx));
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "char";
         }
@@ -154,7 +154,7 @@
     //
     ///////////////////////////////////////////////////////////////////////////
     template <typename Char, typename Tag>
- struct case_any_char
+ struct case_any_char
     {
         template <typename Component, typename Context, typename Unused>
         struct attribute
@@ -166,42 +166,42 @@
         typedef typename Tag::char_class char_class_;
 
         // case_any_char has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& /*component*/, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& /*component*/, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& param)
         {
             using spirit::char_class::convert;
             Char p = convert<char_set>::to(char_class_(), param);
             detail::generate_to(sink, p);
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return true;
         }
 
- // this case_any_char has no parameter attached, it needs to have been
+ // this case_any_char has no parameter attached, it needs to have been
         // initialized from a direct literal
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter>
- static bool
- generate(Component const&, OutputIterator&, Context&, Delimiter const&,
- unused_type)
+ static bool
+ generate(Component const&, OutputIterator&, Context&, Delimiter const&,
+ unused_type)
         {
             BOOST_MPL_ASSERT_MSG(false, char__not_usable_without_parameter, ());
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result;
- result = std::string("any-") +
- spirit::char_class::what<char_set>::is(char_class_()) +
+ result = std::string("any-") +
+ spirit::char_class::what<char_set>::is(char_class_()) +
                 "case-char";
             return result;
         }
     };
-
+
 }}} // namespace boost::spirit::karma
 
 namespace boost { namespace spirit { namespace traits
@@ -218,20 +218,20 @@
>::type
>
     {
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 0>::type
         char_type;
         typedef fusion::vector<char_type> vector_type;
 
         typedef component<
- karma::domain, karma::literal_char<Char>, vector_type>
+ karma::domain, karma::literal_char<Char>, vector_type>
         type;
-
+
         static type
         call(Elements const& elements)
         {
             typedef typename Modifier::char_set char_set;
-
+
             char_type ch = fusion::at_c<0>(elements);
             vector_type v(char_set::tolower(ch));
             return type(v);
@@ -247,20 +247,20 @@
>::type
>
     {
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 0>::type
         char_type;
         typedef fusion::vector<char_type> vector_type;
 
- typedef
- component<karma::domain, karma::literal_char<Char>, vector_type>
+ typedef
+ component<karma::domain, karma::literal_char<Char>, vector_type>
         type;
-
+
         static type
         call(Elements const& elements)
         {
             typedef typename Modifier::char_set char_set;
-
+
             char_type ch = fusion::at_c<0>(elements);
             vector_type v(char_set::toupper(ch));
             return type(v);
@@ -282,11 +282,11 @@
         typedef typename Modifier::char_set char_set;
         typedef spirit::char_class::tag::lower char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
-
+
         typedef component<
- karma::domain, karma::case_any_char<Char, key_tag>, fusion::nil>
+ karma::domain, karma::case_any_char<Char, key_tag>, fusion::nil>
         type;
-
+
         static type
         call(Elements const&)
         {
@@ -306,11 +306,11 @@
         typedef typename Modifier::char_set char_set;
         typedef spirit::char_class::tag::upper char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
-
+
         typedef component<
- karma::domain, karma::case_any_char<Char, key_tag>, fusion::nil>
+ karma::domain, karma::case_any_char<Char, key_tag>, fusion::nil>
         type;
-
+
         static type
         call(Elements const&)
         {

Modified: branches/proto/v4/boost/spirit/home/karma/char/space.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/char/space.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/char/space.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_SPACE_MAR_06_2007_0934PM)
@@ -20,13 +20,13 @@
 #include <boost/spirit/home/support/standard.hpp>
 #include <boost/spirit/home/support/standard_wide.hpp>
 
-namespace boost { namespace spirit { namespace karma
-{
+namespace boost { namespace spirit { namespace karma
+{
     ///////////////////////////////////////////////////////////////////////////
     //
- // space
+ // space
     // generates a single character from the associated parameter
- //
+ //
     ///////////////////////////////////////////////////////////////////////////
     template <typename Tag, typename Char>
     struct any_space_char
@@ -41,33 +41,33 @@
         typedef typename Tag::char_class char_class_;
 
         // space has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& /*component*/, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& ch)
+ static bool
+ generate(Component const& /*component*/, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& ch)
         {
             using spirit::char_class::classify;
             BOOST_ASSERT(classify<char_set>::is(char_class_(), ch));
             detail::generate_to(sink, ch);
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return true;
         }
 
         // this space has no parameter attached, just generate a single ' '
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter>
- static bool
- generate(Component const&, OutputIterator& sink, Context&,
- Delimiter const& d, unused_type)
+ static bool
+ generate(Component const&, OutputIterator& sink, Context&,
+ Delimiter const& d, unused_type)
         {
             detail::generate_to(sink, ' '); // generate a single space
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "any-space";
         }
@@ -76,7 +76,7 @@
     ///////////////////////////////////////////////////////////////////////////
     //
     // space(...)
- // generates a single space character given by a literal it was
+ // generates a single space character given by a literal it was
     // initialized from
     //
     ///////////////////////////////////////////////////////////////////////////
@@ -90,19 +90,19 @@
         };
 
         // any_char has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
         {
             detail::generate_to(sink, fusion::at_c<0>(component.elements));
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return std::string("space('")
                 + spirit::detail::to_narrow_char(

Modified: branches/proto/v4/boost/spirit/home/karma/detail/output_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/detail/output_iterator.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/detail/output_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -152,11 +152,11 @@
             return buffer ? buffer->buffer_size() : 0;
         }
 
- private:
+ private:
         std::size_t width;
         abstract_container<OutputIterator> *buffer;
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // forward declaration only
     ///////////////////////////////////////////////////////////////////////////
@@ -321,16 +321,16 @@
             output_iterator<ostream_iterator<T, Elem, Traits>, int>
         base_type;
         typedef ostream_iterator<T, Elem, Traits> base_iterator_type;
- typedef std::basic_ostream<Elem, Traits> ostream_type;
-
+ typedef std::basic_ostream<Elem, Traits> ostream_type;
+
     public:
         output_iterator(base_iterator_type& sink)
           : base_type(sink)
         {}
-
+
         ostream_type& get_ostream() { return this->sink.get_ostream(); }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // Helper class for exception safe enabling of character counting in the
     // output iterator

Modified: branches/proto/v4/boost/spirit/home/karma/directive/center_alignment.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/directive/center_alignment.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/directive/center_alignment.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_CENTER_ALIGNMENT_FEB_27_2007_1216PM)
@@ -18,7 +18,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 //
-// The BOOST_KARMA_DEFAULT_FIELD_LENGTH specifies the default field length
+// The BOOST_KARMA_DEFAULT_FIELD_LENGTH specifies the default field length
 // to be used for padding.
 //
 ///////////////////////////////////////////////////////////////////////////////
@@ -26,10 +26,10 @@
 #define BOOST_KARMA_DEFAULT_FIELD_LENGTH 10
 #endif
 
-namespace boost { namespace spirit { namespace karma
+namespace boost { namespace spirit { namespace karma
 {
     ///////////////////////////////////////////////////////////////////////////
- // The simple center alignment directive is used for center[...]
+ // The simple center alignment directive is used for center[...]
     // generators. It uses default values for the generated width (defined via
     // the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant) and for the padding
     // generator (always spaces).
@@ -40,25 +40,25 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::argument1<Component>::type,
+ typename result_of::argument1<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::center_generate(sink, ctx, d, param,
- argument1(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH,
+ return detail::center_generate(sink, ctx, d, param,
+ argument1(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH,
                 spirit::as_component(karma::domain(), ' '));
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "center[";
 
@@ -66,12 +66,12 @@
                 spirit::result_of::argument1<Component>::type::director
             director;
 
- result += director::what(spirit::argument1(component));
+ result += director::what(spirit::argument1(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // The center alignment with width directive, is used for generators
     // like center(width)[...]. It uses a default value for the padding
@@ -83,27 +83,27 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::subject<Component>::type,
+ typename result_of::subject<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::center_generate(sink, ctx, d, param,
+ return detail::center_generate(sink, ctx, d, param,
                 subject(component), proto::arg_c<0>(argument1(component)), ' ');
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "center(";
-
+
             result += boost::lexical_cast<std::string>(
                 proto::arg_c<0>(argument1(component)));
             result += ")[";
@@ -112,16 +112,16 @@
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // The center alignment directive with padding, is used for generators like
- // center(padding)[...], where padding is a arbitrary generator
- // expression. It uses a default value for the generated width (defined
+ // center(padding)[...], where padding is a arbitrary generator
+ // expression. It uses a default value for the generated width (defined
     // via the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant).
     ///////////////////////////////////////////////////////////////////////////
     struct padding_center_aligment
@@ -130,49 +130,49 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::subject<Component>::type,
+ typename result_of::subject<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::center_generate(sink, ctx, d, param,
- subject(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH,
+ return detail::center_generate(sink, ctx, d, param,
+ subject(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH,
                 argument1(component));
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "center(";
-
+
             typedef typename
                 spirit::result_of::argument1<Component>::type::director
             padding;
 
- result += padding::what(spirit::argument1(component));
+ result += padding::what(spirit::argument1(component), ctx);
             result += ")[";
 
             typedef typename
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
- // The full center alignment directive, is used for generators like
- // center(width, padding)[...], where width is a integer value to be
- // used as the field width and padding is a arbitrary generator
+ // The full center alignment directive, is used for generators like
+ // center(width, padding)[...], where width is a integer value to be
+ // used as the field width and padding is a arbitrary generator
     // expression.
     ///////////////////////////////////////////////////////////////////////////
     struct full_center_aligment
@@ -181,28 +181,28 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::subject<Component>::type,
+ typename result_of::subject<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::center_generate(sink, ctx, d, param,
- subject(component), proto::arg_c<0>(argument1(component)),
+ return detail::center_generate(sink, ctx, d, param,
+ subject(component), proto::arg_c<0>(argument1(component)),
                 argument2(component));
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "center(";
-
+
             result += boost::lexical_cast<std::string>(
                 proto::arg_c<0>(argument1(component)));
             result += ", ";
@@ -211,19 +211,19 @@
                 spirit::result_of::argument2<Component>::type::director
             padding;
 
- result += padding::what(spirit::argument2(component));
+ result += padding::what(spirit::argument2(component), ctx);
             result += ")[";
 
             typedef typename
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
 }}} // namespace boost::spirit::karma
 
 #endif

Modified: branches/proto/v4/boost/spirit/home/karma/directive/delimit.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/directive/delimit.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/directive/delimit.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_DELIMIT_MAR_02_2007_0217PM)
@@ -27,31 +27,31 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::right<Component>::type,
+ typename result_of::right<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& /*d*/, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& /*d*/, Parameter const& param)
         {
- // the delimit_space generator simply dispatches to the embedded
+ // the delimit_space generator simply dispatches to the embedded
             // generator while supplying a single space as the new delimiter
             // to use
- typedef typename
+ typedef typename
                 result_of::right<Component>::type::director
             director;
-
- return director::generate(spirit::right(component),
+
+ return director::generate(spirit::right(component),
                 sink, ctx, spirit::as_component(karma::domain(), ' '), param);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "delimit[";
 
@@ -59,7 +59,7 @@
                 spirit::result_of::right<Component>::type::director
             director;
 
- result += director::what(spirit::right(component));
+ result += director::what(spirit::right(component), ctx);
             result += "]";
             return result;
         }
@@ -74,48 +74,48 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::subject<Component>::type,
+ typename result_of::subject<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& /*d*/, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& /*d*/, Parameter const& param)
         {
- // the delimit generator simply dispatches to the embedded
+ // the delimit generator simply dispatches to the embedded
             // generator while supplying it's argument as the new delimiter
             // to use
- typedef typename
+ typedef typename
                 spirit::result_of::subject<Component>::type::director
             director;
-
- return director::generate(spirit::subject(component), sink, ctx,
+
+ return director::generate(spirit::subject(component), sink, ctx,
                 spirit::as_component(
- karma::domain(), spirit::argument1(component)),
+ karma::domain(), spirit::argument1(component)),
                 param);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "delimit(";
-
+
             typedef typename
                 spirit::result_of::argument1<Component>::type::director
             delimiter;
-
- result += delimiter::what(spirit::argument1(component));
+
+ result += delimiter::what(spirit::argument1(component), ctx);
             result +=")[";
 
             typedef typename
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/karma/directive/left_alignment.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/directive/left_alignment.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/directive/left_alignment.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_LEFT_ALIGNMENT_FEB_27_2007_1216PM)
@@ -18,7 +18,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 //
-// The BOOST_KARMA_DEFAULT_FIELD_LENGTH specifies the default field length
+// The BOOST_KARMA_DEFAULT_FIELD_LENGTH specifies the default field length
 // to be used for padding.
 //
 ///////////////////////////////////////////////////////////////////////////////
@@ -26,10 +26,10 @@
 #define BOOST_KARMA_DEFAULT_FIELD_LENGTH 10
 #endif
 
-namespace boost { namespace spirit { namespace karma
+namespace boost { namespace spirit { namespace karma
 {
     ///////////////////////////////////////////////////////////////////////////
- // The simple left alignment directive is used for left_align[...]
+ // The simple left alignment directive is used for left_align[...]
     // generators. It uses default values for the generated width (defined via
     // the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant) and for the padding
     // generator (always spaces).
@@ -37,27 +37,27 @@
     struct simple_left_aligment
     {
         template <typename Component, typename Context, typename Unused>
- struct attribute
+ struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::argument1<Component>::type,
+ typename result_of::argument1<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::left_align_generate(sink, ctx, d, param,
+ return detail::left_align_generate(sink, ctx, d, param,
                 argument1(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH, ' ');
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "left_align[";
 
@@ -65,12 +65,12 @@
                 spirit::result_of::argument1<Component>::type::director
             director;
 
- result += director::what(spirit::argument1(component));
+ result += director::what(spirit::argument1(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // The left alignment with width directive, is used for generators
     // like left_align(width)[...]. It uses a default value for the padding
@@ -82,27 +82,27 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::subject<Component>::type,
+ typename result_of::subject<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::left_align_generate(sink, ctx, d, param,
+ return detail::left_align_generate(sink, ctx, d, param,
                 subject(component), proto::arg_c<0>(argument1(component)), ' ');
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "left_align(";
-
+
             result += boost::lexical_cast<std::string>(
                 proto::arg_c<0>(argument1(component)));
             result += ")[";
@@ -111,16 +111,16 @@
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // The left alignment directive with padding, is used for generators like
- // left_align(padding)[...], where padding is a arbitrary generator
- // expression. It uses a default value for the generated width (defined
+ // left_align(padding)[...], where padding is a arbitrary generator
+ // expression. It uses a default value for the generated width (defined
     // via the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant).
     ///////////////////////////////////////////////////////////////////////////
     struct padding_left_aligment
@@ -129,49 +129,49 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::subject<Component>::type,
+ typename result_of::subject<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::left_align_generate(sink, ctx, d, param,
- subject(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH,
+ return detail::left_align_generate(sink, ctx, d, param,
+ subject(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH,
                 argument1(component));
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "left_align(";
-
+
             typedef typename
                 spirit::result_of::argument1<Component>::type::director
             padding;
 
- result += padding::what(spirit::argument1(component));
+ result += padding::what(spirit::argument1(component), ctx);
             result += ")[";
 
             typedef typename
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
- // The full left alignment directive, is used for generators like
- // left_align(width, padding)[...], where width is a integer value to be
- // used as the field width and padding is a arbitrary generator
+ // The full left alignment directive, is used for generators like
+ // left_align(width, padding)[...], where width is a integer value to be
+ // used as the field width and padding is a arbitrary generator
     // expression.
     ///////////////////////////////////////////////////////////////////////////
     struct full_left_aligment
@@ -180,28 +180,28 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::subject<Component>::type,
+ typename result_of::subject<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::left_align_generate(sink, ctx, d, param,
- subject(component), proto::arg_c<0>(argument1(component)),
+ return detail::left_align_generate(sink, ctx, d, param,
+ subject(component), proto::arg_c<0>(argument1(component)),
                 argument2(component));
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "left_align(";
-
+
             result += boost::lexical_cast<std::string>(
                 proto::arg_c<0>(argument1(component)));
             result += ", ";
@@ -210,19 +210,19 @@
                 spirit::result_of::argument2<Component>::type::director
             padding;
 
- result += padding::what(spirit::argument2(component));
+ result += padding::what(spirit::argument2(component), ctx);
             result += ")[";
 
             typedef typename
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
 }}} // namespace boost::spirit::karma
 
 #endif

Modified: branches/proto/v4/boost/spirit/home/karma/directive/right_alignment.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/directive/right_alignment.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/directive/right_alignment.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_RIGHT_ALIGNMENT_FEB_27_2007_1216PM)
@@ -18,7 +18,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 //
-// The BOOST_KARMA_DEFAULT_FIELD_LENGTH specifies the default field length
+// The BOOST_KARMA_DEFAULT_FIELD_LENGTH specifies the default field length
 // to be used for padding.
 //
 ///////////////////////////////////////////////////////////////////////////////
@@ -26,10 +26,10 @@
 #define BOOST_KARMA_DEFAULT_FIELD_LENGTH 10
 #endif
 
-namespace boost { namespace spirit { namespace karma
+namespace boost { namespace spirit { namespace karma
 {
     ///////////////////////////////////////////////////////////////////////////
- // The simple right alignment directive is used for right_align[...]
+ // The simple right alignment directive is used for right_align[...]
     // generators. It uses default values for the generated width (defined via
     // the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant) and for the padding
     // generator (always spaces).
@@ -40,25 +40,25 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::argument1<Component>::type,
+ typename result_of::argument1<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::right_align_generate(sink, ctx, d, param,
- argument1(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH,
+ return detail::right_align_generate(sink, ctx, d, param,
+ argument1(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH,
                 spirit::as_component(karma::domain(), ' '));
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "right_align[";
 
@@ -66,12 +66,12 @@
                 spirit::result_of::argument1<Component>::type::director
             director;
 
- result += director::what(spirit::argument1(component));
+ result += director::what(spirit::argument1(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // The right alignment with width directive, is used for generators
     // like right_align(width)[...]. It uses a default value for the padding
@@ -83,27 +83,27 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::subject<Component>::type,
+ typename result_of::subject<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::right_align_generate(sink, ctx, d, param,
+ return detail::right_align_generate(sink, ctx, d, param,
                 subject(component), proto::arg_c<0>(argument1(component)), ' ');
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "right_align(";
-
+
             result += boost::lexical_cast<std::string>(
                 proto::arg_c<0>(argument1(component)));
             result += ")[";
@@ -112,16 +112,16 @@
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // The right alignment directive with padding, is used for generators like
- // right_align(padding)[...], where padding is a arbitrary generator
- // expression. It uses a default value for the generated width (defined
+ // right_align(padding)[...], where padding is a arbitrary generator
+ // expression. It uses a default value for the generated width (defined
     // via the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant).
     ///////////////////////////////////////////////////////////////////////////
     struct padding_right_aligment
@@ -130,49 +130,49 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::subject<Component>::type,
+ typename result_of::subject<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::right_align_generate(sink, ctx, d, param,
- subject(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH,
+ return detail::right_align_generate(sink, ctx, d, param,
+ subject(component), BOOST_KARMA_DEFAULT_FIELD_LENGTH,
                 argument1(component));
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "right_align(";
-
+
             typedef typename
                 spirit::result_of::argument1<Component>::type::director
             padding;
 
- result += padding::what(spirit::argument1(component));
+ result += padding::what(spirit::argument1(component), ctx);
             result += ")[";
 
             typedef typename
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
- // The full right alignment directive, is used for generators like
- // right_align(width, padding)[...], where width is a integer value to be
- // used as the field width and padding is a arbitrary generator
+ // The full right alignment directive, is used for generators like
+ // right_align(width, padding)[...], where width is a integer value to be
+ // used as the field width and padding is a arbitrary generator
     // expression.
     ///////////////////////////////////////////////////////////////////////////
     struct full_right_aligment
@@ -181,28 +181,28 @@
         struct attribute
           : traits::attribute_of<
                 karma::domain,
- typename result_of::subject<Component>::type,
+ typename result_of::subject<Component>::type,
                 Context
>
         {
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& param)
         {
- return detail::right_align_generate(sink, ctx, d, param,
- subject(component), proto::arg_c<0>(argument1(component)),
+ return detail::right_align_generate(sink, ctx, d, param,
+ subject(component), proto::arg_c<0>(argument1(component)),
                 argument2(component));
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "right_align(";
-
+
             result += boost::lexical_cast<std::string>(
                 proto::arg_c<0>(argument1(component)));
             result += ", ";
@@ -211,19 +211,19 @@
                 spirit::result_of::argument2<Component>::type::director
             padding;
 
- result += padding::what(spirit::argument2(component));
+ result += padding::what(spirit::argument2(component), ctx);
             result += ")[";
 
             typedef typename
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }
     };
-
+
 }}} // namespace boost::spirit::karma
 
 #endif

Modified: branches/proto/v4/boost/spirit/home/karma/directive/verbatim.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/directive/verbatim.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/directive/verbatim.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -55,8 +55,8 @@
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "verbatim[";
 
@@ -64,7 +64,7 @@
                 spirit::result_of::right<Component>::type::director
             director;
 
- result += director::what(spirit::right(component));
+ result += director::what(spirit::right(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/karma/nonterminal/grammar.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/nonterminal/grammar.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/nonterminal/grammar.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,8 @@
 #define BOOST_SPIRIT_KARMA_GRAMMAR_MAR_05_2007_0542PM
 
 #include <boost/spirit/home/support/unused.hpp>
-#include <boost/spirit/home/support/nonterminal/nonterminal.hpp>
+#include <boost/spirit/home/karma/nonterminal/nonterminal.hpp>
+#include <boost/spirit/home/karma/nonterminal/grammar_fwd.hpp>
 #include <boost/spirit/home/karma/domain.hpp>
 #include <boost/spirit/home/karma/nonterminal/rule.hpp>
 #include <boost/spirit/home/karma/nonterminal/nonterminal_director.hpp>
@@ -17,100 +18,61 @@
 
 namespace boost { namespace spirit { namespace karma
 {
- template <typename Definition>
+ template <typename Iterator, typename T0 , typename T1 , typename T2>
     struct grammar
       : nonterminal<
- grammar<Definition>,
- typename Definition::sig_type,
- typename Definition::locals_type
- >
+ grammar<Iterator, T0, T1, T2>,
+ typename karma::rule<Iterator, T0, T1, T2>::sig_type,
+ typename karma::rule<Iterator, T0, T1, T2>::locals_type
+ >, noncopyable
     {
- typedef typename Definition::sig_type sig_type;
- typedef typename Definition::locals_type locals_type;
- typedef typename Definition::delimiter_type delimiter_type;
- typedef typename Definition::start_type start_type;
- typedef typename Definition::iterator_type iterator_type;
+ typedef Iterator iterator_type;
+ typedef karma::rule<Iterator, T0, T1, T2> start_type;
+ typedef typename start_type::sig_type sig_type;
+ typedef typename start_type::locals_type locals_type;
+ typedef typename start_type::delimiter_type delimiter_type;
+ typedef grammar<Iterator, T0, T1, T2> base_type;
+
+ grammar(start_type const& start, std::string const& name_ = std::string())
+ : start_(start), name_(name_)
+ {}
 
- explicit grammar(Definition const& definition_)
- : definition(definition_), start(definition_.start)
+ std::string name() const
         {
+ return name_;
         }
 
- template <typename Definition_, typename Start>
- grammar(Definition_ const& definition_, Start const& start_)
- : definition(definition_), start(start_)
+ void name(std::string const& name__)
         {
+ name_ = name__;
         }
 
+ start_type const& start_;
+ std::string name_;
+
     private:
         template <typename OutputIterator, typename Context, typename Delimiter>
         bool generate(OutputIterator& sink, Context& context,
             Delimiter const& delim) const
         {
- return start.generate(sink, context, delim);
+ return start_.generate(sink, context, delim);
         }
 
         std::string what() const
         {
- if (definition.name().empty())
+ if (name().empty())
             {
- return start.what();
+ return start_.what();
             }
             else
             {
- return definition.name();
+ return name();
             }
         }
 
         friend struct nonterminal_director;
- Definition const& definition;
- start_type const& start;
     };
 
- template <typename OutputIterator, typename T0 = unused_type,
- typename T1 = unused_type, typename T2 = unused_type>
- struct grammar_def : noncopyable
- {
- typedef karma::rule<OutputIterator, T0, T1, T2> start_type;
- typedef typename start_type::iterator_type iterator_type;
- typedef typename start_type::sig_type sig_type;
- typedef typename start_type::locals_type locals_type;
- typedef typename start_type::delimiter_type delimiter_type;
-
- grammar_def(std::string const& name_ = std::string())
- : name_(name_) {}
-
- std::string name() const
- {
- return name_;
- }
-
- void name(std::string const& name__)
- {
- name_ = name__;
- }
-
- std::string name_;
- };
-
- ///////////////////////////////////////////////////////////////////////////
- // Generator functions helping to construct a proper grammar object
- // instance
- ///////////////////////////////////////////////////////////////////////////
- template <typename Definition>
- inline grammar<Definition>
- make_generator(Definition const& def)
- {
- return grammar<Definition>(def);
- }
-
- template <typename Definition, typename Start>
- inline grammar<Definition>
- make_generator(Definition const& def, Start const& start)
- {
- return grammar<Definition>(def, start);
- }
-
 }}}
 
 #endif

Modified: branches/proto/v4/boost/spirit/home/karma/nonterminal/nonterminal_director.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/nonterminal/nonterminal_director.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/nonterminal/nonterminal_director.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -53,7 +53,7 @@
             Parameter const& param)
         {
             typedef typename Nonterminal::locals_type locals_type;
- fusion::single_view<Parameter const&> front(param);
+ fusion::vector<Parameter const&> front(param);
             NonterminalContext context(front, locals_type());
             return x.obj.generate(sink, context, delim);
         }
@@ -69,7 +69,7 @@
             Parameter const& param)
         {
             typedef typename Nonterminal::locals_type locals_type;
- fusion::single_view<Parameter const&> front(param);
+ fusion::vector<Parameter const&> front(param);
             NonterminalContext context(front, locals_type());
             return ptr->generate(sink, context, delim);
         }
@@ -148,8 +148,8 @@
             return x.ptr->what();
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return what_nonterminal(subject(component).held);
         }

Modified: branches/proto/v4/boost/spirit/home/karma/nonterminal/rule.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/nonterminal/rule.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/nonterminal/rule.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,7 @@
 
 #include <boost/spirit/home/support/unused.hpp>
 #include <boost/spirit/home/karma/nonterminal/nonterminal.hpp>
+#include <boost/spirit/home/karma/nonterminal/grammar_fwd.hpp>
 #include <boost/spirit/home/karma/nonterminal/detail/rule.hpp>
 #include <boost/spirit/home/karma/domain.hpp>
 #include <boost/spirit/home/karma/detail/output_iterator.hpp>
@@ -26,9 +27,6 @@
 
 namespace boost { namespace spirit { namespace karma
 {
- template <typename Definition>
- struct grammar; // forward declaration
-
     template <typename OutputIterator, typename T0 = unused_type,
         typename T1 = unused_type, typename T2 = unused_type>
     struct rule
@@ -140,7 +138,7 @@
 
     private:
 
- template <typename Definition>
+ template <typename Iterator_, typename T0_, typename T1_, typename T2_>
         friend struct grammar;
 
         template <typename Expr, typename Auto>

Modified: branches/proto/v4/boost/spirit/home/karma/numeric/int.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/numeric/int.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/numeric/int.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_INT_FEB_23_2007_0840PM)
@@ -25,8 +25,8 @@
 namespace boost { namespace spirit { namespace karma
 {
     ///////////////////////////////////////////////////////////////////////////
- // This specialization is used for int generators not having a direct
- // initializer: int_, long_ etc. These generators must be used in
+ // This specialization is used for int generators not having a direct
+ // initializer: int_, long_ etc. These generators must be used in
     // conjunction with a parameter.
     ///////////////////////////////////////////////////////////////////////////
     template <typename T, unsigned Radix, bool ForceSign, typename Tag>
@@ -45,44 +45,44 @@
 
         BOOST_MPL_ASSERT_MSG(std::numeric_limits<T>::is_signed,
             signed_unsigned_mismatch, ());
-
+
         // int has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& /*component*/, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& /*component*/, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& param)
         {
- sign_inserter<ForceSign>::call(sink, detail::is_zero(param),
+ sign_inserter<ForceSign>::call(sink, detail::is_zero(param),
                 detail::is_negative(param));
- bool result = int_inserter<Radix, Tag>::call(sink,
+ bool result = int_inserter<Radix, Tag>::call(sink,
                 detail::absolute_value(param));
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return result;
         }
 
- // this int has no parameter attached, it needs to have been
+ // this int has no parameter attached, it needs to have been
         // initialized from a direct literal
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter>
- static bool
- generate(Component const&, OutputIterator&, Context&, Delimiter const&,
- unused_type)
+ static bool
+ generate(Component const&, OutputIterator&, Context&, Delimiter const&,
+ unused_type)
         {
             BOOST_MPL_ASSERT_MSG(false, int__not_usable_without_parameter, ());
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "integer";
         }
     };
 
     ///////////////////////////////////////////////////////////////////////////
- // This specialization is used for int generators having a direct
- // initializer: int_(10), long_(20) etc.
+ // This specialization is used for int generators having a direct
+ // initializer: int_(10), long_(20) etc.
     ///////////////////////////////////////////////////////////////////////////
     template <typename T, unsigned Radix, bool ForceSign, typename Tag>
     struct int_generator<true, T, Radix, ForceSign, Tag>
@@ -100,24 +100,24 @@
 
         BOOST_MPL_ASSERT_MSG(std::numeric_limits<T>::is_signed,
             signed_unsigned_mismatch, ());
-
- template <typename Component, typename OutputIterator,
+
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
         {
             T n = fusion::at_c<0>(component.elements);
- sign_inserter<ForceSign>::call(sink, detail::is_zero(n),
+ sign_inserter<ForceSign>::call(sink, detail::is_zero(n),
                 detail::is_negative(n));
- bool result = int_inserter<Radix, Tag>::call(sink,
+ bool result = int_inserter<Radix, Tag>::call(sink,
                 detail::absolute_value(n));
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return result;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "integer";
         }
@@ -145,7 +145,7 @@
 
         typedef karma::int_generator<false, T, Radix, ForceSign, key_tag> int_type;
         typedef component<karma::domain, int_type, fusion::nil> type;
-
+
         static type
         call(Elements const&)
         {
@@ -166,14 +166,14 @@
         typedef spirit::char_class::tag::lower char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
 
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 0>::type
         int_data_type;
         typedef fusion::vector<int_data_type> vector_type;
 
         typedef karma::int_generator<true, T, Radix, ForceSign, key_tag> int_type;
         typedef component<karma::domain, int_type, vector_type> type;
-
+
         static type
         call(Elements const& elements)
         {
@@ -199,7 +199,7 @@
 
         typedef karma::int_generator<false, T, Radix, ForceSign, key_tag> int_type;
         typedef component<karma::domain, int_type, fusion::nil> type;
-
+
         static type
         call(Elements const&)
         {
@@ -220,14 +220,14 @@
         typedef spirit::char_class::tag::upper char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
 
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 0>::type
         int_data_type;
         typedef fusion::vector<int_data_type> vector_type;
 
         typedef karma::int_generator<true, T, Radix, ForceSign, key_tag> int_type;
         typedef component<karma::domain, int_type, vector_type> type;
-
+
         static type
         call(Elements const& elements)
         {

Modified: branches/proto/v4/boost/spirit/home/karma/numeric/real.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/numeric/real.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/numeric/real.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_REAL_FEB_26_2007_0512PM)
@@ -20,17 +20,17 @@
 #include <boost/spirit/home/karma/numeric/detail/numeric_utils.hpp>
 #include <cmath>
 
-namespace boost { namespace spirit { namespace karma
+namespace boost { namespace spirit { namespace karma
 {
     namespace detail
     {
         template <typename RealPolicies>
         struct real_policy;
     }
-
+
     ///////////////////////////////////////////////////////////////////////////
- // This specialization is used for real generators not having a direct
- // initializer: float_, double_ etc. These generators must be used in
+ // This specialization is used for real generators not having a direct
+ // initializer: float_, double_ etc. These generators must be used in
     // conjunction with a parameter.
     ///////////////////////////////////////////////////////////////////////////
     template <typename T, typename RealPolicies, typename Tag>
@@ -43,44 +43,44 @@
         };
 
         // double_/float_/etc. has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& param)
         {
             RealPolicies const& p = detail::real_policy<RealPolicies>::get(
                 fusion::at_c<0>(component.elements));
             bool result = real_inserter<T, RealPolicies, Tag>::
                 call(sink, param, p);
 
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return result;
         }
 
- // this double_/float_/etc. has no parameter attached, it needs to have
+ // this double_/float_/etc. has no parameter attached, it needs to have
         // been initialized from a direct literal
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter>
- static bool
- generate(Component const&, OutputIterator&, Context&, Delimiter const&,
- unused_type)
+ static bool
+ generate(Component const&, OutputIterator&, Context&, Delimiter const&,
+ unused_type)
         {
- BOOST_MPL_ASSERT_MSG(false, real_not_usable_without_parameter,
+ BOOST_MPL_ASSERT_MSG(false, real_not_usable_without_parameter,
                 (Component, Context));
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& /*component*/, Context const& /*ctx*/)
         {
             return "real number";
         }
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
- // This specialization is used for real generators having a direct
- // initializer: float_(10.), double_(20.) etc.
+ // This specialization is used for real generators having a direct
+ // initializer: float_(10.), double_(20.) etc.
     ///////////////////////////////////////////////////////////////////////////
     template <typename T, typename RealPolicies, typename Tag>
     struct real_generator<true, T, RealPolicies, Tag>
@@ -91,28 +91,28 @@
             typedef unused_type type;
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
         {
             RealPolicies const& p = detail::real_policy<RealPolicies>::get(
                 fusion::at_c<0>(component.elements));
             T n = fusion::at_c<1>(component.elements);
             bool result = real_inserter<T, RealPolicies, Tag>::call(sink, n, p);
 
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return result;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& /*component*/, Context const& /*ctx*/)
         {
             return "real number";
         }
     };
-
+
 }}}
 
 namespace boost { namespace spirit { namespace traits
@@ -133,14 +133,14 @@
         typedef spirit::char_class::tag::lower char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
 
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 0>::type
         real_policy_type;
         typedef fusion::vector<real_policy_type> vector_type;
 
         typedef karma::real_generator<false, T, RealPolicies, key_tag> real_type;
         typedef component<karma::domain, real_type, vector_type> type;
-
+
         static type
         call(Elements const& elements)
         {
@@ -161,17 +161,17 @@
         typedef spirit::char_class::tag::lower char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
 
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 0>::type
         real_policy_type;
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 1>::type
         real_data_type;
         typedef fusion::vector<real_policy_type, real_data_type> vector_type;
 
         typedef karma::real_generator<true, T, RealPolicies, key_tag> real_type;
         typedef component<karma::domain, real_type, vector_type> type;
-
+
         static type
         call(Elements const& elements)
         {
@@ -195,14 +195,14 @@
         typedef spirit::char_class::tag::upper char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
 
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 0>::type
         real_policy_type;
         typedef fusion::vector<real_policy_type> vector_type;
 
         typedef karma::real_generator<false, T, RealPolicies, key_tag> real_type;
         typedef component<karma::domain, real_type, vector_type> type;
-
+
         static type
         call(Elements const& elements)
         {
@@ -223,17 +223,17 @@
         typedef spirit::char_class::tag::upper char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
 
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 0>::type
         real_policy_type;
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 1>::type
         real_data_type;
         typedef fusion::vector<real_policy_type, real_data_type> vector_type;
 
         typedef karma::real_generator<true, T, RealPolicies, key_tag> real_type;
         typedef component<karma::domain, real_type, vector_type> type;
-
+
         static type
         call(Elements const& elements)
         {

Modified: branches/proto/v4/boost/spirit/home/karma/numeric/uint.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/numeric/uint.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/numeric/uint.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_UINT_FEB_23_2007_0840PM)
@@ -39,33 +39,33 @@
 
         BOOST_MPL_ASSERT_MSG(!std::numeric_limits<T>::is_signed,
             signed_unsigned_mismatch, ());
-
+
         // uint has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& /*component*/, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& /*component*/, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& param)
         {
             bool result = int_inserter<Radix, Tag>::call(sink, param);
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return result;
         }
 
- // this uint has no parameter attached, it needs to have been
+ // this uint has no parameter attached, it needs to have been
         // initialized from a direct literal
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter>
- static bool
- generate(Component const&, OutputIterator&, Context&, Delimiter const&,
- unused_type)
+ static bool
+ generate(Component const&, OutputIterator&, Context&, Delimiter const&,
+ unused_type)
         {
             BOOST_MPL_ASSERT_MSG(false, uint_not_usable_without_parameter, ());
             return false;
         }
-
- template <typename Component>
- static std::string what(Component const&)
+
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "unsigned integer";
         }
@@ -87,21 +87,21 @@
 
         BOOST_MPL_ASSERT_MSG(!std::numeric_limits<T>::is_signed,
             signed_unsigned_mismatch, ());
-
- template <typename Component, typename OutputIterator,
+
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
         {
             T n = fusion::at_c<0>(component.elements);
             bool result = int_inserter<Radix, Tag>::call(sink, n);
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return result;
         }
-
- template <typename Component>
- static std::string what(Component const&)
+
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "unsigned integer";
         }
@@ -129,7 +129,7 @@
 
         typedef karma::uint_generator<false, T, Radix, ForceSign, key_tag> int_type;
         typedef component<karma::domain, int_type, fusion::nil> type;
-
+
         static type
         call(Elements const&)
         {
@@ -150,14 +150,14 @@
         typedef spirit::char_class::tag::lower char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
 
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 0>::type
         int_data_type;
         typedef fusion::vector<int_data_type> vector_type;
 
         typedef karma::uint_generator<true, T, Radix, ForceSign, key_tag> int_type;
         typedef component<karma::domain, int_type, vector_type> type;
-
+
         static type
         call(Elements const& elements)
         {
@@ -183,7 +183,7 @@
 
         typedef karma::uint_generator<false, T, Radix, ForceSign, key_tag> int_type;
         typedef component<karma::domain, int_type, fusion::nil> type;
-
+
         static type
         call(Elements const&)
         {
@@ -204,14 +204,14 @@
         typedef spirit::char_class::tag::upper char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
 
- typedef typename
+ typedef typename
             fusion::result_of::value_at_c<Elements, 0>::type
         int_data_type;
         typedef fusion::vector<int_data_type> vector_type;
 
         typedef karma::uint_generator<true, T, Radix, ForceSign, key_tag> int_type;
         typedef component<karma::domain, int_type, vector_type> type;
-
+
         static type
         call(Elements const& elements)
         {

Modified: branches/proto/v4/boost/spirit/home/karma/operator/alternative.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/operator/alternative.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/operator/alternative.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -65,12 +65,12 @@
             return fusion::any(component.elements, f);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "alternatives[";
             fusion::for_each(component.elements,
- spirit::detail::what_function(result));
+ spirit::detail::what_function<Context>(result, ctx));
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/karma/operator/detail/alternative.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/operator/detail/alternative.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/operator/detail/alternative.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -41,16 +41,11 @@
         typedef typename mpl::begin<types>::type begin;
 
         typedef typename
- mpl::find_if<
- types,
- is_convertible<mpl::_1, Expected>
- >::type
+ mpl::find_if<types, is_same<mpl::_1, Expected> >::type
         iter;
 
         typedef typename mpl::not_<is_same<iter, end> >::type type;
         enum { value = type::value };
-
-
     };
 
     template <typename Expected>
@@ -117,18 +112,18 @@
     {
         // If this alternative is a sequence, we wrap the attribute into a
         // fusion sequence.
- template <typename Parameter>
- static fusion::vector<Parameter const&>
- wrap_attribute(Parameter const& param, mpl::true_)
+ template <typename Parameter_>
+ static fusion::vector<Parameter_ const&>
+ wrap_attribute(Parameter_ const& param, mpl::true_)
         {
             return fusion::vector<Parameter const&>(param);
         }
 
         // If this alternative is not a sequence the parameter is passed
         // through unchanged.
- template <typename Parameter>
- static Parameter const&
- wrap_attribute(Parameter const& param, mpl::false_)
+ template <typename Parameter_>
+ static Parameter_ const&
+ wrap_attribute(Parameter_ const& param, mpl::false_)
         {
             return param;
         }

Modified: branches/proto/v4/boost/spirit/home/karma/operator/karma-alt/alternative.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/operator/karma-alt/alternative.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/operator/karma-alt/alternative.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -65,12 +65,12 @@
             return fusion::any(component.elements, f);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "alternatives[";
             fusion::for_each(component.elements,
- spirit::detail::what_function(result));
+ spirit::detail::what_function<Context>(result), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/karma/operator/kleene.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/operator/kleene.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/operator/kleene.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -72,8 +72,8 @@
 // return false;
 // }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "kleene[";
 
@@ -81,7 +81,7 @@
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/karma/operator/list.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/operator/list.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/operator/list.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -70,8 +70,8 @@
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "list[";
 
@@ -83,9 +83,9 @@
                 spirit::result_of::right<Component>::type::director
             rdirector;
 
- result += ldirector::what(spirit::left(component));
+ result += ldirector::what(spirit::left(component), ctx);
             result += ", ";
- result += rdirector::what(spirit::right(component));
+ result += rdirector::what(spirit::right(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/karma/operator/optional.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/operator/optional.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/operator/optional.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -79,8 +79,8 @@
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "optional[";
 
@@ -88,7 +88,7 @@
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/karma/operator/plus.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/operator/plus.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/operator/plus.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -75,8 +75,8 @@
 // return false;
 // }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "plus[";
 
@@ -84,7 +84,7 @@
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(spirit::subject(component));
+ result += director::what(spirit::subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/karma/operator/sequence.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/operator/sequence.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/operator/sequence.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -73,12 +73,12 @@
             return !spirit::any_if(component.elements, param, f, predicate());
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "sequence[";
             fusion::for_each(component.elements,
- spirit::detail::what_function(result));
+ spirit::detail::what_function<Context>(result, ctx));
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/karma/stream/stream.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/stream/stream.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/stream/stream.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,20 +17,20 @@
 #include <iosfwd>
 
 ///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit
-{
+namespace boost { namespace spirit
+{
     // overload the streaming operators for the unused_type
     template <typename Char, typename Traits>
- inline std::basic_ostream<Char, Traits>&
+ inline std::basic_ostream<Char, Traits>&
     operator<< (std::basic_ostream<Char, Traits>& os, unused_type)
     {
         return os;
     }
-
+
 }}
 
 ///////////////////////////////////////////////////////////////////////////////
-namespace boost { namespace spirit { namespace karma
+namespace boost { namespace spirit { namespace karma
 {
     template <typename Char>
     struct any_stream
@@ -42,24 +42,24 @@
         };
 
         // any_stream has a parameter attached
-
+
         // this overload will be used in the normal case (not called from
         // format_manip).
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& param)
         {
- typedef
- karma::detail::iterator_sink<OutputIterator, Char>
+ typedef
+ karma::detail::iterator_sink<OutputIterator, Char>
             sink_device;
 
             iostreams::stream<sink_device> ostr(sink);
             ostr << param << std::flush; // use existing operator<<()
-
+
             if (ostr.good()) {
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
                 return true;
             }
             return false;
@@ -68,48 +68,48 @@
         // this is a special overload to detect if the output iterator has been
         // generated by a format_manip object.
         template <
- typename Component, typename T, typename Traits,
+ typename Component, typename T, typename Traits,
             typename Context, typename Delimiter, typename Parameter
>
- static bool
- generate(Component const& component,
+ static bool
+ generate(Component const& component,
             karma::detail::output_iterator<
- karma::detail::ostream_iterator<T, Char, Traits>
- >& sink, Context&, Delimiter const& d, Parameter const& param)
+ karma::detail::ostream_iterator<T, Char, Traits>
+ >& sink, Context&, Delimiter const& d, Parameter const& param)
         {
             typedef karma::detail::output_iterator<
- karma::detail::ostream_iterator<T, Char, Traits>
+ karma::detail::ostream_iterator<T, Char, Traits>
> output_iterator;
- typedef
- karma::detail::iterator_sink<output_iterator, Char>
+ typedef
+ karma::detail::iterator_sink<output_iterator, Char>
             sink_device;
 
             iostreams::stream<sink_device> ostr(sink);
             ostr.imbue(sink.get_ostream().getloc());
             ostr << param << std::flush; // use existing operator<<()
-
+
             if (ostr.good()) {
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
                 return true;
             }
             return false;
         }
-
- // this any_stream has no parameter attached, it needs to have been
+
+ // this any_stream has no parameter attached, it needs to have been
         // initialized from a value/variable
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter>
- static bool
- generate(Component const&, OutputIterator&, Context&, Delimiter const&,
- unused_type)
+ static bool
+ generate(Component const&, OutputIterator&, Context&, Delimiter const&,
+ unused_type)
         {
- BOOST_MPL_ASSERT_MSG(false, stream__not_usable_without_parameter,
+ BOOST_MPL_ASSERT_MSG(false, stream__not_usable_without_parameter,
               (Component, OutputIterator, Delimiter));
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "any-stream";
         }
@@ -126,22 +126,22 @@
         };
 
         // stream_director has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const&)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const&)
         {
- typedef
- karma::detail::iterator_sink<OutputIterator, Char>
+ typedef
+ karma::detail::iterator_sink<OutputIterator, Char>
             sink_device;
 
             // use existing operator<<()
             iostreams::stream<sink_device> ostr(sink);
- ostr << fusion::at_c<0>(component.elements) << std::flush;
-
+ ostr << fusion::at_c<0>(component.elements) << std::flush;
+
             if (ostr.good()) {
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
                 return true;
             }
             return false;
@@ -150,41 +150,41 @@
         // this is a special overload to detect if the output iterator has been
         // generated by a format_manip object.
         template <
- typename Component, typename T, typename Traits,
+ typename Component, typename T, typename Traits,
             typename Context, typename Delimiter, typename Parameter
>
- static bool
- generate(Component const& component,
+ static bool
+ generate(Component const& component,
             karma::detail::output_iterator<
- karma::detail::ostream_iterator<T, Char, Traits>
- >& sink, Context&, Delimiter const& d, Parameter const&)
+ karma::detail::ostream_iterator<T, Char, Traits>
+ >& sink, Context&, Delimiter const& d, Parameter const&)
         {
             typedef karma::detail::output_iterator<
- karma::detail::ostream_iterator<T, Char, Traits>
+ karma::detail::ostream_iterator<T, Char, Traits>
> output_iterator;
- typedef
- karma::detail::iterator_sink<output_iterator, Char>
+ typedef
+ karma::detail::iterator_sink<output_iterator, Char>
             sink_device;
 
             // use existing operator<<()
             iostreams::stream<sink_device> ostr(sink);
             ostr.imbue(sink.get_ostream().getloc());
- ostr << fusion::at_c<0>(component.elements) << std::flush;
-
+ ostr << fusion::at_c<0>(component.elements) << std::flush;
+
             if (ostr.good()) {
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
                 return true;
             }
             return false;
         }
-
- template <typename Component>
- static std::string what(Component const& component)
+
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "stream";
         }
     };
-
+
 }}}
 
 #endif

Modified: branches/proto/v4/boost/spirit/home/karma/string/lit.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/string/lit.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/string/lit.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
+//
+// Distributed under the 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_SPIRIT_KARMA_LIT_FEB_22_2007_0534PM)
@@ -35,32 +35,32 @@
         };
 
         // lit has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& /*component*/, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& /*component*/, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& param)
         {
             bool result = detail::string_generate(sink, param);
             if (result)
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return result;
         }
 
- // this lit has no parameter attached, it needs to have been
+ // this lit has no parameter attached, it needs to have been
         // initialized from a direct literal
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, unused_type)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, unused_type)
         {
             BOOST_MPL_ASSERT_MSG(false, lit_not_usable_without_parameter, ());
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "any-string";
         }
@@ -78,21 +78,21 @@
             typedef unused_type type;
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& /*param*/)
         {
             bool result = detail::string_generate(sink,
                 fusion::at_c<0>(component.elements));
-
- karma::delimit(sink, d); // always do post-delimiting
+
+ karma::delimit(sink, d); // always do post-delimiting
             return result;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return std::string("\"")
                 + spirit::detail::to_narrow_string(
@@ -113,21 +113,21 @@
             typedef unused_type type;
         };
 
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Parameter const& /*param*/)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& ctx, Delimiter const& d, Parameter const& /*param*/)
         {
             bool result = detail::string_generate(sink,
                 fusion::at_c<0>(component.elements)(unused, ctx));
-
- karma::delimit(sink, d); // always do post-delimiting
+
+ karma::delimit(sink, d); // always do post-delimiting
             return result;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "string";
         }
@@ -146,36 +146,36 @@
         };
 
         // case_any_string has a parameter attached
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter, typename Parameter>
- static bool
- generate(Component const& /*component*/, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, Parameter const& param)
+ static bool
+ generate(Component const& /*component*/, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, Parameter const& param)
         {
             bool result = detail::string_generate(sink, param, Tag());
- karma::delimit(sink, d); // always do post-delimiting
+ karma::delimit(sink, d); // always do post-delimiting
             return result;
         }
 
- // this case_any_string has no parameter attached, it needs to have been
+ // this case_any_string has no parameter attached, it needs to have been
         // initialized from a direct literal
- template <typename Component, typename OutputIterator,
+ template <typename Component, typename OutputIterator,
             typename Context, typename Delimiter>
- static bool
- generate(Component const& component, OutputIterator& sink,
- Context& /*ctx*/, Delimiter const& d, unused_type)
+ static bool
+ generate(Component const& component, OutputIterator& sink,
+ Context& /*ctx*/, Delimiter const& d, unused_type)
         {
             BOOST_MPL_ASSERT_MSG(false, lit_not_usable_without_parameter, ());
             return false;
         }
 
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             typedef typename Tag::char_set char_set;
             typedef typename Tag::char_class char_class_;
- return std::string("any-") +
+ return std::string("any-") +
                 spirit::char_class::what<char_set>::is(char_class_())
                 + "case-string";
         }
@@ -200,18 +200,18 @@
         typedef std::basic_string<Char> string_type;
         typedef fusion::vector<string_type> vector_type;
 
- typedef
- component<karma::domain, karma::literal_string<Char>, vector_type>
+ typedef
+ component<karma::domain, karma::literal_string<Char>, vector_type>
         type;
-
+
         static type
         call(Elements const& elements)
         {
             typedef typename Modifier::char_set char_set;
-
+
             string_type val(fusion::at_c<0>(elements));
             typename string_type::iterator end = val.end();
- for (typename string_type::iterator it = val.begin();
+ for (typename string_type::iterator it = val.begin();
                  it != end; ++it)
             {
                 *it = char_set::tolower(*it);
@@ -233,18 +233,18 @@
         typedef std::basic_string<Char> string_type;
         typedef fusion::vector<string_type> vector_type;
 
- typedef
- component<karma::domain, karma::literal_string<Char>, vector_type>
+ typedef
+ component<karma::domain, karma::literal_string<Char>, vector_type>
         type;
-
+
         static type
         call(Elements const& elements)
         {
             typedef typename Modifier::char_set char_set;
-
+
             string_type val(fusion::at_c<0>(elements));
             typename string_type::iterator end = val.end();
- for (typename string_type::iterator it = val.begin();
+ for (typename string_type::iterator it = val.begin();
                  it != end; ++it)
             {
                 *it = char_set::toupper(*it);
@@ -269,11 +269,11 @@
         typedef typename Modifier::char_set char_set;
         typedef spirit::char_class::tag::lower char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
-
+
         typedef component<
             karma::domain, karma::case_any_string<Char, key_tag>, fusion::nil
> type;
-
+
         static type
         call(Elements const&)
         {
@@ -293,11 +293,11 @@
         typedef typename Modifier::char_set char_set;
         typedef spirit::char_class::tag::upper char_class_;
         typedef spirit::char_class::key<char_set, char_class_> key_tag;
-
+
         typedef component<
             karma::domain, karma::case_any_string<Char, key_tag>, fusion::nil
> type;
-
+
         static type
         call(Elements const&)
         {

Modified: branches/proto/v4/boost/spirit/home/karma/what.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/karma/what.hpp (original)
+++ branches/proto/v4/boost/spirit/home/karma/what.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -28,7 +28,7 @@
         typedef typename component::director director;
 
         component c = spirit::as_component(karma::domain(), xpr);
- return director::what(c);
+ return director::what(c, unused);
     }
 }}}
 

Modified: branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,6 +20,9 @@
     {
     public:
         typedef std::vector<std::size_t> size_t_vector;
+ typedef
+ typename boost::detail::iterator_traits<Iterator>::value_type
+ char_type;
 
 // static std::size_t next (const std::size_t * const lookup_,
 // std::size_t const dfa_alphabet_, const std::size_t * const dfa_,
@@ -93,7 +96,8 @@
 // return id_;
 // }
 
- static std::size_t next (boost::lexer::state_machine const& state_machine_,
+ static std::size_t next (
+ boost::lexer::basic_state_machine<char_type> const& state_machine_,
             std::size_t &dfa_state_, Iterator const& start_,
             Iterator &start_token_, Iterator const& end_)
         {
@@ -186,7 +190,8 @@
 
         ///////////////////////////////////////////////////////////////////////
         static
- std::size_t next (boost::lexer::state_machine const& state_machine_,
+ std::size_t next (
+ boost::lexer::basic_state_machine<char_type> const& state_machine_,
             Iterator const& start_, Iterator &start_token_, Iterator const& end_)
         {
             if (start_token_ == end_) return 0;

Modified: branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_functor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -77,7 +77,7 @@
             std::size_t get_state() const { return 0; }
             void set_state_name (char_type const* state) {}
 
- boost::lexer::state_machine const& state_machine;
+ boost::lexer::basic_state_machine<char_type> const& state_machine;
             boost::lexer::basic_rules<char_type> const& rules;
             Iterator& first;
             Iterator last;
@@ -250,7 +250,15 @@
           : eof()
 #endif
         {}
-
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
+ // somehow VC7.1 needs this (meaningless) assignment operator
+ lexertl_functor& operator=(lexertl_functor const& rhs)
+ {
+ return *this;
+ }
+#endif
+
         ///////////////////////////////////////////////////////////////////////
         // interface to the multi_pass_policies::split_functor_input policy
         typedef Token result_type;

Modified: branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_generate_static.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_generate_static.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_generate_static.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -30,36 +30,36 @@
     {
         // we need to re-sort the state names in ascending order if the state
         // ids, filling possible gaps in between later
- typedef typename
- boost::lexer::basic_rules<Char>::string_size_t_map::const_iterator
- state_iterator;
- typedef std::map<std::size_t, char const*> reverse_state_map_type;
-
+ typedef typename
+ boost::lexer::basic_rules<Char>::string_size_t_map::const_iterator
+ state_iterator;
+ typedef std::map<std::size_t, char const*> reverse_state_map_type;
+
         reverse_state_map_type reverse_state_map;
- state_iterator send = rules_.statemap().end();
- for (state_iterator sit = rules_.statemap().begin(); sit != send; ++sit)
- {
- typedef typename reverse_state_map_type::value_type value_type;
- reverse_state_map.insert(value_type((*sit).second, (*sit).first.c_str()));
- }
+ state_iterator send = rules_.statemap().end();
+ for (state_iterator sit = rules_.statemap().begin(); sit != send; ++sit)
+ {
+ typedef typename reverse_state_map_type::value_type value_type;
+ reverse_state_map.insert(value_type((*sit).second, (*sit).first.c_str()));
+ }
+
+ os_ << "// this table defines the names of the lexer states\n";
+ os_ << "char const* const lexer_state_names" << name_suffix
+ << "[" << rules_.statemap().size() << "] = \n{\n";
+
+ typedef typename reverse_state_map_type::iterator iterator;
+ iterator rend = reverse_state_map.end();
+ std::size_t last_id = 0;
+ for (iterator rit = reverse_state_map.begin(); rit != rend; ++rit)
+ {
+ for (/**/; last_id < (*rit).first; ++last_id)
+ {
+ os_ << " 0, // \"<undefined state>\"\n";
+ }
+ os_ << " \"" << (*rit).second << "\",\n";
+ }
+ os_ << "};\n\n";
         
- os_ << "// this table defines the names of the lexer states\n";
- os_ << "char const* const lexer_state_names" << name_suffix
- << "[" << rules_.statemap().size() << "] = \n{\n";
-
- typedef typename reverse_state_map_type::iterator iterator;
- iterator rend = reverse_state_map.end();
- std::size_t last_id = 0;
- for (iterator rit = reverse_state_map.begin(); rit != rend; ++rit)
- {
- for (/**/; last_id < (*rit).first; ++last_id)
- {
- os_ << " 0, // \"<undefined state>\"\n";
- }
- os_ << " \"" << (*rit).second << "\",\n";
- }
- os_ << "};\n\n";
-
         return true;
     }
     
@@ -67,7 +67,7 @@
     // Generate a tokenizer for the given state machine.
     template <typename Char>
     inline bool
- generate_cpp (boost::lexer::state_machine const& sm_,
+ generate_cpp (boost::lexer::basic_state_machine<Char> const& sm_,
         boost::lexer::basic_rules<Char> const& rules_,
         std::ostream &os_, char const* name_suffix = "",
         bool skip_on_nomatch = true, bool optimize_parameters = true)
@@ -75,16 +75,16 @@
         if (sm_._lookup->empty())
             return false;
             
- std::size_t const dfas_ = sm_._dfa->size();
- std::size_t const lookups_ = sm_._lookup->front()->size();
+ std::size_t const dfas_ = sm_._dfa->size();
+ std::size_t const lookups_ = sm_._lookup->front()->size();
 
- os_ << "// Copyright (c) 2008 Ben Hanson\n";
- os_ << "//\n";
- os_ << "// Distributed under the Boost Software License, "
- "Version 1.0. (See accompanying\n";
- os_ << "// file licence_1_0.txt or copy at "
- "http://www.boost.org/LICENSE_1_0.txt)\n\n";
- os_ << "// Auto-generated by boost::lexer\n";
+ os_ << "// Copyright (c) 2008 Ben Hanson\n";
+ os_ << "//\n";
+ os_ << "// Distributed under the Boost Software License, "
+ "Version 1.0. (See accompanying\n";
+ os_ << "// file licence_1_0.txt or copy at "
+ "http://www.boost.org/LICENSE_1_0.txt)\n\n";
+ os_ << "// Auto-generated by boost::lexer\n";
 
         std::string guard(__DATE__ "_" __TIME__);
         std::string::size_type p = guard.find_first_of(": ");
@@ -94,32 +94,32 @@
             p = guard.find_first_of(": ", p);
         }
       
- os_ << "#if !defined(BOOST_SPIRIT_LEXER_NEXT_TOKEN_" << guard << ")\n";
- os_ << "#define BOOST_SPIRIT_LEXER_NEXT_TOKEN_" << guard << "\n\n";
-
- os_ << "#include <boost/detail/iterator.hpp>\n";
- os_ << "#include <boost/spirit/home/support/detail/lexer/char_traits.hpp>\n\n";
-
- os_ << "// the generated table of state names and the tokenizer have to be\n"
- "// defined in the boost::spirit::lex::static namespace\n";
- os_ << "namespace boost { namespace spirit { namespace lex { "
- "namespace static_ {\n\n";
+ os_ << "#if !defined(BOOST_SPIRIT_LEXER_NEXT_TOKEN_" << guard << ")\n";
+ os_ << "#define BOOST_SPIRIT_LEXER_NEXT_TOKEN_" << guard << "\n\n";
+
+ os_ << "#include <boost/detail/iterator.hpp>\n";
+ os_ << "#include <boost/spirit/home/support/detail/lexer/char_traits.hpp>\n\n";
+
+ os_ << "// the generated table of state names and the tokenizer have to be\n"
+ "// defined in the boost::spirit::lex::static namespace\n";
+ os_ << "namespace boost { namespace spirit { namespace lex { "
+ "namespace static_ {\n\n";
 
         // generate the table containing state names
         if (!generate_cpp_state_names(rules_, os_, name_suffix))
             return false;
 
- os_ << "template<typename Iterator>\n";
- os_ << "std::size_t next_token" << name_suffix << " (";
+ os_ << "template<typename Iterator>\n";
+ os_ << "std::size_t next_token" << name_suffix << " (";
 
         if (dfas_ > 1 || !optimize_parameters)
         {
- os_ << "std::size_t &start_state_, ";
+ os_ << "std::size_t &start_state_, ";
         }
 
         if (sm_._seen_BOL_assertion || !optimize_parameters)
         {
- os_ << "Iterator const& start_, ";
+ os_ << "Iterator const& start_, ";
         }
 
         if (dfas_ > 1 || sm_._seen_BOL_assertion || !optimize_parameters)
@@ -127,26 +127,26 @@
             os_ << "\n ";
         }
       
- os_ << "Iterator &start_token_, Iterator const& end_)\n";
- os_ << "{\n";
- os_ << " enum {end_state_index, id_index, state_index, bol_index, "
- "eol_index,\n";
- os_ << " dead_state_index, dfa_offset};\n";
- os_ << " static const std::size_t npos = static_cast"
- "<std::size_t>(~0);\n";
+ os_ << "Iterator &start_token_, Iterator const& end_)\n";
+ os_ << "{\n";
+ os_ << " enum {end_state_index, id_index, state_index, bol_index, "
+ "eol_index,\n";
+ os_ << " dead_state_index, dfa_offset};\n";
+ os_ << " static const std::size_t npos = static_cast"
+ "<std::size_t>(~0);\n";
 
- if (dfas_ > 1)
- {
+ if (dfas_ > 1)
+ {
             for (std::size_t state_ = 0; state_ < dfas_; ++state_)
             {
                 std::size_t i_ = 0;
                 std::size_t j_ = 1;
                 std::size_t count_ = lookups_ / 8;
- std::size_t const* lookup_ = &sm_._lookup[state_]->front ();
- std::size_t const* dfa_ = &sm_._dfa[state_]->front ();
+ std::size_t const* lookup_ = &sm_._lookup[state_]->front ();
+ std::size_t const* dfa_ = &sm_._dfa[state_]->front ();
 
- os_ << " static const std::size_t lookup" << state_
- << "_[" << lookups_ << "] = {";
+ os_ << " static const std::size_t lookup" << state_
+ << "_[" << lookups_ << "] = {";
 
                 for (/**/; i_ < count_; ++i_)
                 {
@@ -246,19 +246,19 @@
             }
 
             os_ << "};\n";
- }
- else
- {
- std::size_t const* lookup_ = &sm_._lookup[0]->front();
- std::size_t const* dfa_ = &sm_._dfa[0]->front();
+ }
+ else
+ {
+ std::size_t const* lookup_ = &sm_._lookup[0]->front();
+ std::size_t const* dfa_ = &sm_._dfa[0]->front();
             std::size_t i_ = 0;
             std::size_t j_ = 1;
             std::size_t count_ = lookups_ / 8;
 
- os_ << " static const std::size_t lookup_[";
- os_ << sm_._lookup[0]->size() << "] = {";
+ os_ << " static const std::size_t lookup_[";
+ os_ << sm_._lookup[0]->size() << "] = {";
 
- for (; i_ < count_; ++i_)
+ for (; i_ < count_; ++i_)
             {
                 const std::size_t index_ = i_ * 8;
 
@@ -277,11 +277,11 @@
                 j_ = 1;
             }
 
- os_ << "};\n";
- os_ << " static const std::size_t dfa_alphabet_ = " <<
- sm_._dfa_alphabet.front () << ";\n";
- os_ << " static const std::size_t dfa_[" <<
- sm_._dfa[0]->size () << "] = {";
+ os_ << "};\n";
+ os_ << " static const std::size_t dfa_alphabet_ = " <<
+ sm_._dfa_alphabet.front () << ";\n";
+ os_ << " static const std::size_t dfa_[" <<
+ sm_._dfa[0]->size () << "] = {";
                 count_ = sm_._dfa[0]->size () / 8;
 
             for (i_ = 0; i_ < count_; ++i_)
@@ -321,145 +321,145 @@
             }
 
             os_ << "};\n";
- }
+ }
+
+ os_ << "\n if (start_token_ == end_) return 0;\n\n";
+
+ if (dfas_ > 1)
+ {
+ os_ << "again:\n";
+ os_ << " const std::size_t * lookup_ = lookup_arr_[start_state_];\n";
+ os_ << " std::size_t dfa_alphabet_ = dfa_alphabet_arr_[start_state_];\n";
+ os_ << " const std::size_t *dfa_ = dfa_arr_[start_state_];\n";
+ }
+
+ os_ << " const std::size_t *ptr_ = dfa_ + dfa_alphabet_;\n";
+ os_ << " Iterator curr_ = start_token_;\n";
+ os_ << " bool end_state_ = *ptr_ != 0;\n";
+ os_ << " std::size_t id_ = *(ptr_ + id_index);\n";
+ os_ << " Iterator end_token_ = start_token_;\n";
+ os_ << '\n';
+ os_ << " while (curr_ != end_)\n";
+ os_ << " {\n";
+
+ if (sm_._seen_BOL_assertion)
+ {
+ os_ << " std::size_t const BOL_state_ = ptr_[bol_index];\n";
+ }
+
+ if (sm_._seen_EOL_assertion)
+ {
+ os_ << " std::size_t const EOL_state_ = ptr_[eol_index];\n";
+ }
+
+ if (sm_._seen_BOL_assertion || sm_._seen_EOL_assertion)
+ {
+ os_ << '\n';
+ }
+
+ if (sm_._seen_BOL_assertion && sm_._seen_EOL_assertion)
+ {
+ os_ << " if (BOL_state_ && (start_token_ == start_ ||\n";
+ os_ << " *(start_token_ - 1) == '\\n'))\n";
+ os_ << " {\n";
+ os_ << " ptr_ = &dfa_[BOL_state_ * dfa_alphabet_];\n";
+ os_ << " }\n";
+ os_ << " else if (EOL_state_ && *curr_ == '\\n')\n";
+ os_ << " {\n";
+ os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n";
+ os_ << " }\n";
+ os_ << " else\n";
+ os_ << " {\n";
+ os_ << " std::size_t const state_ =\n";
+
+ if (lookups_ == 256)
+ {
+ os_ << " ptr_[lookup_[<typename Traits::index_type>"
+ "(*curr_++)]];\n";
+ }
+ else
+ {
+ os_ << " ptr_[lookup_[*curr_++]];\n";
+ }
+
+ os_ << '\n';
+ os_ << " if (state_ == 0) break;\n";
+ os_ << '\n';
+ os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n";
+ os_ << " }\n";
+ }
+ else if (sm_._seen_BOL_assertion)
+ {
+ os_ << " if (BOL_state_ && (start_token_ == start_ ||\n";
+ os_ << " *(start_token_ - 1) == '\\n'))\n";
+ os_ << " {\n";
+ os_ << " ptr_ = &dfa_[BOL_state_ * dfa_alphabet_];\n";
+ os_ << " }\n";
+ os_ << " else\n";
+ os_ << " {\n";
+ os_ << " std::size_t const state_ =\n";
+
+ if (lookups_ == 256)
+ {
+ os_ << " ptr_[lookup_[static_cast<unsigned char>\n";
+ os_ << " (*curr_++)]];\n";
+ }
+ else
+ {
+ os_ << " ptr_[lookup_[*curr_++]];\n";
+ }
 
- os_ << "\n if (start_token_ == end_) return 0;\n\n";
+ os_ << '\n';
+ os_ << " if (state_ == 0) break;\n";
+ os_ << '\n';
+ os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n";
+ os_ << " }\n";
+ }
+ else if (sm_._seen_EOL_assertion)
+ {
+ os_ << " if (EOL_state_ && *curr_ == '\\n')\n";
+ os_ << " {\n";
+ os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n";
+ os_ << " }\n";
+ os_ << " else\n";
+ os_ << " {\n";
+ os_ << " std::size_t const state_ =\n";
 
- if (dfas_ > 1)
- {
- os_ << "again:\n";
- os_ << " const std::size_t * lookup_ = lookup_arr_[start_state_];\n";
- os_ << " std::size_t dfa_alphabet_ = dfa_alphabet_arr_[start_state_];\n";
- os_ << " const std::size_t *dfa_ = dfa_arr_[start_state_];\n";
- }
-
- os_ << " const std::size_t *ptr_ = dfa_ + dfa_alphabet_;\n";
- os_ << " Iterator curr_ = start_token_;\n";
- os_ << " bool end_state_ = *ptr_ != 0;\n";
- os_ << " std::size_t id_ = *(ptr_ + id_index);\n";
- os_ << " Iterator end_token_ = start_token_;\n";
- os_ << '\n';
- os_ << " while (curr_ != end_)\n";
- os_ << " {\n";
-
- if (sm_._seen_BOL_assertion)
- {
- os_ << " std::size_t const BOL_state_ = ptr_[bol_index];\n";
- }
-
- if (sm_._seen_EOL_assertion)
- {
- os_ << " std::size_t const EOL_state_ = ptr_[eol_index];\n";
- }
-
- if (sm_._seen_BOL_assertion || sm_._seen_EOL_assertion)
- {
- os_ << '\n';
- }
-
- if (sm_._seen_BOL_assertion && sm_._seen_EOL_assertion)
- {
- os_ << " if (BOL_state_ && (start_token_ == start_ ||\n";
- os_ << " *(start_token_ - 1) == '\\n'))\n";
- os_ << " {\n";
- os_ << " ptr_ = &dfa_[BOL_state_ * dfa_alphabet_];\n";
- os_ << " }\n";
- os_ << " else if (EOL_state_ && *curr_ == '\\n')\n";
- os_ << " {\n";
- os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n";
- os_ << " }\n";
- os_ << " else\n";
- os_ << " {\n";
- os_ << " std::size_t const state_ =\n";
-
- if (lookups_ == 256)
- {
- os_ << " ptr_[lookup_[<typename Traits::index_type>"
- "(*curr_++)]];\n";
- }
- else
- {
- os_ << " ptr_[lookup_[*curr_++]];\n";
- }
-
- os_ << '\n';
- os_ << " if (state_ == 0) break;\n";
- os_ << '\n';
- os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n";
- os_ << " }\n";
- }
- else if (sm_._seen_BOL_assertion)
- {
- os_ << " if (BOL_state_ && (start_token_ == start_ ||\n";
- os_ << " *(start_token_ - 1) == '\\n'))\n";
- os_ << " {\n";
- os_ << " ptr_ = &dfa_[BOL_state_ * dfa_alphabet_];\n";
- os_ << " }\n";
- os_ << " else\n";
- os_ << " {\n";
- os_ << " std::size_t const state_ =\n";
-
- if (lookups_ == 256)
- {
- os_ << " ptr_[lookup_[static_cast<unsigned char>\n";
- os_ << " (*curr_++)]];\n";
- }
- else
- {
- os_ << " ptr_[lookup_[*curr_++]];\n";
- }
-
- os_ << '\n';
- os_ << " if (state_ == 0) break;\n";
- os_ << '\n';
- os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n";
- os_ << " }\n";
- }
- else if (sm_._seen_EOL_assertion)
- {
- os_ << " if (EOL_state_ && *curr_ == '\\n')\n";
- os_ << " {\n";
- os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n";
- os_ << " }\n";
- os_ << " else\n";
- os_ << " {\n";
- os_ << " std::size_t const state_ =\n";
-
- if (lookups_ == 256)
- {
- os_ << " ptr_[lookup_[static_cast<unsigned char>\n";
- os_ << " (*curr_++)]];\n";
- }
- else
- {
- os_ << " ptr_[lookup_[*curr_++]];\n";
- }
-
- os_ << '\n';
- os_ << " if (state_ == 0) break;\n";
- os_ << '\n';
- os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n";
- os_ << " }\n";
- }
- else
- {
- os_ << " std::size_t const state_ =\n";
-
- if (lookups_ == 256)
- {
- os_ << " ptr_[lookup_[static_cast<unsigned char>\n";
- os_ << " (*curr_++)]];\n";
- }
- else
- {
- os_ << " ptr_[lookup_[*curr_++]];\n";
- }
-
- os_ << '\n';
- os_ << " if (state_ == 0) break;\n";
- os_ << '\n';
- os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n";
- }
+ if (lookups_ == 256)
+ {
+ os_ << " ptr_[lookup_[static_cast<unsigned char>\n";
+ os_ << " (*curr_++)]];\n";
+ }
+ else
+ {
+ os_ << " ptr_[lookup_[*curr_++]];\n";
+ }
+
+ os_ << '\n';
+ os_ << " if (state_ == 0) break;\n";
+ os_ << '\n';
+ os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n";
+ os_ << " }\n";
+ }
+ else
+ {
+ os_ << " std::size_t const state_ =\n";
+
+ if (lookups_ == 256)
+ {
+ os_ << " ptr_[lookup_[static_cast<unsigned char>\n";
+ os_ << " (*curr_++)]];\n";
+ }
+ else
+ {
+ os_ << " ptr_[lookup_[*curr_++]];\n";
+ }
+
+ os_ << '\n';
+ os_ << " if (state_ == 0) break;\n";
+ os_ << '\n';
+ os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n";
+ }
 
         os_ << '\n';
         os_ << " if (*ptr_)\n";
@@ -467,71 +467,71 @@
         os_ << " end_state_ = true;\n";
         os_ << " id_ = *(ptr_ + id_index);\n";
 
- if (dfas_ > 1)
- {
- os_ << " start_state_ = *(ptr_ + state_index);\n";
- }
-
- os_ << " end_token_ = curr_;\n";
- os_ << " }\n";
- os_ << " }\n";
- os_ << '\n';
-
- if (sm_._seen_EOL_assertion)
- {
- os_ << " const std::size_t EOL_state_ = ptr_[eol_index];\n";
- os_ << '\n';
- os_ << " if (EOL_state_ && curr_ == end_)\n";
- os_ << " {\n";
- os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n";
- os_ << '\n';
- os_ << " if (*ptr_)\n";
- os_ << " {\n";
- os_ << " end_state_ = true;\n";
- os_ << " id_ = *(ptr_ + id_index);\n";
-
- if (dfas_ > 1)
- {
- os_ << " start_state_ = *(ptr_ + state_index);\n";
- }
-
- os_ << " end_token_ = curr_;\n";
- os_ << " }\n";
- os_ << " }\n";
- os_ << '\n';
- }
-
- os_ << " if (end_state_)\n";
- os_ << " {\n";
- os_ << " // return longest match\n";
- os_ << " start_token_ = end_token_;\n";
-
- if (dfas_ > 1)
- {
- os_ << '\n';
- os_ << " if (id_ == 0) goto again;\n";
- }
-
- os_ << " }\n";
- os_ << " else\n";
- os_ << " {\n";
-
- if (skip_on_nomatch)
- {
- os_ << " // No match causes char to be skipped\n";
- os_ << " ++start_token_;\n";
+ if (dfas_ > 1)
+ {
+ os_ << " start_state_ = *(ptr_ + state_index);\n";
+ }
+
+ os_ << " end_token_ = curr_;\n";
+ os_ << " }\n";
+ os_ << " }\n";
+ os_ << '\n';
+
+ if (sm_._seen_EOL_assertion)
+ {
+ os_ << " const std::size_t EOL_state_ = ptr_[eol_index];\n";
+ os_ << '\n';
+ os_ << " if (EOL_state_ && curr_ == end_)\n";
+ os_ << " {\n";
+ os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n";
+ os_ << '\n';
+ os_ << " if (*ptr_)\n";
+ os_ << " {\n";
+ os_ << " end_state_ = true;\n";
+ os_ << " id_ = *(ptr_ + id_index);\n";
+
+ if (dfas_ > 1)
+ {
+ os_ << " start_state_ = *(ptr_ + state_index);\n";
+ }
+
+ os_ << " end_token_ = curr_;\n";
+ os_ << " }\n";
+ os_ << " }\n";
+ os_ << '\n';
+ }
+
+ os_ << " if (end_state_)\n";
+ os_ << " {\n";
+ os_ << " // return longest match\n";
+ os_ << " start_token_ = end_token_;\n";
+
+ if (dfas_ > 1)
+ {
+ os_ << '\n';
+ os_ << " if (id_ == 0) goto again;\n";
+ }
+
+ os_ << " }\n";
+ os_ << " else\n";
+ os_ << " {\n";
+
+ if (skip_on_nomatch)
+ {
+ os_ << " // No match causes char to be skipped\n";
+ os_ << " ++start_token_;\n";
         }
       
- os_ << " id_ = npos;\n";
- os_ << " }\n";
- os_ << '\n';
- os_ << " return id_;\n";
- os_ << "}\n\n";
-
- os_ << "}}}} // namespace boost::spirit::lex::static_\n\n";
-
- os_ << "#endif\n";
-
+ os_ << " id_ = npos;\n";
+ os_ << " }\n";
+ os_ << '\n';
+ os_ << " return id_;\n";
+ os_ << "}\n\n";
+
+ os_ << "}}}} // namespace boost::spirit::lex::static_\n\n";
+
+ os_ << "#endif\n";
+
         return os_.good();
     }
     

Modified: branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_lexer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -47,6 +47,7 @@
             case '.':
             case '^': case '$':
             case '\\':
+ case '"':
                 return true;
 
             default:
@@ -205,7 +206,7 @@
     private:
         // this type is purely used for the iterator_type construction below
         struct iterator_data_type {
- boost::lexer::state_machine const& state_machine_;
+ boost::lexer::basic_state_machine<char_type> const& state_machine_;
             boost::lexer::basic_rules<char_type> const& rules_;
             typename Functor::semantic_actions_type const& actions_;
         };
@@ -323,7 +324,7 @@
         }
 
     private:
- mutable boost::lexer::state_machine state_machine;
+ mutable boost::lexer::basic_state_machine<char_type> state_machine;
         boost::lexer::basic_rules<char_type> rules;
         typename Functor::semantic_actions_type actions;
         mutable bool initialized_dfa;

Modified: branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_static_functor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_static_functor.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/lexer/lexertl/lexertl_static_functor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -245,7 +245,15 @@
           : eof()
 #endif
         {}
-
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
+ // somehow VC7.1 needs this (meaningless) assignment operator
+ lexertl_functor& operator=(lexertl_functor const& rhs)
+ {
+ return *this;
+ }
+#endif
+
         ///////////////////////////////////////////////////////////////////////
         // interface to the multi_pass_policies::split_functor_input policy
         typedef Token result_type;

Modified: branches/proto/v4/boost/spirit/home/lex/lexer/terminal_director.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/lexer/terminal_director.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/lexer/terminal_director.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -45,8 +45,8 @@
                 first, last, context, skipper, attr);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return subject(component).held->what();
         }

Modified: branches/proto/v4/boost/spirit/home/lex/qi/state/state_switcher.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/qi/state/state_switcher.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/qi/state/state_switcher.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -71,8 +71,8 @@
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result("set_state(\"");
             result += spirit::detail::to_narrow_string(
@@ -148,8 +148,8 @@
                 last, context, skipper, attr);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result("in_state(\"");
             result += spirit::detail::to_narrow_string(
@@ -160,7 +160,7 @@
                 spirit::result_of::subject<Component>::type::director
             director;
 
- result += director::what(subject(component));
+ result += director::what(subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/lex/qi/utility/plain_token.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/qi/utility/plain_token.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/qi/utility/plain_token.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -56,8 +56,8 @@
             return false;
         }
         
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result("token(\"");
             result += lexical_cast<std::string>(

Modified: branches/proto/v4/boost/spirit/home/lex/tokenize_and_parse.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/lex/tokenize_and_parse.hpp (original)
+++ branches/proto/v4/boost/spirit/home/lex/tokenize_and_parse.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -82,21 +82,6 @@
     }
 
     ///////////////////////////////////////////////////////////////////////////
- template <
- typename Iterator, typename LexerExpr,
- template <typename, typename> class Def
- >
- inline bool
- tokenize_and_parse(Iterator& first, Iterator last, LexerExpr const& lex,
- qi::grammar_class<Def>& gc)
- {
- typedef typename LexerExpr::iterator_type iterator_type;
- Def<iterator_type, unused_type> def(gc);
- qi::grammar<Def<iterator_type, unused_type> > g(def);
- return tokenize_and_parse(first, last, lex, g);
- }
-
- ///////////////////////////////////////////////////////////////////////////
     template <typename Iterator, typename LexerExpr, typename ParserExpr,
         typename Attribute>
     inline bool
@@ -123,21 +108,6 @@
     }
 
     ///////////////////////////////////////////////////////////////////////////
- template <
- typename Iterator, typename LexerExpr,
- template <typename, typename> class Def, typename Attribute
- >
- inline bool
- tokenize_and_parse(Iterator& first, Iterator last, LexerExpr const& lex,
- qi::grammar_class<Def>& gc, Attribute& attr)
- {
- typedef typename LexerExpr::iterator_type iterator_type;
- Def<iterator_type, unused_type> def(gc);
- qi::grammar<Def<iterator_type, unused_type> > g(def);
- return tokenize_and_parse(first, last, lex, g, attr);
- }
-
- ///////////////////////////////////////////////////////////////////////////
     //
     // The tokenize_and_phrase_parse() function is one of the main Spirit API
     // functions. It simplifies using a lexer as the underlying token source
@@ -229,21 +199,6 @@
 
     ///////////////////////////////////////////////////////////////////////////
     template <
- typename Iterator, typename LexerExpr,
- template <typename, typename> class Def, typename Skipper
- >
- inline bool
- tokenize_and_phrase_parse(Iterator& first, Iterator last,
- LexerExpr const& lex, qi::grammar_class<Def>& gc, Skipper const& skipper)
- {
- typedef typename LexerExpr::iterator_type iterator_type;
- Def<iterator_type, unused_type> def(gc);
- qi::grammar<Def<iterator_type, unused_type> > g(def);
- return tokenize_and_phrase_parse(first, last, lex, g, skipper);
- }
-
- ///////////////////////////////////////////////////////////////////////////
- template <
         typename Iterator, typename LexerExpr, typename ParserExpr,
         typename Attribute, typename Skipper
>
@@ -288,23 +243,6 @@
     }
 
     ///////////////////////////////////////////////////////////////////////////
- template <
- typename Iterator, typename LexerExpr,
- template <typename, typename> class Def,
- typename Skipper, typename Attribute
- >
- inline bool
- tokenize_and_phrase_parse(Iterator& first, Iterator last,
- LexerExpr const& lex, qi::grammar_class<Def>& gc, Skipper const& skipper,
- Attribute& attr)
- {
- typedef typename LexerExpr::iterator_type iterator_type;
- Def<iterator_type, unused_type> def(gc);
- qi::grammar<Def<iterator_type, unused_type> > g(def);
- return tokenize_and_phrase_parse(first, last, lex, g, skipper, attr);
- }
-
- ///////////////////////////////////////////////////////////////////////////
     //
     // The tokenize() function is one of the main Spirit API functions. It
     // simplifies using a lexer to tokenize a given input sequence. It's main

Modified: branches/proto/v4/boost/spirit/home/phoenix/detail/type_deduction.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/detail/type_deduction.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/detail/type_deduction.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -459,7 +459,7 @@
                                                                                 \
         BOOST_STATIC_CONSTANT(int, index = (size / sizeof(char)) - 1); \
                                                                                 \
- typedef typename mpl::at_c< \
+ typedef typename mpl::at_c< \
             typename base_type::types, index>::type id; \
         typedef typename id::type type; \
     };

Modified: branches/proto/v4/boost/spirit/home/phoenix/statement/detail/switch.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/statement/detail/switch.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/statement/detail/switch.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -74,21 +74,21 @@
                     is_default_case<Case>
                   , fusion::result_of::push_front<Seq const, actor<Case> >
                   , fusion::result_of::push_back<Seq const, actor<Case> >
- >::type>::type
+ >::type>::type
             type;
 
             static type
             eval(Seq const& seq, Case const& case_, mpl::false_)
             {
                 return fusion::as_vector(
- fusion::push_back(seq, actor<Case>(case_)));
+ fusion::push_back(seq, actor<Case>(case_)));
             }
 
             static type
             eval(Seq const& seq, Case const& case_, mpl::true_)
             {
                 return fusion::as_vector(
- fusion::push_front(seq, actor<Case>(case_)));
+ fusion::push_front(seq, actor<Case>(case_)));
             }
 
             static type

Modified: branches/proto/v4/boost/spirit/home/phoenix/statement/for.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/statement/for.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/statement/for.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,7 +27,7 @@
           , typename Init, typename Cond, typename Step, typename Do>
         static void
         eval(
- Env const& env
+ Env const& env
           , Init& init, Cond& cond, Step& step, Do& do_)
         {
             for (init.eval(env); cond.eval(env); step.eval(env))

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_equal_range.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_equal_range.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_equal_range.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // has_equal_range.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_find.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_find.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_find.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // has_find.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_lower_bound.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_lower_bound.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_lower_bound.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // has_lower_bound.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // has_remove.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove_if.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove_if.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_remove_if.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // has_remove_if.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_reverse.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_reverse.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_reverse.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // has_reverse.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_sort.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_sort.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_sort.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // has_sort.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_unique.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_unique.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_unique.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // has_unique.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_upper_bound.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_upper_bound.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/has_upper_bound.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // has_upper_bound.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_map.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_map.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_map.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // is_std_hash_map.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_set.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_set.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_hash_set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // is_std_hash_set.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_list.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_list.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_list.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // is_std_list.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_map.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_map.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_map.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // is_std_map.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_set.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_set.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/is_std_set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // is_std_set.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // std_hash_map_fwd.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // std_hash_set_fwd.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_list_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_list_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_list_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // std_list_fwd.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_map_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_map_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_map_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // std_map_fwd.hpp

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_set_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_set_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/algorithm/detail/std_set_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+// Copyright 2005 Daniel Wallin.
+// Copyright 2005 Joel de Guzman.
+//
+// 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)
+//
+// Modeled after range_ex, Copyright 2004 Eric Niebler
 ///////////////////////////////////////////////////////////////////////////////
 //
 // std_set_fwd.hpp
@@ -18,14 +26,14 @@
       , class Pr
       , class Alloc
>
- class set;
+ class set;
 
     template<
         class Kty
       , class Pr
       , class Alloc
>
- class multiset;
+ class multiset;
 }
 
 #endif

Modified: branches/proto/v4/boost/spirit/home/phoenix/stl/container/container.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/phoenix/stl/container/container.hpp (original)
+++ branches/proto/v4/boost/spirit/home/phoenix/stl/container/container.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -37,17 +37,17 @@
 // Lazy functions are provided for all of the member functions of the
 // following containers:
 //
-// deque · list · map · multimap · vector.
+// deque - list - map - multimap - vector.
 //
 // Indeed, should *your* class have member functions with the same names
 // and signatures as those listed below, then it will automatically be
 // supported. To summarize, lazy functions are provided for member
 // functions:
 //
-// assign · at · back · begin · capacity · clear · empty · end ·
-// erase · front · get_allocator · insert · key_comp · max_size ·
-// pop_back · pop_front · push_back · push_front · rbegin · rend ·
-// reserve · resize . size · splice · value_comp.
+// assign - at - back - begin - capacity - clear - empty - end -
+// erase - front - get_allocator - insert - key_comp - max_size -
+// pop_back - pop_front - push_back - push_front - rbegin - rend -
+// reserve - resize . size - splice - value_comp.
 //
 // The lazy functions' names are the same as the corresponding member
 // function. Sample usage:
@@ -322,7 +322,7 @@
             template <typename C>
             struct result
             {
- typedef typename allocator_type_of<C>::type type;
+ typedef typename allocator_type_of<C>::type type;
             };
 
             template <typename C>
@@ -392,7 +392,7 @@
 
                 typedef typename
                     boost::mpl::eval_if<
- boost::is_same<Arg2, fusion::void_>
+ boost::is_same<Arg2, fusion::void_>
                       , choice_1
                       , choice_2
>::type
@@ -403,7 +403,7 @@
             typename result<C, Arg1>::type
             operator()(C& c, Arg1 const& arg1) const
             {
- return c.insert(arg1);
+ return c.insert(arg1);
             }
 
             template <typename C, typename Arg1, typename Arg2>

Modified: branches/proto/v4/boost/spirit/home/qi/action/action.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/action/action.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/action/action.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -81,14 +81,14 @@
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             typedef typename
                 result_of::left<Component>::type::director
             director;
 
- return director::what(spirit::left(component));
+ return director::what(spirit::left(component), ctx);
         }
     };
 }}}

Modified: branches/proto/v4/boost/spirit/home/qi/auxiliary/eps.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/auxiliary/eps.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/auxiliary/eps.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -36,8 +36,8 @@
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "eps";
         }
@@ -65,8 +65,8 @@
             return fusion::at_c<0>(component.elements)(unused, context);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "semantic-predicate";
         }

Modified: branches/proto/v4/boost/spirit/home/qi/auxiliary/functor_director.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/auxiliary/functor_director.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/auxiliary/functor_director.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -40,8 +40,8 @@
             return subject(component).held->parse(first, last, context, attr);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "functor";
         }

Modified: branches/proto/v4/boost/spirit/home/qi/auxiliary/lazy.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/auxiliary/lazy.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/auxiliary/lazy.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -74,8 +74,8 @@
                 parse(subject, first, last, context, skipper, attr);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             //~ typedef typename
                 //~ result_of::subject<Component>::type
@@ -96,7 +96,7 @@
                     //~ qi::domain(), fusion::at_c<0>(component.elements)(unused, unused));
 
             std::string result = "lazy[";
- //~ result += component_type::director::what(subject);
+ //~ result += component_type::director::what(subject, ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/auxiliary/none.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/auxiliary/none.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/auxiliary/none.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -35,8 +35,8 @@
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "none";
         }

Modified: branches/proto/v4/boost/spirit/home/qi/auxiliary/primitives.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/auxiliary/primitives.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/auxiliary/primitives.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,7 +20,7 @@
     struct end_director_base
     {
         typedef mpl::false_ stores_iterator;
-
+
         template <typename Component, typename Context, typename Iterator>
         struct attribute
         {
@@ -46,7 +46,7 @@
         template <typename Iterator>
         bool test(Iterator& first, Iterator const& last);
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // same as end_director_base above, but stores iterator
     ///////////////////////////////////////////////////////////////////////////
@@ -86,13 +86,13 @@
         template <typename Iterator>
         bool test(Iterator& first, Iterator const& last);
     };
-
+
     ///////////////////////////////////////////////////////////////////////////
     // ~eoi, ~eol: 'not end of line' or 'not end of input'
     template <typename Positive>
- struct negated_end_director
+ struct negated_end_director
       : end_director_base<
- negated_end_director<Positive>,
+ negated_end_director<Positive>,
             typename Positive::director::stores_iterator
>
     {
@@ -102,11 +102,11 @@
             return !Positive::director::test(first, last);
         }
 
- template <typename Component>
- static std::string what(Component const&component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
- return "not " +
- Positive::director::what(fusion::at_c<0>(component.elements));
+ return "not " +
+ Positive::director::what(fusion::at_c<0>(component.elements), ctx);
         }
     };
 
@@ -119,15 +119,15 @@
         {
             return first == last;
         }
-
- template <typename Component>
- static std::string what(Component const&)
+
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "eoi";
         }
     };
-
-
+
+
     ///////////////////////////////////////////////////////////////////////////
     // the eol_director matches line endings
     ///////////////////////////////////////////////////////////////////////////
@@ -150,13 +150,13 @@
             return matched;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "eol";
         }
     };
-
+
 ///////////////////////////////////////////////////////////////////////////////
 }}}
 

Modified: branches/proto/v4/boost/spirit/home/qi/binary/binary.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/binary/binary.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/binary/binary.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -136,8 +136,8 @@
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return qi::detail::what<endian>::is();
         }
@@ -182,8 +182,8 @@
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return qi::detail::what<endian>::is();
         }

Modified: branches/proto/v4/boost/spirit/home/qi/char/char.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/char/char.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/char/char.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -35,8 +35,8 @@
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "any-char";
         }
@@ -60,8 +60,8 @@
             return detail::get_char(fusion::at_c<0>(component.elements)) == ch;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return std::string("'")
                 + spirit::detail::to_narrow_char(
@@ -82,8 +82,8 @@
             return component.ptr->test(ch);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "char-set";
         }
@@ -114,10 +114,13 @@
             return fusion::at_c<0>(component.elements)(unused, context) == ch;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
- return "char";
+ return std::string("'")
+ + spirit::detail::to_narrow_char(
+ fusion::at_c<0>(component.elements)(unused, ctx))
+ + '\'';
         }
     };
 
@@ -135,8 +138,8 @@
                 !(fusion::at_c<1>(component.elements) < ch);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result;
             result += std::string("'") + fusion::at_c<0>(component.elements) + '\'';
@@ -173,8 +176,8 @@
                 !(fusion::at_c<1>(component.elements)(unused, context) < ch);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "char-range";
         }
@@ -200,8 +203,8 @@
             ;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result;
             result += std::string("'")
@@ -232,8 +235,8 @@
             ;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result;
             result += std::string("'") + fusion::at_c<0>(component.elements) + '\'';

Modified: branches/proto/v4/boost/spirit/home/qi/char/char_class.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/char/char_class.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/char/char_class.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -35,8 +35,8 @@
             return classify<char_set>::is(char_class_(), ch);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             typedef spirit::char_class::what<char_set> what_;
             return what_::is(char_class_());

Modified: branches/proto/v4/boost/spirit/home/qi/char/char_parser.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/char/char_parser.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/char/char_parser.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -70,11 +70,11 @@
                 fusion::at_c<0>(component.elements), ch, context);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return std::string("not ")
- + Positive::director::what(fusion::at_c<0>(component.elements));
+ + Positive::director::what(fusion::at_c<0>(component.elements), ctx);
         }
     };
 }}}

Modified: branches/proto/v4/boost/spirit/home/qi/detail/expect_function.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/detail/expect_function.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/detail/expect_function.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -41,7 +41,7 @@
                     is_first = false;
                     return true;
                 }
- Exception x = {first, last, director::what(component) };
+ Exception x = {first, last, director::what(component, context) };
                 throw x;
             }
             is_first = false;
@@ -62,7 +62,7 @@
                     is_first = false;
                     return true;
                 }
- Exception x = {first, last, director::what(component) };
+ Exception x = {first, last, director::what(component, context) };
                 throw x;
             }
             is_first = false;

Modified: branches/proto/v4/boost/spirit/home/qi/directive/lexeme.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/directive/lexeme.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/directive/lexeme.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -49,8 +49,8 @@
                 spirit::subject(component), first, last, context, unused, attr);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "lexeme[";
 
@@ -58,7 +58,7 @@
                 result_of::subject<Component>::type::director
             director;
 
- result += director::what(subject(component));
+ result += director::what(subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/directive/omit.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/directive/omit.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/directive/omit.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -40,8 +40,8 @@
                 spirit::subject(component), first, last, context, skipper, unused);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "omit[";
 
@@ -49,7 +49,7 @@
                 result_of::subject<Component>::type::director
             director;
 
- result += director::what(subject(component));
+ result += director::what(subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/directive/raw.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/directive/raw.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/directive/raw.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -47,8 +47,8 @@
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "raw[";
 
@@ -56,7 +56,7 @@
                 result_of::subject<Component>::type::director
             director;
 
- result += director::what(subject(component));
+ result += director::what(subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/nonterminal/grammar.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/nonterminal/grammar.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/nonterminal/grammar.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,6 +9,7 @@
 
 #include <boost/spirit/home/support/unused.hpp>
 #include <boost/spirit/home/qi/nonterminal/nonterminal.hpp>
+#include <boost/spirit/home/qi/nonterminal/grammar_fwd.hpp>
 #include <boost/spirit/home/qi/domain.hpp>
 #include <boost/spirit/home/qi/nonterminal/rule.hpp>
 #include <boost/spirit/home/qi/nonterminal/nonterminal_director.hpp>
@@ -18,100 +19,10 @@
 
 namespace boost { namespace spirit { namespace qi
 {
- template <typename Definition>
+ template <typename Iterator, typename T0 , typename T1 , typename T2>
     struct grammar
       : nonterminal<
- grammar<Definition>
- , typename Definition::sig_type
- , typename Definition::locals_type
- >, noncopyable
- {
- typedef typename Definition::sig_type sig_type;
- typedef typename Definition::locals_type locals_type;
- typedef typename Definition::skipper_type skipper_type;
- typedef typename Definition::start_type start_type;
- typedef typename Definition::iterator_type iterator_type;
-
- template <typename Definition_>
- explicit grammar(Definition_ const& definition)
- : definition(definition)
- , start(definition.start)
- {
- }
-
- template <typename Definition_, typename Start>
- grammar(Definition_ const& definition, Start const& start)
- : definition(definition)
- , start(start)
- {
- }
-
- private:
-
- template <typename Iterator, typename Context, typename Skipper>
- bool parse(
- Iterator& first, Iterator const& last
- , Context& context, Skipper const& skipper) const
- {
- return start.parse(first, last, context, skipper);
- }
-
- std::string what() const
- {
- if (definition.name().empty())
- {
- return start.what();
- }
- else
- {
- return definition.name();
- }
- }
-
- friend struct nonterminal_director;
- Definition const& definition;
- start_type const& start;
- };
-
- template <
- typename Iterator
- , typename T0 = unused_type
- , typename T1 = unused_type
- , typename T2 = unused_type
- >
- struct grammar_def : noncopyable
- {
- typedef Iterator iterator_type;
- typedef qi::rule<Iterator, T0, T1, T2> start_type;
- typedef typename start_type::sig_type sig_type;
- typedef typename start_type::locals_type locals_type;
- typedef typename start_type::skipper_type skipper_type;
-
- grammar_def(std::string const& name_ = std::string())
- : name_(name_) {}
-
- std::string name() const
- {
- return name_;
- }
-
- void name(std::string const& name__)
- {
- name_ = name__;
- }
-
- std::string name_;
- };
-
- template <
- typename Iterator
- , typename T0 = unused_type
- , typename T1 = unused_type
- , typename T2 = unused_type
- >
- struct grammar_
- : nonterminal<
- grammar_<Iterator, T0, T1, T2>
+ grammar<Iterator, T0, T1, T2>
           , typename qi::rule<Iterator, T0, T1, T2>::sig_type
           , typename qi::rule<Iterator, T0, T1, T2>::locals_type
>, noncopyable
@@ -121,9 +32,9 @@
         typedef typename start_type::sig_type sig_type;
         typedef typename start_type::locals_type locals_type;
         typedef typename start_type::skipper_type skipper_type;
- typedef grammar_<Iterator, T0, T1, T2> base_type;
+ typedef grammar<Iterator, T0, T1, T2> base_type;
 
- grammar_(start_type const& start, std::string const& name_ = std::string())
+ grammar(start_type const& start, std::string const& name_ = std::string())
           : start(start), name_(name_) {}
 
         std::string name() const
@@ -136,8 +47,8 @@
             name_ = name__;
         }
 
- std::string name_;
         start_type const& start;
+ std::string name_;
 
     private:
 
@@ -163,80 +74,6 @@
 
         friend struct nonterminal_director;
     };
-
- ///////////////////////////////////////////////////////////////////////////
- // The grammar_class template
- ///////////////////////////////////////////////////////////////////////////
- template <template <typename, typename> class Def>
- struct grammar_class {};
-
- template <typename Iterator, template <typename, typename> class Def>
- inline bool
- parse(
- Iterator& first
- , Iterator last
- , grammar_class<Def>& gc)
- {
- Def<Iterator, unused_type> def(gc);
- grammar<Def<Iterator, unused_type> > g(def);
- return parse(first, last, g);
- }
-
- template <typename Iterator
- , template <typename, typename> class Def, typename Attr>
- inline bool
- parse(
- Iterator& first
- , Iterator last
- , grammar_class<Def>& gc
- , Attr& attr)
- {
- Def<Iterator, unused_type> def(gc);
- grammar<Def<Iterator, unused_type> > g(def);
- return parse(first, last, g, attr);
- }
-
- template <typename Iterator
- , template <typename, typename> class Def, typename Skipper>
- inline bool
- phrase_parse(
- Iterator& first
- , Iterator last
- , grammar_class<Def>& gc
- , Skipper const& skipper_)
- {
- typedef typename
- result_of::as_component<qi::domain, Skipper>::type
- skipper_type;
-
- skipper_type skipper = spirit::as_component(qi::domain(), skipper_);
-
- Def<Iterator, skipper_type> def(gc);
- grammar<Def<Iterator, skipper_type> > g(def);
- return phrase_parse(first, last, g, skipper);
- }
-
- template <typename Iterator
- , template <typename, typename> class Def, typename Attr, typename Skipper>
- inline bool
- phrase_parse(
- Iterator& first
- , Iterator last
- , grammar_class<Def>& gc
- , Attr& attr
- , Skipper const& skipper_)
- {
- typedef typename
- result_of::as_component<qi::domain, Skipper>::type
- skipper_type;
-
- skipper_type skipper = spirit::as_component(qi::domain(), skipper_);
-
- Def<Iterator, skipper_type> def(gc);
- grammar<Def<Iterator, skipper_type> > g(def);
- return phrase_parse(first, last, g, attr, skipper);
- }
-
 }}}
 
 #endif

Modified: branches/proto/v4/boost/spirit/home/qi/nonterminal/nonterminal_director.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/nonterminal/nonterminal_director.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/nonterminal/nonterminal_director.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -159,8 +159,8 @@
             return x.ptr->what();
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return what_nonterminal(subject(component).held);
         }

Modified: branches/proto/v4/boost/spirit/home/qi/nonterminal/rule.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/nonterminal/rule.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/nonterminal/rule.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,6 +9,7 @@
 
 #include <boost/spirit/home/support/unused.hpp>
 #include <boost/spirit/home/qi/nonterminal/nonterminal.hpp>
+#include <boost/spirit/home/qi/nonterminal/grammar_fwd.hpp>
 #include <boost/spirit/home/qi/nonterminal/detail/rule.hpp>
 #include <boost/spirit/home/qi/nonterminal/detail/error_handler.hpp>
 #include <boost/spirit/home/qi/domain.hpp>
@@ -23,9 +24,6 @@
 
 namespace boost { namespace spirit { namespace qi
 {
- // forward declarations
- template <typename Definition>
- struct grammar;
     namespace detail { struct rule_decorator; }
 
     template <
@@ -86,7 +84,7 @@
 
             // temp workaround for mpl problem
             BOOST_STATIC_ASSERT(is_component::value);
-
+
             define(xpr, mpl::false_());
             return *this;
         }
@@ -143,11 +141,8 @@
 
     private:
 
- template <typename Definition>
- friend struct grammar;
-
         template <typename Iterator_, typename T0_, typename T1_, typename T2_>
- friend struct grammar_;
+ friend struct grammar;
 
         friend struct detail::rule_decorator;
 
@@ -176,8 +171,8 @@
         {
             // If the following line produces a compilation error stating the
             // 4th parameter is not convertible to the expected type, then you
- // are probably trying to use this rule instance with a skipper
- // which is not compatible with the skipper type used while
+ // are probably trying to use this rule instance with a skipper
+ // which is not compatible with the skipper type used while
             // defining the type of this rule instance.
             return ptr->parse(first, last, context, skipper);
         }

Modified: branches/proto/v4/boost/spirit/home/qi/numeric/int.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/numeric/int.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/numeric/int.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -42,8 +42,8 @@
                 ::call(first, last, attr);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "integer";
         }

Modified: branches/proto/v4/boost/spirit/home/qi/numeric/real.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/numeric/real.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/numeric/real.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -49,8 +49,8 @@
             return detail::real_impl<T, RealPolicies>::parse(first, last, attr, p);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "real number";
         }

Modified: branches/proto/v4/boost/spirit/home/qi/numeric/uint.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/numeric/uint.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/numeric/uint.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -42,8 +42,8 @@
                 ::call(first, last, attr);
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "unsigned integer";
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/alternative.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/alternative.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/alternative.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -82,12 +82,12 @@
             return fusion::any(component.elements, f);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "alternatives[";
             fusion::for_each(component.elements,
- spirit::detail::what_function(result));
+ spirit::detail::what_function<Context>(result, ctx));
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/and_predicate.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/and_predicate.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/and_predicate.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -39,8 +39,8 @@
                 subject(component), i, last, context, skipper, unused);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "and-predicate[";
 
@@ -48,7 +48,7 @@
                 result_of::subject<Component>::type::director
             director;
 
- result += director::what(subject(component));
+ result += director::what(subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/difference.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/difference.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/difference.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -66,8 +66,8 @@
             return ldirector::parse(left(component), first, last, context, skipper, attr);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "difference[";
 
@@ -79,9 +79,9 @@
                 result_of::right<Component>::type::director
             rdirector;
 
- result += ldirector::what(left(component));
+ result += ldirector::what(left(component), ctx);
             result += ", ";
- result += rdirector::what(right(component));
+ result += rdirector::what(right(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/kleene.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/kleene.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/kleene.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -66,8 +66,8 @@
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "kleene[";
 
@@ -75,7 +75,7 @@
                 result_of::subject<Component>::type::director
             director;
 
- result += director::what(subject(component));
+ result += director::what(subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/list.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/list.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/list.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -72,8 +72,8 @@
         }
 
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "list[";
 
@@ -85,9 +85,9 @@
                 result_of::right<Component>::type::director
             rdirector;
 
- result += ldirector::what(left(component));
+ result += ldirector::what(left(component), ctx);
             result += ", ";
- result += rdirector::what(right(component));
+ result += rdirector::what(right(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/not_predicate.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/not_predicate.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/not_predicate.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -39,8 +39,8 @@
                 subject(component), i, last, context, skipper, unused);
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "not-predicate[";
 
@@ -48,7 +48,7 @@
                 result_of::subject<Component>::type::director
             director;
 
- result += director::what(subject(component));
+ result += director::what(subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/optional.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/optional.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/optional.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -67,8 +67,8 @@
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "optional[";
 
@@ -76,7 +76,7 @@
                 result_of::subject<Component>::type::director
             director;
 
- result += director::what(subject(component));
+ result += director::what(subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/permutation.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/permutation.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/permutation.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -81,12 +81,12 @@
             return result;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "permutation[";
             fusion::for_each(component.elements,
- spirit::detail::what_function(result));
+ spirit::detail::what_function<Context>(result, ctx));
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/plus.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/plus.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/plus.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -73,8 +73,8 @@
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "plus[";
 
@@ -82,7 +82,7 @@
                 result_of::subject<Component>::type::director
             director;
 
- result += director::what(subject(component));
+ result += director::what(subject(component), ctx);
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/sequence_base.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/sequence_base.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/sequence_base.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -75,12 +75,12 @@
             return true;
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = Derived::what_();
             fusion::for_each(component.elements,
- spirit::detail::what_function(result));
+ spirit::detail::what_function<Context>(result, ctx));
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/operator/sequential_or.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/operator/sequential_or.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/operator/sequential_or.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -60,12 +60,12 @@
         }
 
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             std::string result = "sequential-or[";
             fusion::for_each(component.elements,
- spirit::detail::what_function(result));
+ spirit::detail::what_function<Context>(result, ctx));
             result += "]";
             return result;
         }

Modified: branches/proto/v4/boost/spirit/home/qi/stream/detail/match_manip.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/stream/detail/match_manip.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/stream/detail/match_manip.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 // Copyright (c) 2001-2008 Hartmut Kaiser
 //
-// Distributed under the Boist Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boist.org/LICENSE_1_0.txt)
+// Distributed under the 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_SPIRIT_FORMAT_MANIP_MAY_05_2007_1203PM)
 #define BOOST_SPIRIT_FORMAT_MANIP_MAY_05_2007_1203PM

Modified: branches/proto/v4/boost/spirit/home/qi/stream/stream.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/stream/stream.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/stream/stream.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -61,8 +61,8 @@
             return in.good() || in.eof();
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return "any-stream";
         }

Modified: branches/proto/v4/boost/spirit/home/qi/string/lit.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/string/lit.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/string/lit.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -53,8 +53,8 @@
             );
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return std::string("\"")
                 + spirit::detail::to_narrow_string(
@@ -102,10 +102,14 @@
             );
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
- return "string";
+ return std::string("\"")
+ + spirit::detail::to_narrow_string(
+ fusion::at_c<0>(component.elements)(unused, ctx))
+ + std::string("\"")
+ ;
         }
     };
 
@@ -141,8 +145,8 @@
             );
         }
 
- template <typename Component>
- static std::string what(Component const& component)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             return std::string("case-insensitive \"")
                 + spirit::detail::to_narrow_string(

Modified: branches/proto/v4/boost/spirit/home/qi/string/symbols.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/string/symbols.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/string/symbols.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -62,8 +62,8 @@
             return false;
         }
 
- template <typename Component>
- static std::string what(Component const&)
+ template <typename Component, typename Context>
+ static std::string what(Component const& component, Context const& ctx)
         {
             // perhaps we should show some of the contents?
             return "symbols";

Modified: branches/proto/v4/boost/spirit/home/qi/what.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/qi/what.hpp (original)
+++ branches/proto/v4/boost/spirit/home/qi/what.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,7 +26,7 @@
         typedef typename result_of::as_component<qi::domain, Expr>::type component;
         typedef typename component::director director;
         component c = spirit::as_component(qi::domain(), xpr);
- return director::what(c);
+ return director::what(c, unused);
     }
 }}}
 

Modified: branches/proto/v4/boost/spirit/home/support/char_class/iso8859_1.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/support/char_class/iso8859_1.hpp (original)
+++ branches/proto/v4/boost/spirit/home/support/char_class/iso8859_1.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -30,6 +30,9 @@
 
     ///////////////////////////////////////////////////////////////////////////
     // ISO 8859-1 character classification table
+ //
+ // the comments intentionally contain non-ascii characters
+ // boostinspect:noascii
     ///////////////////////////////////////////////////////////////////////////
     const unsigned char iso8859_1_char_types[] =
     {

Modified: branches/proto/v4/boost/spirit/home/support/detail/action_dispatch.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/support/detail/action_dispatch.hpp (original)
+++ branches/proto/v4/boost/spirit/home/support/detail/action_dispatch.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,8 +15,9 @@
 namespace boost { namespace spirit { namespace detail
 {
     // general handler for everything not explicitly specialized below
- template <typename F, typename Attribute, typename Context, typename Pass>
- bool action_dispatch(F const& f, Attribute& attr, Context& context, Pass)
+ template <typename F, typename Attribute, typename Context, bool IsSequence>
+ bool action_dispatch(F const& f, Attribute& attr, Context& context
+ , mpl::bool_<IsSequence>)
     {
         bool pass = true;
         f(attr, context, pass);
@@ -24,7 +25,7 @@
     }
 
     // handler for phoenix actors
-
+
     // If the component this action has to be invoked for is a sequence, we
     // wrap any non-fusion sequence into a fusion sequence (done by pass_value)
     // and pass through any fusion sequence.
@@ -46,16 +47,17 @@
       , Attribute& attr, Context& context, mpl::false_)
     {
         bool pass = true;
- f (fusion::vector<Attribute&>(attr), context, pass);
+ fusion::vector<Attribute&> wrapped_attr(attr);
+ f (wrapped_attr, context, pass);
         return pass;
     }
 
     // specializations for plain function pointers taking a different number of
     // arguments
     template <typename RT, typename A0, typename A1, typename A2
- , typename Attribute, typename Context, typename Pass>
+ , typename Attribute, typename Context, bool IsSequence>
     bool action_dispatch(RT(*f)(A0, A1, A2)
- , Attribute& attr, Context& context, Pass)
+ , Attribute& attr, Context& context, mpl::bool_<IsSequence>)
     {
         bool pass = true;
         f(attr, context, pass);
@@ -63,26 +65,27 @@
     }
 
     template <typename RT, typename A0, typename A1
- , typename Attribute, typename Context, typename Pass>
+ , typename Attribute, typename Context, bool IsSequence>
     bool action_dispatch(RT(*f)(A0, A1)
- , Attribute& attr, Context& context, Pass)
+ , Attribute& attr, Context& context, mpl::bool_<IsSequence>)
     {
         f(attr, context);
         return true;
     }
 
     template <typename RT, typename A0
- , typename Attribute, typename Context, typename Pass>
+ , typename Attribute, typename Context, bool IsSequence>
     bool action_dispatch(RT(*f)(A0)
- , Attribute& attr, Context&, Pass)
+ , Attribute& attr, Context&, mpl::bool_<IsSequence>)
     {
         f(attr);
         return true;
     }
 
- template <typename RT, typename Attribute, typename Context, typename Pass>
+ template <typename RT
+ , typename Attribute, typename Context, bool IsSequence>
     bool action_dispatch(RT(*f)()
- , Attribute&, Context&, Pass)
+ , Attribute&, Context&, mpl::bool_<IsSequence>)
     {
         f();
         return true;

Modified: branches/proto/v4/boost/spirit/home/support/detail/hold_any.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/support/detail/hold_any.hpp (original)
+++ branches/proto/v4/boost/spirit/home/support/detail/hold_any.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -43,7 +43,7 @@
           : from(src.name()), to(dest.name())
         {}
 
- virtual const char* what() throw() { return "bad any cast"; }
+ virtual const char* what() const throw() { return "bad any cast"; }
 
         const char* from;
         const char* to;

Modified: branches/proto/v4/boost/spirit/home/support/detail/integer/endian.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/support/detail/integer/endian.hpp (original)
+++ branches/proto/v4/boost/spirit/home/support/detail/integer/endian.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -151,7 +151,7 @@
         operator T() const
           { return detail::load_big_endian<T, n_bits/8>(bytes); }
       private:
- char bytes[n_bits/8];
+ char bytes[n_bits/8];
     };
 
     template <typename T, std::size_t n_bits>
@@ -166,7 +166,7 @@
         operator T() const
           { return detail::load_little_endian<T, n_bits/8>(bytes); }
       private:
- char bytes[n_bits/8];
+ char bytes[n_bits/8];
     };
 
     template <typename T, std::size_t n_bits>
@@ -187,7 +187,7 @@
           { return detail::load_little_endian<T, n_bits/8>(bytes); }
 # endif
       private:
- char bytes[n_bits/8];
+ char bytes[n_bits/8];
     };
 
     // Specializations that mimic built-in integer types.
@@ -211,7 +211,7 @@
           { return detail::load_big_endian<T, sizeof(T)>(&integer); }
     #endif
       private:
- T integer;
+ T integer;
     };
 
     template <typename T, std::size_t n_bits>
@@ -233,7 +233,7 @@
           { return detail::load_little_endian<T, sizeof(T)>(&integer); }
     #endif
       private:
- T integer;
+ T integer;
     };
 
   // naming convention typedefs --------------------------------------------//

Modified: branches/proto/v4/boost/spirit/home/support/detail/what_function.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/home/support/detail/what_function.hpp (original)
+++ branches/proto/v4/boost/spirit/home/support/detail/what_function.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,10 +11,11 @@
 
 namespace boost { namespace spirit { namespace detail
 {
+ template <typename Context>
     struct what_function
     {
- what_function(std::string& str)
- : str(str), first(true)
+ what_function(std::string& str, Context const& ctx)
+ : str(str), first(true), ctx(ctx)
         {
         }
 
@@ -26,10 +27,11 @@
             else
                 str += ", ";
             typedef typename Component::director director;
- str += director::what(component);
+ str += director::what(component, ctx);
         }
 
         std::string& str;
+ Context const& ctx;
         mutable bool first;
     };
 }}}

Modified: branches/proto/v4/boost/spirit/iterator.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ITERATOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ITERATOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_iterator.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_iterator.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/iterator/file_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/file_iterator.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/file_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FILE_ITERATOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_FILE_ITERATOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_file_iterator.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_file_iterator.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/iterator/file_iterator_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/file_iterator_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/file_iterator_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FILE_ITERATOR_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_FILE_ITERATOR_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_file_iterator_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_file_iterator_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/iterator/fixed_size_queue.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/fixed_size_queue.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/fixed_size_queue.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FIXED_SIZE_QUEUE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_FIXED_SIZE_QUEUE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_fixed_size_queue.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_fixed_size_queue.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/iterator/multi_pass.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/multi_pass.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/multi_pass.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_MULTI_PASS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_MULTI_PASS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_multi_pass.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_multi_pass.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/iterator/multi_pass_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/multi_pass_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/multi_pass_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_MULTI_PASS_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_MULTI_PASS_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_multi_pass_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_multi_pass_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/iterator/position_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/position_iterator.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/position_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITION_ITERATOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITION_ITERATOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_position_iterator.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_position_iterator.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/iterator/position_iterator_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/position_iterator_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/position_iterator_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITION_ITERATOR_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_POSITION_ITERATOR_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_position_iterator_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_position_iterator_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/iterator/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/iterator/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/iterator/typeof.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/meta.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta.hpp (original)
+++ branches/proto/v4/boost/spirit/meta.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_META
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_META
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_meta.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_meta.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/meta/as_parser.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta/as_parser.hpp (original)
+++ branches/proto/v4/boost/spirit/meta/as_parser.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_AS_PARSER
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_AS_PARSER
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_as_parser.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_as_parser.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/meta/fundamental.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta/fundamental.hpp (original)
+++ branches/proto/v4/boost/spirit/meta/fundamental.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNDAMENTAL
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNDAMENTAL
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_fundamental.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_fundamental.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/meta/parser_traits.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta/parser_traits.hpp (original)
+++ branches/proto/v4/boost/spirit/meta/parser_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_TRAITS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSER_TRAITS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parser_traits.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_parser_traits.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/meta/refactoring.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta/refactoring.hpp (original)
+++ branches/proto/v4/boost/spirit/meta/refactoring.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REFACTORING
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_REFACTORING
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_refactoring.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_refactoring.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/meta/traverse.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/meta/traverse.hpp (original)
+++ branches/proto/v4/boost/spirit/meta/traverse.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TRAVERSE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TRAVERSE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_traverse.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_traverse.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/phoenix.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PHOENIX
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PHOENIX
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/phoenix/actor.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/actor.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/actor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTOR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ACTOR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_actor.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_actor.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_actor.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/binders.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/binders.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/binders.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_BINDERS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_BINDERS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_binders.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_binders.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_binders.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/casts.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/casts.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/casts.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CASTS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CASTS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_casts.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_casts.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_casts.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/closures.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/closures.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/closures.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURES
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CLOSURES
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_closures.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_closures.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_closures.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/composite.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/composite.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/composite.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_COMPOSITE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_COMPOSITE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_composite.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_composite.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_composite.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/functions.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/functions.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/functions.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNCTIONS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNCTIONS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_functions.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_functions.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_functions.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/new.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/new.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/new.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_NEW
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_NEW
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_new.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_new.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_new.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/operators.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/operators.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/operators.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_OPERATORS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_OPERATORS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_operators.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_operators.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_operators.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/primitives.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/primitives.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/primitives.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PRIMITIVES
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PRIMITIVES
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_primitives.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_primitives.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_primitives.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/special_ops.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/special_ops.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/special_ops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SPECIAL_OPS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SPECIAL_OPS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_special_ops.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_special_ops.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_special_ops.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/statements.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/statements.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/statements.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_STATEMENTS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_STATEMENTS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_statements.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_statements.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_statements.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/tuple_helpers.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/tuple_helpers.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/tuple_helpers.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TUPLE_HELPERS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TUPLE_HELPERS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_tuple_helpers.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_tuple_helpers.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_tuple_helpers.hpp>
 

Modified: branches/proto/v4/boost/spirit/phoenix/tuples.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/phoenix/tuples.hpp (original)
+++ branches/proto/v4/boost/spirit/phoenix/tuples.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TUPLES
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TUPLES
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1_tuples.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/phoenix1_tuples.hpp"
 #endif
+#endif
 
 #include <boost/spirit/include/phoenix1_tuples.hpp>
 

Modified: branches/proto/v4/boost/spirit/symbols.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/symbols.hpp (original)
+++ branches/proto/v4/boost/spirit/symbols.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_symbols.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_symbols.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/symbols/symbols.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/symbols/symbols.hpp (original)
+++ branches/proto/v4/boost/spirit/symbols/symbols.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_symbols.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_symbols.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/symbols/symbols_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/symbols/symbols_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/symbols/symbols_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SYMBOLS_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_symbols_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_symbols_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/symbols/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/symbols/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/symbols/typeof.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/tree/ast.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/ast.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/ast.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_AST
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_AST
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ast.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_ast.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/tree/ast_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/ast_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/ast_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_AST_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_AST_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_ast_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_ast_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/tree/common.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/common.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/common.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_COMMON
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_COMMON
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_common.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_common.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/tree/common_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/common_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/common_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_COMMON_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_COMMON_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_common_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_common_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/tree/parse_tree.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/parse_tree.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/parse_tree.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parse_tree.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_parse_tree.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/tree/parse_tree_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/parse_tree_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/parse_tree_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parse_tree_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_parse_tree_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/tree/parse_tree_utils.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/parse_tree_utils.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/parse_tree_utils.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE_UTILS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_PARSE_TREE_UTILS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_parse_tree_utils.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_parse_tree_utils.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/tree/tree_to_xml.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/tree_to_xml.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/tree_to_xml.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TREE_TO_XML
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TREE_TO_XML
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_tree_to_xml.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_tree_to_xml.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/tree/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/tree/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/tree/typeof.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility.hpp (original)
+++ branches/proto/v4/boost/spirit/utility.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_UTILITY
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_UTILITY
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_utility.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_utility.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/chset.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/chset.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/chset.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CHSET
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CHSET
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_chset.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_chset.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/chset_operators.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/chset_operators.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/chset_operators.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CHSET_OPERATORS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CHSET_OPERATORS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_chset_operators.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_chset_operators.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/confix.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/confix.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/confix.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIX
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIX
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_confix.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_confix.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/confix_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/confix_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/confix_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIX_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_CONFIX_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_confix_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_confix_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/distinct.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/distinct.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/distinct.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DISTINCT
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_DISTINCT
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_distinct.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_distinct.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/distinct_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/distinct_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/distinct_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_DISTINCT_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_DISTINCT_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_distinct_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_distinct_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/escape_char.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/escape_char.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/escape_char.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ESCAPE_CHAR
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ESCAPE_CHAR
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_escape_char.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_escape_char.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/escape_char_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/escape_char_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/escape_char_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_ESCAPE_CHAR_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_ESCAPE_CHAR_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_escape_char_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_escape_char_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/flush_multi_pass.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/flush_multi_pass.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/flush_multi_pass.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FLUSH_MULTI_PASS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_FLUSH_MULTI_PASS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_flush_multi_pass.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_flush_multi_pass.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/functor_parser.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/functor_parser.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/functor_parser.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNCTOR_PARSER
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_FUNCTOR_PARSER
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_functor_parser.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_functor_parser.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/grammar_def.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/grammar_def.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/grammar_def.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR_DEF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR_DEF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_grammar_def.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_grammar_def.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/grammar_def_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/grammar_def_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/grammar_def_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR_DEF_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_GRAMMAR_DEF_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_grammar_def_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_grammar_def_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/lists.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/lists.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/lists.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_LISTS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_LISTS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_lists.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_lists.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/lists_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/lists_fwd.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/lists_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_LISTS_FWD
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_LISTS_FWD
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_lists_fwd.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_lists_fwd.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/loops.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/loops.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/loops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_LOOPS
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_LOOPS
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_loops.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_loops.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/regex.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/regex.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/regex.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_REGEX
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_REGEX
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_regex.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_regex.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/rule_parser.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/rule_parser.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/rule_parser.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE_PARSER
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_RULE_PARSER
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_rule_parser.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_rule_parser.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/scoped_lock.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/scoped_lock.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/scoped_lock.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_SCOPED_LOCK
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_SCOPED_LOCK
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_scoped_lock.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_scoped_lock.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/utility/typeof.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/utility/typeof.hpp (original)
+++ branches/proto/v4/boost/spirit/utility/typeof.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_TYPEOF
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_typeof.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/spirit/version.hpp
==============================================================================
--- branches/proto/v4/boost/spirit/version.hpp (original)
+++ branches/proto/v4/boost/spirit/version.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,15 @@
 #ifndef BOOST_SPIRIT_DEPRECATED_INCLUDE_VERSION
 #define BOOST_SPIRIT_DEPRECATED_INCLUDE_VERSION
 
+#include <boost/version.hpp>
+
+#if BOOST_VERSION >= 103800
 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
 # pragma message ("Warning: This header is deprecated. Please use: boost/spirit/include/classic_version.hpp")
 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
 # warning "This header is deprecated. Please use: boost/spirit/include/classic_version.hpp"
 #endif
+#endif
 
 #if !defined(BOOST_SPIRIT_USE_OLD_NAMESPACE)
 #define BOOST_SPIRIT_USE_OLD_NAMESPACE

Modified: branches/proto/v4/boost/system/error_code.hpp
==============================================================================
--- branches/proto/v4/boost/system/error_code.hpp (original)
+++ branches/proto/v4/boost/system/error_code.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -47,11 +47,11 @@
     template< class T >
     struct is_error_condition_enum { static const bool value = false; };
 
- // portable error_conditions -------------------------------------------//
+ // generic error_conditions --------------------------------------------//
 
- namespace posix_error
+ namespace errc
     {
- enum posix_errno
+ enum errc_t
       {
         success = 0,
         address_family_not_supported = EAFNOSUPPORT,
@@ -134,13 +134,14 @@
         wrong_protocol_type = EPROTOTYPE
       };
 
- } // namespace posix_error
+ } // namespace errc
 
 # ifndef BOOST_SYSTEM_NO_DEPRECATED
- namespace posix = posix_error;
+ namespace posix = errc;
+ namespace posix_error = errc;
 # endif
 
- template<> struct is_error_condition_enum<posix_error::posix_errno>
+ template<> struct is_error_condition_enum<errc::errc_t>
       { static const bool value = true; };
 
 
@@ -199,15 +200,16 @@
     // predefined error categories -----------------------------------------//
 
     BOOST_SYSTEM_DECL const error_category & get_system_category();
- BOOST_SYSTEM_DECL const error_category & get_posix_category();
+ BOOST_SYSTEM_DECL const error_category & get_generic_category();
 
     static const error_category & system_category = get_system_category();
- static const error_category & posix_category = get_posix_category();
+ static const error_category & generic_category = get_generic_category();
     
 # ifndef BOOST_SYSTEM_NO_DEPRECATED
     // deprecated synonyms
- static const error_category & errno_ecat = get_posix_category();
- static const error_category & native_ecat = get_system_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 -----------------------------------------------//
@@ -219,7 +221,7 @@
     public:
 
       // constructors:
- error_condition() : m_val(0), m_cat(&get_posix_category()) {}
+ 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 ConditionEnum>
@@ -248,7 +250,7 @@
       void clear()
       {
         m_val = 0;
- m_cat = &get_posix_category();
+ m_cat = &get_generic_category();
       }
 
       // observers:
@@ -436,17 +438,17 @@
         + reinterpret_cast<std::size_t>(&ec.category());
     }
 
- // make_* functions for posix_error::posix_errno -----------------------------//
+ // make_* functions for errc::errc_t -----------------------------//
 
- namespace posix_error
+ namespace errc
     {
       // explicit conversion:
- inline error_code make_error_code( posix_errno e )
- { return error_code( e, get_posix_category() ); }
+ inline error_code make_error_code( errc_t e )
+ { return error_code( e, get_generic_category() ); }
 
       // implicit conversion:
- inline error_condition make_error_condition( posix_errno e )
- { return error_condition( e, get_posix_category() ); }
+ inline error_condition make_error_condition( errc_t e )
+ { return error_condition( e, get_generic_category() ); }
     }
 
     // error_category default implementation -------------------------------//

Modified: branches/proto/v4/boost/system/system_error.hpp
==============================================================================
--- branches/proto/v4/boost/system/system_error.hpp (original)
+++ branches/proto/v4/boost/system/system_error.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,13 +24,23 @@
     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 )
- : std::runtime_error(""), 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() {}
 

Modified: branches/proto/v4/boost/test/auto_unit_test.hpp
==============================================================================
--- branches/proto/v4/boost/test/auto_unit_test.hpp (original)
+++ branches/proto/v4/boost/test/auto_unit_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/debug.hpp
==============================================================================
--- branches/proto/v4/boost/test/debug.hpp (original)
+++ branches/proto/v4/boost/test/debug.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2006-2007.
+// (C) Copyright Gennadiy Rozental 2006-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)

Modified: branches/proto/v4/boost/test/debug_config.hpp
==============================================================================
--- branches/proto/v4/boost/test/debug_config.hpp (original)
+++ branches/proto/v4/boost/test/debug_config.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2006-2007.
+// (C) Copyright Gennadiy Rozental 2006-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)

Modified: branches/proto/v4/boost/test/detail/config.hpp
==============================================================================
--- branches/proto/v4/boost/test/detail/config.hpp (original)
+++ branches/proto/v4/boost/test/detail/config.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)
@@ -19,12 +19,6 @@
 #include <boost/config.hpp> // compilers workarounds
 #include <boost/detail/workaround.hpp>
 
-#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
-# define BOOST_CLASSIC_IOSTREAMS
-#else
-# define BOOST_STANDARD_IOSTREAMS
-#endif
-
 //____________________________________________________________________________//
 
 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)) || \
@@ -43,19 +37,20 @@
 
 //____________________________________________________________________________//
 
-#if defined(BOOST_HAS_SIGACTION)
-# define BOOST_TEST_SUPPORT_TIMEOUT
+#if !defined(BOOST_NO_STD_LOCALE) && \
+ !BOOST_WORKAROUND(BOOST_MSVC, < 1310) && \
+ !defined(__MWERKS__)
+# define BOOST_TEST_USE_STD_LOCALE 1
 #endif
 
 //____________________________________________________________________________//
 
-#if BOOST_WORKAROUND(__BORLANDC__, <= 0x570) || \
- BOOST_WORKAROUND( __COMO__, <= 0x433 ) || \
- BOOST_WORKAROUND( __INTEL_COMPILER, <= 800 ) || \
- BOOST_WORKAROUND(__GNUC__, < 3) || \
- defined(__sgi) && _COMPILER_VERSION <= 730 || \
- BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) || \
- defined(__DECCXX) || \
+#if BOOST_WORKAROUND(__BORLANDC__, <= 0x570) || \
+ BOOST_WORKAROUND( __COMO__, <= 0x433 ) || \
+ BOOST_WORKAROUND( __INTEL_COMPILER, <= 800 ) || \
+ defined(__sgi) && _COMPILER_VERSION <= 730 || \
+ BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) || \
+ defined(__DECCXX) || \
     defined(__DMC__)
 # define BOOST_TEST_NO_PROTECTED_USING
 #endif
@@ -70,6 +65,14 @@
 
 //____________________________________________________________________________//
 
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(BOOST_MSVC, <1310) && \
+ !BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x530))
+# define BOOST_TEST_SUPPORT_INTERACTION_TESTING 1
+#endif
+
+//____________________________________________________________________________//
+
 #if defined(BOOST_ALL_DYN_LINK) && !defined(BOOST_TEST_DYN_LINK)
 # define BOOST_TEST_DYN_LINK
 #endif

Modified: branches/proto/v4/boost/test/detail/enable_warnings.hpp
==============================================================================
--- branches/proto/v4/boost/test/detail/enable_warnings.hpp (original)
+++ branches/proto/v4/boost/test/detail/enable_warnings.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)
@@ -23,5 +23,6 @@
 # pragma warning(default: 4127) // conditional expression is constant
 # pragma warning(default: 4290) // C++ exception specification ignored except to ...
 # pragma warning(default: 4180) // qualifier applied to function type has no meaning; ignored
+# pragma warning(default: 4275) // non dll-interface class ... used as base for dll-interface class ...
 # pragma warning(pop)
 #endif

Modified: branches/proto/v4/boost/test/detail/fwd_decl.hpp
==============================================================================
--- branches/proto/v4/boost/test/detail/fwd_decl.hpp (original)
+++ branches/proto/v4/boost/test/detail/fwd_decl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -38,6 +38,7 @@
 struct log_entry_data;
 struct log_checkpoint_data;
 
+class lazy_ostream;
 
 } // namespace unit_test
 

Modified: branches/proto/v4/boost/test/detail/global_typedef.hpp
==============================================================================
--- branches/proto/v4/boost/test/detail/global_typedef.hpp (original)
+++ branches/proto/v4/boost/test/detail/global_typedef.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/detail/log_level.hpp
==============================================================================
--- branches/proto/v4/boost/test/detail/log_level.hpp (original)
+++ branches/proto/v4/boost/test/detail/log_level.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/detail/suppress_warnings.hpp
==============================================================================
--- branches/proto/v4/boost/test/detail/suppress_warnings.hpp (original)
+++ branches/proto/v4/boost/test/detail/suppress_warnings.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)
@@ -24,5 +24,6 @@
 # pragma warning(disable: 4127) // conditional expression is constant
 # pragma warning(disable: 4290) // C++ exception specification ignored except to ...
 # pragma warning(disable: 4180) // qualifier applied to function type has no meaning; ignored
+# pragma warning(disable: 4275) // non dll-interface class ... used as base for dll-interface class ...
 #endif
 

Modified: branches/proto/v4/boost/test/detail/unit_test_parameters.hpp
==============================================================================
--- branches/proto/v4/boost/test/detail/unit_test_parameters.hpp (original)
+++ branches/proto/v4/boost/test/detail/unit_test_parameters.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/detail/workaround.hpp
==============================================================================
--- branches/proto/v4/boost/test/detail/workaround.hpp (original)
+++ branches/proto/v4/boost/test/detail/workaround.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/exception_safety.hpp
==============================================================================
--- branches/proto/v4/boost/test/exception_safety.hpp (original)
+++ branches/proto/v4/boost/test/exception_safety.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -46,7 +46,7 @@
                                                                         \
 struct BOOST_AUTO_TC_UNIQUE_ID( test_name ) {}; \
                                                                         \
-BOOST_AUTO_TC_REGISTRAR( test_name )( \
+BOOST_AUTO_TU_REGISTRAR( test_name )( \
     boost::unit_test::make_test_case( \
         &BOOST_AUTO_TC_INVOKER( test_name ), #test_name ), \
     boost::unit_test::ut_detail::auto_tc_exp_fail< \

Modified: branches/proto/v4/boost/test/execution_monitor.hpp
==============================================================================
--- branches/proto/v4/boost/test/execution_monitor.hpp (original)
+++ branches/proto/v4/boost/test/execution_monitor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 2001-2008.
 // (C) Copyright Beman Dawes 2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/test/floating_point_comparison.hpp
==============================================================================
--- branches/proto/v4/boost/test/floating_point_comparison.hpp (original)
+++ branches/proto/v4/boost/test/floating_point_comparison.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/framework.hpp
==============================================================================
--- branches/proto/v4/boost/test/framework.hpp (original)
+++ branches/proto/v4/boost/test/framework.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/impl/compiler_log_formatter.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/compiler_log_formatter.ipp (original)
+++ branches/proto/v4/boost/test/impl/compiler_log_formatter.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -20,6 +20,7 @@
 #include <boost/test/unit_test_suite_impl.hpp>
 #include <boost/test/framework.hpp>
 #include <boost/test/utils/basic_cstring/io.hpp>
+#include <boost/test/utils/lazy_ostream.hpp>
 
 // Boost
 #include <boost/version.hpp>
@@ -167,6 +168,14 @@
 //____________________________________________________________________________//
 
 void
+compiler_log_formatter::log_entry_value( std::ostream& output, lazy_ostream const& value )
+{
+ output << value;
+}
+
+//____________________________________________________________________________//
+
+void
 compiler_log_formatter::log_entry_finish( std::ostream& output )
 {
     output << std::endl;

Modified: branches/proto/v4/boost/test/impl/cpp_main.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/cpp_main.ipp (original)
+++ branches/proto/v4/boost/test/impl/cpp_main.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 2001-2008.
 // (C) Copyright Beman Dawes 1995-2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/test/impl/debug.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/debug.ipp (original)
+++ branches/proto/v4/boost/test/impl/debug.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2006-2007.
+// (C) Copyright Gennadiy Rozental 2006-2008.
 // Use, modification, and distribution are subject to the
 // Boost Software License, Version 1.0. (See accompanying file
 // http://www.boost.org/LICENSE_1_0.txt)
@@ -57,7 +57,7 @@
 #include <boost/test/utils/algorithm.hpp>
 
 // STL
-#include <cstring>
+#include <cstring> // std::memcpy
 #include <map>
 #include <cstdio>
 #include <stdarg.h> // !! ?? cstdarg
@@ -497,7 +497,7 @@
 //____________________________________________________________________________//
 
 static void
-start_gdb_in_xemacs( dbg_startup_info const& dsi )
+start_gdb_in_xemacs( dbg_startup_info const& )
 {
     // !! ??
 }
@@ -552,7 +552,7 @@
 //____________________________________________________________________________//
 
 static void
-start_dbx_in_emacs( dbg_startup_info const& dsi )
+start_dbx_in_emacs( dbg_startup_info const& /*dsi*/ )
 {
 // char dbg_cmd_buff[500]; // !! ??
 //
@@ -564,7 +564,7 @@
 //____________________________________________________________________________//
 
 static void
-start_dbx_in_xemacs( dbg_startup_info const& dsi )
+start_dbx_in_xemacs( dbg_startup_info const& )
 {
     // !! ??
 }
@@ -724,19 +724,11 @@
 // ************** console debugger setup ************** //
 // ************************************************************************** //
 
-#if BOOST_WORKAROUND( BOOST_MSVC, <1300)
-std::string
-set_debugger( unit_test::const_string dbg_id )
-{
- dbg_starter s;
-#else
+#if defined(BOOST_UNIX_BASED_DEBUG) // ************************ UNIX
+
 std::string
 set_debugger( unit_test::const_string dbg_id, dbg_starter s )
 {
-#endif
-
-#if defined(BOOST_UNIX_BASED_DEBUG) // ************************ UNIX
-
     std::string old = s_info.p_dbg;
 
     assign_op( s_info.p_dbg.value, dbg_id, 0 );
@@ -745,13 +737,17 @@
         s_info.m_dbg_starter_reg[s_info.p_dbg] = s;
 
     return old;
+}
 
 #else // ***************************************************** default
 
+std::string
+set_debugger( unit_test::const_string, dbg_starter )
+{
     return std::string();
+}
 
 #endif
-}
 
 //____________________________________________________________________________//
 
@@ -856,6 +852,11 @@
     if( !created )
         return false;
 
+ if( break_or_continue )
+ debugger_break();
+
+ return true;
+
 #elif defined(BOOST_UNIX_BASED_DEBUG) // ********************** UNIX
 
     char init_done_lock_fn[] = "/tmp/btl_dbg_init_done_XXXXXX";
@@ -902,16 +903,16 @@
 // char dummy;
 // while( ::read( init_done_lock_fd, &dummy, sizeof(char) ) == 0 );
 
+ if( break_or_continue )
+ debugger_break();
+
+ return true;
+
 #else // ****************************************************** default
 
     return false;
 
 #endif
-
- if( break_or_continue )
- debugger_break();
-
- return true;
 }
 
 //____________________________________________________________________________//

Modified: branches/proto/v4/boost/test/impl/exception_safety.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/exception_safety.ipp (original)
+++ branches/proto/v4/boost/test/impl/exception_safety.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-2008.
 // Use, modification, and distribution are subject to the
 // Boost Software License, Version 1.0. (See accompanying file
 // http://www.boost.org/LICENSE_1_0.txt)
@@ -18,10 +18,7 @@
 // Boost.Test
 #include <boost/test/detail/config.hpp>
 
-#if !BOOST_WORKAROUND(__GNUC__, < 3) && \
- !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
- !BOOST_WORKAROUND(BOOST_MSVC, <1310) && \
- !BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x530))
+#if BOOST_TEST_SUPPORT_INTERACTION_TESTING
 
 #include <boost/test/detail/global_typedef.hpp>
 #include <boost/test/detail/unit_test_parameters.hpp>
@@ -401,7 +398,7 @@
 namespace {
 
 inline void
-format_location( wrap_stringstream& formatter, execution_path_point const& p, unsigned indent )
+format_location( wrap_stringstream& formatter, execution_path_point const& /*p*/, unsigned indent )
 {
     if( indent )
         formatter << std::left << std::setw( indent ) << "";

Modified: branches/proto/v4/boost/test/impl/execution_monitor.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/execution_monitor.ipp (original)
+++ branches/proto/v4/boost/test/impl/execution_monitor.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 2001-2008.
 // (C) Copyright Beman Dawes and Ullrich Koethe 1995-2001.
 // Use, modification, and distribution are subject to the
 // Boost Software License, Version 1.0. (See accompanying file
@@ -65,7 +65,7 @@
 
 # include <windows.h>
 
-# if defined(__MWERKS__) || (BOOST_WORKAROUND(_MSC_VER, < 1410 ) && !defined(UNDER_CE))
+# if defined(__MWERKS__) || (defined(_MSC_VER) && !defined(UNDER_CE))
 # include <eh.h>
 # endif
 
@@ -669,6 +669,7 @@
 #ifdef BOOST_TEST_USE_ALT_STACK
     stack_t sigstk = {};
 
+ sigstk.ss_size = MINSIGSTKSZ;
     sigstk.ss_flags = SS_DISABLE;
     BOOST_TEST_SYS_ASSERT( ::sigaltstack( &sigstk, 0 ) != -1 );
 #endif
@@ -993,7 +994,7 @@
 int
 execution_monitor::catch_signals( unit_test::callback0<int> const& F )
 {
- _invalid_parameter_handler old_iph;
+ _invalid_parameter_handler old_iph = _invalid_parameter_handler();
 
     if( !p_catch_system_errors )
         _set_se_translator( &detail::seh_catch_preventer );

Modified: branches/proto/v4/boost/test/impl/framework.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/framework.ipp (original)
+++ branches/proto/v4/boost/test/impl/framework.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -190,7 +190,7 @@
     struct priority_order {
         bool operator()( test_observer* lhs, test_observer* rhs ) const
         {
- return (lhs->priority() < rhs->priority()) || (lhs->priority() == rhs->priority()) && (lhs < rhs);
+ return (lhs->priority() < rhs->priority()) || ((lhs->priority() == rhs->priority()) && (lhs < rhs));
         }
     };
 

Modified: branches/proto/v4/boost/test/impl/interaction_based.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/interaction_based.ipp (original)
+++ branches/proto/v4/boost/test/impl/interaction_based.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-2008.
 // Use, modification, and distribution are subject to the
 // Boost Software License, Version 1.0. (See accompanying file
 // http://www.boost.org/LICENSE_1_0.txt)
@@ -18,10 +18,7 @@
 // Boost.Test
 #include <boost/test/detail/config.hpp>
 
-#if !BOOST_WORKAROUND(__GNUC__, < 3) && \
- !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
- !BOOST_WORKAROUND(BOOST_MSVC, <1310) && \
- !BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x530))
+#if BOOST_TEST_SUPPORT_INTERACTION_TESTING
 
 // Boost.Test
 #include <boost/test/detail/config.hpp>

Modified: branches/proto/v4/boost/test/impl/logged_expectations.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/logged_expectations.ipp (original)
+++ branches/proto/v4/boost/test/impl/logged_expectations.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-2008.
 // Use, modification, and distribution are subject to the
 // Boost Software License, ELOG_VER 1.0. (See accompanying file
 // http://www.boost.org/LICENSE_1_0.txt)
@@ -18,10 +18,7 @@
 // Boost.Test
 #include <boost/test/detail/config.hpp>
 
-#if !BOOST_WORKAROUND(__GNUC__, < 3) && \
- !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
- !BOOST_WORKAROUND(BOOST_MSVC, <1310) && \
- !BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x530))
+#if BOOST_TEST_SUPPORT_INTERACTION_TESTING
 
 #include <boost/test/detail/global_typedef.hpp>
 

Modified: branches/proto/v4/boost/test/impl/plain_report_formatter.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/plain_report_formatter.ipp (original)
+++ branches/proto/v4/boost/test/impl/plain_report_formatter.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/impl/progress_monitor.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/progress_monitor.ipp (original)
+++ branches/proto/v4/boost/test/impl/progress_monitor.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/impl/results_collector.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/results_collector.ipp (original)
+++ branches/proto/v4/boost/test/impl/results_collector.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/impl/results_reporter.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/results_reporter.ipp (original)
+++ branches/proto/v4/boost/test/impl/results_reporter.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/impl/test_main.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/test_main.ipp (original)
+++ branches/proto/v4/boost/test/impl/test_main.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 2001-2008.
 // (C) Copyright Beman Dawes 1995-2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/test/impl/test_tools.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/test_tools.ipp (original)
+++ branches/proto/v4/boost/test/impl/test_tools.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -33,9 +33,7 @@
 #include <cctype>
 #include <cwchar>
 #include <stdexcept>
-#ifdef BOOST_STANDARD_IOSTREAMS
 #include <ios>
-#endif
 
 // !! should we use #include <cstdarg>
 #include <stdarg.h>
@@ -55,14 +53,68 @@
 
 namespace test_tools {
 
+// ************************************************************************** //
+// ************** print_log_value ************** //
+// ************************************************************************** //
+
+void
+print_log_value<char>::operator()( std::ostream& ostr, char t )
+{
+ if( (std::isprint)( (unsigned char)t ) )
+ ostr << '\'' << t << '\'';
+ else
+ ostr << std::hex
+#if BOOST_TEST_USE_STD_LOCALE
+ << std::showbase
+#else
+ << "0x"
+#endif
+ << (int)t;
+}
+
+//____________________________________________________________________________//
+
+void
+print_log_value<unsigned char>::operator()( std::ostream& ostr, unsigned char t )
+{
+ ostr << std::hex
+ // showbase is only available for new style streams:
+#if BOOST_TEST_USE_STD_LOCALE
+ << std::showbase
+#else
+ << "0x"
+#endif
+ << (int)t;
+}
+
+//____________________________________________________________________________//
+
+void
+print_log_value<char const*>::operator()( std::ostream& ostr, char const* t )
+{
+ ostr << ( t ? t : "null string" );
+}
+
+//____________________________________________________________________________//
+
+void
+print_log_value<wchar_t const*>::operator()( std::ostream& ostr, wchar_t const* t )
+{
+ ostr << ( t ? t : L"null string" );
+}
+
+//____________________________________________________________________________//
+
 namespace tt_detail {
 
 // ************************************************************************** //
 // ************** TOOL BOX Implementation ************** //
 // ************************************************************************** //
 
-void
-check_impl( predicate_result const& pr, wrap_stringstream& check_descr,
+using ::boost::unit_test::lazy_ostream;
+
+bool
+check_impl( predicate_result const& pr, lazy_ostream const& check_descr,
             const_string file_name, std::size_t line_num,
             tool_level tl, check_type ct,
             std::size_t num_of_args, ... )
@@ -101,13 +153,13 @@
         suffix = " failed";
         break;
     default:
- return;
+ return true;
     }
 
     switch( ct ) {
     case CHECK_PRED:
         unit_test_log << unit_test::log::begin( file_name, line_num )
- << ll << prefix << check_descr.str() << suffix;
+ << ll << prefix << check_descr << suffix;
         
         if( !pr.has_empty_message() )
             unit_test_log << ". " << pr.message();
@@ -119,9 +171,9 @@
         unit_test_log << unit_test::log::begin( file_name, line_num ) << ll;
         
         if( tl == PASS )
- unit_test_log << prefix << "'" << check_descr.str() << "'" << suffix;
+ unit_test_log << prefix << "'" << check_descr << "'" << suffix;
         else
- unit_test_log << check_descr.str();
+ unit_test_log << check_descr;
         
         if( !pr.has_empty_message() )
             unit_test_log << ". " << pr.message();
@@ -141,16 +193,16 @@
         va_list args;
 
         va_start( args, num_of_args );
- char const* arg1_descr = va_arg( args, char const* );
- char const* arg1_val = va_arg( args, char const* );
- char const* arg2_descr = va_arg( args, char const* );
- char const* arg2_val = va_arg( args, char const* );
+ char const* arg1_descr = va_arg( args, char const* );
+ lazy_ostream const* arg1_val = va_arg( args, lazy_ostream const* );
+ char const* arg2_descr = va_arg( args, char const* );
+ lazy_ostream const* arg2_val = va_arg( args, lazy_ostream const* );
 
         unit_test_log << unit_test::log::begin( file_name, line_num )
                       << ll << prefix << arg1_descr << check_str[ct-CHECK_EQUAL] << arg2_descr << suffix;
 
         if( tl != PASS )
- unit_test_log << " [" << arg1_val << rever_str[ct-CHECK_EQUAL] << arg2_val << "]" ;
+ unit_test_log << " [" << *arg1_val << rever_str[ct-CHECK_EQUAL] << *arg2_val << "]" ;
 
         va_end( args );
         
@@ -166,19 +218,19 @@
         va_list args;
 
         va_start( args, num_of_args );
- char const* arg1_descr = va_arg( args, char const* );
- char const* arg1_val = va_arg( args, char const* );
- char const* arg2_descr = va_arg( args, char const* );
- char const* arg2_val = va_arg( args, char const* );
- /* toler_descr = */ va_arg( args, char const* );
- char const* toler_val = va_arg( args, char const* );
+ char const* arg1_descr = va_arg( args, char const* );
+ lazy_ostream const* arg1_val = va_arg( args, lazy_ostream const* );
+ char const* arg2_descr = va_arg( args, char const* );
+ lazy_ostream const* arg2_val = va_arg( args, lazy_ostream const* );
+ /* toler_descr = */ va_arg( args, char const* );
+ lazy_ostream const* toler_val = va_arg( args, lazy_ostream const* );
 
         unit_test_log << unit_test::log::begin( file_name, line_num ) << ll;
 
- unit_test_log << "difference between " << arg1_descr << "{" << arg1_val << "}"
- << " and " << arg2_descr << "{" << arg2_val << "}"
+ unit_test_log << "difference between " << arg1_descr << "{" << *arg1_val << "}"
+ << " and " << arg2_descr << "{" << *arg2_val << "}"
                       << ( tl == PASS ? " doesn't exceed " : " exceeds " )
- << toler_val;
+ << *toler_val;
         if( ct == CHECK_CLOSE )
             unit_test_log << "%";
 
@@ -194,16 +246,16 @@
         va_list args;
 
         va_start( args, num_of_args );
- char const* arg1_descr = va_arg( args, char const* );
- char const* arg1_val = va_arg( args, char const* );
- /* toler_descr = */ va_arg( args, char const* );
- char const* toler_val = va_arg( args, char const* );
+ char const* arg1_descr = va_arg( args, char const* );
+ lazy_ostream const* arg1_val = va_arg( args, lazy_ostream const* );
+ /* toler_descr = */ va_arg( args, char const* );
+ lazy_ostream const* toler_val = va_arg( args, lazy_ostream const* );
 
         unit_test_log << unit_test::log::begin( file_name, line_num ) << ll;
 
- unit_test_log << "absolute value of " << arg1_descr << "{" << arg1_val << "}"
+ unit_test_log << "absolute value of " << arg1_descr << "{" << *arg1_val << "}"
                       << ( tl == PASS ? " doesn't exceed " : " exceeds " )
- << toler_val;
+ << *toler_val;
 
         va_end( args );
         
@@ -216,7 +268,7 @@
 
     case CHECK_PRED_WITH_ARGS: {
         unit_test_log << unit_test::log::begin( file_name, line_num )
- << ll << prefix << check_descr.str();
+ << ll << prefix << check_descr;
 
         // print predicate call description
         {
@@ -226,7 +278,7 @@
             unit_test_log << "( ";
             for( std::size_t i = 0; i < num_of_args; ++i ) {
                 unit_test_log << va_arg( args, char const* );
- va_arg( args, char const* ); // skip argument value;
+ va_arg( args, lazy_ostream const* ); // skip argument value;
                 
                 if( i != num_of_args-1 )
                     unit_test_log << ", ";
@@ -242,7 +294,7 @@
             unit_test_log << " for ( ";
             for( std::size_t i = 0; i < num_of_args; ++i ) {
                 va_arg( args, char const* ); // skip argument description;
- unit_test_log << va_arg( args, char const* );
+ unit_test_log << *va_arg( args, lazy_ostream const* );
                 
                 if( i != num_of_args-1 )
                     unit_test_log << ", ";
@@ -305,14 +357,14 @@
     switch( tl ) {
     case PASS:
         framework::assertion_result( true );
- break;
+ return true;
 
     case WARN:
- break;
+ return false;
 
     case CHECK:
         framework::assertion_result( false );
- break;
+ return false;
         
     case REQUIRE:
         framework::assertion_result( false );
@@ -321,6 +373,8 @@
 
         throw execution_aborted();
     }
+
+ return true;
 }
 
 //____________________________________________________________________________//
@@ -354,59 +408,6 @@
 
 //____________________________________________________________________________//
 
-// ************************************************************************** //
-// ************** log print helper ************** //
-// ************************************************************************** //
-
-void
-print_log_value<char>::operator()( std::ostream& ostr, char t )
-{
- if( (std::isprint)( (unsigned char)t ) )
- ostr << '\'' << t << '\'';
- else
- ostr << std::hex
- // showbase is only available for new style streams:
-#ifndef BOOST_NO_STD_LOCALE
- << std::showbase
-#else
- << "0x"
-#endif
- << (int)t;
-}
-
-//____________________________________________________________________________//
-
-void
-print_log_value<unsigned char>::operator()( std::ostream& ostr, unsigned char t )
-{
- ostr << std::hex
- // showbase is only available for new style streams:
-#ifndef BOOST_NO_STD_LOCALE
- << std::showbase
-#else
- << "0x"
-#endif
- << (int)t;
-}
-
-//____________________________________________________________________________//
-
-void
-print_log_value<char const*>::operator()( std::ostream& ostr, char const* t )
-{
- ostr << ( t ? t : "null string" );
-}
-
-//____________________________________________________________________________//
-
-void
-print_log_value<wchar_t const*>::operator()( std::ostream& ostr, wchar_t const* t )
-{
- ostr << ( t ? t : L"null string" );
-}
-
-//____________________________________________________________________________//
-
 } // namespace tt_detail
 
 // ************************************************************************** //

Modified: branches/proto/v4/boost/test/impl/unit_test_log.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/unit_test_log.ipp (original)
+++ branches/proto/v4/boost/test/impl/unit_test_log.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -50,15 +50,22 @@
 
 namespace ut_detail {
 
-entry_value_collector
-entry_value_collector::operator<<( const_string v )
+entry_value_collector const&
+entry_value_collector::operator<<( lazy_ostream const& v ) const
 {
     unit_test_log << v;
 
- m_last = false;
+ return *this;
+}
 
- entry_value_collector res;
- return res;
+//____________________________________________________________________________//
+
+entry_value_collector const&
+entry_value_collector::operator<<( const_string v ) const
+{
+ unit_test_log << v;
+
+ return *this;
 }
 
 //____________________________________________________________________________//
@@ -303,8 +310,49 @@
 {
     *this << l;
 
- ut_detail::entry_value_collector res;
- return res;
+ return ut_detail::entry_value_collector();
+}
+
+//____________________________________________________________________________//
+
+bool
+unit_test_log_t::log_entry_start()
+{
+ if( s_log_impl().m_entry_in_progress )
+ return true;
+
+ switch( s_log_impl().m_entry_data.m_level ) {
+ case log_successful_tests:
+ s_log_impl().m_log_formatter->log_entry_start( s_log_impl().stream(), s_log_impl().m_entry_data,
+ unit_test_log_formatter::BOOST_UTL_ET_INFO );
+ break;
+ case log_messages:
+ s_log_impl().m_log_formatter->log_entry_start( s_log_impl().stream(), s_log_impl().m_entry_data,
+ unit_test_log_formatter::BOOST_UTL_ET_MESSAGE );
+ break;
+ case log_warnings:
+ s_log_impl().m_log_formatter->log_entry_start( s_log_impl().stream(), s_log_impl().m_entry_data,
+ unit_test_log_formatter::BOOST_UTL_ET_WARNING );
+ break;
+ case log_all_errors:
+ case log_cpp_exception_errors:
+ case log_system_errors:
+ s_log_impl().m_log_formatter->log_entry_start( s_log_impl().stream(), s_log_impl().m_entry_data,
+ unit_test_log_formatter::BOOST_UTL_ET_ERROR );
+ break;
+ case log_fatal_errors:
+ s_log_impl().m_log_formatter->log_entry_start( s_log_impl().stream(), s_log_impl().m_entry_data,
+ unit_test_log_formatter::BOOST_UTL_ET_FATAL_ERROR );
+ break;
+ case log_nothing:
+ case log_test_units:
+ case invalid_log_level:
+ return false;
+ }
+
+ s_log_impl().m_entry_in_progress = true;
+
+ return true;
 }
 
 //____________________________________________________________________________//
@@ -312,42 +360,19 @@
 unit_test_log_t&
 unit_test_log_t::operator<<( const_string value )
 {
- if( s_log_impl().m_entry_data.m_level >= s_log_impl().m_threshold_level && !value.empty() ) {
- if( !s_log_impl().m_entry_in_progress ) {
- s_log_impl().m_entry_in_progress = true;
-
- switch( s_log_impl().m_entry_data.m_level ) {
- case log_successful_tests:
- s_log_impl().m_log_formatter->log_entry_start( s_log_impl().stream(), s_log_impl().m_entry_data,
- unit_test_log_formatter::BOOST_UTL_ET_INFO );
- break;
- case log_messages:
- s_log_impl().m_log_formatter->log_entry_start( s_log_impl().stream(), s_log_impl().m_entry_data,
- unit_test_log_formatter::BOOST_UTL_ET_MESSAGE );
- break;
- case log_warnings:
- s_log_impl().m_log_formatter->log_entry_start( s_log_impl().stream(), s_log_impl().m_entry_data,
- unit_test_log_formatter::BOOST_UTL_ET_WARNING );
- break;
- case log_all_errors:
- case log_cpp_exception_errors:
- case log_system_errors:
- s_log_impl().m_log_formatter->log_entry_start( s_log_impl().stream(), s_log_impl().m_entry_data,
- unit_test_log_formatter::BOOST_UTL_ET_ERROR );
- break;
- case log_fatal_errors:
- s_log_impl().m_log_formatter->log_entry_start( s_log_impl().stream(), s_log_impl().m_entry_data,
- unit_test_log_formatter::BOOST_UTL_ET_FATAL_ERROR );
- break;
- case log_nothing:
- case log_test_units:
- case invalid_log_level:
- return *this;
- }
- }
+ if( s_log_impl().m_entry_data.m_level >= s_log_impl().m_threshold_level && !value.empty() && log_entry_start() )
+ s_log_impl().m_log_formatter->log_entry_value( s_log_impl().stream(), value );
 
+ return *this;
+}
+
+//____________________________________________________________________________//
+
+unit_test_log_t&
+unit_test_log_t::operator<<( lazy_ostream const& value )
+{
+ if( s_log_impl().m_entry_data.m_level >= s_log_impl().m_threshold_level && !value.empty() && log_entry_start() )
         s_log_impl().m_log_formatter->log_entry_value( s_log_impl().stream(), value );
- }
 
     return *this;
 }
@@ -399,6 +424,18 @@
 
 //____________________________________________________________________________//
 
+// ************************************************************************** //
+// ************** unit_test_log_formatter ************** //
+// ************************************************************************** //
+
+void
+unit_test_log_formatter::log_entry_value( std::ostream& ostr, lazy_ostream const& value )
+{
+ log_entry_value( ostr, (wrap_stringstream().ref() << value).str() );
+}
+
+//____________________________________________________________________________//
+
 } // namespace unit_test
 
 } // namespace boost

Modified: branches/proto/v4/boost/test/impl/unit_test_main.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/unit_test_main.ipp (original)
+++ branches/proto/v4/boost/test/impl/unit_test_main.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)
@@ -23,7 +23,7 @@
 
 #include <boost/test/detail/unit_test_parameters.hpp>
 
-#if !defined(__BORLANDC__) && BOOST_WORKAROUND( BOOST_MSVC, >= 1300 )
+#if !defined(__BORLANDC__) && !BOOST_WORKAROUND( BOOST_MSVC, < 1300 )
 #include <boost/test/utils/iterator/token_iterator.hpp>
 #endif
 
@@ -100,10 +100,12 @@
         const_string m_value;
     };
     // Constructor
+#if defined(__BORLANDC__) || BOOST_WORKAROUND( BOOST_MSVC, < 1300 )
+ explicit test_case_filter( const_string ) : m_depth( 0 ) {}
+#else
     explicit test_case_filter( const_string tc_to_tun )
     : m_depth( 0 )
     {
-#if !defined(__BORLANDC__) && BOOST_WORKAROUND( BOOST_MSVC, >= 1300 )
         string_token_iterator tit( tc_to_tun, (dropped_delimeters = "/", kept_delimeters = dt_none) );
 
         while( tit != string_token_iterator() ) {
@@ -113,8 +115,8 @@
 
             ++tit;
         }
-#endif
     }
+#endif
     
     void filter_unit( test_unit const& tu )
     {
@@ -135,6 +137,11 @@
     // test tree visitor interface
     virtual void visit( test_case const& tc )
     {
+ if( m_depth < m_filters.size() ) {
+ tc.p_enabled.value = false;
+ return;
+ }
+
         filter_unit( tc );
 
         --m_depth;

Modified: branches/proto/v4/boost/test/impl/unit_test_monitor.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/unit_test_monitor.ipp (original)
+++ branches/proto/v4/boost/test/impl/unit_test_monitor.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/impl/unit_test_parameters.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/unit_test_parameters.ipp (original)
+++ branches/proto/v4/boost/test/impl/unit_test_parameters.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/impl/unit_test_suite.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/unit_test_suite.ipp (original)
+++ branches/proto/v4/boost/test/impl/unit_test_suite.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/impl/xml_log_formatter.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/xml_log_formatter.ipp (original)
+++ branches/proto/v4/boost/test/impl/xml_log_formatter.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/impl/xml_report_formatter.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/xml_report_formatter.ipp (original)
+++ branches/proto/v4/boost/test/impl/xml_report_formatter.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/included/prg_exec_monitor.hpp
==============================================================================
--- branches/proto/v4/boost/test/included/prg_exec_monitor.hpp (original)
+++ branches/proto/v4/boost/test/included/prg_exec_monitor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/included/test_exec_monitor.hpp
==============================================================================
--- branches/proto/v4/boost/test/included/test_exec_monitor.hpp (original)
+++ branches/proto/v4/boost/test/included/test_exec_monitor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/included/unit_test.hpp
==============================================================================
--- branches/proto/v4/boost/test/included/unit_test.hpp (original)
+++ branches/proto/v4/boost/test/included/unit_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/interaction_based.hpp
==============================================================================
--- branches/proto/v4/boost/test/interaction_based.hpp (original)
+++ branches/proto/v4/boost/test/interaction_based.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -201,6 +201,9 @@
 # ifdef BOOST_NO_STDC_NAMESPACE
 namespace std { using ::malloc; using ::free; }
 # endif
+# ifdef _CRTDBG_MAP_ALLOC
+namespace std { using ::_malloc_dbg; using ::_free_dbg; }
+# endif
 
 inline void*
 operator new( std::size_t s, ::boost::itest::location const& l )

Modified: branches/proto/v4/boost/test/logged_expectations.hpp
==============================================================================
--- branches/proto/v4/boost/test/logged_expectations.hpp (original)
+++ branches/proto/v4/boost/test/logged_expectations.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -43,7 +43,7 @@
                                                                         \
 struct BOOST_AUTO_TC_UNIQUE_ID( test_name ) {}; \
                                                                         \
-BOOST_AUTO_TC_REGISTRAR( test_name )( \
+BOOST_AUTO_TU_REGISTRAR( test_name )( \
     boost::unit_test::make_test_case( \
         &BOOST_AUTO_TC_INVOKER( test_name ), #test_name ), \
     boost::unit_test::ut_detail::auto_tc_exp_fail< \

Modified: branches/proto/v4/boost/test/minimal.hpp
==============================================================================
--- branches/proto/v4/boost/test/minimal.hpp (original)
+++ branches/proto/v4/boost/test/minimal.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2002-2007.
+// (C) Copyright Gennadiy Rozental 2002-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)

Modified: branches/proto/v4/boost/test/mock_object.hpp
==============================================================================
--- branches/proto/v4/boost/test/mock_object.hpp (original)
+++ branches/proto/v4/boost/test/mock_object.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/output/compiler_log_formatter.hpp
==============================================================================
--- branches/proto/v4/boost/test/output/compiler_log_formatter.hpp (original)
+++ branches/proto/v4/boost/test/output/compiler_log_formatter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -48,6 +48,7 @@
 
     void log_entry_start( std::ostream&, log_entry_data const&, log_entry_types let );
     void log_entry_value( std::ostream&, const_string value );
+ void log_entry_value( std::ostream&, lazy_ostream const& value );
     void log_entry_finish( std::ostream& );
 
 protected:

Modified: branches/proto/v4/boost/test/output/plain_report_formatter.hpp
==============================================================================
--- branches/proto/v4/boost/test/output/plain_report_formatter.hpp (original)
+++ branches/proto/v4/boost/test/output/plain_report_formatter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/output/xml_log_formatter.hpp
==============================================================================
--- branches/proto/v4/boost/test/output/xml_log_formatter.hpp (original)
+++ branches/proto/v4/boost/test/output/xml_log_formatter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/output/xml_report_formatter.hpp
==============================================================================
--- branches/proto/v4/boost/test/output/xml_report_formatter.hpp (original)
+++ branches/proto/v4/boost/test/output/xml_report_formatter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/output_test_stream.hpp
==============================================================================
--- branches/proto/v4/boost/test/output_test_stream.hpp (original)
+++ branches/proto/v4/boost/test/output_test_stream.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/parameterized_test.hpp
==============================================================================
--- branches/proto/v4/boost/test/parameterized_test.hpp (original)
+++ branches/proto/v4/boost/test/parameterized_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/predicate_result.hpp
==============================================================================
--- branches/proto/v4/boost/test/predicate_result.hpp (original)
+++ branches/proto/v4/boost/test/predicate_result.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/prg_exec_monitor.hpp
==============================================================================
--- branches/proto/v4/boost/test/prg_exec_monitor.hpp (original)
+++ branches/proto/v4/boost/test/prg_exec_monitor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/progress_monitor.hpp
==============================================================================
--- branches/proto/v4/boost/test/progress_monitor.hpp (original)
+++ branches/proto/v4/boost/test/progress_monitor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/results_collector.hpp
==============================================================================
--- branches/proto/v4/boost/test/results_collector.hpp (original)
+++ branches/proto/v4/boost/test/results_collector.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/results_reporter.hpp
==============================================================================
--- branches/proto/v4/boost/test/results_reporter.hpp (original)
+++ branches/proto/v4/boost/test/results_reporter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/test_case_template.hpp
==============================================================================
--- branches/proto/v4/boost/test/test_case_template.hpp (original)
+++ branches/proto/v4/boost/test/test_case_template.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2003-2007.
+// (C) Copyright Gennadiy Rozental 2003-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)

Modified: branches/proto/v4/boost/test/test_exec_monitor.hpp
==============================================================================
--- branches/proto/v4/boost/test/test_exec_monitor.hpp (original)
+++ branches/proto/v4/boost/test/test_exec_monitor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/test_observer.hpp
==============================================================================
--- branches/proto/v4/boost/test/test_observer.hpp (original)
+++ branches/proto/v4/boost/test/test_observer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/test_tools.hpp
==============================================================================
--- branches/proto/v4/boost/test/test_tools.hpp (original)
+++ branches/proto/v4/boost/test/test_tools.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)
@@ -18,6 +18,7 @@
 // Boost.Test
 #include <boost/test/predicate_result.hpp>
 #include <boost/test/unit_test_log.hpp>
+#include <boost/test/floating_point_comparison.hpp>
 
 #include <boost/test/detail/config.hpp>
 #include <boost/test/detail/global_typedef.hpp>
@@ -25,6 +26,7 @@
 
 #include <boost/test/utils/wrap_stringstream.hpp>
 #include <boost/test/utils/basic_cstring/io.hpp>
+#include <boost/test/utils/lazy_ostream.hpp>
 
 // Boost
 #include <boost/preprocessor/seq/for_each.hpp>
@@ -33,6 +35,7 @@
 #include <boost/preprocessor/repetition/repeat.hpp>
 #include <boost/preprocessor/punctuation/comma_if.hpp>
 #include <boost/preprocessor/arithmetic/add.hpp>
+
 #include <boost/limits.hpp>
 
 #include <boost/type_traits/is_array.hpp>
@@ -47,6 +50,10 @@
 #include <ios> // for std::boolalpha
 #include <climits> // for CHAR_BIT
 
+#ifdef BOOST_MSVC
+# pragma warning(disable: 4127) // conditional expression is constant
+#endif
+
 #include <boost/test/detail/suppress_warnings.hpp>
 
 //____________________________________________________________________________//
@@ -66,14 +73,14 @@
 // CT - check type
 // ARGS - arguments list
 
-#define BOOST_TEST_TOOL_IMPL( func, P, check_descr, TL, CT ) \
- ::boost::test_tools::tt_detail::func( \
- P, \
- ::boost::wrap_stringstream().ref() << check_descr, \
- BOOST_TEST_L(__FILE__), \
- (std::size_t)__LINE__, \
- ::boost::test_tools::tt_detail::TL, \
- ::boost::test_tools::tt_detail::CT \
+#define BOOST_TEST_TOOL_IMPL( func, P, check_descr, TL, CT ) \
+ ::boost::test_tools::tt_detail::func( \
+ P, \
+ ::boost::unit_test::lazy_ostream::instance() << check_descr, \
+ BOOST_TEST_L(__FILE__), \
+ (std::size_t)__LINE__, \
+ ::boost::test_tools::tt_detail::TL, \
+ ::boost::test_tools::tt_detail::CT \
 /**/
 
 //____________________________________________________________________________//
@@ -301,41 +308,17 @@
 
 namespace { bool const dummy_cond = false; }
 
-namespace tt_detail {
-
 // ************************************************************************** //
-// ************** tools classification ************** //
-// ************************************************************************** //
-
-enum check_type {
- CHECK_PRED,
- CHECK_MSG,
- CHECK_EQUAL,
- CHECK_NE,
- CHECK_LT,
- CHECK_LE,
- CHECK_GT,
- CHECK_GE,
- CHECK_CLOSE,
- CHECK_CLOSE_FRACTION,
- CHECK_SMALL,
- CHECK_BITWISE_EQUAL,
- CHECK_PRED_WITH_ARGS,
- CHECK_EQUAL_COLL
-};
-
-enum tool_level {
- WARN, CHECK, REQUIRE, PASS
-};
-
-// ************************************************************************** //
-// ************** log print helper ************** //
+// ************** print_log_value ************** //
 // ************************************************************************** //
 
 template<typename T>
 struct print_log_value {
     void operator()( std::ostream& ostr, T const& t )
     {
+ // avoid warning: 'boost::test_tools::<unnamed>::dummy_cond' defined but not used
+ if (::boost::test_tools::dummy_cond) {}
+
         typedef typename mpl::or_<is_array<T>,is_function<T>,is_abstract<T> >::type couldnt_use_nl;
 
         set_precision( ostr, couldnt_use_nl() );
@@ -354,13 +337,13 @@
 
 //____________________________________________________________________________//
 
-#define BOOST_TEST_DONT_PRINT_LOG_VALUE( the_type ) \
-namespace boost { namespace test_tools { namespace tt_detail { \
-template<> \
-struct print_log_value<the_type > { \
- void operator()( std::ostream& ostr, the_type const& t ) {} \
-}; \
-}}} \
+#define BOOST_TEST_DONT_PRINT_LOG_VALUE( the_type ) \
+namespace boost { namespace test_tools { \
+template<> \
+struct print_log_value<the_type > { \
+ void operator()( std::ostream&, the_type const& ) {} \
+}; \
+}} \
 /**/
 
 //____________________________________________________________________________//
@@ -415,6 +398,39 @@
 
 //____________________________________________________________________________//
 
+namespace tt_detail {
+
+// ************************************************************************** //
+// ************** tools classification ************** //
+// ************************************************************************** //
+
+enum check_type {
+ CHECK_PRED,
+ CHECK_MSG,
+ CHECK_EQUAL,
+ CHECK_NE,
+ CHECK_LT,
+ CHECK_LE,
+ CHECK_GT,
+ CHECK_GE,
+ CHECK_CLOSE,
+ CHECK_CLOSE_FRACTION,
+ CHECK_SMALL,
+ CHECK_BITWISE_EQUAL,
+ CHECK_PRED_WITH_ARGS,
+ CHECK_EQUAL_COLL
+};
+
+enum tool_level {
+ WARN, CHECK, REQUIRE, PASS
+};
+
+// ************************************************************************** //
+// ************** print_helper ************** //
+// ************************************************************************** //
+// Adds level of indirection to the output operation, allowing us to customize
+// it for types that do not support operator << directly or for any other reason
+
 template<typename T>
 struct print_helper_t {
     explicit print_helper_t( T const& t ) : m_t( t ) {}
@@ -460,7 +476,7 @@
 // ************************************************************************** //
 
 BOOST_TEST_DECL
-void check_impl( predicate_result const& pr, wrap_stringstream& check_descr,
+bool check_impl( predicate_result const& pr, ::boost::unit_test::lazy_ostream const& check_descr,
                  const_string file_name, std::size_t line_num,
                  tool_level tl, check_type ct,
                  std::size_t num_args, ... );
@@ -477,21 +493,21 @@
 
 #define ARG_INFO( z, m, dummy ) \
     , BOOST_JOIN( BOOST_JOIN( arg, m ), _descr ) \
- , (boost::wrap_stringstream().ref() \
- << ::boost::test_tools::tt_detail:: \
- print_helper( BOOST_JOIN( arg, m ) )).str().c_str() \
+ , &(const unit_test::lazy_ostream&)(unit_test::lazy_ostream::instance() \
+ << ::boost::test_tools::tt_detail::print_helper( BOOST_JOIN( arg, m ) )) \
 /**/
 
 #define IMPL_FRWD( z, n, dummy ) \
 template<typename Pred \
          BOOST_PP_REPEAT_ ## z( BOOST_PP_ADD( n, 1 ), TEMPL_PARAMS, _ )> \
-inline void \
-check_frwd( Pred P, wrap_stringstream& check_descr, \
+inline bool \
+check_frwd( Pred P, unit_test::lazy_ostream const& check_descr, \
             const_string file_name, std::size_t line_num, \
             tool_level tl, check_type ct \
             BOOST_PP_REPEAT_ ## z( BOOST_PP_ADD( n, 1 ), FUNC_PARAMS, _ ) \
 ) \
 { \
+ return \
     check_impl( P( BOOST_PP_REPEAT_ ## z( BOOST_PP_ADD( n, 1 ), PRED_PARAMS, _ ) ), \
                 check_descr, file_name, line_num, tl, ct, \
                 BOOST_PP_ADD( n, 1 ) \

Modified: branches/proto/v4/boost/test/unit_test.hpp
==============================================================================
--- branches/proto/v4/boost/test/unit_test.hpp (original)
+++ branches/proto/v4/boost/test/unit_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/unit_test_log.hpp
==============================================================================
--- branches/proto/v4/boost/test/unit_test_log.hpp (original)
+++ branches/proto/v4/boost/test/unit_test_log.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)
@@ -26,6 +26,7 @@
 
 #include <boost/test/utils/wrap_stringstream.hpp>
 #include <boost/test/utils/trivial_singleton.hpp>
+#include <boost/test/utils/lazy_ostream.hpp>
 
 // Boost
 #include <boost/utility.hpp>
@@ -71,15 +72,16 @@
 public:
     // Constructors
     entry_value_collector() : m_last( true ) {}
- entry_value_collector( entry_value_collector& rhs ) : m_last( true ) { rhs.m_last = false; }
+ entry_value_collector( entry_value_collector const& rhs ) : m_last( true ) { rhs.m_last = false; }
     ~entry_value_collector();
 
     // collection interface
- entry_value_collector operator<<( const_string );
+ entry_value_collector const& operator<<( lazy_ostream const& ) const;
+ entry_value_collector const& operator<<( const_string ) const;
 
 private:
     // Data members
- bool m_last;
+ mutable bool m_last;
 };
 
 } // namespace ut_detail
@@ -119,10 +121,13 @@
     unit_test_log_t& operator<<( log::end const& ); // end entry
     unit_test_log_t& operator<<( log_level ); // set entry level
     unit_test_log_t& operator<<( const_string ); // log entry value
+ unit_test_log_t& operator<<( lazy_ostream const& ); // log entry value
 
     ut_detail::entry_value_collector operator()( log_level ); // initiate entry collection
 
 private:
+ bool log_entry_start();
+
     BOOST_TEST_SINGLETON_CONS( unit_test_log_t );
 }; // unit_test_log_t
 
@@ -144,24 +149,24 @@
 
 #define BOOST_TEST_MESSAGE( M ) \
     BOOST_TEST_LOG_ENTRY( ::boost::unit_test::log_messages ) \
- << (boost::wrap_stringstream().ref() << M).str() \
+ << (::boost::unit_test::lazy_ostream::instance() << M) \
 /**/
 
 //____________________________________________________________________________//
 
-#define BOOST_TEST_PASSPOINT() \
- ::boost::unit_test::unit_test_log.set_checkpoint( \
- BOOST_TEST_L(__FILE__), \
- (std::size_t)__LINE__ ) \
+#define BOOST_TEST_PASSPOINT() \
+ ::boost::unit_test::unit_test_log.set_checkpoint( \
+ BOOST_TEST_L(__FILE__), \
+ (std::size_t)__LINE__ ) \
 /**/
 
 //____________________________________________________________________________//
 
-#define BOOST_TEST_CHECKPOINT( M ) \
- ::boost::unit_test::unit_test_log.set_checkpoint( \
- BOOST_TEST_L(__FILE__), \
- (std::size_t)__LINE__, \
- (boost::wrap_stringstream().ref() << M).str() ) \
+#define BOOST_TEST_CHECKPOINT( M ) \
+ ::boost::unit_test::unit_test_log.set_checkpoint( \
+ BOOST_TEST_L(__FILE__), \
+ (std::size_t)__LINE__, \
+ (::boost::wrap_stringstream().ref() << M).str() ) \
 /**/
 
 //____________________________________________________________________________//

Modified: branches/proto/v4/boost/test/unit_test_log_formatter.hpp
==============================================================================
--- branches/proto/v4/boost/test/unit_test_log_formatter.hpp (original)
+++ branches/proto/v4/boost/test/unit_test_log_formatter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2003-2007.
+// (C) Copyright Gennadiy Rozental 2003-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)
@@ -100,6 +100,7 @@
 
     virtual void log_entry_start( std::ostream&, log_entry_data const&, log_entry_types let ) = 0;
     virtual void log_entry_value( std::ostream&, const_string value ) = 0;
+ virtual void log_entry_value( std::ostream&, lazy_ostream const& value ); // there is a default impl
     virtual void log_entry_finish( std::ostream& ) = 0;
 };
 

Modified: branches/proto/v4/boost/test/unit_test_monitor.hpp
==============================================================================
--- branches/proto/v4/boost/test/unit_test_monitor.hpp (original)
+++ branches/proto/v4/boost/test/unit_test_monitor.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/unit_test_suite.hpp
==============================================================================
--- branches/proto/v4/boost/test/unit_test_suite.hpp (original)
+++ branches/proto/v4/boost/test/unit_test_suite.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)
@@ -17,6 +17,7 @@
 
 // Boost.Test
 #include <boost/test/unit_test_suite_impl.hpp>
+#include <boost/test/test_case_template.hpp>
 #include <boost/test/framework.hpp>
 
 //____________________________________________________________________________//

Modified: branches/proto/v4/boost/test/unit_test_suite_impl.hpp
==============================================================================
--- branches/proto/v4/boost/test/unit_test_suite_impl.hpp (original)
+++ branches/proto/v4/boost/test/unit_test_suite_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/utils/algorithm.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/algorithm.hpp (original)
+++ branches/proto/v4/boost/test/utils/algorithm.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)

Modified: branches/proto/v4/boost/test/utils/assign_op.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/assign_op.hpp (original)
+++ branches/proto/v4/boost/test/utils/assign_op.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/basic_cstring/basic_cstring.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/basic_cstring/basic_cstring.hpp (original)
+++ branches/proto/v4/boost/test/utils/basic_cstring/basic_cstring.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)

Modified: branches/proto/v4/boost/test/utils/basic_cstring/basic_cstring_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/basic_cstring/basic_cstring_fwd.hpp (original)
+++ branches/proto/v4/boost/test/utils/basic_cstring/basic_cstring_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)

Modified: branches/proto/v4/boost/test/utils/basic_cstring/bcs_char_traits.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/basic_cstring/bcs_char_traits.hpp (original)
+++ branches/proto/v4/boost/test/utils/basic_cstring/bcs_char_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)

Modified: branches/proto/v4/boost/test/utils/basic_cstring/compare.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/basic_cstring/compare.hpp (original)
+++ branches/proto/v4/boost/test/utils/basic_cstring/compare.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)
@@ -26,7 +26,7 @@
 
 //____________________________________________________________________________//
 
-# if defined(BOOST_NO_STDC_NAMESPACE) && !BOOST_WORKAROUND(__BORLANDC__, <= 0x570) && !BOOST_WORKAROUND(__GNUC__, < 3)
+# if defined(BOOST_NO_STDC_NAMESPACE) && !BOOST_WORKAROUND(__BORLANDC__, <= 0x570)
 namespace std { using ::toupper; }
 # endif
 

Modified: branches/proto/v4/boost/test/utils/basic_cstring/io.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/basic_cstring/io.hpp (original)
+++ branches/proto/v4/boost/test/utils/basic_cstring/io.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)

Modified: branches/proto/v4/boost/test/utils/callback.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/callback.hpp (original)
+++ branches/proto/v4/boost/test/utils/callback.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/class_properties.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/class_properties.hpp (original)
+++ branches/proto/v4/boost/test/utils/class_properties.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/utils/custom_manip.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/custom_manip.hpp (original)
+++ branches/proto/v4/boost/test/utils/custom_manip.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/fixed_mapping.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/fixed_mapping.hpp (original)
+++ branches/proto/v4/boost/test/utils/fixed_mapping.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/boost/test/utils/foreach.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/foreach.hpp (original)
+++ branches/proto/v4/boost/test/utils/foreach.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 // (C) Copyright Eric Niebler 2004-2005
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -203,10 +203,6 @@
 // ************** BOOST_TEST_FOREACH ************** //
 // ************************************************************************** //
 
-#if BOOST_WORKAROUND(__GNUC__, < 3)
-#define BOOST_TEST_FE_MULTISTATEMENT
-#endif
-
 #define BOOST_TEST_FE_ANY ::boost::unit_test::for_each::static_any_t
 #define BOOST_TEST_FE_IS_CONST( COL ) ::boost::unit_test::for_each::is_const_coll( COL )
 
@@ -258,8 +254,6 @@
 #define BOOST_TEST_FE_END_VAR BOOST_JOIN( _fe_end_, BOOST_TEST_LINE_NUM )
 #define BOOST_TEST_FE_CON_VAR BOOST_JOIN( _fe_con_, BOOST_TEST_LINE_NUM )
 
-#ifndef BOOST_TEST_FE_MULTISTATEMENT
-
 #define BOOST_TEST_FOREACH( RefType, var, COL ) \
 if( BOOST_TEST_FE_ANY BOOST_TEST_FE_CUR_VAR = BOOST_TEST_FE_BEG( COL ) ) {} else \
 if( BOOST_TEST_FE_ANY BOOST_TEST_FE_END_VAR = BOOST_TEST_FE_END( COL ) ) {} else \
@@ -272,24 +266,6 @@
          !BOOST_TEST_FE_CON_VAR; BOOST_TEST_FE_CON_VAR = true ) \
 /**/
 
-#else
-
-#define BOOST_TEST_FOREACH( RefType, var, COL ) \
-BOOST_TEST_FE_ANY BOOST_TEST_FE_CUR_VAR = BOOST_TEST_FE_BEG( COL ), \
- BOOST_TEST_FE_END_VAR = BOOST_TEST_FE_END( COL ); \
- \
-for( bool BOOST_TEST_FE_CON_VAR = true; BOOST_TEST_FE_CON_VAR; ) \
-for( ; \
- BOOST_TEST_FE_CON_VAR && (BOOST_TEST_FE_CON_VAR = !BOOST_TEST_FE_DONE( COL )); \
- BOOST_TEST_FE_CON_VAR ? BOOST_TEST_FE_NEXT( COL ) : BOOST_FOREACH_NOOP( COL )) \
- \
- if( (BOOST_TEST_FE_CON_VAR = false, false) ) {} else \
- for( RefType var = BOOST_TEST_FE_DEREF( COL, RefType ); \
- !BOOST_TEST_FE_CON_VAR; BOOST_TEST_FE_CON_VAR = true ) \
-/**/
-
-#endif
-
 //____________________________________________________________________________//
 
 } // namespace for_each

Modified: branches/proto/v4/boost/test/utils/iterator/ifstream_line_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/iterator/ifstream_line_iterator.hpp (original)
+++ branches/proto/v4/boost/test/utils/iterator/ifstream_line_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)

Modified: branches/proto/v4/boost/test/utils/iterator/input_iterator_facade.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/iterator/input_iterator_facade.hpp (original)
+++ branches/proto/v4/boost/test/utils/iterator/input_iterator_facade.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)

Modified: branches/proto/v4/boost/test/utils/iterator/istream_line_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/iterator/istream_line_iterator.hpp (original)
+++ branches/proto/v4/boost/test/utils/iterator/istream_line_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)
@@ -59,11 +59,7 @@
     }
     explicit basic_istream_line_iterator( istream_type& input )
     : m_input_stream( &input )
-#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
- , m_delimeter( '\n' )
-#else
     , m_delimeter( input.widen( '\n' ) )
-#endif
     {
         this->init();
     }
@@ -74,7 +70,7 @@
     // increment implementation
     bool get()
     {
- return std::getline( *m_input_stream, this->m_value, m_delimeter );
+ return std::getline( *m_input_stream, this->m_value, m_delimeter ) != (void*)0;
     }
 
     // Data members

Modified: branches/proto/v4/boost/test/utils/iterator/token_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/iterator/token_iterator.hpp (original)
+++ branches/proto/v4/boost/test/utils/iterator/token_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)

Modified: branches/proto/v4/boost/test/utils/named_params.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/named_params.hpp (original)
+++ branches/proto/v4/boost/test/utils/named_params.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/nullstream.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/nullstream.hpp (original)
+++ branches/proto/v4/boost/test/utils/nullstream.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2002-2007.
+// (C) Copyright Gennadiy Rozental 2002-2008.
 // (C) Copyright Daryle Walker 2000-2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/test/utils/rtti.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/rtti.hpp (original)
+++ branches/proto/v4/boost/test/utils/rtti.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/argument.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/argument.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/argument.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/argument_factory.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/argument_factory.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/argument_factory.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.cpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.cpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.ipp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.ipp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/argv_traverser.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/basic_parameter.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/basic_parameter.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/basic_parameter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.cpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.cpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.ipp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.ipp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/char_parameter.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/detail/argument_value_usage.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/detail/argument_value_usage.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/detail/argument_value_usage.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-2008.
 // Permission to copy, use, modify, sell and distribute this software
 // is granted provided this copyright notice appears in all copies.
 // This software is provided "as is" without express or implied warranty,

Modified: branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.cpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.cpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.ipp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.ipp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/dual_name_parameter.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/fwd.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/fwd.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/id_policy.cpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/id_policy.cpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/id_policy.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/id_policy.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/id_policy.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/id_policy.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/id_policy.ipp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/id_policy.ipp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/id_policy.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/iface/argument_factory.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/iface/argument_factory.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/iface/argument_factory.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/iface/id_policy.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/iface/id_policy.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/iface/id_policy.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/modifier.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/modifier.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/modifier.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.cpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.cpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.ipp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.ipp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/named_parameter.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/parameter.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/parameter.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/parameter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -87,7 +87,7 @@
     bool responds_to( cstring name ) const { return m_id_policy.responds_to( name ); }
     bool conflict_with( parameter const& p ) const
     {
- return id_2_report() == p.id_2_report() && !id_2_report().is_empty() ||
+ return (id_2_report() == p.id_2_report() && !id_2_report().is_empty()) ||
                m_id_policy.conflict_with( p.m_id_policy ) ||
                p.m_id_policy.conflict_with( m_id_policy );
     }

Modified: branches/proto/v4/boost/test/utils/runtime/cla/parser.cpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/parser.cpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/parser.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/parser.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/parser.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/parser.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/parser.ipp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/parser.ipp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/parser.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/positional_parameter.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/positional_parameter.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/positional_parameter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -38,17 +38,17 @@
     BOOST_RT_PARAM_UNNEEDED_VIRTUAL ~trivial_id_policy() {}
 
     virtual bool responds_to( cstring name ) const { return m_name == name; }
- virtual bool conflict_with( identification_policy const& id ) const { return false; }
+ virtual bool conflict_with( identification_policy const& ) const { return false; }
     virtual cstring id_2_report() const { return m_name; }
     virtual void usage_info( format_stream& fs ) const
     {
         if( !m_name.empty() )
             fs << BOOST_RT_PARAM_LITERAL( '<' ) << m_name << BOOST_RT_PARAM_LITERAL( '>' );
         else
- fs << BOOST_RT_PARAM_CSTRING_LITERAL( "<value>" );;
+ fs << BOOST_RT_PARAM_CSTRING_LITERAL( "<value>" );
     }
 
- virtual bool matching( parameter const& p, argv_traverser& tr, bool primary ) const
+ virtual bool matching( parameter const& p, argv_traverser&, bool primary ) const
     {
         return primary && ( !p.has_argument() || p.p_multiplicable );
     }

Modified: branches/proto/v4/boost/test/utils/runtime/cla/typed_parameter.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/typed_parameter.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/typed_parameter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/validation.cpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/validation.cpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/validation.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/validation.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/validation.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/validation.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/validation.ipp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/validation.ipp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/validation.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/value_generator.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/value_generator.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/value_generator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/cla/value_handler.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/cla/value_handler.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/cla/value_handler.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/config.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/config.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/config.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/configuration.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/configuration.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/configuration.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/env/environment.cpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/env/environment.cpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/env/environment.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)

Modified: branches/proto/v4/boost/test/utils/runtime/env/environment.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/env/environment.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/env/environment.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/env/environment.ipp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/env/environment.ipp (original)
+++ branches/proto/v4/boost/test/utils/runtime/env/environment.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/env/fwd.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/env/fwd.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/env/fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -24,6 +24,9 @@
 
 namespace environment {
 
+class variable_base;
+variable_base var( cstring var_name );
+
 namespace rt_env_detail {
 
 struct variable_data;
@@ -36,7 +39,6 @@
 
 }
 
-class variable_base;
 template <typename T> class variable;
 
 } // namespace environment

Modified: branches/proto/v4/boost/test/utils/runtime/env/modifier.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/env/modifier.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/env/modifier.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/env/variable.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/env/variable.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/env/variable.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/file/config_file.cpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/file/config_file.cpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/file/config_file.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/file/config_file.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/file/config_file.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/file/config_file.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/file/config_file_iterator.cpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/file/config_file_iterator.cpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/file/config_file_iterator.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/file/config_file_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/file/config_file_iterator.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/file/config_file_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/fwd.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/fwd.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/interpret_argument_value.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/interpret_argument_value.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/interpret_argument_value.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/parameter.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/parameter.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/parameter.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/trace.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/trace.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/trace.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/runtime/validation.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/runtime/validation.hpp (original)
+++ branches/proto/v4/boost/test/utils/runtime/validation.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/trivial_singleton.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/trivial_singleton.hpp (original)
+++ branches/proto/v4/boost/test/utils/trivial_singleton.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2007.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/boost/test/utils/wrap_stringstream.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/wrap_stringstream.hpp (original)
+++ branches/proto/v4/boost/test/utils/wrap_stringstream.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2002-2007.
+// (C) Copyright Gennadiy Rozental 2002-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)
@@ -114,9 +114,7 @@
 
 //____________________________________________________________________________//
 
-#if !defined(BOOST_NO_STD_LOCALE) && \
- (!defined(BOOST_MSVC) || BOOST_WORKAROUND(BOOST_MSVC, >= 1310)) && \
- !defined(__MWERKS__) && !BOOST_WORKAROUND(__GNUC__, < 3)
+#if BOOST_TEST_USE_STD_LOCALE
 
 template <typename CharT>
 inline basic_wrap_stringstream<CharT>&

Modified: branches/proto/v4/boost/test/utils/xml_printer.hpp
==============================================================================
--- branches/proto/v4/boost/test/utils/xml_printer.hpp (original)
+++ branches/proto/v4/boost/test/utils/xml_printer.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2004-2007.
+// (C) Copyright Gennadiy Rozental 2004-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)
@@ -67,7 +67,7 @@
 inline void
 print_escaped( std::ostream& where_to, std::string const& value )
 {
- print_escaped( where_to, const_string( value ) );
+ print_escaped( where_to, const_string( value ) );
 }
 
 //____________________________________________________________________________//
@@ -76,7 +76,7 @@
 inline void
 print_escaped( std::ostream& where_to, T const& value )
 {
- where_to << value;
+ where_to << value;
 }
 
 //____________________________________________________________________________//
@@ -87,11 +87,11 @@
 inline std::ostream&
 operator<<( custom_printer<attr_value> const& p, T const& value )
 {
- *p << "=\"";
- print_escaped( *p, value );
- *p << '"';
+ *p << "=\"";
+ print_escaped( *p, value );
+ *p << '"';
 
- return *p;
+ return *p;
 }
 
 //____________________________________________________________________________//

Modified: branches/proto/v4/boost/thread/detail/move.hpp
==============================================================================
--- branches/proto/v4/boost/thread/detail/move.hpp (original)
+++ branches/proto/v4/boost/thread/detail/move.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,8 +6,10 @@
 #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>
 
@@ -37,11 +39,13 @@
         };
     }
 
+#ifndef BOOST_NO_SFINAE
     template<typename T>
     typename enable_if<boost::is_convertible<T&,detail::thread_move_t<T> >, detail::thread_move_t<T> >::type move(T& t)
     {
         return t;
     }
+#endif
     
     template<typename T>
     detail::thread_move_t<T> move(detail::thread_move_t<T> t)

Modified: branches/proto/v4/boost/thread/detail/platform.hpp
==============================================================================
--- branches/proto/v4/boost/thread/detail/platform.hpp (original)
+++ branches/proto/v4/boost/thread/detail/platform.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -42,9 +42,9 @@
 #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
+# 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.

Modified: branches/proto/v4/boost/thread/detail/thread.hpp
==============================================================================
--- branches/proto/v4/boost/thread/detail/thread.hpp (original)
+++ branches/proto/v4/boost/thread/detail/thread.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -173,15 +173,24 @@
         }
         
 #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>
- thread(detail::thread_move_t<F> f):
+ explicit thread(detail::thread_move_t<F> f):
             thread_info(make_thread_info(f))
         {
             start_thread();

Modified: branches/proto/v4/boost/thread/locks.hpp
==============================================================================
--- branches/proto/v4/boost/thread/locks.hpp (original)
+++ branches/proto/v4/boost/thread/locks.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,12 +10,21 @@
 #include <algorithm>
 #include <iterator>
 #include <boost/thread/thread_time.hpp>
-#include <boost/utility/enable_if.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>
@@ -77,7 +86,13 @@
                               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
     {};
@@ -97,6 +112,74 @@
     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:
@@ -126,8 +209,10 @@
     private:
         Mutex* m;
         bool is_locked;
- explicit unique_lock(unique_lock&);
+ 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)
@@ -154,6 +239,40 @@
         {
             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)
         {
@@ -185,7 +304,6 @@
             swap(temp);
             return *this;
         }
-
         void swap(unique_lock& other)
         {
             std::swap(m,other.m);
@@ -196,6 +314,7 @@
             std::swap(m,other->m);
             std::swap(is_locked,other->is_locked);
         }
+#endif
         
         ~unique_lock()
         {
@@ -234,6 +353,11 @@
             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())
@@ -275,11 +399,27 @@
         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
@@ -378,11 +518,29 @@
             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()
         {
@@ -418,6 +576,16 @@
             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())
@@ -428,7 +596,7 @@
             is_locked=false;
         }
             
- typedef void (shared_lock::*bool_type)();
+ typedef void (shared_lock<Mutex>::*bool_type)();
         operator bool_type() const
         {
             return is_locked?&shared_lock::lock:0;
@@ -444,6 +612,20 @@
 
     };
 
+#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
     {
@@ -576,6 +758,18 @@
     };
 
 
+#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)
@@ -586,7 +780,7 @@
             m->unlock_upgrade_and_lock();
         }
     }
-
+#endif
     template <class Mutex>
     class upgrade_to_unique_lock
     {
@@ -685,6 +879,12 @@
                 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);
@@ -693,6 +893,7 @@
             {
                 base::swap(*other);
             }
+#endif
 
             void lock()
             {
@@ -726,15 +927,23 @@
             typedef typename base::bool_type bool_type;
             operator bool_type() const
             {
- return static_cast<base const&>(*this);
+ 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)
@@ -859,28 +1068,63 @@
         }
     }
 
- template<typename MutexType1,typename MutexType2>
- typename enable_if<is_mutex_type<MutexType1>, void>::type lock(MutexType1& m1,MutexType2& m2)
+ namespace detail
     {
- unsigned const lock_count=2;
- unsigned lock_first=0;
- while(true)
+ 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>)
         {
- switch(lock_first)
+ unsigned const lock_count=2;
+ unsigned lock_first=0;
+ while(true)
             {
- 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;
+ 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>
@@ -995,10 +1239,52 @@
         }
     }
 
+ 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 enable_if<is_mutex_type<MutexType1>, int>::type try_lock(MutexType1& m1,MutexType2& m2)
+ typename detail::try_lock_impl_return<MutexType1>::type try_lock(const MutexType1& m1,const MutexType2& m2)
     {
- return ((int)detail::try_lock_internal(m1,m2))-1;
+ return detail::try_lock_impl(m1,m2,detail::is_mutex_type_wrapper<is_mutex_type<MutexType1>::value>());
     }
 
     template<typename MutexType1,typename MutexType2,typename MutexType3>
@@ -1020,9 +1306,6 @@
     }
     
 
- template<typename Iterator>
- typename disable_if<is_mutex_type<Iterator>, void>::type lock(Iterator begin,Iterator end);
-
     namespace detail
     {
         template<typename Iterator>
@@ -1050,70 +1333,59 @@
                 }
             }
         };
- }
 
- template<typename Iterator>
- typename disable_if<is_mutex_type<Iterator>, Iterator>::type try_lock(Iterator begin,Iterator end)
- {
- 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)
+ template<typename Iterator>
+ Iterator try_lock_impl(Iterator begin,Iterator end,is_mutex_type_wrapper<false>)
+
         {
- guard.release();
+ 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;
         }
-
- return failed;
     }
+
 
- template<typename Iterator>
- typename disable_if<is_mutex_type<Iterator>, void>::type lock(Iterator begin,Iterator end)
+ namespace detail
     {
- typedef typename std::iterator_traits<Iterator>::value_type lock_type;
-
- if(begin==end)
+ template<typename Iterator>
+ void lock_impl(Iterator begin,Iterator end,is_mutex_type_wrapper<false>)
         {
- return;
- }
- bool start_with_begin=true;
- Iterator second=begin;
- ++second;
- Iterator next=second;
+ typedef typename std::iterator_traits<Iterator>::value_type lock_type;
         
- for(;;)
- {
- unique_lock<lock_type> begin_lock(*begin,defer_lock);
- if(start_with_begin)
+ if(begin==end)
             {
- 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;
+ return;
             }
- else
+ bool start_with_begin=true;
+ Iterator second=begin;
+ ++second;
+ Iterator next=second;
+
+ for(;;)
             {
- detail::range_lock_guard<Iterator> guard(next,end);
- if(begin_lock.try_lock())
+ unique_lock<lock_type> begin_lock(*begin,defer_lock);
+ if(start_with_begin)
                 {
- Iterator const failed_lock=try_lock(second,next);
- if(failed_lock==next)
+ begin_lock.lock();
+ Iterator const failed_lock=try_lock(next,end);
+ if(failed_lock==end)
                     {
                         begin_lock.release();
- guard.release();
                         return;
                     }
                     start_with_begin=false;
@@ -1121,11 +1393,28 @@
                 }
                 else
                 {
- start_with_begin=true;
- next=second;
+ 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;
+ }
                 }
             }
         }
+
     }
     
 }

Modified: branches/proto/v4/boost/thread/pthread/condition_variable.hpp
==============================================================================
--- branches/proto/v4/boost/thread/pthread/condition_variable.hpp (original)
+++ branches/proto/v4/boost/thread/pthread/condition_variable.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -121,6 +121,17 @@
             }
             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)

Modified: branches/proto/v4/boost/thread/pthread/condition_variable_fwd.hpp
==============================================================================
--- branches/proto/v4/boost/thread/pthread/condition_variable_fwd.hpp (original)
+++ branches/proto/v4/boost/thread/pthread/condition_variable_fwd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -47,6 +47,16 @@
         }
 
         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)

Modified: branches/proto/v4/boost/thread/pthread/mutex.hpp
==============================================================================
--- branches/proto/v4/boost/thread/pthread/mutex.hpp (original)
+++ branches/proto/v4/boost/thread/pthread/mutex.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,6 +10,7 @@
 #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"
@@ -113,6 +114,10 @@
         {
             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()

Modified: branches/proto/v4/boost/thread/tss.hpp
==============================================================================
--- branches/proto/v4/boost/thread/tss.hpp (original)
+++ branches/proto/v4/boost/thread/tss.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,6 +5,7 @@
 // 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>
 

Modified: branches/proto/v4/boost/thread/win32/basic_timed_mutex.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/basic_timed_mutex.hpp (original)
+++ branches/proto/v4/boost/thread/win32/basic_timed_mutex.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,7 @@
 #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>
@@ -117,6 +118,11 @@
                 return timed_lock(get_system_time()+timeout);
             }
 
+ bool timed_lock(boost::xtime const& timeout)
+ {
+ return timed_lock(system_time(timeout));
+ }
+
             long get_active_count()
             {
                 return ::boost::detail::interlocked_read_acquire(&active_count);

Modified: branches/proto/v4/boost/thread/win32/mutex.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/mutex.hpp (original)
+++ branches/proto/v4/boost/thread/win32/mutex.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,7 +20,7 @@
     }
 
     class mutex:
- boost::noncopyable,
+ boost::noncopyable,
         public ::boost::detail::underlying_mutex
     {
     public:

Modified: branches/proto/v4/boost/thread/win32/shared_mutex.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/shared_mutex.hpp (original)
+++ branches/proto/v4/boost/thread/win32/shared_mutex.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -91,7 +91,7 @@
         bool try_lock_shared()
         {
             state_data old_state=state;
- do
+ for(;;)
             {
                 state_data new_state=old_state;
                 if(!new_state.exclusive && !new_state.exclusive_waiting_blocked)
@@ -106,14 +106,6 @@
                 }
                 old_state=current_state;
             }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
             return !(old_state.exclusive| old_state.exclusive_waiting_blocked);
         }
 
@@ -130,17 +122,10 @@
 
         bool timed_lock_shared(boost::system_time const& wait_until)
         {
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true)
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
+ for(;;)
             {
                 state_data old_state=state;
- do
+ for(;;)
                 {
                     state_data new_state=old_state;
                     if(new_state.exclusive || new_state.exclusive_waiting_blocked)
@@ -159,14 +144,6 @@
                     }
                     old_state=current_state;
                 }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
 
                 if(!(old_state.exclusive| old_state.exclusive_waiting_blocked))
                 {
@@ -176,7 +153,7 @@
                 unsigned long const res=detail::win32::WaitForSingleObject(unlock_sem,::boost::detail::get_milliseconds_until(wait_until));
                 if(res==detail::win32::timeout)
                 {
- do
+ for(;;)
                     {
                         state_data new_state=old_state;
                         if(new_state.exclusive || new_state.exclusive_waiting_blocked)
@@ -198,14 +175,6 @@
                         }
                         old_state=current_state;
                     }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
 
                     if(!(old_state.exclusive| old_state.exclusive_waiting_blocked))
                     {
@@ -221,7 +190,7 @@
         void unlock_shared()
         {
             state_data old_state=state;
- do
+ for(;;)
             {
                 state_data new_state=old_state;
                 bool const last_reader=!--new_state.shared_count;
@@ -262,14 +231,6 @@
                 }
                 old_state=current_state;
             }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
         }
 
         void lock()
@@ -283,20 +244,39 @@
             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)
         {
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true)
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
+ for(;;)
             {
                 state_data old_state=state;
 
- do
+ for(;;)
                 {
                     state_data new_state=old_state;
                     if(new_state.shared_count || new_state.exclusive)
@@ -316,14 +296,6 @@
                     }
                     old_state=current_state;
                 }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
 
                 if(!old_state.shared_count && !old_state.exclusive)
                 {
@@ -332,7 +304,7 @@
                 unsigned long const wait_res=detail::win32::WaitForMultipleObjects(2,semaphores,true,::boost::detail::get_milliseconds_until(wait_until));
                 if(wait_res==detail::win32::timeout)
                 {
- do
+ for(;;)
                     {
                         state_data new_state=old_state;
                         if(new_state.shared_count || new_state.exclusive)
@@ -357,14 +329,6 @@
                         }
                         old_state=current_state;
                     }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
                     if(!old_state.shared_count && !old_state.exclusive)
                     {
                         return true;
@@ -378,7 +342,7 @@
         void unlock()
         {
             state_data old_state=state;
- do
+ for(;;)
             {
                 state_data new_state=old_state;
                 new_state.exclusive=false;
@@ -396,30 +360,15 @@
                 }
                 old_state=current_state;
             }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
             release_waiters(old_state);
         }
 
         void lock_upgrade()
         {
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true)
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
+ for(;;)
             {
                 state_data old_state=state;
- do
+ for(;;)
                 {
                     state_data new_state=old_state;
                     if(new_state.exclusive || new_state.exclusive_waiting_blocked || new_state.upgrade)
@@ -439,14 +388,6 @@
                     }
                     old_state=current_state;
                 }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
 
                 if(!(old_state.exclusive|| old_state.exclusive_waiting_blocked|| old_state.upgrade))
                 {
@@ -457,10 +398,36 @@
             }
         }
 
+ 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;
- do
+ for(;;)
             {
                 state_data new_state=old_state;
                 new_state.upgrade=false;
@@ -487,20 +454,12 @@
                 }
                 old_state=current_state;
             }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
         }
 
         void unlock_upgrade_and_lock()
         {
             state_data old_state=state;
- do
+ for(;;)
             {
                 state_data new_state=old_state;
                 bool const last_reader=!--new_state.shared_count;
@@ -522,20 +481,12 @@
                 }
                 old_state=current_state;
             }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
         }
 
         void unlock_and_lock_upgrade()
         {
             state_data old_state=state;
- do
+ for(;;)
             {
                 state_data new_state=old_state;
                 new_state.exclusive=false;
@@ -555,21 +506,13 @@
                 }
                 old_state=current_state;
             }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
             release_waiters(old_state);
         }
         
         void unlock_and_lock_shared()
         {
             state_data old_state=state;
- do
+ for(;;)
             {
                 state_data new_state=old_state;
                 new_state.exclusive=false;
@@ -588,21 +531,13 @@
                 }
                 old_state=current_state;
             }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
             release_waiters(old_state);
         }
         
         void unlock_upgrade_and_lock_shared()
         {
             state_data old_state=state;
- do
+ for(;;)
             {
                 state_data new_state=old_state;
                 new_state.upgrade=false;
@@ -620,14 +555,6 @@
                 }
                 old_state=current_state;
             }
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4127)
-#endif
- while(true);
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
             release_waiters(old_state);
         }
         

Modified: branches/proto/v4/boost/thread/win32/thread_primitives.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/thread_primitives.hpp (original)
+++ branches/proto/v4/boost/thread/win32/thread_primitives.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -64,7 +64,7 @@
 # ifdef UNDER_CE
 # ifndef WINAPI
 # ifndef _WIN32_WCE_EMULATION
-# define WINAPI __cdecl // Note this doesn't match the desktop definition
+# define WINAPI __cdecl // Note this doesn't match the desktop definition
 # else
 # define WINAPI __stdcall
 # endif
@@ -282,16 +282,6 @@
 }
 
 #if defined(BOOST_MSVC) && (_MSC_VER>=1400) && !defined(UNDER_CE)
-#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)
 
 namespace boost
 {
@@ -299,6 +289,17 @@
     {
         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;

Modified: branches/proto/v4/boost/throw_exception.hpp
==============================================================================
--- branches/proto/v4/boost/throw_exception.hpp (original)
+++ branches/proto/v4/boost/throw_exception.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,6 +24,10 @@
 #include <boost/detail/workaround.hpp>
 #include <exception>
 
+#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( BOOST_NO_TYPEID )
+# define BOOST_EXCEPTION_DISABLE
+#endif
+
 #if !defined( BOOST_EXCEPTION_DISABLE ) && defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, < 0x590 )
 # define BOOST_EXCEPTION_DISABLE
 #endif

Modified: branches/proto/v4/boost/tuple/detail/tuple_basic.hpp
==============================================================================
--- branches/proto/v4/boost/tuple/detail/tuple_basic.hpp (original)
+++ branches/proto/v4/boost/tuple/detail/tuple_basic.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // tuple_basic.hpp -----------------------------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/tuple/detail/tuple_basic_no_partial_spec.hpp
==============================================================================
--- branches/proto/v4/boost/tuple/detail/tuple_basic_no_partial_spec.hpp (original)
+++ branches/proto/v4/boost/tuple/detail/tuple_basic_no_partial_spec.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // - tuple_basic_no_partial_spec.hpp -----------------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2001 Douglas Gregor (gregod_at_[hidden])
 // Copyright (C) 2001 Gary Powell (gary.powell_at_[hidden])
 //

Modified: branches/proto/v4/boost/tuple/tuple.hpp
==============================================================================
--- branches/proto/v4/boost/tuple/tuple.hpp (original)
+++ branches/proto/v4/boost/tuple/tuple.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // tuple.hpp - Boost Tuple Library --------------------------------------
 
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/tuple/tuple_comparison.hpp
==============================================================================
--- branches/proto/v4/boost/tuple/tuple_comparison.hpp (original)
+++ branches/proto/v4/boost/tuple/tuple_comparison.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // tuple_comparison.hpp -----------------------------------------------------
 //
-// Copyright (C) 2001 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2001 Gary Powell (gary.powell_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/boost/tuple/tuple_io.hpp
==============================================================================
--- branches/proto/v4/boost/tuple/tuple_io.hpp (original)
+++ branches/proto/v4/boost/tuple/tuple_io.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // tuple_io.hpp --------------------------------------------------------------
 
-// Copyright (C) 2001 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // 2001 Gary Powell (gary.powell_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/boost/type_traits/conversion_traits.hpp
==============================================================================
--- branches/proto/v4/boost/type_traits/conversion_traits.hpp (original)
+++ branches/proto/v4/boost/type_traits/conversion_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 
 // Copyright 2000 John Maddock (john_at_[hidden])
 // Copyright 2000 Jeremy Siek (jsiek_at_[hidden])
-// Copyright 1999, 2000 Jaakko J„rvi (jaakko.jarvi_at_[hidden])
+// Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Use, modification and distribution are subject to the Boost Software License,
 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/type_traits/is_convertible.hpp
==============================================================================
--- branches/proto/v4/boost/type_traits/is_convertible.hpp (original)
+++ branches/proto/v4/boost/type_traits/is_convertible.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 
 // Copyright 2000 John Maddock (john_at_[hidden])
 // Copyright 2000 Jeremy Siek (jsiek_at_[hidden])
-// Copyright 1999, 2000 Jaakko J„rvi (jaakko.jarvi_at_[hidden])
+// Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Use, modification and distribution are subject to the Boost Software License,
 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/boost/units/absolute.hpp
==============================================================================
--- branches/proto/v4/boost/units/absolute.hpp (original)
+++ branches/proto/v4/boost/units/absolute.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -133,6 +133,7 @@
         reduce_unit<From::unit_type>::type, \
         reduce_unit<To::unit_type>::type> \
     { \
+ static const bool is_defined = true; \
         typedef type_ type; \
         static type value() { return(value_); } \
     }; \

Modified: branches/proto/v4/boost/units/base_dimension.hpp
==============================================================================
--- branches/proto/v4/boost/units/base_dimension.hpp (original)
+++ branches/proto/v4/boost/units/base_dimension.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -77,13 +77,13 @@
         /// INTERNAL ONLY
         friend detail::yes
         boost_units_is_registered(const units::base_dimension_ordinal<N>&)
- { return(detail::yes()); }
+ { detail::yes result; return(result); }
         
         /// But make sure we can identify the current instantiation!
         /// INTERNAL ONLY
         friend detail::yes
         boost_units_is_registered(const units::base_dimension_pair<Derived, N>&)
- { return(detail::yes()); }
+ { detail::yes result; return(result); }
 };
 
 } // namespace units

Modified: branches/proto/v4/boost/units/base_unit.hpp
==============================================================================
--- branches/proto/v4/boost/units/base_unit.hpp (original)
+++ branches/proto/v4/boost/units/base_unit.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -98,13 +98,13 @@
         /// INTERNAL ONLY
         friend detail::yes
         boost_units_unit_is_registered(const units::base_unit_ordinal<N>&)
- { return(detail::yes()); }
+ { detail::yes result; return(result); }
         
         /// But make sure we can identify the current instantiation!
         /// INTERNAL ONLY
         friend detail::yes
         boost_units_unit_is_registered(const units::base_unit_pair<Derived, N>&)
- { return(detail::yes()); }
+ { detail::yes result; return(result); }
 };
 
 } // namespace units

Modified: branches/proto/v4/boost/units/base_units/metric/angstrom.hpp
==============================================================================
--- branches/proto/v4/boost/units/base_units/metric/angstrom.hpp (original)
+++ branches/proto/v4/boost/units/base_units/metric/angstrom.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -28,7 +28,7 @@
 template<>
 struct base_unit_info<metric::angstrom_base_unit> {
     static const char* name() { return("angstrom"); }
- static const char* symbol() { return(""); }
+ static const char* symbol() { return("A"); }
 };
 
 }

Modified: branches/proto/v4/boost/units/base_units/metric/micron.hpp
==============================================================================
--- branches/proto/v4/boost/units/base_units/metric/micron.hpp (original)
+++ branches/proto/v4/boost/units/base_units/metric/micron.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,7 +27,7 @@
 template<>
 struct base_unit_info<metric::micron_base_unit> {
     static const char* name() { return("micron"); }
- static const char* symbol() { return("µ"); }
+ static const char* symbol() { return("u"); }
 };
 
 }

Modified: branches/proto/v4/boost/units/base_units/temperature/fahrenheit.hpp
==============================================================================
--- branches/proto/v4/boost/units/base_units/temperature/fahrenheit.hpp (original)
+++ branches/proto/v4/boost/units/base_units/temperature/fahrenheit.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,7 +26,7 @@
 struct fahrenheit_base_unit : public base_unit<fahrenheit_base_unit, temperature_dimension, -1007>
 {
     static std::string name() { return("fahrenheit"); }
- static std::string symbol() { return("°F"); }
+ static std::string symbol() { return("F"); }
 };
 
 } // namespace temperature

Modified: branches/proto/v4/boost/units/conversion.hpp
==============================================================================
--- branches/proto/v4/boost/units/conversion.hpp (original)
+++ branches/proto/v4/boost/units/conversion.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -70,6 +70,7 @@
     template<> \
     struct base_unit_converter<Source, reduce_unit<Destination::unit_type>::type> \
     { \
+ static const bool is_defined = true; \
         typedef type_ type; \
         static type value() { return(value_); } \
     }; \
@@ -95,6 +96,7 @@
         BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(Destination, typename Source::dimension_type)\
> \
     { \
+ static const bool is_defined = true; \
         typedef type_ type; \
         static type value() { return(value_); } \
     }; \
@@ -112,6 +114,7 @@
     template<> \
     struct unscaled_get_default_conversion<unscale<Source>::type> \
     { \
+ static const bool is_defined = true; \
         typedef Dest type; \
     }; \
     } \
@@ -130,6 +133,7 @@
     template<BOOST_PP_SEQ_ENUM(Params)> \
     struct unscaled_get_default_conversion<Source> \
     { \
+ static const bool is_defined = true; \
         typedef Dest type; \
     }; \
     } \

Modified: branches/proto/v4/boost/units/derived_dimension.hpp
==============================================================================
--- branches/proto/v4/boost/units/derived_dimension.hpp (original)
+++ branches/proto/v4/boost/units/derived_dimension.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,8 +11,6 @@
 #ifndef BOOST_UNITS_DERIVED_DIMENSION_HPP
 #define BOOST_UNITS_DERIVED_DIMENSION_HPP
 
-#include <boost/mpl/list.hpp>
-
 #include <boost/units/dim.hpp>
 #include <boost/units/dimension.hpp>
 #include <boost/units/static_rational.hpp>
@@ -38,14 +36,14 @@
     typedef detail::unspecified type;
 #else
     typedef typename
- make_dimension_list< mpl::list< dim< DT1,static_rational<E1> >,
- dim< DT2,static_rational<E2> >,
- dim< DT3,static_rational<E3> >,
- dim< DT4,static_rational<E4> >,
- dim< DT5,static_rational<E5> >,
- dim< DT6,static_rational<E6> >,
- dim< DT7,static_rational<E7> >,
- dim< DT8,static_rational<E8> > > >::type type;
+ make_dimension_list< list< dim< DT1,static_rational<E1> >,
+ list< dim< DT2,static_rational<E2> >,
+ list< dim< DT3,static_rational<E3> >,
+ list< dim< DT4,static_rational<E4> >,
+ list< dim< DT5,static_rational<E5> >,
+ list< dim< DT6,static_rational<E6> >,
+ list< dim< DT7,static_rational<E7> >,
+ list< dim< DT8,static_rational<E8> >, dimensionless_type > > > > > > > > >::type type;
 #endif
 };
 
@@ -62,7 +60,7 @@
     dimensionless_type,0>
 {
     typedef typename
- make_dimension_list< mpl::list< dim< DT1,static_rational<E1> > > >::type type;
+ make_dimension_list< list< dim< DT1,static_rational<E1> >, dimensionless_type > >::type type;
 };
 
 /// INTERNAL ONLY
@@ -79,8 +77,8 @@
     dimensionless_type,0>
 {
     typedef typename
- make_dimension_list< mpl::list< dim< DT1,static_rational<E1> >,
- dim< DT2,static_rational<E2> > > >::type type;
+ make_dimension_list< list< dim< DT1,static_rational<E1> >,
+ list< dim< DT2,static_rational<E2> >, dimensionless_type > > >::type type;
 };
 
 /// INTERNAL ONLY
@@ -98,9 +96,9 @@
     dimensionless_type,0>
 {
     typedef typename
- make_dimension_list< mpl::list< dim< DT1,static_rational<E1> >,
- dim< DT2,static_rational<E2> >,
- dim< DT3,static_rational<E3> > > >::type type;
+ make_dimension_list< list< dim< DT1,static_rational<E1> >,
+ list< dim< DT2,static_rational<E2> >,
+ list< dim< DT3,static_rational<E3> >, dimensionless_type > > > >::type type;
 };
 
 /// INTERNAL ONLY
@@ -119,10 +117,10 @@
     dimensionless_type,0>
 {
     typedef typename
- make_dimension_list< mpl::list< dim< DT1,static_rational<E1> >,
- dim< DT2,static_rational<E2> >,
- dim< DT3,static_rational<E3> >,
- dim< DT4,static_rational<E4> > > >::type type;
+ make_dimension_list< list< dim< DT1,static_rational<E1> >,
+ list< dim< DT2,static_rational<E2> >,
+ list< dim< DT3,static_rational<E3> >,
+ list< dim< DT4,static_rational<E4> >, dimensionless_type > > > > >::type type;
 };
 
 /// INTERNAL ONLY
@@ -142,11 +140,11 @@
     dimensionless_type,0>
 {
     typedef typename
- make_dimension_list< mpl::list< dim< DT1,static_rational<E1> >,
- dim< DT2,static_rational<E2> >,
- dim< DT3,static_rational<E3> >,
- dim< DT4,static_rational<E4> >,
- dim< DT5,static_rational<E5> > > >::type type;
+ make_dimension_list< list< dim< DT1,static_rational<E1> >,
+ list< dim< DT2,static_rational<E2> >,
+ list< dim< DT3,static_rational<E3> >,
+ list< dim< DT4,static_rational<E4> >,
+ list< dim< DT5,static_rational<E5> >, dimensionless_type > > > > > >::type type;
 };
 
 /// INTERNAL ONLY
@@ -167,12 +165,12 @@
     dimensionless_type,0>
 {
     typedef typename
- make_dimension_list< mpl::list< dim< DT1,static_rational<E1> >,
- dim< DT2,static_rational<E2> >,
- dim< DT3,static_rational<E3> >,
- dim< DT4,static_rational<E4> >,
- dim< DT5,static_rational<E5> >,
- dim< DT6,static_rational<E6> > > >::type type;
+ make_dimension_list< list< dim< DT1,static_rational<E1> >,
+ list< dim< DT2,static_rational<E2> >,
+ list< dim< DT3,static_rational<E3> >,
+ list< dim< DT4,static_rational<E4> >,
+ list< dim< DT5,static_rational<E5> >,
+ list< dim< DT6,static_rational<E6> >, dimensionless_type > > > > > > >::type type;
 };
 
 /// INTERNAL ONLY
@@ -194,13 +192,13 @@
     dimensionless_type,0>
 {
     typedef typename
- make_dimension_list< mpl::list< dim< DT1,static_rational<E1> >,
- dim< DT2,static_rational<E2> >,
- dim< DT3,static_rational<E3> >,
- dim< DT4,static_rational<E4> >,
- dim< DT5,static_rational<E5> >,
- dim< DT6,static_rational<E6> >,
- dim< DT7,static_rational<E7> > > >::type type;
+ make_dimension_list< list< dim< DT1,static_rational<E1> >,
+ list< dim< DT2,static_rational<E2> >,
+ list< dim< DT3,static_rational<E3> >,
+ list< dim< DT4,static_rational<E4> >,
+ list< dim< DT5,static_rational<E5> >,
+ list< dim< DT6,static_rational<E6> >,
+ list< dim< DT7,static_rational<E7> >, dimensionless_type > > > > > > > >::type type;
 };
 
 } // namespace units

Modified: branches/proto/v4/boost/units/detail/absolute_impl.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/absolute_impl.hpp (original)
+++ branches/proto/v4/boost/units/detail/absolute_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,8 +13,6 @@
 
 #include <iosfwd>
 
-#include <boost/type_traits/is_base_and_derived.hpp>
-
 #include <boost/units/config.hpp>
 #include <boost/units/conversion.hpp>
 #include <boost/units/heterogeneous_system.hpp>
@@ -33,7 +31,9 @@
 
 namespace detail {
 
-struct undefined_affine_conversion_base { };
+struct undefined_affine_conversion_base {
+ static const bool is_defined = false;
+};
 
 } // namespace detail
 
@@ -89,14 +89,8 @@
         return(
             to_quantity_type::from_value(
                 detail::affine_conversion_impl<
- !boost::is_base_and_derived<
- detail::undefined_affine_conversion_base,
- affine_conversion_helper<typename reduce_unit<Unit1>::type, typename reduce_unit<Unit2>::type>
- >::value,
- !boost::is_base_and_derived<
- detail::undefined_affine_conversion_base,
- affine_conversion_helper<typename reduce_unit<Unit2>::type, typename reduce_unit<Unit1>::type>
- >::value
+ affine_conversion_helper<typename reduce_unit<Unit1>::type, typename reduce_unit<Unit2>::type>::is_defined,
+ affine_conversion_helper<typename reduce_unit<Unit2>::type, typename reduce_unit<Unit1>::type>::is_defined
>::template apply<Unit1, Unit2, T1, T2>::value(source.value())
             )
         );

Modified: branches/proto/v4/boost/units/detail/cmath_impl.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/cmath_impl.hpp (original)
+++ branches/proto/v4/boost/units/detail/cmath_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -25,6 +25,7 @@
     #include <boost/units/detail/cmath_msvc_impl.hpp>
 # endif
 
+#include <boost/config.hpp>
 #include <boost/math/special_functions/fpclassify.hpp>
 
 namespace boost {
@@ -32,48 +33,48 @@
 namespace detail {
 
 template<class Y>
-inline bool isgreater(const Y& v1,const Y& v2)
+inline bool isgreater BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
 {
     if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false;
     else return v1 > v2;
 }
 
 template<class Y>
-inline bool isgreaterequal(const Y& v1,const Y& v2)
+inline bool isgreaterequal BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
 {
     if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false;
     else return v1 >= v2;
 }
 
 template<class Y>
-inline bool isless(const Y& v1,const Y& v2)
+inline bool isless BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
 {
     if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false;
     else return v1 < v2;
 }
 
 template<class Y>
-inline bool islessequal(const Y& v1,const Y& v2)
+inline bool islessequal BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
 {
     if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false;
     else return v1 <= v2;
 }
 
 template<class Y>
-inline bool islessgreater(const Y& v1,const Y& v2)
+inline bool islessgreater BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
 {
     if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false;
     else return v1 < v2 || v1 > v2;
 }
 
 template<class Y>
-inline bool isunordered(const Y& v1,const Y& v2)
+inline bool isunordered BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
 {
     return (boost::math::isnan)(v1) || (boost::math::isnan)(v2);
 }
 
 template<class Y>
-inline Y fdim(const Y& v1,const Y& v2)
+inline Y fdim BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
 {
     if((boost::math::isnan)(v1)) return v1;
     else if((boost::math::isnan)(v2)) return v2;
@@ -101,7 +102,7 @@
 #endif
 
 template<class Y>
-inline Y fmax(const Y& v1,const Y& v2)
+inline Y fmax BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
 {
     if((boost::math::isnan)(v1)) return(v2);
     else if((boost::math::isnan)(v2)) return(v1);
@@ -110,7 +111,7 @@
 }
 
 template<class Y>
-inline Y fmin(const Y& v1,const Y& v2)
+inline Y fmin BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
 {
     if((boost::math::isnan)(v1)) return(v2);
     else if((boost::math::isnan)(v2)) return(v1);
@@ -153,7 +154,7 @@
 #endif
 
 template<class Y>
-inline Y trunc(const Y& val)
+inline Y trunc BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& val)
 {
     if(val > 0) return std::floor(val);
     else if(val < 0) return std::ceil(val);

Modified: branches/proto/v4/boost/units/detail/conversion_impl.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/conversion_impl.hpp (original)
+++ branches/proto/v4/boost/units/detail/conversion_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,14 +12,10 @@
 #define BOOST_UNITS_DETAIL_CONVERSION_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
-#include <boost/mpl/size.hpp>
-#include <boost/mpl/begin.hpp>
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/deref.hpp>
+#include <boost/mpl/and.hpp>
 #include <boost/mpl/divides.hpp>
 #include <boost/preprocessor/seq/enum.hpp>
 #include <boost/type_traits/is_same.hpp>
-#include <boost/type_traits/is_base_and_derived.hpp>
 
 #include <boost/units/heterogeneous_system.hpp>
 #include <boost/units/homogeneous_system.hpp>
@@ -49,10 +45,14 @@
 }
 
 /// INTERNAL ONLY
-struct undefined_base_unit_converter_base { };
+struct undefined_base_unit_converter_base {
+ static const bool is_defined = false;
+};
 
 /// INTERNAL ONLY
-struct no_default_conversion { };
+struct no_default_conversion {
+ static const bool is_defined = false;
+};
 
 /// INTERNAL ONLY
 template<class BaseUnit>
@@ -89,7 +89,7 @@
 struct get_default_conversion
 {
     typedef typename unscaled_get_default_conversion_impl<
- !boost::is_base_and_derived<no_default_conversion, unscaled_get_default_conversion<typename unscale<BaseUnit>::type> >::value
+ unscaled_get_default_conversion<typename unscale<BaseUnit>::type>::is_defined
>::template apply<BaseUnit>::type type;
 };
 
@@ -103,15 +103,18 @@
 
 /// INTERNAL ONLY
 template<class Source, class Dest>
-struct base_unit_converter_base : undefined_base_unit_converter_base { };
+struct base_unit_converter_base : undefined_base_unit_converter_base {
+};
 
 /// INTERNAL ONLY
 template<class Source>
 struct base_unit_converter_base<Source, BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(Source, typename Source::dimension_type)>
 {
+ static const bool is_defined = true;
     typedef one type;
     static type value() {
- return(one());
+ one result;
+ return(result);
     }
 };
 
@@ -121,45 +124,22 @@
 
 namespace detail {
 
-template<bool is_defined>
-struct do_call_base_unit_converter_impl;
-
-template<>
-struct do_call_base_unit_converter_impl<true>
-{
- template<class Source, class Dest>
- struct apply : base_unit_converter<Source, Dest> { };
-};
-
-template<>
-struct do_call_base_unit_converter_impl<false>
-{
- template<class Source, class Dest>
- struct apply {
- typedef select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type> selector;
- typedef typename selector::source_type source_type;
- typedef typename selector::destination_type destination_type;
- typedef base_unit_converter<source_type, destination_type> converter;
- typedef typename mpl::divides<typename get_scale_list<Source>::type, typename get_scale_list<source_type>::type>::type source_factor;
- typedef typename mpl::divides<typename get_scale_list<Dest>::type, typename get_scale_list<destination_type>::type>::type destination_factor;
- typedef typename mpl::divides<source_factor, destination_factor>::type factor;
- typedef eval_scale_list<factor> eval_factor;
- typedef typename multiply_typeof_helper<typename converter::type, typename eval_factor::type>::type type;
- static type value()
- {
- return(converter::value() * eval_factor::value());
- }
- };
-};
-
 template<class Source, class Dest>
-struct do_call_base_unit_converter :
- do_call_base_unit_converter_impl<
- !boost::is_base_and_derived<
- undefined_base_unit_converter_base,
- base_unit_converter<Source, Dest>
- >::value
- >::template apply<Source, Dest> {};
+struct do_call_base_unit_converter {
+ typedef select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type> selector;
+ typedef typename selector::source_type source_type;
+ typedef typename selector::destination_type destination_type;
+ typedef base_unit_converter<source_type, destination_type> converter;
+ typedef typename mpl::divides<typename get_scale_list<Source>::type, typename get_scale_list<source_type>::type>::type source_factor;
+ typedef typename mpl::divides<typename get_scale_list<Dest>::type, typename get_scale_list<destination_type>::type>::type destination_factor;
+ typedef typename mpl::divides<source_factor, destination_factor>::type factor;
+ typedef eval_scale_list<factor> eval_factor;
+ typedef typename multiply_typeof_helper<typename converter::type, typename eval_factor::type>::type type;
+ static type value()
+ {
+ return(converter::value() * eval_factor::value());
+ }
+};
 
 template<bool forward_is_defined, bool reverse_is_defined>
 struct call_base_unit_converter_base_unit_impl;
@@ -168,7 +148,8 @@
 struct call_base_unit_converter_base_unit_impl<true, true>
 {
     template<class Source, class Dest>
- struct apply : do_call_base_unit_converter<Source, typename Dest::unit_type>
+ struct apply
+ : do_call_base_unit_converter<Source, typename Dest::unit_type>
     {
     };
 };
@@ -177,7 +158,8 @@
 struct call_base_unit_converter_base_unit_impl<true, false>
 {
     template<class Source, class Dest>
- struct apply : do_call_base_unit_converter<Source, typename Dest::unit_type>
+ struct apply
+ : do_call_base_unit_converter<Source, typename Dest::unit_type>
     {
     };
 };
@@ -191,7 +173,8 @@
         typedef do_call_base_unit_converter<Dest, typename Source::unit_type> converter;
         typedef typename divide_typeof_helper<one, typename converter::type>::type type;
         static type value() {
- return(one() / converter::value());
+ one numerator;
+ return(numerator / converter::value());
         }
     };
 };
@@ -229,11 +212,11 @@
     template<class Begin>
     struct apply
     {
- typedef typename mpl::deref<Begin>::type source_pair;
+ typedef typename Begin::item source_pair;
         typedef typename source_pair::value_type exponent;
         typedef typename source_pair::tag_type source;
         typedef typename get_default_conversion<source>::type new_source;
- typedef typename get_default_conversion_impl<N-1>::template apply<typename mpl::next<Begin>::type> next_iteration;
+ typedef typename get_default_conversion_impl<N-1>::template apply<typename Begin::next> next_iteration;
         typedef typename multiply_typeof_helper<typename power_typeof_helper<new_source, exponent>::type, typename next_iteration::unit_type>::type unit_type;
         typedef call_base_unit_converter<source, new_source> conversion;
         typedef typename multiply_typeof_helper<typename conversion::type, typename next_iteration::type>::type type;
@@ -251,8 +234,9 @@
     {
         typedef unit<dimensionless_type, heterogeneous_system<heterogeneous_system_impl<dimensionless_type, dimensionless_type, no_scale> > > unit_type;
         typedef one type;
- static type value() {
- return(type());
+ static one value() {
+ one result;
+ return(result);
         }
     };
 };
@@ -264,7 +248,8 @@
 struct call_base_unit_converter_impl<true>
 {
     template<class Source, class Dest>
- struct apply : do_call_base_unit_converter<Source, Dest>
+ struct apply
+ : do_call_base_unit_converter<Source, Dest>
     {
     };
 };
@@ -276,7 +261,7 @@
     struct apply {
         typedef typename reduce_unit<typename get_default_conversion<Source>::type>::type new_source;
         typedef typename Dest::system_type::type system_list;
- typedef typename get_default_conversion_impl<mpl::size<system_list>::value>::template apply<typename mpl::begin<system_list>::type> impl;
+ typedef typename get_default_conversion_impl<system_list::size::value>::template apply<system_list> impl;
         typedef typename impl::unit_type new_dest;
         typedef call_base_unit_converter<Source, new_source> start;
         typedef conversion_factor_helper<new_source, new_dest> conversion;
@@ -293,36 +278,22 @@
     };
 };
 
-template<class Source, class Dest>
-struct base_unit_converter_scaled_is_undefined :
- boost::is_base_and_derived<
- undefined_base_unit_converter_base,
- base_unit_converter<
- typename select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type>::source_type,
- typename select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type>::destination_type
- >
- > {};
-
-template<class Source, class Dest>
-struct base_unit_converter_is_undefined :
- mpl::and_<
- boost::is_base_and_derived<
- undefined_base_unit_converter_base,
- base_unit_converter<Source, Dest>
- >,
- base_unit_converter_scaled_is_undefined<Source, Dest>
- > {};
+#define BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Source, Dest)\
+ base_unit_converter<\
+ typename select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type>::source_type,\
+ typename select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type>::destination_type\
+ >::is_defined
 
 template<class Source, class Dest>
-struct call_base_unit_converter : call_base_unit_converter_impl<!base_unit_converter_is_undefined<Source, Dest>::value>::template apply<Source, Dest>
+struct call_base_unit_converter : call_base_unit_converter_impl<BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Source, Dest)>::template apply<Source, Dest>
 {
 };
 
 template<class Source, class Dest>
 struct call_base_unit_converter<Source, BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(Dest, typename Source::dimension_type)> :
     call_base_unit_converter_base_unit_impl<
- !base_unit_converter_is_undefined<Source, typename Dest::unit_type>::value,
- !base_unit_converter_is_undefined<Dest, typename Source::unit_type>::value
+ BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Source, typename Dest::unit_type),
+ BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Dest, typename Source::unit_type)
>::template apply<Source, Dest>
 {
 };
@@ -334,10 +305,10 @@
     struct apply
     {
         typedef typename conversion_impl<N-1>::template apply<
- typename mpl::next<Begin>::type,
+ typename Begin::next,
             DestinationSystem
> next_iteration;
- typedef typename mpl::deref<Begin>::type unit_pair;
+ typedef typename Begin::item unit_pair;
         typedef typename unit_pair::tag_type unit;
         typedef typename unit::dimension_type dimensions;
         typedef typename reduce_unit<units::unit<dimensions, DestinationSystem> >::type reduced_unit;
@@ -354,7 +325,7 @@
     struct apply
     {
         typedef one type;
- static type value() { return(one()); }
+ static type value() { one result; return(result); }
     };
 };
 
@@ -374,8 +345,8 @@
     static destination_type convert(const quantity<unit<D, homogeneous_system<L1> >, T1>& source)
     {
         return(destination_type::from_value(source.value() *
- detail::conversion_impl<mpl::size<unit_list>::value>::template apply<
- typename mpl::begin<unit_list>::type,
+ detail::conversion_impl<unit_list::size::value>::template apply<
+ unit_list,
                 homogeneous_system<L2>
>::value()
             ));
@@ -392,8 +363,8 @@
     static destination_type convert(const quantity<unit<D, heterogeneous_system<L1> >, T1>& source)
     {
         return(destination_type::from_value(source.value() *
- detail::conversion_impl<mpl::size<typename L1::type>::value>::template apply<
- typename mpl::begin<typename L1::type>::type,
+ detail::conversion_impl<L1::type::size::value>::template apply<
+ typename L1::type,
                 homogeneous_system<L2>
>::value() *
             eval_scale_list<typename L1::scale>::value()
@@ -414,8 +385,8 @@
     static destination_type convert(const quantity<unit<D, homogeneous_system<L1> >, T1>& source)
     {
         return(destination_type::from_value(source.value() /
- (detail::conversion_impl<mpl::size<typename L2::type>::value>::template apply<
- typename mpl::begin<typename L2::type>::type,
+ (detail::conversion_impl<L2::type::size::value>::template apply<
+ typename L2::type,
                 homogeneous_system<L1>
>::value() *
             eval_scale_list<typename L2::scale>::value()
@@ -435,13 +406,13 @@
     /// INTERNAL ONLY
     typedef quantity<unit<D, heterogeneous_system<S2> >, T2> destination_type;
     /// INTERNAL ONLY
- typedef typename detail::extract_base_units<mpl::size<typename S1::type>::value>::template apply<
- typename mpl::begin<typename S1::type>::type,
- mpl::list0<>
+ typedef typename detail::extract_base_units<S1::type::size::value>::template apply<
+ typename S1::type,
+ dimensionless_type
>::type from_base_units;
     /// INTERNAL ONLY
- typedef typename detail::extract_base_units<mpl::size<typename S2::type>::value>::template apply<
- typename mpl::begin<typename S2::type>::type,
+ typedef typename detail::extract_base_units<S2::type::size::value>::template apply<
+ typename S2::type,
         from_base_units
>::type all_base_units;
     /// INTERNAL ONLY
@@ -451,12 +422,12 @@
     static destination_type convert(const source_type& source)
     {
         return(destination_type::from_value(source.value() *
- (detail::conversion_impl<mpl::size<typename S1::type>::value>::template apply<
- typename mpl::begin<typename S1::type>::type,
+ (detail::conversion_impl<S1::type::size::value>::template apply<
+ typename S1::type,
                 system
>::value() * eval_scale_list<result_scale>::value() /
- detail::conversion_impl<mpl::size<typename S2::type>::value>::template apply<
- typename mpl::begin<typename S2::type>::type,
+ detail::conversion_impl<S2::type::size::value>::template apply<
+ typename S2::type,
                 system
>::value()
             )
@@ -474,8 +445,8 @@
 {
     typedef typename reduce_unit<unit<D, homogeneous_system<L1> > >::type source_unit;
     typedef typename source_unit::system_type::type unit_list;
- typedef typename detail::conversion_impl<mpl::size<unit_list>::value>::template apply<
- typename mpl::begin<unit_list>::type,
+ typedef typename detail::conversion_impl<unit_list::size::value>::template apply<
+ unit_list,
         homogeneous_system<L2>
> impl;
     typedef typename impl::type type;
@@ -488,8 +459,8 @@
 template<class D, class L1, class L2>
 struct conversion_factor_helper<unit<D, heterogeneous_system<L1> >, unit<D, homogeneous_system<L2> > >
 {
- typedef typename detail::conversion_impl<mpl::size<typename L1::type>::value>::template apply<
- typename mpl::begin<typename L1::type>::type,
+ typedef typename detail::conversion_impl<L1::type::size::value>::template apply<
+ typename L1::type,
         homogeneous_system<L2>
> impl;
     typedef eval_scale_list<typename L1::scale> scale;
@@ -506,15 +477,16 @@
 template<class D, class L1, class L2>
 struct conversion_factor_helper<unit<D, homogeneous_system<L1> >, unit<D, heterogeneous_system<L2> > >
 {
- typedef typename detail::conversion_impl<mpl::size<typename L2::type>::value>::template apply<
- typename mpl::begin<typename L2::type>::type,
+ typedef typename detail::conversion_impl<L2::type::size::value>::template apply<
+ typename L2::type,
         homogeneous_system<L1>
> impl;
     typedef eval_scale_list<typename L2::scale> scale;
     typedef typename multiply_typeof_helper<typename impl::type, typename scale::type>::type type;
     static type value()
     {
- return(one() / (impl::value() * scale::value()));
+ one numerator;
+ return(numerator / (impl::value() * scale::value()));
     }
 };
 
@@ -524,23 +496,23 @@
 struct conversion_factor_helper<unit<D, heterogeneous_system<S1> >, unit<D, heterogeneous_system<S2> > >
 {
     /// INTERNAL ONLY
- typedef typename detail::extract_base_units<mpl::size<typename S1::type>::value>::template apply<
- typename mpl::begin<typename S1::type>::type,
- mpl::list0<>
+ typedef typename detail::extract_base_units<S1::type::size::value>::template apply<
+ typename S1::type,
+ dimensionless_type
>::type from_base_units;
     /// INTERNAL ONLY
- typedef typename detail::extract_base_units<mpl::size<typename S2::type>::value>::template apply<
- typename mpl::begin<typename S2::type>::type,
+ typedef typename detail::extract_base_units<S2::type::size::value>::template apply<
+ typename S2::type,
         from_base_units
>::type all_base_units;
     /// INTERNAL ONLY
     typedef typename detail::make_homogeneous_system<all_base_units>::type system;
- typedef typename detail::conversion_impl<mpl::size<typename S1::type>::value>::template apply<
- typename mpl::begin<typename S1::type>::type,
+ typedef typename detail::conversion_impl<S1::type::size::value>::template apply<
+ typename S1::type,
         system
> conversion1;
- typedef typename detail::conversion_impl<mpl::size<typename S2::type>::value>::template apply<
- typename mpl::begin<typename S2::type>::type,
+ typedef typename detail::conversion_impl<S2::type::size::value>::template apply<
+ typename S2::type,
         system
> conversion2;
     typedef eval_scale_list<typename mpl::divides<typename S1::scale, typename S2::scale>::type> scale;

Modified: branches/proto/v4/boost/units/detail/dimension_impl.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/dimension_impl.hpp (original)
+++ branches/proto/v4/boost/units/detail/dimension_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,7 +16,6 @@
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/list.hpp>
 #include <boost/mpl/next.hpp>
-#include <boost/mpl/push_front.hpp>
 #include <boost/mpl/size.hpp>
 #include <boost/mpl/less.hpp>
 
@@ -37,118 +36,102 @@
 
 namespace detail {
 
-template<bool second_is_less>
-struct sort_dims_conditional_swap;
+template<int N>
+struct insertion_sort_dims_insert;
+
+template<bool is_greater>
+struct insertion_sort_dims_comparison_impl;
 
+// have to recursively add the element to the next sequence.
 template<>
-struct sort_dims_conditional_swap<true>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef T1 first;
- typedef T0 second;
+struct insertion_sort_dims_comparison_impl<true> {
+ template<class Begin, int N, class T>
+ struct apply {
+ typedef list<
+ typename Begin::item,
+ typename insertion_sort_dims_insert<N - 1>::template apply<
+ typename Begin::next,
+ T
+ >::type
+ > type;
     };
 };
 
+// either prepend the current element or join it to
+// the first remaining element of the sequence.
 template<>
-struct sort_dims_conditional_swap<false>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef T0 first;
- typedef T1 second;
+struct insertion_sort_dims_comparison_impl<false> {
+ template<class Begin, int N, class T>
+ struct apply {
+ typedef typename push_front_or_add<Begin, T>::type type;
     };
 };
 
 template<int N>
-struct sort_dims_pass_impl
-{
- template<class Begin, class Current>
- struct apply
- {
- typedef typename mpl::deref<Begin>::type val;
- typedef typename sort_dims_conditional_swap<mpl::less<val, Current>::value>::template apply<Current, val> pair;
- typedef typename sort_dims_pass_impl<N-1>::template apply<typename mpl::next<Begin>::type, typename pair::second> next;
- typedef typename push_front_or_add<typename next::type, typename pair::first>::type type;
- enum { value = next::value || mpl::less<val, Current>::value };
+struct insertion_sort_dims_insert {
+ template<class Begin, class T>
+ struct apply {
+ typedef typename insertion_sort_dims_comparison_impl<mpl::less<typename Begin::item, T>::value>::template apply<
+ Begin,
+ N,
+ T
+ >::type type;
     };
 };
 
 template<>
-struct sort_dims_pass_impl<0>
-{
- template<class Begin, class Current>
- struct apply
- {
- typedef typename mpl::push_front<dimensionless_type, Current>::type type;
- enum { value = false };
+struct insertion_sort_dims_insert<0> {
+ template<class Begin, class T>
+ struct apply {
+ typedef list<T, dimensionless_type> type;
     };
 };
 
-template<bool>
-struct sort_dims_impl;
-
-template<>
-struct sort_dims_impl<true>
-{
- template<class T>
- struct apply
- {
- typedef typename mpl::begin<T>::type begin;
- typedef typename sort_dims_pass_impl<mpl::size<T>::value - 1>::template apply<
- typename mpl::next<begin>::type,
- typename mpl::deref<begin>::type
- > single_pass;
- typedef typename sort_dims_impl<(single_pass::value)>::template apply<typename single_pass::type>::type type;
+template<int N>
+struct insertion_sort_dims_mpl_sequence {
+ template<class Begin>
+ struct apply {
+ typedef typename insertion_sort_dims_mpl_sequence<N - 1>::template apply<typename mpl::next<Begin>::type>::type next;
+ typedef typename insertion_sort_dims_insert<(next::size::value)>::template apply<next, typename mpl::deref<Begin>::type>::type type;
     };
 };
 
 template<>
-struct sort_dims_impl<false>
-{
- template<class T>
- struct apply
- {
- typedef T type;
+struct insertion_sort_dims_mpl_sequence<0> {
+ template<class Begin>
+ struct apply {
+ typedef dimensionless_type type;
     };
 };
 
 template<int N>
-struct sort_dims_one_or_zero
-{
- template<class T>
- struct apply
- {
- typedef typename sort_dims_impl<true>::template apply<T>::type type;
+struct insertion_sort_dims_impl {
+ template<class Begin>
+ struct apply {
+ typedef typename insertion_sort_dims_impl<N - 1>::template apply<typename Begin::next>::type next;
+ typedef typename insertion_sort_dims_insert<(next::size::value)>::template apply<next, typename Begin::item>::type type;
     };
 };
 
 template<>
-struct sort_dims_one_or_zero<0>
-{
- template<class T>
- struct apply
- {
+struct insertion_sort_dims_impl<0> {
+ template<class Begin>
+ struct apply {
         typedef dimensionless_type type;
     };
 };
 
-template<>
-struct sort_dims_one_or_zero<1>
+template<class T>
+struct sort_dims
 {
- template<class T>
- struct apply
- {
- typedef typename mpl::push_front<dimensionless_type, typename mpl::front<T>::type>::type type;
- };
+ typedef typename insertion_sort_dims_mpl_sequence<mpl::size<T>::value>::template apply<typename mpl::begin<T>::type>::type type;
 };
 
-template<class T>
-struct sort_dims
+
+template<class T, class Next>
+struct sort_dims<list<T, Next> >
 {
- typedef typename sort_dims_one_or_zero<mpl::size<T>::value>::template apply<T>::type type;
+ typedef typename insertion_sort_dims_impl<list<T, Next>::size::value>::template apply<list<T, Next> >::type type;
 };
 
 /// sorted sequences can be merged in linear time
@@ -164,13 +147,13 @@
     template<typename Begin1, typename Begin2, int N1, int N2>
     struct apply
     {
- typedef typename mpl::push_front<
+ typedef list<
+ typename Begin1::item,
             typename merge_dimensions_impl<N1 - 1, N2>::template apply<
- typename boost::mpl::next<Begin1>::type,
+ typename Begin1::next,
                 Begin2
- >::type,
- typename boost::mpl::deref<Begin1>::type
- >::type type;
+ >::type
+ > type;
     };
 };
 
@@ -179,13 +162,13 @@
     template<typename Begin1, typename Begin2, int N1, int N2>
     struct apply
     {
- typedef typename mpl::push_front<
+ typedef list<
+ typename Begin2::item,
             typename merge_dimensions_impl<N2 - 1, N1>::template apply<
- typename boost::mpl::next<Begin2>::type,
+ typename Begin2::next,
                 Begin1
- >::type,
- typename boost::mpl::deref<Begin2>::type
- >::type type;
+ >::type
+ > type;
     };
 };
 
@@ -194,11 +177,11 @@
     template<typename Begin1, typename Begin2, int N1, int N2>
     struct apply
     {
- typedef typename mpl::plus<typename boost::mpl::deref<Begin1>::type, typename boost::mpl::deref<Begin2>::type>::type combined;
+ typedef typename mpl::plus<typename Begin1::item, typename Begin2::item>::type combined;
         typedef typename push_front_if<!is_empty_dim<combined>::value>::template apply<
             typename merge_dimensions_impl<N1 - 1, N2 - 1>::template apply<
- typename boost::mpl::next<Begin1>::type,
- typename boost::mpl::next<Begin2>::type
+ typename Begin1::next,
+ typename Begin2::next
>::type,
             combined
>::type type;
@@ -210,8 +193,8 @@
     template<typename Begin1, typename Begin2>
     struct apply
     {
- typedef typename boost::mpl::deref<Begin1>::type dim1;
- typedef typename boost::mpl::deref<Begin2>::type dim2;
+ typedef typename Begin1::item dim1;
+ typedef typename Begin2::item dim2;
 
         typedef typename merge_dimensions_func<(mpl::less<dim1,dim2>::value == true),
                 (mpl::less<dim2,dim1>::value == true)>::template apply<
@@ -226,11 +209,11 @@
 template<typename Sequence1, typename Sequence2>
 struct merge_dimensions
 {
- typedef typename detail::merge_dimensions_impl<boost::mpl::size<Sequence1>::value,
- boost::mpl::size<Sequence2>::value>::template
+ typedef typename detail::merge_dimensions_impl<Sequence1::size::value,
+ Sequence2::size::value>::template
         apply<
- typename boost::mpl::begin<Sequence1>::type,
- typename boost::mpl::begin<Sequence2>::type
+ Sequence1,
+ Sequence2
>::type type;
 };
 
@@ -240,12 +223,12 @@
     template<typename Begin>
     struct apply
     {
- typedef typename mpl::push_front<
+ typedef list<
+ typename Begin::item,
             typename iterator_to_list<N - 1>::template apply<
- typename boost::mpl::next<Begin>::type
- >::type,
- typename boost::mpl::deref<Begin>::type
- >::type type;
+ typename Begin::next
+ >::type
+ > type;
     };
 };
 
@@ -293,12 +276,12 @@
 {
     template<typename Begin>
     struct apply {
- typedef typename boost::mpl::push_front<
+ typedef list<
+ typename mpl::negate<typename Begin::item>::type,
             typename static_inverse_impl<N - 1>::template apply<
- typename boost::mpl::next<Begin>::type
- >::type,
- typename mpl::negate<typename boost::mpl::deref<Begin>::type>::type
- >::type type;
+ typename Begin::next
+ >::type
+ > type;
     };
 };
 
@@ -318,10 +301,10 @@
     template<typename Begin, typename Ex>
     struct apply
     {
- typedef typename mpl::push_front<
- typename detail::static_power_impl<N - 1>::template apply<typename mpl::next<Begin>::type, Ex>::type,
- typename mpl::times<typename mpl::deref<Begin>::type, Ex>::type
- >::type type;
+ typedef list<
+ typename mpl::times<typename Begin::item, Ex>::type,
+ typename detail::static_power_impl<N - 1>::template apply<typename Begin::next, Ex>::type
+ > type;
     };
 };
 
@@ -339,10 +322,10 @@
 struct static_root_impl {
     template<class Begin, class Ex>
     struct apply {
- typedef typename mpl::push_front<
- typename detail::static_root_impl<N - 1>::template apply<typename mpl::next<Begin>::type, Ex>::type,
- typename mpl::divides<typename mpl::deref<Begin>::type, Ex>::type
- >::type type;
+ typedef list<
+ typename mpl::divides<typename Begin::item, Ex>::type,
+ typename detail::static_root_impl<N - 1>::template apply<typename Begin::next, Ex>::type
+ > type;
     };
 };
 

Modified: branches/proto/v4/boost/units/detail/heterogeneous_conversion.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/heterogeneous_conversion.hpp (original)
+++ branches/proto/v4/boost/units/detail/heterogeneous_conversion.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,14 +11,8 @@
 #ifndef BOOST_UNITS_DETAIL_HETEROGENEOUS_CONVERSION_HPP
 #define BOOST_UNITS_DETAIL_HETEROGENEOUS_CONVERSION_HPP
 
-#include <boost/mpl/list/list0.hpp>
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/size.hpp>
-#include <boost/mpl/begin.hpp>
-#include <boost/mpl/push_front.hpp>
-
-#include <boost/mpl/print.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/times.hpp>
 
 #include <boost/units/static_rational.hpp>
 #include <boost/units/homogeneous_system.hpp>
@@ -33,7 +27,7 @@
 struct solve_end {
     template<class Begin, class Y>
     struct apply {
- typedef mpl::list0<> type;
+ typedef dimensionless_type type;
     };
 };
 
@@ -43,14 +37,14 @@
 struct solve_normal {
     template<class Begin, class Y>
     struct apply {
- typedef typename mpl::next<Begin>::type next;
- typedef typename mpl::push_front<
- typename Next::template apply<next, Y>::type,
+ typedef typename Begin::next next;
+ typedef list<
             typename mpl::minus<
                 typename mpl::times<X1, Y>::type,
- typename mpl::times<X2, typename mpl::deref<Begin>::type>::type
- >::type
- >::type type;
+ typename mpl::times<X2, typename Begin::item>::type
+ >::type,
+ typename Next::template apply<next, Y>::type
+ > type;
     };
 };
 
@@ -58,10 +52,10 @@
 struct solve_leading_zeroes {
     template<class Begin>
     struct apply {
- typedef typename mpl::push_front<
- typename Next::template apply<typename mpl::next<Begin>::type>::type,
- typename mpl::deref<Begin>::type
- >::type type;
+ typedef list<
+ typename Begin::item,
+ typename Next::template apply<typename Begin::next>::type
+ > type;
     };
     typedef solve_leading_zeroes type;
 };
@@ -76,8 +70,8 @@
     template<class Begin>
     struct apply {
         typedef typename Next::template apply<
- typename mpl::next<Begin>::type,
- typename mpl::deref<Begin>::type
+ typename Begin::next,
+ typename Begin::item
>::type type;
     };
 };
@@ -86,10 +80,10 @@
 struct solve_internal_zero {
     template<class Begin, class Y>
     struct apply {
- typedef typename mpl::push_front<
- typename Next::template apply<typename mpl::next<Begin>::type, Y>::type,
- typename mpl::deref<Begin>::type
- >::type type;
+ typedef list<
+ typename Begin::item,
+ typename Next::template apply<typename Begin::next, Y>::type
+ > type;
     };
 };
 
@@ -114,9 +108,9 @@
     template<class Begin, class X>
     struct apply {
         typedef typename make_solve_list_internal_zero<
- typename mpl::deref<Begin>::type
+ typename Begin::item
>::template apply<
- typename make_solve_list_normal<N-1>::template apply<typename mpl::next<Begin>::type, X>::type,
+ typename make_solve_list_normal<N-1>::template apply<typename Begin::next, X>::type,
             X
>::type type;
     };
@@ -139,8 +133,8 @@
     struct apply {
         typedef solve_first_non_zero<
             typename make_solve_list_normal<N-1>::template apply<
- typename mpl::next<Begin>::type,
- typename mpl::deref<Begin>::type
+ typename Begin::next,
+ typename Begin::item
>::type
> type;
     };
@@ -152,7 +146,7 @@
     struct apply {
         typedef typename solve_leading_zeroes<
             typename make_solve_list_leading_zeroes<N-1>::template apply<
- typename mpl::next<Begin>::type
+ typename Begin::next
>::type
>::type type;
     };
@@ -162,7 +156,7 @@
 struct make_solve_list_leading_zeroes {
     template<class Begin>
     struct apply {
- typedef typename make_solve_list_first_non_zero<typename mpl::deref<Begin>::type>::template apply<Begin, N>::type type;
+ typedef typename make_solve_list_first_non_zero<typename Begin::item>::template apply<Begin, N>::type type;
     };
 };
 
@@ -178,9 +172,9 @@
 struct try_add_unit_impl {
     template<class Begin, class L>
     struct apply {
- typedef typename try_add_unit_impl<N-1>::template apply<typename mpl::next<Begin>::type, L>::type next;
- typedef typename mpl::deref<Begin>::type::template apply<typename mpl::begin<next>::type>::type type;
- BOOST_STATIC_ASSERT((mpl::size<next>::value - 1 == mpl::size<type>::value));
+ typedef typename try_add_unit_impl<N-1>::template apply<typename Begin::next, L>::type next;
+ typedef typename Begin::item::template apply<next>::type type;
+ BOOST_STATIC_ASSERT((next::size::value - 1 == type::size::value));
     };
 };
 
@@ -203,9 +197,9 @@
     template<class Begin, class Current, class Units, class Dimensions, int N>
     struct apply {
         typedef typename make_homogeneous_system_impl<N-1>::template apply<
- typename mpl::next<Begin>::type,
- typename mpl::push_front<Current, T>::type,
- typename mpl::push_front<Units, typename mpl::deref<Begin>::type>::type,
+ typename Begin::next,
+ list<T, Current>,
+ list<typename Begin::item, Units>,
             Dimensions
>::type type;
     };
@@ -215,7 +209,7 @@
 struct make_homogeneous_system_func<T, true> {
     template<class Begin, class Current, class Units, class Dimensions, int N>
     struct apply {
- typedef typename mpl::push_front<Units, typename mpl::deref<Begin>::type>::type type;
+ typedef list<typename Begin::item, Units> type;
     };
 };
 
@@ -224,7 +218,7 @@
     template<class Begin, class Current, class Units, class Dimensions, int N>
     struct apply {
         typedef typename make_homogeneous_system_impl<N-1>::template apply<
- typename mpl::next<Begin>::type,
+ typename Begin::next,
             Current,
             Units,
             Dimensions
@@ -237,7 +231,7 @@
     template<class Begin, class Current, class Units, class Dimensions, int N>
     struct apply {
         typedef typename make_homogeneous_system_impl<N-1>::template apply<
- typename mpl::next<Begin>::type,
+ typename Begin::next,
             Current,
             Units,
             Dimensions
@@ -249,15 +243,15 @@
 struct make_homogeneous_system_impl {
     template<class Begin, class Current, class Units, class Dimensions>
     struct apply {
- typedef typename expand_dimensions<mpl::size<Dimensions>::value>::template apply<
- typename mpl::begin<Dimensions>::type,
- typename mpl::begin<typename mpl::deref<Begin>::type::dimension_type>::type
+ typedef typename expand_dimensions<Dimensions::size::value>::template apply<
+ Dimensions,
+ typename Begin::item::dimension_type
>::type dimensions;
- typedef typename try_add_unit_impl<mpl::size<Current>::value>::template apply<typename mpl::begin<Current>::type, dimensions>::type new_element;
- typedef typename make_solve_list_leading_zeroes<mpl::size<new_element>::value>::template apply<typename mpl::begin<new_element>::type>::type new_func;
+ typedef typename try_add_unit_impl<Current::size::value>::template apply<Current, dimensions>::type new_element;
+ typedef typename make_solve_list_leading_zeroes<new_element::size::value>::template apply<new_element>::type new_func;
         typedef typename make_homogeneous_system_func<
             new_func,
- ((mpl::size<Current>::value)+1) == (mpl::size<Dimensions>::value)
+ ((Current::size::value)+1) == (Dimensions::size::value)
>::template apply<Begin, Current, Units, Dimensions, N>::type type;
     };
 };
@@ -274,13 +268,13 @@
 struct make_homogeneous_system {
     typedef typename find_base_dimensions<Units>::type base_dimensions;
     typedef homogeneous_system<
- typename bubble_sort<
+ typename insertion_sort<
             typename make_homogeneous_system_impl<
- mpl::size<Units>::value
+ Units::size::value
>::template apply<
- typename mpl::begin<Units>::type,
- mpl::list0<>,
- mpl::list0<>,
+ Units,
+ dimensionless_type,
+ dimensionless_type,
                 base_dimensions
>::type
>::type
@@ -291,10 +285,10 @@
 struct extract_base_units {
     template<class Begin, class T>
     struct apply {
- typedef typename mpl::push_front<
- typename extract_base_units<N-1>::template apply<typename mpl::next<Begin>::type, T>::type,
- typename mpl::deref<Begin>::type::tag_type
- >::type type;
+ typedef list<
+ typename Begin::item::tag_type,
+ typename extract_base_units<N-1>::template apply<typename Begin::next, T>::type
+ > type;
     };
 };
 

Modified: branches/proto/v4/boost/units/detail/linear_algebra.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/linear_algebra.hpp (original)
+++ branches/proto/v4/boost/units/detail/linear_algebra.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,22 +12,8 @@
 #define BOOST_UNITS_DETAIL_LINEAR_ALGEBRA_HPP
 
 #include <boost/units/static_rational.hpp>
-#include <boost/mpl/list.hpp>
-#include <boost/mpl/push_front.hpp>
-#include <boost/mpl/pop_front.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/begin.hpp>
-#include <boost/mpl/size.hpp>
 #include <boost/mpl/next.hpp>
 #include <boost/mpl/arithmetic.hpp>
-#include <boost/mpl/front_inserter.hpp>
-#include <boost/mpl/set.hpp>
-#include <boost/mpl/insert.hpp>
-#include <boost/mpl/greater.hpp>
-#include <boost/mpl/reverse.hpp>
-#include <boost/mpl/advance.hpp>
-#include <boost/mpl/erase.hpp>
-#include <boost/mpl/front.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/assert.hpp>
 
@@ -77,6 +63,24 @@
 
 struct inconsistent {};
 
+// generally useful utilies.
+
+template<int N>
+struct divide_equation {
+ template<class Begin, class Divisor>
+ struct apply {
+ typedef list<typename mpl::divides<typename Begin::item, Divisor>::type, typename divide_equation<N - 1>::template apply<typename Begin::next, Divisor>::type> type;
+ };
+};
+
+template<>
+struct divide_equation<0> {
+ template<class Begin, class Divisor>
+ struct apply {
+ typedef dimensionless_type type;
+ };
+};
+
 // eliminate_from_pair_of_equations takes a pair of
 // equations and eliminates the first variable.
 //
@@ -90,18 +94,18 @@
 struct eliminate_from_pair_of_equations_impl {
     template<class Begin1, class Begin2, class X1, class X2>
     struct apply {
- typedef typename mpl::push_front<
+ typedef list<
+ typename mpl::minus<
+ typename mpl::times<typename Begin1::item, X2>::type,
+ typename mpl::times<typename Begin2::item, X1>::type
+ >::type,
             typename eliminate_from_pair_of_equations_impl<N - 1>::template apply<
- typename mpl::next<Begin1>::type,
- typename mpl::next<Begin2>::type,
+ typename Begin1::next,
+ typename Begin2::next,
                 X1,
                 X2
- >::type,
- typename mpl::minus<
- typename mpl::times<typename mpl::deref<Begin1>::type, X2>::type,
- typename mpl::times<typename mpl::deref<Begin2>::type, X1>::type
>::type
- >::type type;
+ > type;
     };
 };
 
@@ -109,295 +113,436 @@
 struct eliminate_from_pair_of_equations_impl<0> {
     template<class Begin1, class Begin2, class X1, class X2>
     struct apply {
- typedef mpl::list0<> type;
+ typedef dimensionless_type type;
     };
 };
 
 template<class E1, class E2>
 struct eliminate_from_pair_of_equations {
- typedef typename mpl::begin<E1>::type begin1;
- typedef typename mpl::begin<E2>::type begin2;
- typedef typename eliminate_from_pair_of_equations_impl<mpl::size<E1>::value - 1>::template apply<
- typename mpl::next<begin1>::type,
- typename mpl::next<begin2>::type,
- typename mpl::deref<begin1>::type,
- typename mpl::deref<begin2>::type
+ typedef E1 begin1;
+ typedef E2 begin2;
+ typedef typename eliminate_from_pair_of_equations_impl<(E1::size::value - 1)>::template apply<
+ typename begin1::next,
+ typename begin2::next,
+ typename begin1::item,
+ typename begin2::item
>::type type;
 };
 
-// Eliminates the first variable from a list of equations
-// returns inconsistent if all its coefficients are 0. Otherwise
-// recursively calls solve to find the remaining variables
-//
-// list<rational> eliminate(list<equation> system) {
-// list<equation> result;
-// equation eliminate_against = null;
-// for_each(equation e : system) {
-// if(eliminate_against == null) {
-// if(e.front() == 0) {
-// result = push_front(result, pop_front(e));
-// } else {
-// eliminate_against = e;
-// }
-// } else {
-// result = push_back(result, eliminate_from_pair_of_equations(e,eliminate_against));
-// }
-// }
-// if(eliminate_against == null) {
-// return(inconsistent);
-// } else {
-// list<rational> solution = solve(result);
-// return(push_front(solution, substitute(eliminate_against,solution)));
-// }
-// }
+
+
+// Stage 1. Determine which dimensions should
+// have dummy base units. For this purpose
+// row reduce the matrix.
 
 template<int N>
-struct elimination_impl {
- template<class Begin, class Prev, class L>
+struct make_zero_vector {
+ typedef list<static_rational<0>, typename make_zero_vector<N - 1>::type> type;
+};
+template<>
+struct make_zero_vector<0> {
+ typedef dimensionless_type type;
+};
+
+template<int Column, int TotalColumns>
+struct create_row_of_identity {
+ typedef list<static_rational<0>, typename create_row_of_identity<Column - 1, TotalColumns - 1>::type> type;
+};
+template<int TotalColumns>
+struct create_row_of_identity<0, TotalColumns> {
+ typedef list<static_rational<1>, typename make_zero_vector<TotalColumns - 1>::type> type;
+};
+template<int Column>
+struct create_row_of_identity<Column, 0> {
+ // error
+};
+
+template<int RemainingRows>
+struct determine_extra_equations_impl;
+
+template<bool first_is_zero, bool is_last>
+struct determine_extra_equations_skip_zeros_impl;
+
+// not the last row and not zero.
+template<>
+struct determine_extra_equations_skip_zeros_impl<false, false> {
+ template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result>
     struct apply {
- typedef typename mpl::push_front<
- typename elimination_impl<N-1>::template apply<typename mpl::next<Begin>::type, Prev, L>::type,
- typename eliminate_from_pair_of_equations<typename mpl::deref<Begin>::type,Prev>::type
- >::type type;
+ // remove the equation being eliminated against from the set of equations.
+ typedef typename determine_extra_equations_impl<RemainingRows - 1>::template apply<typename RowsBegin::next, typename RowsBegin::item>::type next_equations;
+ // since this column was present, strip it out.
+ typedef Result type;
     };
 };
 
+// the last row but not zero.
 template<>
-struct elimination_impl<0> {
- template<class Begin, class Prev, class L>
+struct determine_extra_equations_skip_zeros_impl<false, true> {
+ template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result>
     struct apply {
- typedef L type;
+ // remove this equation.
+ typedef dimensionless_type next_equations;
+ // since this column was present, strip it out.
+ typedef Result type;
     };
 };
 
+
+// the first columns is zero but it is not the last column.
+// continue with the same loop.
 template<>
-struct elimination_skip_leading_zeros_impl<true, true> {
- template<class Begin, int N, class L>
+struct determine_extra_equations_skip_zeros_impl<true, false> {
+ template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result>
     struct apply {
- typedef inconsistent type;
+ typedef typename RowsBegin::item current_row;
+ typedef typename determine_extra_equations_skip_zeros_impl<
+ current_row::item::Numerator == 0,
+ RemainingRows == 2 // the next one will be the last.
+ >::template apply<
+ typename RowsBegin::next,
+ RemainingRows - 1,
+ CurrentColumn,
+ TotalColumns,
+ Result
+ > next;
+ typedef list<typename RowsBegin::item::next, typename next::next_equations> next_equations;
+ typedef typename next::type type;
     };
 };
 
+// all the elements in this column are zero.
 template<>
-struct elimination_skip_leading_zeros_impl<true, false> {
- template<class Begin, int N, class L>
+struct determine_extra_equations_skip_zeros_impl<true, true> {
+ template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class MatrixWithFirstColumnStripped, class Result>
     struct apply {
- typedef typename mpl::next<Begin>::type next;
- typedef typename elimination_skip_leading_zeros_impl<
- boost::is_same<
- typename mpl::deref<
- typename mpl::begin<typename mpl::deref<next>::type>::type
- >::type,
- static_rational<0>
- >::value,
- N == 2
- >::template apply<
- next,
- N-1,
- typename mpl::push_front<
- L,
- typename mpl::pop_front<typename mpl::deref<Begin>::type>::type
- >::type
- >::type type;
+ typedef list<typename RowsBegin::item::next, dimensionless_type> next_equations;
+ typedef list<typename create_row_of_identity<CurrentColumn, TotalColumns>::type, Result> type;
     };
 };
 
-template<class S>
-struct combine_solutions {
- template<class Iterator>
+template<int RemainingRows>
+struct determine_extra_equations_impl {
+ template<class RowsBegin, class EliminateAgainst>
     struct apply {
- typedef typename substitute<typename mpl::deref<Iterator>::type, S>::type x;
- typedef typename mpl::push_front<S, x>::type type;
+ typedef list<
+ typename eliminate_from_pair_of_equations<typename RowsBegin::item, EliminateAgainst>::type,
+ typename determine_extra_equations_impl<RemainingRows-1>::template apply<typename RowsBegin::next, EliminateAgainst>::type
+ > type;
     };
 };
 
 template<>
-struct combine_solutions<inconsistent> {
- template<class Iterator>
+struct determine_extra_equations_impl<0> {
+ template<class RowsBegin, class EliminateAgainst>
     struct apply {
- typedef inconsistent type;
+ typedef dimensionless_type type;
     };
 };
 
-template<>
-struct elimination_skip_leading_zeros_impl<false, true> {
- template<class Begin, int N, class L>
+template<int RemainingColumns, bool is_done>
+struct determine_extra_equations {
+ template<class RowsBegin, int TotalColumns, class Result>
     struct apply {
- typedef typename elimination_impl<N - 1>::template apply<
- typename mpl::next<Begin>::type,
- typename mpl::deref<Begin>::type,
- L
- >::type list_type;
- typedef typename solve<list_type>::type next;
- typedef typename combine_solutions<next>::template apply<Begin>::type type;
+ typedef typename RowsBegin::item top_row;
+ typedef typename determine_extra_equations_skip_zeros_impl<
+ top_row::item::Numerator == 0,
+ RowsBegin::item::size::value == 1
+ >::template apply<
+ RowsBegin,
+ RowsBegin::size::value,
+ TotalColumns - RemainingColumns,
+ TotalColumns,
+ Result
+ > column_info;
+ typedef typename determine_extra_equations<
+ RemainingColumns - 1,
+ column_info::next_equations::size::value == 0
+ >::template apply<
+ typename column_info::next_equations,
+ TotalColumns,
+ typename column_info::type
+ >::type type;
+ };
+};
+
+template<int RemainingColumns>
+struct determine_extra_equations<RemainingColumns, true> {
+ template<class RowsBegin, int TotalColumns, class Result>
+ struct apply {
+ typedef typename determine_extra_equations<RemainingColumns - 1, true>::template apply<
+ RowsBegin,
+ TotalColumns,
+ list<typename create_row_of_identity<TotalColumns - RemainingColumns, TotalColumns>::type, Result>
+ >::type type;
     };
 };
 
 template<>
-struct elimination_skip_leading_zeros_impl<false, false> {
- template<class Begin, int N, class L>
+struct determine_extra_equations<0, true> {
+ template<class RowsBegin, int TotalColumns, class Result>
     struct apply {
- typedef typename elimination_impl<N - 1>::template apply<
- typename mpl::next<Begin>::type,
- typename mpl::deref<Begin>::type,
- L
- >::type list_type;
- typedef typename solve<list_type>::type next;
- typedef typename combine_solutions<next>::template apply<Begin>::type type;
+ typedef Result type;
     };
 };
 
-// finds the vaue of the first variable given the
-// values of all the other variables.
-//
-// rational substitute(equation e, list<rational> solutions) {
-// rational value = e.back();
-// for_each(rational x : solutions, rational a : pop_front(pop_back(e))) {
-// value -= a * x;
-// }
-// return(e.front() / value);
-// }
+// Stage 2
+// invert the matrix using Gauss-Jordan elimination
+
+
+template<bool is_zero, bool is_last>
+struct invert_strip_leading_zeroes;
 
 template<int N>
-struct substitute_impl {
- template<class Begin1, class Begin2>
+struct invert_handle_after_pivot_row;
+
+// When processing column N, none of the first N rows
+// can be the pivot column.
+template<int N>
+struct invert_handle_inital_rows {
+ template<class RowsBegin, class IdentityBegin>
     struct apply {
- typedef typename mpl::minus<
- typename substitute_impl<N-1>::template apply<
- typename mpl::next<Begin1>::type,
- typename mpl::next<Begin2>::type
+ typedef typename invert_handle_inital_rows<N - 1>::template apply<
+ typename RowsBegin::next,
+ typename IdentityBegin::next
+ > next;
+ typedef typename RowsBegin::item current_row;
+ typedef typename IdentityBegin::item current_identity_row;
+ typedef typename next::pivot_row pivot_row;
+ typedef typename next::identity_pivot_row identity_pivot_row;
+ typedef list<
+ typename eliminate_from_pair_of_equations_impl<(current_row::size::value) - 1>::template apply<
+ typename current_row::next,
+ pivot_row,
+ typename current_row::item,
+ static_rational<1>
>::type,
- typename mpl::times<
- typename mpl::deref<Begin1>::type,
- typename mpl::deref<Begin2>::type
- >::type
- >::type type;
+ typename next::new_matrix
+ > new_matrix;
+ typedef list<
+ typename eliminate_from_pair_of_equations_impl<(current_identity_row::size::value)>::template apply<
+ current_identity_row,
+ identity_pivot_row,
+ typename current_row::item,
+ static_rational<1>
+ >::type,
+ typename next::identity_result
+ > identity_result;
     };
 };
 
+// This handles the switch to searching for a pivot column.
+// The pivot row will be propagated up in the typedefs
+// pivot_row and identity_pivot_row. It is inserted here.
 template<>
-struct substitute_impl<0> {
- template<class Begin1, class Begin2>
+struct invert_handle_inital_rows<0> {
+ template<class RowsBegin, class IdentityBegin>
     struct apply {
- typedef typename mpl::deref<Begin1>::type type;
+ typedef typename RowsBegin::item current_row;
+ typedef typename invert_strip_leading_zeroes<
+ (current_row::item::Numerator == 0),
+ (RowsBegin::size::value == 1)
+ >::template apply<
+ RowsBegin,
+ IdentityBegin
+ > next;
+ // results
+ typedef list<typename next::pivot_row, typename next::new_matrix> new_matrix;
+ typedef list<typename next::identity_pivot_row, typename next::identity_result> identity_result;
+ typedef typename next::pivot_row pivot_row;
+ typedef typename next::identity_pivot_row identity_pivot_row;
     };
 };
 
-template<class Equation, class Vars>
-struct substitute {
- typedef typename mpl::begin<Equation>::type begin;
- typedef typename mpl::divides<
- typename substitute_impl<mpl::size<Vars>::value>::template apply<
- typename mpl::next<begin>::type,
- typename mpl::begin<Vars>::type
- >::type,
- typename mpl::deref<begin>::type
- >::type type;
+// The first internal element which is not zero.
+template<>
+struct invert_strip_leading_zeroes<false, false> {
+ template<class RowsBegin, class IdentityBegin>
+ struct apply {
+ typedef typename RowsBegin::item current_row;
+ typedef typename current_row::item current_value;
+ typedef typename divide_equation<(current_row::size::value - 1)>::template apply<typename current_row::next, current_value>::type new_equation;
+ typedef typename divide_equation<(IdentityBegin::item::size::value)>::template apply<typename IdentityBegin::item, current_value>::type transformed_identity_equation;
+ typedef typename invert_handle_after_pivot_row<(RowsBegin::size::value - 1)>::template apply<
+ typename RowsBegin::next,
+ typename IdentityBegin::next,
+ new_equation,
+ transformed_identity_equation
+ > next;
+
+ // results
+ // Note that we don't add the pivot row to the
+ // results here, because it needs to propagated up
+ // to the diagonal.
+ typedef typename next::new_matrix new_matrix;
+ typedef typename next::identity_result identity_result;
+ typedef new_equation pivot_row;
+ typedef transformed_identity_equation identity_pivot_row;
+ };
 };
 
+// The one and only non-zero element--at the end
 template<>
-struct solve_impl<true> {
- template<class T>
+struct invert_strip_leading_zeroes<false, true> {
+ template<class RowsBegin, class IdentityBegin>
     struct apply {
- typedef mpl::list0<> type;
+ typedef typename RowsBegin::item current_row;
+ typedef typename current_row::item current_value;
+ typedef typename divide_equation<(current_row::size::value - 1)>::template apply<typename current_row::next, current_value>::type new_equation;
+ typedef typename divide_equation<(IdentityBegin::item::size::value)>::template apply<typename IdentityBegin::item, current_value>::type transformed_identity_equation;
+
+ // results
+ // Note that we don't add the pivot row to the
+ // results here, because it needs to propagated up
+ // to the diagonal.
+ typedef dimensionless_type identity_result;
+ typedef dimensionless_type new_matrix;
+ typedef new_equation pivot_row;
+ typedef transformed_identity_equation identity_pivot_row;
     };
 };
 
-// check_extra_equations verifies that the
-// after all the variables have been eliminated
-// the remaining equations are all 0=0.
-
-template<class T>
-struct check_extra_equations_func {
- template<class Begin, int N>
+// One of the initial zeroes
+template<>
+struct invert_strip_leading_zeroes<true, false> {
+ template<class RowsBegin, class IdentityBegin>
     struct apply {
- typedef inconsistent type;
+ typedef typename RowsBegin::item current_row;
+ typedef typename RowsBegin::next::item next_row;
+ typedef typename invert_strip_leading_zeroes<
+ next_row::item::Numerator == 0,
+ RowsBegin::size::value == 2
+ >::template apply<
+ typename RowsBegin::next,
+ typename IdentityBegin::next
+ > next;
+ typedef typename IdentityBegin::item current_identity_row;
+ // these are propagated up.
+ typedef typename next::pivot_row pivot_row;
+ typedef typename next::identity_pivot_row identity_pivot_row;
+ typedef list<
+ typename eliminate_from_pair_of_equations_impl<(current_row::size::value - 1)>::template apply<
+ typename current_row::next,
+ pivot_row,
+ typename current_row::item,
+ static_rational<1>
+ >::type,
+ typename next::new_matrix
+ > new_matrix;
+ typedef list<
+ typename eliminate_from_pair_of_equations_impl<(current_identity_row::size::value)>::template apply<
+ current_identity_row,
+ identity_pivot_row,
+ typename current_row::item,
+ static_rational<1>
+ >::type,
+ typename next::identity_result
+ > identity_result;
     };
 };
 
+// the last element, and is zero.
+// Should never happen.
 template<>
-struct check_extra_equations_func<static_rational<0> > {
- template<class Begin, int N>
- struct apply {
- typedef typename check_extra_equations_impl<N - 1>::template apply<typename mpl::next<Begin>::type>::type type;
- };
+struct invert_strip_leading_zeroes<true, true> {
 };
 
 template<int N>
-struct check_extra_equations_impl {
- template<class Begin>
+struct invert_handle_after_pivot_row {
+ template<class RowsBegin, class IdentityBegin, class MatrixPivot, class IdentityPivot>
     struct apply {
- typedef typename check_extra_equations_func<
- typename mpl::deref<typename mpl::begin<typename mpl::deref<Begin>::type>::type>::type
- >::template apply<Begin, N>::type type;
+ typedef typename invert_handle_after_pivot_row<N - 1>::template apply<
+ typename RowsBegin::next,
+ typename IdentityBegin::next,
+ MatrixPivot,
+ IdentityPivot
+ > next;
+ typedef typename RowsBegin::item current_row;
+ typedef typename IdentityBegin::item current_identity_row;
+ typedef MatrixPivot pivot_row;
+ typedef IdentityPivot identity_pivot_row;
+
+ // results
+ typedef list<
+ typename eliminate_from_pair_of_equations_impl<(current_row::size::value - 1)>::template apply<
+ typename current_row::next,
+ pivot_row,
+ typename current_row::item,
+ static_rational<1>
+ >::type,
+ typename next::new_matrix
+ > new_matrix;
+ typedef list<
+ typename eliminate_from_pair_of_equations_impl<(current_identity_row::size::value)>::template apply<
+ current_identity_row,
+ identity_pivot_row,
+ typename current_row::item,
+ static_rational<1>
+ >::type,
+ typename next::identity_result
+ > identity_result;
     };
 };
 
 template<>
-struct check_extra_equations_impl<0> {
- template<class Begin>
+struct invert_handle_after_pivot_row<0> {
+ template<class RowsBegin, class IdentityBegin, class MatrixPivot, class IdentityPivot>
     struct apply {
- typedef mpl::list0<> type;
+ typedef dimensionless_type new_matrix;
+ typedef dimensionless_type identity_result;
     };
 };
 
-template<bool is_end>
-struct check_extra_equations;
-
-template<>
-struct check_extra_equations<true> {
- template<class T>
+template<int N>
+struct invert_impl {
+ template<class RowsBegin, class IdentityBegin>
     struct apply {
- typedef typename check_extra_equations_impl<mpl::size<T>::value>::template apply<
- typename mpl::begin<T>::type
+ typedef typename invert_handle_inital_rows<RowsBegin::size::value - N>::template apply<RowsBegin, IdentityBegin> process_column;
+ typedef typename invert_impl<N - 1>::template apply<
+ typename process_column::new_matrix,
+ typename process_column::identity_result
>::type type;
     };
 };
 
 template<>
-struct check_extra_equations<false> {
- template<class T>
+struct invert_impl<0> {
+ template<class RowsBegin, class IdentityBegin>
     struct apply {
- typedef typename mpl::begin<T>::type begin;
- typedef typename elimination_skip_leading_zeros_impl<
- boost::is_same<
- typename mpl::deref<
- typename mpl::begin<typename mpl::deref<begin>::type>::type
- >::type,
- static_rational<0>
- >::value,
- mpl::size<T>::value == 1
- >::template apply<
- begin,
- mpl::size<T>::value,
- mpl::list0<>
- >::type type;
+ typedef IdentityBegin type;
     };
 };
 
-template<>
-struct solve_impl<false> {
- template<class T>
+template<int N>
+struct make_identity {
+ template<int Size>
     struct apply {
- typedef typename mpl::begin<T>::type begin;
- typedef typename check_extra_equations<
- mpl::size<typename mpl::deref<begin>::type>::value == 1
- >::template apply<
- T
- >::type type;
+ typedef list<typename create_row_of_identity<Size - N, Size>::type, typename make_identity<N - 1>::template apply<Size>::type> type;
     };
 };
 
-// solve takes a list of equations and returns the solutions
-// as a vector. Each equation is interpreted as a sequence
-// of coefficients with the last item being the value e.g.
-// list<1, 2, 3> is 1 * x0 + 2 * x1 = 3
+template<>
+struct make_identity<0> {
+ template<int Size>
+ struct apply {
+ typedef dimensionless_type type;
+ };
+};
 
-template<class T>
-struct solve {
- typedef typename solve_impl<mpl::size<T>::value == 0>::template apply<T>::type type;
+template<class Matrix>
+struct make_square_and_invert {
+ typedef typename Matrix::item top_row;
+ typedef typename determine_extra_equations<(top_row::size::value), false>::template apply<
+ Matrix, // RowsBegin
+ top_row::size::value, // TotalColumns
+ Matrix // Result
+ >::type invertible;
+ typedef typename invert_impl<invertible::size::value>::template apply<
+ invertible,
+ typename make_identity<invertible::size::value>::template apply<invertible::size::value>::type
+ >::type type;
 };
 
+
 // find_base_dimensions takes a list of
 // base_units and returns a sorted list
 // of all the base_dimensions they use.
@@ -412,16 +557,65 @@
 // return(sort(dimensions, _1 > _2, front_inserter(list<base_dimension>())));
 // }
 
+typedef char set_no;
+struct set_yes { set_no dummy[2]; };
+
+template<class T>
+struct wrap {};
+
+struct set_end {
+ static set_no lookup(...);
+ typedef mpl::long_<0> size;
+};
+
+template<class T, class Next>
+struct set : Next {
+ using Next::lookup;
+ static set_yes lookup(wrap<T>*);
+ typedef T item;
+ typedef Next next;
+ typedef typename mpl::next<typename Next::size>::type size;
+};
+
+template<bool has_key>
+struct set_insert;
+
+template<>
+struct set_insert<true> {
+ template<class Set, class T>
+ struct apply {
+ typedef Set type;
+ };
+};
+
+template<>
+struct set_insert<false> {
+ template<class Set, class T>
+ struct apply {
+ typedef set<T, Set> type;
+ };
+};
+
+template<class Set, class T>
+struct has_key {
+ static const long size = sizeof(Set::lookup((wrap<T>*)0));
+ static const bool value = (size == sizeof(set_yes));
+};
+
 template<int N>
 struct find_base_dimensions_impl_impl {
     template<class Begin, class S>
     struct apply {
- typedef typename mpl::insert<
- typename find_base_dimensions_impl_impl<N-1>::template apply<
- typename mpl::next<Begin>::type,
- S
- >::type,
- typename mpl::deref<Begin>::type::tag_type
+ typedef typename find_base_dimensions_impl_impl<N-1>::template apply<
+ typename Begin::next,
+ S
+ >::type next;
+
+ typedef typename set_insert<
+ (has_key<next, typename Begin::item::tag_type>::value)
+ >::template apply<
+ next,
+ typename Begin::item::tag_type
>::type type;
     };
 };
@@ -438,9 +632,9 @@
 struct find_base_dimensions_impl {
     template<class Begin>
     struct apply {
- typedef typename find_base_dimensions_impl_impl<mpl::size<typename mpl::deref<Begin>::type::dimension_type>::value>::template apply<
- typename mpl::begin<typename mpl::deref<Begin>::type::dimension_type>::type,
- typename find_base_dimensions_impl<N-1>::template apply<typename mpl::next<Begin>::type>::type
+ typedef typename find_base_dimensions_impl_impl<(Begin::item::dimension_type::size::value)>::template apply<
+ typename Begin::item::dimension_type,
+ typename find_base_dimensions_impl<N-1>::template apply<typename Begin::next>::type
>::type type;
     };
 };
@@ -449,16 +643,16 @@
 struct find_base_dimensions_impl<0> {
     template<class Begin>
     struct apply {
- typedef mpl::set0<> type;
+ typedef set_end type;
     };
 };
 
 template<class T>
 struct find_base_dimensions {
- typedef typename bubble_sort<
+ typedef typename insertion_sort<
         typename find_base_dimensions_impl<
- mpl::size<T>::value
- >::template apply<typename mpl::begin<T>::type>::type
+ (T::size::value)
+ >::template apply<T>::type
>::type type;
 };
 
@@ -480,8 +674,8 @@
 struct calculate_base_dimension_coefficients_func<true> {
     template<class T>
     struct apply {
- typedef typename mpl::deref<T>::type::value_type type;
- typedef typename mpl::next<T>::type next;
+ typedef typename T::item::value_type type;
+ typedef typename T::next next;
     };
 };
 
@@ -504,7 +698,7 @@
     struct apply :
         boost::is_same<
             Dim,
- typename mpl::deref<Iterator>::type::tag_type
+ typename Iterator::item::tag_type
> {};
 };
 
@@ -519,19 +713,19 @@
     template<class BaseUnitDimensions,class Dim,class T>
     struct apply {
         typedef typename calculate_base_dimension_coefficients_func<
- begins_with_dimension<typename mpl::deref<BaseUnitDimensions>::type>::template apply<
+ begins_with_dimension<typename BaseUnitDimensions::item>::template apply<
                 Dim
>::value
>::template apply<
- typename mpl::deref<BaseUnitDimensions>::type
+ typename BaseUnitDimensions::item
> result;
         typedef typename calculate_base_dimension_coefficients_impl<N-1>::template apply<
- typename mpl::next<BaseUnitDimensions>::type,
+ typename BaseUnitDimensions::next,
             Dim,
- typename mpl::push_front<T, typename result::type>::type
+ list<typename result::type, T>
> next_;
         typedef typename next_::type type;
- typedef typename mpl::push_front<typename next_::next, typename result::next>::type next;
+ typedef list<typename result::next, typename next_::next> next;
     };
 };
 
@@ -540,87 +734,7 @@
     template<class Begin, class BaseUnitDimensions, class T>
     struct apply {
         typedef T type;
- typedef mpl::list0<> next;
- };
-};
-
-// solve_for_base_dimension_impl computes the
-// coefficients of each unit for all the base_dimensions.
-// the inner lists are in reverse order.
-
-template<int N>
-struct get_equations_for_base_dimension_impl {
- template<class Begin, class Units>
- struct apply {
- typedef typename calculate_base_dimension_coefficients_impl<mpl::size<Units>::value>::template apply<
- typename mpl::begin<Units>::type,
- typename mpl::deref<Begin>::type,
- mpl::list0<>
- > x;
- typedef typename mpl::push_front<
- typename get_equations_for_base_dimension_impl<N-1>::template apply<
- typename mpl::next<Begin>::type,
- typename x::next
- >::type,
- typename x::type
- >::type type;
- };
-};
-
-template<>
-struct get_equations_for_base_dimension_impl<0> {
- template<class Begin, class Units>
- struct apply {
- typedef mpl::list0<> type;
- };
-};
-
-// get_dimension_iterators_impl takes a list of base_units
-// and returns a list of the begin iterators of their
-// dimensions
-
-template<int N>
-struct get_dimension_iterators_impl {
- template<class Begin>
- struct apply {
- typedef typename mpl::push_front<
- typename get_dimension_iterators_impl<N-1>::template apply<typename mpl::next<Begin>::type>::type,
- typename mpl::begin<typename mpl::deref<Begin>::type::dimension_type>::type
- >::type type;
- };
-};
-
-template<>
-struct get_dimension_iterators_impl<0> {
- template<class Begin>
- struct apply {
- typedef mpl::list0<> type;
- };
-};
-
-// prepare_equations takes the result of
-// solve_for_base_dimension_impl and an index.
-// it sets the equation at the index equal to
-// one and all the others to zero. In the process
-// it reverses the inner lists thus yielding
-// a matrix that can be passed to solve.
-
-template<int N>
-struct prepare_equations_impl {
- template<class Begin, int M>
- struct apply {
- typedef typename mpl::push_front<
- typename prepare_equations_impl<N-1>::template apply<typename mpl::next<Begin>::type, M - 1>::type,
- typename mpl::reverse<typename mpl::push_front<typename mpl::deref<Begin>::type, static_rational<(M == 0 ? 1 : 0)> >::type>::type
- >::type type;
- };
-};
-
-template<>
-struct prepare_equations_impl<0> {
- template<class Begin, int M>
- struct apply {
- typedef mpl::list0<> type;
+ typedef dimensionless_type next;
     };
 };
 
@@ -642,10 +756,10 @@
     BOOST_MPL_ASSERT_MSG((N > 0), base_units_are_probably_not_linearly_independent, (void));
     template<class T>
     struct apply {
- typedef typename mpl::push_front<
- typename add_zeroes_impl<N-1>::template apply<T>::type,
- static_rational<0>
- >::type type;
+ typedef list<
+ static_rational<0>,
+ typename add_zeroes_impl<N-1>::template apply<T>::type
+ > type;
     };
 };
 
@@ -657,205 +771,6 @@
     };
 };
 
-// add_solutions takes a list of equations
-// for the extra dummy units and a list
-// of the values of all the regular units.
-// It find the coefficients of all the dummy
-// units and pushes them onto the begining
-// of the list in reverse order (since the
-// dummy equations are reversed).
-
-template<int N>
-struct add_solutions_impl {
- template<class Begin, class T, class Solution>
- struct apply {
- typedef typename add_solutions_impl<N-1>::template apply<
- typename mpl::next<Begin>::type,
- typename mpl::push_front<
- T,
- typename substitute_impl<mpl::size<Solution>::value>::template apply<
- typename mpl::begin<typename mpl::deref<Begin>::type>::type,
- typename mpl::begin<Solution>::type
- >::type
- >::type,
- Solution
- >::type type;
- };
-};
-
-template<>
-struct add_solutions_impl<0> {
- template<class Begin, class T, class Solution>
- struct apply {
- typedef T type;
- };
-};
-
-// normalize_units finds the units corresponding
-// to each base dimension. The form of the result is
-// a two dimensional list. list<list<rational> >.
-// each of the inner lists represents a single
-// base dimension. There may be extra units added
-// to the front of the inner list if there are
-// more base dimensions than base units. The
-// number such units is returned as a long called
-// extra. For example list<pound, foot> will yield
-// list<list<0, 0, 1>,list<1, 0, 0>,list<1/2,-1/2,1/2> > meaning
-//
-// length = 0 * mass + 0 * force + 1 * length
-// mass = 1 * mass + 0 * force + 0 * length
-// time = 1/2 * mass - 1/2 * force + 1/2 * length
-//
-// Why is there a dummy mass unit? It isn't
-// possible to represent three base dimensions
-// with only two base units. So we need some
-// kind of dummy. Why mass? Well, a base
-// unit of length doesn't help us since we
-// already have one. Mass is before time
-// so we use mass.
-
-// S is the solution for this particular base dimension.
-// if the base dimension cannot be represented then
-// solve will return inconsistent hence the two specializations.
-
-template<class S>
-struct normalize_units_func {
- template<class ReverseEquations, int M, class DimensionIterator, int N, int Extra, int I,class ExtraEquations>
- struct apply {
- // first add zeroes for all the extra units that
- // are not needed.
- typedef typename add_zeroes_impl<Extra-mpl::size<ExtraEquations>::value>::template apply<S>::type result1;
- // then find the values for the extra units that /are/ needed.
- typedef typename add_solutions_impl<mpl::size<ExtraEquations>::value>::template apply<
- typename mpl::begin<ExtraEquations>::type,
- result1,
- S
- >::type result;
- // recurse back to the primary loop putting
- // push_front outside since we wish to maintain
- // the original ordering of dimensions
- typedef typename mpl::push_front<
- typename normalize_units_impl<N-1>::template apply<
- // The coefficient are still the same
- // and we don't need to remove any equations
- ReverseEquations,
- // increment the number of equations that
- // need to be skipped when we add another
- // dummy unit.
- M+1,
- typename mpl::next<DimensionIterator>::type,
- Extra,
- // increment the number of dimensions we've seen
- I+1,
- // pass the equations for the dummy
- // units on without modification.
- ExtraEquations
- >::type,
- result
- >::type type;
- };
-};
-
-// handles the case when this base dimension
-// cannot be represented with the base units
-// and the dummies allready added.
-template<>
-struct normalize_units_func<inconsistent> {
- template<class ReverseEquations, int M, class DimensionIterator, int N, int Extra, int I, class ExtraEquations>
- struct apply {
- // Find the position that needs to be erased. (Since this
- // equation can always be adjusted by adjusting the
- // dummy unit we are adding now, independently of
- // other units, we don't need it anymore.)
- typedef typename mpl::advance_c<typename mpl::begin<ReverseEquations>::type, M>::type pos;
- // Continue with the main loop.
- typedef typename normalize_units_impl<N-1>::template apply<
- // Remove current_equation
- typename mpl::erase<
- ReverseEquations,
- pos
- >::type,
- M,
- typename mpl::next<DimensionIterator>::type,
- Extra,
- // Increment the number of dimensions we've seen
- I+1,
- // Add "current_equation == 0" to the list of equations
- // for the dummy units. (For all base dimensions
- // except this the current dimension must sum to
- // zero.)
- typename mpl::push_front<
- ExtraEquations,
- // Remember it's backwards
- typename mpl::reverse<
- typename mpl::push_front<typename mpl::deref<pos>::type, static_rational<0> >::type
- >::type
- >::type
- > next;
- // this dimension is (0, ..., 0, 1, 0, ..., 0)
- typedef typename mpl::push_front<
- typename add_zeroes_impl<N-1>::template apply<mpl::list0<> >::type,
- static_rational<1>
- >::type result1;
- typedef typename add_zeroes_impl<I>::template apply<result1>::type result;
- // Push the result onto the list.
- typedef typename mpl::push_front<typename next::type, result>::type type;
- };
-};
-
-template<int N>
-struct normalize_units_impl {
- template<class ReverseEquations, int M, class DimensionIterator, int Extra, int I, class ExtraEquations>
- struct apply {
- typedef typename solve<
- typename prepare_equations_impl<
- mpl::size<ReverseEquations>::value
- >::template apply<
- typename mpl::begin<ReverseEquations>::type,
- M
- >::type
- >::type solution;
- typedef typename normalize_units_func<solution>::template apply<
- ReverseEquations,
- M,
- DimensionIterator,
- N,
- Extra,
- I,
- ExtraEquations
- >::type type;
- };
-};
-
-template<>
-struct normalize_units_impl<0> {
- template<class ReverseEquations, int M, class DimensionIterator, int Extra, int I, class ExtraEquations>
- struct apply {
- typedef mpl::list0<> type;
- };
-};
-
-template<class T>
-struct normalize_units {
- typedef typename find_base_dimensions<T>::type dimensions;
- typedef typename get_dimension_iterators_impl<mpl::size<T>::value>::template apply<typename mpl::begin<T>::type>::type iterators;
- typedef typename get_equations_for_base_dimension_impl<
- mpl::size<dimensions>::value
- >::template apply<
- typename mpl::begin<dimensions>::type,
- iterators
- >::type reverse_equations;
- static const long extra = mpl::size<reverse_equations>::value - mpl::size<T>::value;
- typedef typename normalize_units_impl<mpl::size<reverse_equations>::value>::template apply<
- reverse_equations,
- 0,
- typename mpl::begin<dimensions>::type,
- extra,
- 0,
- mpl::list0<>
- >::type type;
-};
-
 // expand_dimensions finds the exponents of
 // a set of dimensions in a dimension_list.
 // the second parameter is assumed to be
@@ -869,12 +784,12 @@
     template<class Begin, class DimensionIterator>
     struct apply {
         typedef typename calculate_base_dimension_coefficients_func<
- begins_with_dimension<DimensionIterator>::template apply<typename mpl::deref<Begin>::type>::value
+ begins_with_dimension<DimensionIterator>::template apply<typename Begin::item>::value
>::template apply<DimensionIterator> result;
- typedef typename mpl::push_front<
- typename expand_dimensions<N-1>::template apply<typename mpl::next<Begin>::type, typename result::next>::type,
- typename result::type
- >::type type;
+ typedef list<
+ typename result::type,
+ typename expand_dimensions<N-1>::template apply<typename Begin::next, typename result::next>::type
+ > type;
     };
 };
 
@@ -882,10 +797,38 @@
 struct expand_dimensions<0> {
     template<class Begin, class DimensionIterator>
     struct apply {
- typedef mpl::list0<> type;
+ typedef dimensionless_type type;
+ };
+};
+
+template<int N>
+struct create_unit_matrix {
+ template<class Begin, class Dimensions>
+ struct apply {
+ typedef typename create_unit_matrix<N - 1>::template apply<typename Begin::next, Dimensions>::type next;
+ typedef list<typename expand_dimensions<Dimensions::size::value>::template apply<Dimensions, typename Begin::item::dimension_type>::type, next> type;
     };
 };
 
+template<>
+struct create_unit_matrix<0> {
+ template<class Begin, class Dimensions>
+ struct apply {
+ typedef dimensionless_type type;
+ };
+};
+
+template<class T>
+struct normalize_units {
+ typedef typename find_base_dimensions<T>::type dimensions;
+ typedef typename create_unit_matrix<(T::size::value)>::template apply<
+ T,
+ dimensions
+ >::type matrix;
+ typedef typename make_square_and_invert<matrix>::type type;
+ static const long extra = (type::size::value) - (T::size::value);
+};
+
 // multiply_add_units computes M x V
 // where M is a matrix and V is a horizontal
 // vector
@@ -896,20 +839,20 @@
 struct multiply_add_units_impl {
     template<class Begin1, class Begin2 ,class X>
     struct apply {
- typedef typename mpl::push_front<
- typename multiply_add_units_impl<N-1>::template apply<
- typename mpl::next<Begin1>::type,
- typename mpl::next<Begin2>::type,
- X
- >::type,
+ typedef list<
             typename mpl::plus<
                 typename mpl::times<
- typename mpl::deref<Begin2>::type,
+ typename Begin2::item,
                     X
>::type,
- typename mpl::deref<Begin1>::type
+ typename Begin1::item
+ >::type,
+ typename multiply_add_units_impl<N-1>::template apply<
+ typename Begin1::next,
+ typename Begin2::next,
+ X
>::type
- >::type type;
+ > type;
     };
 };
 
@@ -917,7 +860,7 @@
 struct multiply_add_units_impl<0> {
     template<class Begin1, class Begin2 ,class X>
     struct apply {
- typedef mpl::list0<> type;
+ typedef dimensionless_type type;
     };
 };
 
@@ -926,16 +869,14 @@
     template<class Begin1, class Begin2>
     struct apply {
         typedef typename multiply_add_units_impl<
- mpl::size<typename mpl::deref<Begin2>::type>::value
+ (Begin2::item::size::value)
>::template apply<
- typename mpl::begin<
- typename multiply_add_units<N-1>::template apply<
- typename mpl::next<Begin1>::type,
- typename mpl::next<Begin2>::type
- >::type
+ typename multiply_add_units<N-1>::template apply<
+ typename Begin1::next,
+ typename Begin2::next
>::type,
- typename mpl::begin<typename mpl::deref<Begin2>::type>::type,
- typename mpl::deref<Begin1>::type
+ typename Begin2::item,
+ typename Begin1::item
>::type type;
     };
 };
@@ -945,16 +886,14 @@
     template<class Begin1, class Begin2>
     struct apply {
         typedef typename add_zeroes_impl<
- mpl::size<typename mpl::deref<Begin2>::type>::value
- >::template apply<mpl::list0<> >::type type1;
+ (Begin2::item::size::value)
+ >::template apply<dimensionless_type>::type type1;
         typedef typename multiply_add_units_impl<
- mpl::size<typename mpl::deref<Begin2>::type>::value
+ (Begin2::item::size::value)
>::template apply<
- typename mpl::begin<
- type1
- >::type,
- typename mpl::begin<typename mpl::deref<Begin2>::type>::type,
- typename mpl::deref<Begin1>::type
+ type1,
+ typename Begin2::item,
+ typename Begin1::item
>::type type;
     };
 };
@@ -988,7 +927,7 @@
 struct strip_zeroes_func<static_rational<0> > {
     template<class L, int N>
     struct apply {
- typedef typename strip_zeroes_impl<N-1>::template apply<typename mpl::pop_front<L>::type>::type type;
+ typedef typename strip_zeroes_impl<N-1>::template apply<typename L::next>::type type;
     };
 };
 
@@ -996,7 +935,7 @@
 struct strip_zeroes_impl {
     template<class T>
     struct apply {
- typedef typename strip_zeroes_func<typename mpl::front<T>::type>::template apply<T, N>::type type;
+ typedef typename strip_zeroes_func<typename T::item>::template apply<T, N>::type type;
     };
 };
 
@@ -1043,12 +982,12 @@
 struct is_simple_system_impl {
     template<class Begin, class Prev>
     struct apply {
- typedef is_base_dimension_unit<typename mpl::deref<Begin>::type::dimension_type> test;
+ typedef is_base_dimension_unit<typename Begin::item::dimension_type> test;
         typedef mpl::and_<
             typename test::type,
             mpl::less<Prev, typename test::base_dimension_type>,
             typename is_simple_system_impl<N-1>::template apply<
- typename mpl::next<Begin>::type,
+ typename Begin::next,
                 typename test::base_dimension_type
>
> type;
@@ -1065,14 +1004,14 @@
 
 template<class T>
 struct is_simple_system {
- typedef typename mpl::begin<T>::type Begin;
- typedef is_base_dimension_unit<typename mpl::deref<Begin>::type::dimension_type> test;
+ typedef T Begin;
+ typedef is_base_dimension_unit<typename Begin::item::dimension_type> test;
     typedef typename mpl::and_<
         typename test::type,
         typename is_simple_system_impl<
- mpl::size<T>::value - 1
+ T::size::value - 1
>::template apply<
- typename mpl::next<Begin>::type,
+ typename Begin::next::type,
             typename test::base_dimension_type
>
>::type type;
@@ -1086,9 +1025,9 @@
 struct calculate_base_unit_exponents_impl<true> {
     template<class T, class Dimensions>
     struct apply {
- typedef typename expand_dimensions<mpl::size<T>::value>::template apply<
- typename mpl::begin<typename find_base_dimensions<T>::type>::type,
- typename mpl::begin<Dimensions>::type
+ typedef typename expand_dimensions<(T::size::value)>::template apply<
+ typename find_base_dimensions<T>::type,
+ Dimensions
>::type type;
     };
 };
@@ -1104,16 +1043,16 @@
         // e.g. if the arguments are list<pound, foot> and
         // list<mass,time^-2> then this step will
         // yield list<0,1,-2>
- typedef typename expand_dimensions<mpl::size<typename base_solutions::dimensions>::value>::template apply<
- typename mpl::begin<typename base_solutions::dimensions>::type,
- typename mpl::begin<Dimensions>::type
+ typedef typename expand_dimensions<(base_solutions::dimensions::size::value)>::template apply<
+ typename base_solutions::dimensions,
+ Dimensions
>::type dimensions;
         // take the unit corresponding to each base unit
         // multiply each of its exponents by the exponent
         // of the base_dimension in the result and sum.
- typedef typename multiply_add_units<mpl::size<dimensions>::value>::template apply<
- typename mpl::begin<dimensions>::type,
- typename mpl::begin<typename base_solutions::type>::type
+ typedef typename multiply_add_units<dimensions::size::value>::template apply<
+ dimensions,
+ typename base_solutions::type
>::type units;
         // Now, verify that the dummy units really
         // cancel out and remove them.

Modified: branches/proto/v4/boost/units/detail/one.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/one.hpp (original)
+++ branches/proto/v4/boost/units/detail/one.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,7 +17,7 @@
 
 namespace units {
 
-struct one { };
+struct one { one() {} };
 
 template<class T>
 struct multiply_typeof_helper<one, T>
@@ -51,7 +51,8 @@
 
 inline one operator*(const one&, const one&)
 {
- return(one());
+ one result;
+ return(result);
 }
 
 template<class T>
@@ -86,7 +87,8 @@
 
 inline one operator/(const one&, const one&)
 {
- return(one());
+ one result;
+ return(result);
 }
 
 } // namespace units

Modified: branches/proto/v4/boost/units/detail/prevent_redefinition.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/prevent_redefinition.hpp (original)
+++ branches/proto/v4/boost/units/detail/prevent_redefinition.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 
 namespace detail {
 
-typedef char no;
+struct no { no() {} char dummy; };
 struct yes { no dummy[2]; };
 
 template<bool> struct ordinal_has_already_been_defined;
@@ -39,13 +39,13 @@
 template<class T>
 detail::no
 boost_units_is_registered(const T&)
-{ return(detail::no()); }
+{ detail::no result; return(result); }
 
 /// INTERNAL ONLY
 template<class T>
 detail::no
 boost_units_unit_is_registered(const T&)
-{ return(detail::no()); }
+{ detail::no result; return(result); }
 
 } // namespace units
 

Modified: branches/proto/v4/boost/units/detail/push_front_if.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/push_front_if.hpp (original)
+++ branches/proto/v4/boost/units/detail/push_front_if.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,12 +11,13 @@
 #ifndef BOOST_UNITS_DETAIL_PUSH_FRONT_IF_HPP
 #define BOOST_UNITS_DETAIL_PUSH_FRONT_IF_HPP
 
-#include <boost/mpl/push_front.hpp>
-
 namespace boost {
 
 namespace units {
 
+template<class T, class Next>
+struct list;
+
 namespace detail {
 
 template<bool>
@@ -26,7 +27,7 @@
 struct push_front_if<true> {
     template<class L, class T>
     struct apply {
- typedef typename mpl::push_front<L, T>::type type;
+ typedef list<T, L> type;
     };
 };
 

Modified: branches/proto/v4/boost/units/detail/push_front_or_add.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/push_front_or_add.hpp (original)
+++ branches/proto/v4/boost/units/detail/push_front_or_add.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,6 +24,9 @@
 
 namespace units {
 
+template<class Item, class Next>
+struct list;
+
 namespace detail {
 
 template<class T>
@@ -39,9 +42,9 @@
     template<typename Sequence, typename T>
     struct apply
     {
- typedef typename mpl::plus<T, typename mpl::front<Sequence>::type>::type item;
+ typedef typename mpl::plus<T, typename Sequence::item>::type item;
         typedef typename push_front_if<!is_empty_dim<item>::value>::template apply<
- typename mpl::pop_front<Sequence>::type,
+ typename Sequence::next,
             item
> type;
     };
@@ -53,14 +56,14 @@
     template<typename Sequence, typename T>
     struct apply
     {
- typedef typename mpl::push_front<Sequence, T>::type type;
+ typedef list<T, Sequence> type;
     };
 };
 
 template<typename Sequence, typename T>
 struct push_front_or_add
 {
- typedef typename push_front_or_add_impl<boost::is_same<typename T::tag_type, typename mpl::front<Sequence>::type::tag_type>::value>::template apply<
+ typedef typename push_front_or_add_impl<boost::is_same<typename T::tag_type, typename Sequence::item::tag_type>::value>::template apply<
         Sequence,
         T
>::type type;
@@ -69,7 +72,7 @@
 template<typename T>
 struct push_front_or_add<dimensionless_type, T>
 {
- typedef typename mpl::push_front<dimensionless_type, T>::type type;
+ typedef list<T, dimensionless_type> type;
 };
 
 } // namespace detail

Modified: branches/proto/v4/boost/units/detail/sort.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/sort.hpp (original)
+++ branches/proto/v4/boost/units/detail/sort.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,118 +27,77 @@
 
 namespace detail {
 
-template<bool second_is_less>
-struct bubble_sort_conditional_swap;
+template<int N>
+struct insertion_sort_insert;
 
-template<>
-struct bubble_sort_conditional_swap<true>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef T1 first;
- typedef T0 second;
- };
-};
+template<bool is_greater>
+struct insertion_sort_comparison_impl;
 
+// have to recursively add the element to the next sequence.
 template<>
-struct bubble_sort_conditional_swap<false>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef T0 first;
- typedef T1 second;
- };
-};
-
-template<int N>
-struct bubble_sort_pass_impl
-{
- template<class Begin, class Current>
- struct apply
- {
- typedef typename mpl::deref<Begin>::type val;
- typedef typename bubble_sort_conditional_swap<mpl::less<val, Current>::value>::template apply<Current, val> pair;
- typedef typename bubble_sort_pass_impl<N-1>::template apply<typename mpl::next<Begin>::type, typename pair::second> next;
- typedef typename mpl::push_front<typename next::type, typename pair::first>::type type;
- enum { value = next::value || mpl::less<val, Current>::value };
+struct insertion_sort_comparison_impl<true> {
+ template<class Begin, int N, class T>
+ struct apply {
+ typedef list<
+ typename Begin::item,
+ typename insertion_sort_insert<N - 1>::template apply<
+ typename Begin::next,
+ T
+ >::type
+ > type;
     };
 };
 
+// prepend the current element
 template<>
-struct bubble_sort_pass_impl<0>
-{
- template<class Begin, class Current>
- struct apply
- {
- typedef typename mpl::push_front<dimensionless_type, Current>::type type;
- enum { value = false };
+struct insertion_sort_comparison_impl<false> {
+ template<class Begin, int N, class T>
+ struct apply {
+ typedef list<T, Begin> type;
     };
 };
 
-template<bool>
-struct bubble_sort_impl;
-
-template<>
-struct bubble_sort_impl<true>
-{
- template<class T>
- struct apply
- {
- typedef typename mpl::begin<T>::type begin;
- typedef typename bubble_sort_pass_impl<mpl::size<T>::value - 1>::template apply<
- typename mpl::next<begin>::type,
- typename mpl::deref<begin>::type
- > single_pass;
- typedef typename bubble_sort_impl<(single_pass::value)>::template apply<typename single_pass::type>::type type;
+template<int N>
+struct insertion_sort_insert {
+ template<class Begin, class T>
+ struct apply {
+ typedef typename insertion_sort_comparison_impl<mpl::less<typename Begin::item, T>::value>::template apply<
+ Begin,
+ N,
+ T
+ >::type type;
     };
 };
 
 template<>
-struct bubble_sort_impl<false>
-{
- template<class T>
- struct apply
- {
- typedef T type;
+struct insertion_sort_insert<0> {
+ template<class Begin, class T>
+ struct apply {
+ typedef list<T, dimensionless_type> type;
     };
 };
 
 template<int N>
-struct bubble_sort_one_or_zero
-{
- template<class T>
- struct apply
- {
- typedef typename bubble_sort_impl<true>::template apply<T>::type type;
+struct insertion_sort_impl {
+ template<class Begin>
+ struct apply {
+ typedef typename insertion_sort_impl<N - 1>::template apply<typename Begin::next>::type next;
+ typedef typename insertion_sort_insert<(next::size::value)>::template apply<next, typename Begin::item>::type type;
     };
 };
 
 template<>
-struct bubble_sort_one_or_zero<0>
-{
- template<class T>
- struct apply
- {
+struct insertion_sort_impl<0> {
+ template<class Begin>
+ struct apply {
         typedef dimensionless_type type;
     };
 };
 
-template<>
-struct bubble_sort_one_or_zero<1>
-{
- template<class T>
- struct apply
- {
- typedef typename mpl::push_front<dimensionless_type, typename mpl::front<T>::type>::type type;
- };
-};
-
 template<class T>
-struct bubble_sort
+struct insertion_sort
 {
- typedef typename bubble_sort_one_or_zero<mpl::size<T>::value>::template apply<T>::type type;
+ typedef typename insertion_sort_impl<T::size::value>::template apply<T>::type type;
 };
 
 } // namespace detail

Modified: branches/proto/v4/boost/units/detail/static_rational_power.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/static_rational_power.hpp (original)
+++ branches/proto/v4/boost/units/detail/static_rational_power.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 // unit/quantity manipulation and conversion
 //
 // Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
+// Copyright (C) 2007-2008 Steven Watanabe
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at
@@ -63,7 +63,8 @@
     typedef one type;
     static one call(const one&)
     {
- return(one());
+ one result;
+ return(result);
     }
 };
 
@@ -73,7 +74,8 @@
     typedef one type;
     static one call(const one&)
     {
- return(one());
+ one result;
+ return(result);
     }
 };
 
@@ -156,7 +158,8 @@
         typedef typename impl::type type;
         static type call(const Y& y)
         {
- return(impl::call(y, one()));
+ one result;
+ return(impl::call(y, result));
         }
     };
 };
@@ -171,7 +174,8 @@
         typedef typename divide_typeof_helper<one, typename impl::type>::type type;
         static type call(const Y& y)
         {
- return(one()/impl::call(y, one()));
+ one result;
+ return(result/impl::call(y, result));
         }
     };
 };

Modified: branches/proto/v4/boost/units/detail/unscale.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/unscale.hpp (original)
+++ branches/proto/v4/boost/units/detail/unscale.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -141,11 +141,11 @@
     template<class Begin>
     struct apply
     {
- typedef typename eval_scale_list_impl<N-1>::template apply<typename mpl::next<Begin>::type> next_iteration;
- typedef typename multiply_typeof_helper<typename next_iteration::type, typename mpl::deref<Begin>::type::value_type>::type type;
+ typedef typename eval_scale_list_impl<N-1>::template apply<typename Begin::next> next_iteration;
+ typedef typename multiply_typeof_helper<typename next_iteration::type, typename Begin::item::value_type>::type type;
         static type value()
         {
- return(next_iteration::value() * mpl::deref<Begin>::type::value());
+ return(next_iteration::value() * Begin::item::value());
         }
     };
 };
@@ -157,9 +157,10 @@
     struct apply
     {
         typedef one type;
- static type value()
+ static one value()
         {
- return(type());
+ one result;
+ return(result);
         }
     };
 };
@@ -168,7 +169,7 @@
 
 /// INTERNAL ONLY
 template<class T>
-struct eval_scale_list : detail::eval_scale_list_impl<mpl::size<T>::value>::template apply<typename mpl::begin<T>::type> {};
+struct eval_scale_list : detail::eval_scale_list_impl<T::size::value>::template apply<T> {};
 
 } // namespace units
 

Modified: branches/proto/v4/boost/units/detail/utility.hpp
==============================================================================
--- branches/proto/v4/boost/units/detail/utility.hpp (original)
+++ branches/proto/v4/boost/units/detail/utility.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,7 +21,7 @@
 #include <boost/cstdint.hpp>
 #include <boost/limits.hpp>
 
-#if (__GNUC__ && __cplusplus && __GNUC__ >= 3)
+#if defined(__GNUC__) && defined(__cplusplus) && (__GNUC__ >= 3) && !defined(_RWSTD_VER)
 #define BOOST_UNITS_USE_DEMANGLING
 #endif // __GNUC__
 

Modified: branches/proto/v4/boost/units/dimension.hpp
==============================================================================
--- branches/proto/v4/boost/units/dimension.hpp (original)
+++ branches/proto/v4/boost/units/dimension.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,8 +16,6 @@
 #include <boost/type_traits/is_same.hpp>
 
 #include <boost/mpl/arithmetic.hpp>
-#include <boost/mpl/begin.hpp>
-#include <boost/mpl/size.hpp>
 
 #include <boost/units/static_rational.hpp>
 #include <boost/units/detail/dimension_list.hpp>
@@ -62,8 +60,8 @@
 template<typename DL,typename Ex>
 struct static_power
 {
- typedef typename detail::static_power_impl<mpl::size<DL>::value>::template apply<
- typename mpl::begin<DL>::type,
+ typedef typename detail::static_power_impl<DL::size::value>::template apply<
+ DL,
         Ex
>::type type;
 };
@@ -72,8 +70,8 @@
 template<typename DL,typename Rt>
 struct static_root
 {
- typedef typename detail::static_root_impl<mpl::size<DL>::value>::template apply<
- typename mpl::begin<DL>::type,
+ typedef typename detail::static_root_impl<DL::size::value>::template apply<
+ DL,
         Rt
>::type type;
 };
@@ -125,9 +123,9 @@
         typedef typename boost::units::detail::merge_dimensions<
             T0,
             typename boost::units::detail::static_inverse_impl<
- mpl::size<T1>::value
+ T1::size::value
>::template apply<
- typename mpl::begin<T1>::type
+ T1
>::type
>::type type;
     };

Modified: branches/proto/v4/boost/units/heterogeneous_system.hpp
==============================================================================
--- branches/proto/v4/boost/units/heterogeneous_system.hpp (original)
+++ branches/proto/v4/boost/units/heterogeneous_system.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -214,12 +214,12 @@
     template<class UnitsBegin, class ExponentsBegin>
     struct apply
     {
- typedef typename push_front_if<!(is_zero<typename mpl::deref<ExponentsBegin>::type>::value)>::template apply<
+ typedef typename push_front_if<!(is_zero<typename ExponentsBegin::item>::value)>::template apply<
             typename make_heterogeneous_system_impl<N-1>::template apply<
- typename mpl::next<UnitsBegin>::type,
- typename mpl::next<ExponentsBegin>::type
+ typename UnitsBegin::next,
+ typename ExponentsBegin::next
>::type,
- heterogeneous_system_dim<typename mpl::deref<UnitsBegin>::type, typename mpl::deref<ExponentsBegin>::type>
+ heterogeneous_system_dim<typename UnitsBegin::item, typename ExponentsBegin::item>
>::type type;
     };
 };
@@ -239,9 +239,9 @@
 {
     typedef typename calculate_base_unit_exponents<typename System::type, Dimensions>::type exponents;
     BOOST_MPL_ASSERT_MSG((!boost::is_same<exponents, inconsistent>::value), the_specified_dimension_is_not_representible_in_the_given_system, (types<Dimensions, System>));
- typedef typename make_heterogeneous_system_impl<mpl::size<typename System::type>::value>::template apply<
- typename mpl::begin<typename System::type>::type,
- typename mpl::begin<exponents>::type
+ typedef typename make_heterogeneous_system_impl<System::type::size::value>::template apply<
+ typename System::type,
+ exponents
>::type unit_list;
     typedef heterogeneous_system<heterogeneous_system_impl<unit_list, Dimensions, no_scale> > type;
 };
@@ -314,9 +314,9 @@
     {
         typedef typename push_front_or_add<
             typename unscale_heterogeneous_system_impl<N-1>::template apply<
- typename mpl::next<Begin>::type
+ typename Begin::next
>::type,
- typename unscale<typename mpl::deref<Begin>::type>::type
+ typename unscale<typename Begin::item>::type
>::type type;
     };
 };
@@ -343,9 +343,9 @@
     typedef heterogeneous_system<
         heterogeneous_system_impl<
             typename detail::unscale_heterogeneous_system_impl<
- mpl::size<typename T::type>::value
+ T::type::size::value
>::template apply<
- typename mpl::begin<typename T::type>::type
+ typename T::type
>::type,
             typename T::dimensions,
             no_scale
@@ -370,9 +370,9 @@
     {
         typedef typename mpl::times<
             typename get_scale_list_of_heterogeneous_system_impl<N-1>::template apply<
- typename mpl::next<Begin>::type
+ typename Begin::next
>::type,
- typename get_scale_list<typename mpl::deref<Begin>::type>::type
+ typename get_scale_list<typename Begin::item>::type
>::type type;
     };
 };
@@ -395,7 +395,7 @@
 {
     typedef typename mpl::times<
         typename detail::get_scale_list_of_heterogeneous_system_impl<
- mpl::size<typename T::type>::value
+ T::type::size::value
>::template apply<typename T::type>::type,
         typename T::scale
>::type type;

Modified: branches/proto/v4/boost/units/io.hpp
==============================================================================
--- branches/proto/v4/boost/units/io.hpp (original)
+++ branches/proto/v4/boost/units/io.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -208,10 +208,10 @@
     template<class Begin>
     struct apply
     {
- typedef typename symbol_string_impl<N-1>::template apply<typename mpl::next<Begin>::type> next;
+ typedef typename symbol_string_impl<N-1>::template apply<typename Begin::next> next;
         static void value(std::string& str)
         {
- str += base_unit_symbol_string(typename mpl::deref<Begin>::type()) + ' ';
+ str += base_unit_symbol_string(typename Begin::item()) + ' ';
             next::value(str);
         }
     };
@@ -225,7 +225,7 @@
     {
         static void value(std::string& str)
         {
- str += base_unit_symbol_string(typename mpl::deref<Begin>::type());
+ str += base_unit_symbol_string(typename Begin::item());
         };
     };
 };
@@ -252,8 +252,8 @@
     {
         static void value(std::string& str)
         {
- str += mpl::deref<Begin>::type::symbol();
- scale_symbol_string_impl<N - 1>::template apply<typename mpl::next<Begin>::type>::value(str);
+ str += Begin::item::symbol();
+ scale_symbol_string_impl<N - 1>::template apply<typename Begin::next>::value(str);
         }
     };
 };
@@ -275,10 +275,10 @@
     template<class Begin>
     struct apply
     {
- typedef typename name_string_impl<N-1>::template apply<typename mpl::next<Begin>::type> next;
+ typedef typename name_string_impl<N-1>::template apply<typename Begin::next> next;
         static void value(std::string& str)
         {
- str += base_unit_name_string(typename mpl::deref<Begin>::type()) + ' ';
+ str += base_unit_name_string(typename Begin::item()) + ' ';
             next::value(str);
         }
     };
@@ -292,7 +292,7 @@
     {
         static void value(std::string& str)
         {
- str += base_unit_name_string(typename mpl::deref<Begin>::type());
+ str += base_unit_name_string(typename Begin::item());
         };
     };
 };
@@ -318,8 +318,8 @@
     {
         static void value(std::string& str)
         {
- str += mpl::deref<Begin>::type::name();
- scale_name_string_impl<N - 1>::template apply<typename mpl::next<Begin>::type>::value(str);
+ str += Begin::item::name();
+ scale_name_string_impl<N - 1>::template apply<typename Begin::next>::value(str);
         }
     };
 };
@@ -476,13 +476,11 @@
 struct format_raw_symbol_impl {
     template<class Units>
     void append_units_to(std::string& str) {
- detail::symbol_string_impl<mpl::size<Units>::value>::template apply<
- typename mpl::begin<Units>::type>::value(str);
+ detail::symbol_string_impl<Units::size::value>::template apply<Units>::value(str);
     }
     template<class Scale>
     void append_scale_to(std::string& str) {
- detail::scale_symbol_string_impl<mpl::size<Scale>::value>::template apply<
- typename mpl::begin<Scale>::type>::value(str);
+ detail::scale_symbol_string_impl<Scale::size::value>::template apply<Scale>::value(str);
     }
     template<class Unit>
     std::string operator()(const Unit& unit) {
@@ -508,13 +506,11 @@
 struct format_raw_name_impl {
     template<class Units>
     void append_units_to(std::string& str) {
- detail::name_string_impl<mpl::size<Units>::value>::template apply<
- typename mpl::begin<Units>::type>::value(str);
+ detail::name_string_impl<(Units::size::value)>::template apply<Units>::value(str);
     }
     template<class Scale>
     void append_scale_to(std::string& str) {
- detail::scale_name_string_impl<mpl::size<Scale>::value>::template apply<
- typename mpl::begin<Scale>::type>::value(str);
+ detail::scale_name_string_impl<Scale::size::value>::template apply<Scale>::value(str);
     }
     template<class Unit>
     std::string operator()(const Unit& unit) {

Modified: branches/proto/v4/boost/units/make_system.hpp
==============================================================================
--- branches/proto/v4/boost/units/make_system.hpp (original)
+++ branches/proto/v4/boost/units/make_system.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,8 +11,6 @@
 #ifndef BOOST_UNITS_MAKE_SYSTEM_HPP
 #define BOOST_UNITS_MAKE_SYSTEM_HPP
 
-#include <boost/mpl/list/list10.hpp>
-
 #include <boost/units/config.hpp>
 #include <boost/units/dimensionless_type.hpp>
 #include <boost/units/homogeneous_system.hpp>
@@ -77,55 +75,55 @@
 template<class T0, class T1>
 struct make_system<T0, T1, na, na, na, na, na, na, na, na>
 {
- typedef homogeneous_system<typename detail::bubble_sort<mpl::list2<T0, T1> >::type> type;
+ typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, dimensionless_type> > >::type> type;
 };
 
 template<class T0, class T1, class T2>
 struct make_system<T0, T1, T2, na, na, na, na, na, na, na>
 {
- typedef homogeneous_system<typename detail::bubble_sort<mpl::list3<T0, T1, T2> >::type> type;
+ typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, dimensionless_type> > > >::type> type;
 };
 
 template<class T0, class T1, class T2, class T3>
 struct make_system<T0, T1, T2, T3, na, na, na, na, na, na>
 {
- typedef homogeneous_system<typename detail::bubble_sort<mpl::list4<T0, T1, T2, T3> >::type> type;
+ typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, dimensionless_type> > > > >::type> type;
 };
 
 template<class T0, class T1, class T2, class T3, class T4>
 struct make_system<T0, T1, T2, T3, T4, na, na, na, na, na>
 {
- typedef homogeneous_system<typename detail::bubble_sort<mpl::list5<T0, T1, T2, T3, T4> >::type> type;
+ typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, dimensionless_type> > > > > >::type> type;
 };
 
 template<class T0, class T1, class T2, class T3, class T4, class T5>
 struct make_system<T0, T1, T2, T3, T4, T5, na, na, na, na>
 {
- typedef homogeneous_system<typename detail::bubble_sort<mpl::list6<T0, T1, T2, T3, T4, T5> >::type> type;
+ typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, dimensionless_type> > > > > > >::type> type;
 };
 
 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6>
 struct make_system<T0, T1, T2, T3, T4, T5, T6, na, na, na>
 {
- typedef homogeneous_system<typename detail::bubble_sort<mpl::list7<T0, T1, T2, T3, T4, T5, T6> >::type> type;
+ typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, dimensionless_type> > > > > > > >::type> type;
 };
 
 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
 struct make_system<T0, T1, T2, T3, T4, T5, T6, T7, na, na>
 {
- typedef homogeneous_system<typename detail::bubble_sort<mpl::list8<T0, T1, T2, T3, T4, T5, T6, T7> >::type> type;
+ typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, list<T7, dimensionless_type> > > > > > > > >::type> type;
 };
 
 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
 struct make_system<T0, T1, T2, T3, T4, T5, T6, T7, T8, na>
 {
- typedef homogeneous_system<typename detail::bubble_sort<mpl::list9<T0, T1, T2, T3, T4, T5, T6, T7, T8> >::type> type;
+ typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, list<T7, list<T8, dimensionless_type> > > > > > > > > >::type> type;
 };
 
 template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
 struct make_system
 {
- typedef homogeneous_system<typename detail::bubble_sort<mpl::list10<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> >::type> type;
+ typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, list<T7, list<T8, list<T9, dimensionless_type> > > > > > > > > > >::type> type;
 };
 
 #endif

Modified: branches/proto/v4/boost/units/quantity.hpp
==============================================================================
--- branches/proto/v4/boost/units/quantity.hpp (original)
+++ branches/proto/v4/boost/units/quantity.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -91,6 +91,7 @@
         // base units are not the same as units.
         BOOST_MPL_ASSERT_NOT((detail::is_base_unit<Unit>));
         enum { force_instantiation_of_unit = sizeof(Unit) };
+ typedef void (quantity::*unspecified_null_pointer_constant_type)(int*******);
     public:
         typedef quantity<Unit,Y> this_type;
         
@@ -101,12 +102,26 @@
         {
             BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
         }
+
+ quantity(unspecified_null_pointer_constant_type) : val_()
+ {
+ BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
+ }
         
         quantity(const this_type& source) : val_(source.val_)
         {
             BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
         }
         
+ // Need to make sure that the destructor of
+ // Unit which contains the checking is instantiated,
+ // on sun.
+ #ifdef __SUNPRO_CC
+ ~quantity() {
+ unit_type force_unit_instantiation;
+ }
+ #endif
+
         //~quantity() { }
         
         this_type& operator=(const this_type& source)
@@ -266,10 +281,10 @@
         this_type& operator/=(const value_type& source) { val_ /= source; return *this; }
     
         /// Construct quantity directly from @c value_type (potentially dangerous).
- static this_type from_value(const value_type& val) { return this_type(val); }
+ static this_type from_value(const value_type& val) { return this_type(val, 0); }
 
     protected:
- explicit quantity(const value_type& val) : val_(val) { }
+ explicit quantity(const value_type& val, int) : val_(val) { }
         
     private:
         value_type val_;
@@ -314,6 +329,7 @@
                 
             return *this;
         }
+
         #ifndef BOOST_NO_SFINAE
 
         /// implicit conversion between value types is allowed if allowed for value types themselves
@@ -358,14 +374,24 @@
             return *this;
         }
 
- #ifndef BOOST_NO_SFINAE
+ #if 1
 
         /// implicit conversion between different unit systems is allowed
         template<class System2, class Y2>
         quantity(const quantity<unit<dimensionless_type, System2>,Y2>& source,
- typename boost::enable_if<detail::is_non_narrowing_conversion<Y2, Y>,
- typename detail::disable_if_is_same<System, System2>::type>::type* = 0,
- typename boost::enable_if<detail::is_dimensionless_system<System2> >::type* = 0) :
+ #ifdef __SUNPRO_CC
+ typename boost::enable_if<
+ boost::mpl::and_<
+ detail::is_non_narrowing_conversion<Y2, Y>,
+ detail::is_dimensionless_system<System2>
+ >
+ >::type* = 0
+ #else
+ typename boost::enable_if<detail::is_non_narrowing_conversion<Y2, Y> >::type* = 0,
+ typename detail::disable_if_is_same<System, System2>::type* = 0,
+ typename boost::enable_if<detail::is_dimensionless_system<System2> >::type* = 0
+ #endif
+ ) :
             val_(source.value())
         {
             BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
@@ -374,9 +400,19 @@
         /// implicit conversion between different unit systems is allowed
         template<class System2, class Y2>
         explicit quantity(const quantity<unit<dimensionless_type, System2>,Y2>& source,
- typename boost::disable_if<detail::is_non_narrowing_conversion<Y2, Y>,
- typename detail::disable_if_is_same<System, System2>::type>::type* = 0,
- typename boost::enable_if<detail::is_dimensionless_system<System2> >::type* = 0) :
+ #ifdef __SUNPRO_CC
+ typename boost::enable_if<
+ boost::mpl::and_<
+ boost::mpl::not_<detail::is_non_narrowing_conversion<Y2, Y> >,
+ detail::is_dimensionless_system<System2>
+ >
+ >::type* = 0
+ #else
+ typename boost::disable_if<detail::is_non_narrowing_conversion<Y2, Y> >::type* = 0,
+ typename detail::disable_if_is_same<System, System2>::type* = 0,
+ typename boost::enable_if<detail::is_dimensionless_system<System2> >::type* = 0
+ #endif
+ ) :
             val_(static_cast<Y>(source.value()))
         {
             BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
@@ -404,6 +440,8 @@
         {
             BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
         }
+
+ #ifndef __SUNPRO_CC
 
         /// implicit assignment between different unit systems is allowed
         template<class System2>
@@ -414,6 +452,8 @@
             return *this;
         }
         
+ #endif
+
         /// implicit conversion to @c value_type is allowed
         operator value_type() const { return val_; }
         
@@ -549,6 +589,28 @@
     typedef quantity<unit_type,value_type> type;
 };
 
+/// for sun CC we need to invoke SFINAE at
+/// the top level, otherwise it will silently
+/// return int.
+template<class Dim1, class System1,
+ class Dim2, class System2,
+ class X,
+ class Y>
+struct add_typeof_helper< quantity<unit<Dim1, System1>,X>,quantity<unit<Dim2, System2>,Y> >
+{
+};
+
+template<class Dim,
+ class System,
+ class X,
+ class Y>
+struct add_typeof_helper< quantity<unit<Dim, System>,X>,quantity<unit<Dim, System>,Y> >
+{
+ typedef typename add_typeof_helper<X,Y>::type value_type;
+ typedef unit<Dim, System> unit_type;
+ typedef quantity<unit_type,value_type> type;
+};
+
 /// specialize subtract typeof helper
 /// INTERNAL ONLY
 template<class Unit1,
@@ -562,6 +624,26 @@
     typedef quantity<unit_type,value_type> type;
 };
 
+// Force adding different units to fail on sun.
+template<class Dim1, class System1,
+ class Dim2, class System2,
+ class X,
+ class Y>
+struct subtract_typeof_helper< quantity<unit<Dim1, System1>,X>,quantity<unit<Dim2, System2>,Y> >
+{
+};
+
+template<class Dim,
+ class System,
+ class X,
+ class Y>
+struct subtract_typeof_helper< quantity<unit<Dim, System>,X>,quantity<unit<Dim, System>,Y> >
+{
+ typedef typename subtract_typeof_helper<X,Y>::type value_type;
+ typedef unit<Dim, System> unit_type;
+ typedef quantity<unit_type,value_type> type;
+};
+
 /// scalar times unit typeof helper
 /// INTERNAL ONLY
 template<class System,

Modified: branches/proto/v4/boost/units/scale.hpp
==============================================================================
--- branches/proto/v4/boost/units/scale.hpp (original)
+++ branches/proto/v4/boost/units/scale.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -49,9 +49,9 @@
     static const long base = Base;
     typedef static_rational<0> exponent;
     typedef one value_type;
- static one value() { return(one()); }
- static std::string name() { return(std::string()); }
- static std::string symbol() { return(std::string()); }
+ static one value() { one result; return(result); }
+ static std::string name() { return(""); }
+ static std::string symbol() { return(""); }
 };
 
 template<long Base>

Modified: branches/proto/v4/boost/units/static_rational.hpp
==============================================================================
--- branches/proto/v4/boost/units/static_rational.hpp (original)
+++ branches/proto/v4/boost/units/static_rational.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,6 +15,11 @@
 #include <boost/mpl/less.hpp>
 #include <boost/mpl/arithmetic.hpp>
 
+#ifdef __BORLANDC__
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/integral_c.hpp>
+#endif
+
 #include <boost/units/config.hpp>
 #include <boost/units/operators.hpp>
 
@@ -62,7 +67,53 @@
 template<integer_type N,integer_type D = 1>
 class static_rational
 {
+#ifdef __BORLANDC__
+ private:
+
+ typedef boost::mpl::integral_c<integer_type, N> N_type;
+ typedef boost::mpl::integral_c<integer_type, D> D_type;
+
+ typedef boost::mpl::integral_c<integer_type,
+ (::boost::math::static_gcd<
+ ::boost::units::static_abs<N>::value,
+ ::boost::units::static_abs<D>::value
+ >::value)> gcd_type;
+ typedef typename boost::mpl::eval_if<
+ boost::mpl::less<
+ D_type,
+ boost::mpl::integral_c<integer_type, 0>
+ >,
+ boost::mpl::negate<gcd_type>,
+ gcd_type
+ >::type den_type;
+
+ public:
+ // for mpl arithmetic support
+ typedef detail::static_rational_tag tag;
+
+ BOOST_STATIC_CONSTANT(integer_type, Numerator =
+ (::boost::mpl::divides<N_type, den_type>::value));
+ BOOST_STATIC_CONSTANT(integer_type, Denominator =
+ (::boost::mpl::divides<D_type, den_type>::value));
+
+ /// INTERNAL ONLY
+ typedef static_rational<N,D> this_type;
+
+ /// static_rational<N,D> reduced by GCD
+ typedef static_rational<
+ (::boost::mpl::divides<N_type, den_type>::value),
+ (::boost::mpl::divides<D_type, den_type>::value)
+ > type;
+
+ static integer_type numerator() { return Numerator; }
+ static integer_type denominator() { return Denominator; }
+
+ // INTERNAL ONLY
+ static_rational() { }
+ //~static_rational() { }
+#else
     private:
+
         static const integer_type nabs = static_abs<N>::value,
                                     dabs = static_abs<D>::value;
         
@@ -76,7 +127,7 @@
         typedef detail::static_rational_tag tag;
         
         static const integer_type Numerator = N/den,
- Denominator = D/den;
+ Denominator = D/den;
         
         /// INTERNAL ONLY
         typedef static_rational<N,D> this_type;
@@ -90,6 +141,7 @@
         // INTERNAL ONLY
         static_rational() { }
         //~static_rational() { }
+#endif
         
 };
 

Modified: branches/proto/v4/boost/units/unit.hpp
==============================================================================
--- branches/proto/v4/boost/units/unit.hpp (original)
+++ branches/proto/v4/boost/units/unit.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,7 @@
 
 #include <boost/static_assert.hpp>
 #include <boost/mpl/bool.hpp>
+#include <boost/mpl/assert.hpp>
 #include <boost/type_traits/is_same.hpp>
 
 #include <boost/units/config.hpp>
@@ -47,9 +48,20 @@
        
         this_type& operator=(const this_type&) { }
         
+ // sun will ignore errors resulting from templates
+ // instantiated in the return type of a function.
+ // Make sure that we get an error anyway by putting.
+ // the check in the destructor.
+ #ifdef __SUNPRO_CC
+ ~unit() {
+ BOOST_MPL_ASSERT((detail::check_system<System, Dim>));
+ BOOST_MPL_ASSERT((is_dimension_list<Dim>));
+ }
+ #else
     private:
- BOOST_STATIC_ASSERT((detail::check_system<System, Dim>::value == true));
- BOOST_STATIC_ASSERT((is_dimension_list<Dim>::value == true));
+ BOOST_MPL_ASSERT((detail::check_system<System, Dim>));
+ BOOST_MPL_ASSERT((is_dimension_list<Dim>));
+ #endif
 };
 
 }
@@ -105,28 +117,20 @@
 
 /// unit add typeof helper
 /// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
+template<class Dim,
          class System>
-struct add_typeof_helper< unit<Dim1,System>,unit<Dim2,System> >
+struct add_typeof_helper< unit<Dim,System>,unit<Dim,System> >
 {
- // ensure dimension lists are commensurate
- BOOST_STATIC_ASSERT((is_same<Dim1,Dim2>::value == true));
-
- typedef unit<Dim1,System> type;
+ typedef unit<Dim,System> type;
 };
 
 /// unit subtract typeof helper
 /// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
+template<class Dim,
          class System>
-struct subtract_typeof_helper< unit<Dim1,System>,unit<Dim2,System> >
+struct subtract_typeof_helper< unit<Dim,System>,unit<Dim,System> >
 {
- // ensure dimension lists are commensurate
- BOOST_STATIC_ASSERT((is_same<Dim1,Dim2>::value == true));
-
- typedef unit<Dim1,System> type;
+ typedef unit<Dim,System> type;
 };
 
 /// unit multiply typeof helper for two identical homogeneous systems

Modified: branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp
==============================================================================
--- branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp (original)
+++ branches/proto/v4/boost/unordered/detail/hash_table_impl.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1493,8 +1493,6 @@
                     / static_cast<float>(data_.bucket_manager_.bucket_count());
             }
 
- private:
-
             // key extractors
 
             // no throw
@@ -2127,100 +2125,6 @@
                 }
             }
 
- //
- // equals
- //
-
-private:
-#if BOOST_UNORDERED_EQUIVALENT_KEYS
- static inline bool group_equals(link_ptr it1, link_ptr it2,
- type_wrapper<key_type>*)
- {
- return data::group_count(it1) == data::group_count(it2);
- }
-
- static inline bool group_equals(link_ptr it1, link_ptr it2, void*)
- {
- link_ptr end1 = data::next_group(it1);
- link_ptr end2 = data::next_group(it2);
- do {
- if(data::get_value(it1).second != data::get_value(it2).second) return false;
- it1 = it1->next_;
- it2 = it2->next_;
- } while(it1 != end1 && it2 != end2);
- return it1 == end1 && it2 == end2;
- }
-#else
- static inline bool group_equals(link_ptr, link_ptr,
- type_wrapper<key_type>*)
- {
- return true;
- }
-
- static inline bool group_equals(link_ptr it1, link_ptr it2, void*)
- {
- return data::get_value(it1).second == data::get_value(it2).second;
- }
-#endif
-
-public:
- bool equals(BOOST_UNORDERED_TABLE const& other) const
- {
- if(size() != other.size()) return false;
-
- for(bucket_ptr i = data_.cached_begin_bucket_,
- j = data_.buckets_end(); i != j; ++i)
- {
- for(link_ptr it(i->next_); BOOST_UNORDERED_BORLAND_BOOL(it); it = data::next_group(it))
- {
- link_ptr other_pos = other.find_iterator(other.extract_key(data::get_value(it)));
- if(!BOOST_UNORDERED_BORLAND_BOOL(other_pos) ||
- !group_equals(it, other_pos, (type_wrapper<value_type>*)0))
- return false;
- }
- }
-
- return true;
- }
-
- inline std::size_t group_hash(link_ptr it, type_wrapper<key_type>*) const
- {
- std::size_t seed = data::group_count(it);
- std::size_t hashed_key = hash_function()(data::get_value(it));
- boost::hash_combine(seed, hashed_key);
- return seed;
- }
-
- inline std::size_t group_hash(link_ptr it, void*) const
- {
- std::size_t seed = hash_function()(data::get_value(it).first);
-
- link_ptr end = data::next_group(it);
-
- do {
- boost::hash_combine(seed, data::get_value(it).second);
- it = it->next_;
- } while(it != end);
-
- return seed;
- }
-
- std::size_t hash_value() const
- {
- std::size_t seed = 0;
-
- for(bucket_ptr i = data_.cached_begin_bucket_,
- j = data_.buckets_end(); i != j; ++i)
- {
- for(link_ptr it(i->next_); BOOST_UNORDERED_BORLAND_BOOL(it); it = data::next_group(it))
- seed ^= group_hash(it, (type_wrapper<value_type>*)0);
- }
-
- return seed;
- }
-
- private:
-
             // strong exception safety, no side effects
             bool equal(key_type const& k, value_type const& v) const
             {
@@ -2255,6 +2159,92 @@
             }
         };
 
+ //
+ // Equals - unordered container equality comparison.
+ //
+
+#if BOOST_UNORDERED_EQUIVALENT_KEYS
+ template <typename A, typename KeyType>
+ inline bool group_equals(
+ BOOST_UNORDERED_TABLE_DATA<A>*,
+ typename BOOST_UNORDERED_TABLE_DATA<A>::link_ptr it1,
+ typename BOOST_UNORDERED_TABLE_DATA<A>::link_ptr it2,
+ KeyType*,
+ type_wrapper<KeyType>*)
+ {
+ typedef BOOST_UNORDERED_TABLE_DATA<A> data;
+ return data::group_count(it1) == data::group_count(it2);
+ }
+
+ template <typename A, typename KeyType>
+ inline bool group_equals(
+ BOOST_UNORDERED_TABLE_DATA<A>*,
+ typename BOOST_UNORDERED_TABLE_DATA<A>::link_ptr it1,
+ typename BOOST_UNORDERED_TABLE_DATA<A>::link_ptr it2,
+ KeyType*,
+ void*)
+ {
+ typedef BOOST_UNORDERED_TABLE_DATA<A> data;
+ typename BOOST_UNORDERED_TABLE_DATA<A>::link_ptr end1 = data::next_group(it1);
+ typename BOOST_UNORDERED_TABLE_DATA<A>::link_ptr end2 = data::next_group(it2);
+
+ do {
+ if(data::get_value(it1).second != data::get_value(it2).second) return false;
+ it1 = it1->next_;
+ it2 = it2->next_;
+ } while(it1 != end1 && it2 != end2);
+ return it1 == end1 && it2 == end2;
+ }
+#else
+ template <typename A, typename KeyType>
+ inline bool group_equals(
+ BOOST_UNORDERED_TABLE_DATA<A>*,
+ typename BOOST_UNORDERED_TABLE_DATA<A>::link_ptr,
+ typename BOOST_UNORDERED_TABLE_DATA<A>::link_ptr,
+ KeyType*,
+ type_wrapper<KeyType>*)
+ {
+ return true;
+ }
+
+ template <typename A, typename KeyType>
+ inline bool group_equals(
+ BOOST_UNORDERED_TABLE_DATA<A>*,
+ typename BOOST_UNORDERED_TABLE_DATA<A>::link_ptr it1,
+ typename BOOST_UNORDERED_TABLE_DATA<A>::link_ptr it2,
+ KeyType*,
+ void*)
+ {
+ typedef BOOST_UNORDERED_TABLE_DATA<A> data;
+ return data::get_value(it1).second == data::get_value(it2).second;
+ }
+#endif
+
+ template <typename V, typename K, typename H, typename P, typename A>
+ bool equals(BOOST_UNORDERED_TABLE<V, K, H, P, A> const& t1,
+ BOOST_UNORDERED_TABLE<V, K, H, P, A> const& t2)
+ {
+ typedef BOOST_UNORDERED_TABLE_DATA<A> data;
+ typedef typename data::bucket_ptr bucket_ptr;
+ typedef typename data::link_ptr link_ptr;
+
+ if(t1.size() != t2.size()) return false;
+
+ for(bucket_ptr i = t1.data_.cached_begin_bucket_,
+ j = t1.data_.buckets_end(); i != j; ++i)
+ {
+ for(link_ptr it(i->next_); BOOST_UNORDERED_BORLAND_BOOL(it); it = data::next_group(it))
+ {
+ link_ptr other_pos = t2.find_iterator(t2.extract_key(data::get_value(it)));
+ if(!BOOST_UNORDERED_BORLAND_BOOL(other_pos) ||
+ !group_equals((data*)0, it, other_pos, (K*)0, (type_wrapper<V>*)0))
+ return false;
+ }
+ }
+
+ return true;
+ }
+
         // Iterators
 
         template <typename Alloc> class BOOST_UNORDERED_ITERATOR;

Modified: branches/proto/v4/boost/unordered_map.hpp
==============================================================================
--- branches/proto/v4/boost/unordered_map.hpp (original)
+++ branches/proto/v4/boost/unordered_map.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,6 +32,34 @@
         class Hash = hash<Key>,
         class Pred = std::equal_to<Key>,
         class Alloc = std::allocator<std::pair<const Key, T> > >
+ class unordered_map;
+ template <class K, class T, class H, class P, class A>
+ bool operator==(unordered_map<K, T, H, P, A> const&,
+ unordered_map<K, T, H, P, A> const&);
+ template <class K, class T, class H, class P, class A>
+ bool operator!=(unordered_map<K, T, H, P, A> const&,
+ unordered_map<K, T, H, P, A> const&);
+ template <class K, class T, class H, class P, class A>
+ void swap(unordered_map<K, T, H, P, A>&,
+ unordered_map<K, T, H, P, A>&);
+
+ template <class Key,
+ class T,
+ class Hash = hash<Key>,
+ class Pred = std::equal_to<Key>,
+ class Alloc = std::allocator<std::pair<const Key, T> > >
+ class unordered_multimap;
+ template <class K, class T, class H, class P, class A>
+ bool operator==(unordered_multimap<K, T, H, P, A> const&,
+ unordered_multimap<K, T, H, P, A> const&);
+ template <class K, class T, class H, class P, class A>
+ bool operator!=(unordered_multimap<K, T, H, P, A> const&,
+ unordered_multimap<K, T, H, P, A> const&);
+ template <class K, class T, class H, class P, class A>
+ void swap(unordered_multimap<K, T, H, P, A>&,
+ unordered_multimap<K, T, H, P, A>&);
+
+ template <class Key, class T, class Hash, class Pred, class Alloc>
     class unordered_map
     {
         typedef boost::unordered_detail::hash_types_unique_keys<
@@ -75,8 +103,7 @@
         {
         }
 
- // TODO: Should this be explicit?
- unordered_map(allocator_type const& a)
+ explicit unordered_map(allocator_type const& a)
             : base(boost::unordered_detail::default_initial_bucket_count,
                 hasher(), key_equal(), a)
         {
@@ -122,7 +149,7 @@
         }
 #else
         unordered_map(boost::unordered_detail::move_from<unordered_map<Key, T, Hash, Pred, Alloc> > other)
- : base(other.base, boost::unordered_detail::move_tag())
+ : base(other.source.base, boost::unordered_detail::move_tag())
         {
         }
 
@@ -390,34 +417,37 @@
             base.rehash(n);
         }
         
- friend bool operator==(unordered_map const& m1, unordered_map const& m2)
- {
- return m1.base.equals(m2.base);
- }
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ friend bool operator==(unordered_map const&, unordered_map const&);
+ friend bool operator!=(unordered_map const&, unordered_map const&);
+#else
+ friend bool operator==<>(unordered_map const&, unordered_map const&);
+ friend bool operator!=<>(unordered_map const&, unordered_map const&);
+#endif
+ }; // class template unordered_map
 
- friend bool operator!=(unordered_map const& m1, unordered_map const& m2)
- {
- return !m1.base.equals(m2.base);
- }
+ template <class K, class T, class H, class P, class A>
+ inline bool operator==(unordered_map<K, T, H, P, A> const& m1,
+ unordered_map<K, T, H, P, A> const& m2)
+ {
+ return boost::unordered_detail::equals(m1.base, m2.base);
+ }
 
- friend std::size_t hash_value(unordered_map const& m)
- {
- return m.base.hash_value();
- }
- }; // class template unordered_map
+ template <class K, class T, class H, class P, class A>
+ inline bool operator!=(unordered_map<K, T, H, P, A> const& m1,
+ unordered_map<K, T, H, P, A> const& m2)
+ {
+ return !boost::unordered_detail::equals(m1.base, m2.base);
+ }
 
     template <class K, class T, class H, class P, class A>
- void swap(unordered_map<K, T, H, P, A> &m1,
+ inline void swap(unordered_map<K, T, H, P, A> &m1,
             unordered_map<K, T, H, P, A> &m2)
     {
         m1.swap(m2);
     }
 
- template <class Key,
- class T,
- class Hash = hash<Key>,
- class Pred = std::equal_to<Key>,
- class Alloc = std::allocator<std::pair<const Key, T> > >
+ template <class Key, class T, class Hash, class Pred, class Alloc>
     class unordered_multimap
     {
         typedef boost::unordered_detail::hash_types_equivalent_keys<
@@ -461,7 +491,7 @@
         {
         }
 
- unordered_multimap(allocator_type const& a)
+ explicit unordered_multimap(allocator_type const& a)
             : base(boost::unordered_detail::default_initial_bucket_count,
                 hasher(), key_equal(), a)
         {
@@ -507,7 +537,7 @@
         }
 #else
         unordered_multimap(boost::unordered_detail::move_from<unordered_multimap<Key, T, Hash, Pred, Alloc> > other)
- : base(other.base, boost::unordered_detail::move_tag())
+ : base(other.source.base, boost::unordered_detail::move_tag())
         {
         }
 
@@ -759,24 +789,31 @@
             base.rehash(n);
         }
 
- friend bool operator==(unordered_multimap const& m1, unordered_multimap const& m2)
- {
- return m1.base.equals(m2.base);
- }
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ friend bool operator==(unordered_multimap const&, unordered_multimap const&);
+ friend bool operator!=(unordered_multimap const&, unordered_multimap const&);
+#else
+ friend bool operator==<>(unordered_multimap const&, unordered_multimap const&);
+ friend bool operator!=<>(unordered_multimap const&, unordered_multimap const&);
+#endif
+ }; // class template unordered_multimap
 
- friend bool operator!=(unordered_multimap const& m1, unordered_multimap const& m2)
- {
- return !m1.base.equals(m2.base);
- }
+ template <class K, class T, class H, class P, class A>
+ inline bool operator==(unordered_multimap<K, T, H, P, A> const& m1,
+ unordered_multimap<K, T, H, P, A> const& m2)
+ {
+ return boost::unordered_detail::equals(m1.base, m2.base);
+ }
 
- friend std::size_t hash_value(unordered_multimap const& m)
- {
- return m.base.hash_value();
- }
- }; // class template unordered_multimap
+ template <class K, class T, class H, class P, class A>
+ inline bool operator!=(unordered_multimap<K, T, H, P, A> const& m1,
+ unordered_multimap<K, T, H, P, A> const& m2)
+ {
+ return !boost::unordered_detail::equals(m1.base, m2.base);
+ }
 
     template <class K, class T, class H, class P, class A>
- void swap(unordered_multimap<K, T, H, P, A> &m1,
+ inline void swap(unordered_multimap<K, T, H, P, A> &m1,
             unordered_multimap<K, T, H, P, A> &m2)
     {
         m1.swap(m2);

Modified: branches/proto/v4/boost/unordered_set.hpp
==============================================================================
--- branches/proto/v4/boost/unordered_set.hpp (original)
+++ branches/proto/v4/boost/unordered_set.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -31,6 +31,33 @@
         class Hash = hash<Value>,
         class Pred = std::equal_to<Value>,
         class Alloc = std::allocator<Value> >
+ class unordered_set;
+ template <class T, class H, class P, class A>
+ bool operator==(unordered_set<T, H, P, A> const&,
+ unordered_set<T, H, P, A> const&);
+ template <class T, class H, class P, class A>
+ bool operator!=(unordered_set<T, H, P, A> const&,
+ unordered_set<T, H, P, A> const&);
+ template <class T, class H, class P, class A>
+ void swap(unordered_set<T, H, P, A> &m1,
+ unordered_set<T, H, P, A> &m2);
+
+ template <class Value,
+ class Hash = hash<Value>,
+ class Pred = std::equal_to<Value>,
+ class Alloc = std::allocator<Value> >
+ class unordered_multiset;
+ template <class T, class H, class P, class A>
+ bool operator==(unordered_multiset<T, H, P, A> const&,
+ unordered_multiset<T, H, P, A> const&);
+ template <class T, class H, class P, class A>
+ bool operator!=(unordered_multiset<T, H, P, A> const&,
+ unordered_multiset<T, H, P, A> const&);
+ template <class T, class H, class P, class A>
+ void swap(unordered_multiset<T, H, P, A> &m1,
+ unordered_multiset<T, H, P, A> &m2);
+
+ template <class Value, class Hash, class Pred, class Alloc>
     class unordered_set
     {
         typedef boost::unordered_detail::hash_types_unique_keys<
@@ -73,8 +100,7 @@
         {
         }
 
- // TODO: Should this be explicit?
- unordered_set(allocator_type const& a)
+ explicit unordered_set(allocator_type const& a)
             : base(boost::unordered_detail::default_initial_bucket_count,
                 hasher(), key_equal(), a)
         {
@@ -119,7 +145,7 @@
         }
 #else
         unordered_set(boost::unordered_detail::move_from<unordered_set<Value, Hash, Pred, Alloc> > other)
- : base(other.base, boost::unordered_detail::move_tag())
+ : base(other.source.base, boost::unordered_detail::move_tag())
         {
         }
 
@@ -361,33 +387,37 @@
             base.rehash(n);
         }
 
- friend bool operator==(unordered_set const& m1, unordered_set const& m2)
- {
- return m1.base.equals(m2.base);
- }
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ friend bool operator==(unordered_set const&, unordered_set const&);
+ friend bool operator!=(unordered_set const&, unordered_set const&);
+#else
+ friend bool operator==<>(unordered_set const&, unordered_set const&);
+ friend bool operator!=<>(unordered_set const&, unordered_set const&);
+#endif
+ }; // class template unordered_set
 
- friend bool operator!=(unordered_set const& m1, unordered_set const& m2)
- {
- return !m1.base.equals(m2.base);
- }
+ template <class T, class H, class P, class A>
+ inline bool operator==(unordered_set<T, H, P, A> const& m1,
+ unordered_set<T, H, P, A> const& m2)
+ {
+ return boost::unordered_detail::equals(m1.base, m2.base);
+ }
 
- friend std::size_t hash_value(unordered_set const& m)
- {
- return m.base.hash_value();
- }
- }; // class template unordered_set
+ template <class T, class H, class P, class A>
+ inline bool operator!=(unordered_set<T, H, P, A> const& m1,
+ unordered_set<T, H, P, A> const& m2)
+ {
+ return !boost::unordered_detail::equals(m1.base, m2.base);
+ }
 
     template <class T, class H, class P, class A>
- void swap(unordered_set<T, H, P, A> &m1,
+ inline void swap(unordered_set<T, H, P, A> &m1,
             unordered_set<T, H, P, A> &m2)
     {
         m1.swap(m2);
     }
 
- template <class Value,
- class Hash = hash<Value>,
- class Pred = std::equal_to<Value>,
- class Alloc = std::allocator<Value> >
+ template <class Value, class Hash, class Pred, class Alloc>
     class unordered_multiset
     {
         typedef boost::unordered_detail::hash_types_equivalent_keys<
@@ -430,8 +460,7 @@
         {
         }
 
- // TODO: Should this be explicit?
- unordered_multiset(allocator_type const& a)
+ explicit unordered_multiset(allocator_type const& a)
             : base(boost::unordered_detail::default_initial_bucket_count,
                 hasher(), key_equal(), a)
         {
@@ -476,7 +505,7 @@
         }
 #else
         unordered_multiset(boost::unordered_detail::move_from<unordered_multiset<Value, Hash, Pred, Alloc> > other)
- : base(other.base, boost::unordered_detail::move_tag())
+ : base(other.source.base, boost::unordered_detail::move_tag())
         {
         }
 
@@ -715,24 +744,31 @@
             base.rehash(n);
         }
 
- friend bool operator==(unordered_multiset const& m1, unordered_multiset const& m2)
- {
- return m1.base.equals(m2.base);
- }
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ friend bool operator==(unordered_multiset const&, unordered_multiset const&);
+ friend bool operator!=(unordered_multiset const&, unordered_multiset const&);
+#else
+ friend bool operator==<>(unordered_multiset const&, unordered_multiset const&);
+ friend bool operator!=<>(unordered_multiset const&, unordered_multiset const&);
+#endif
+ }; // class template unordered_multiset
 
- friend bool operator!=(unordered_multiset const& m1, unordered_multiset const& m2)
- {
- return !m1.base.equals(m2.base);
- }
+ template <class T, class H, class P, class A>
+ inline bool operator==(unordered_multiset<T, H, P, A> const& m1,
+ unordered_multiset<T, H, P, A> const& m2)
+ {
+ return boost::unordered_detail::equals(m1.base, m2.base);
+ }
 
- friend std::size_t hash_value(unordered_multiset const& m)
- {
- return m.base.hash_value();
- }
- }; // class template unordered_multiset
+ template <class T, class H, class P, class A>
+ inline bool operator!=(unordered_multiset<T, H, P, A> const& m1,
+ unordered_multiset<T, H, P, A> const& m2)
+ {
+ return !boost::unordered_detail::equals(m1.base, m2.base);
+ }
 
     template <class T, class H, class P, class A>
- void swap(unordered_multiset<T, H, P, A> &m1,
+ inline void swap(unordered_multiset<T, H, P, A> &m1,
             unordered_multiset<T, H, P, A> &m2)
     {
         m1.swap(m2);

Modified: branches/proto/v4/boost/utility/enable_if.hpp
==============================================================================
--- branches/proto/v4/boost/utility/enable_if.hpp (original)
+++ branches/proto/v4/boost/utility/enable_if.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
+// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
 // Jeremiah Willcock (jewillco at osl.iu.edu)
 // Andrew Lumsdaine (lums at osl.iu.edu)
 

Modified: branches/proto/v4/boost/version.hpp
==============================================================================
--- branches/proto/v4/boost/version.hpp (original)
+++ branches/proto/v4/boost/version.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,19 +15,19 @@
 // will cause a recompile every time a new boost version is
 // released.
 //
-// BOOST_VERSION % 100 is the sub-minor version
+// 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 103500
+#define BOOST_VERSION 103600
 
 //
 // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
-// but as a *string* in the form "x_y" where x is the major version
-// number and y is the minor version number. This is used by
-// <config/auto_link.hpp> to select which library version to link to.
+// 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_35"
+#define BOOST_LIB_VERSION "1_36"
 
 #endif
 

Modified: branches/proto/v4/boost/wave/cpplexer/cpp_lex_token.hpp
==============================================================================
--- branches/proto/v4/boost/wave/cpplexer/cpp_lex_token.hpp (original)
+++ branches/proto/v4/boost/wave/cpplexer/cpp_lex_token.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,6 +21,7 @@
 #include <boost/wave/token_ids.hpp>
 #include <boost/wave/language_support.hpp>
 
+#include <boost/throw_exception.hpp>
 #include <boost/pool/singleton_pool.hpp>
 
 // this must occur after all of the includes and before any code appears
@@ -147,7 +148,7 @@
         
     void *ret = pool_type::malloc();
     if (0 == ret)
- throw std::bad_alloc();
+ boost::throw_exception(std::bad_alloc());
     return ret;
 }
 

Modified: branches/proto/v4/boost/wave/grammars/cpp_expression_grammar.hpp
==============================================================================
--- branches/proto/v4/boost/wave/grammars/cpp_expression_grammar.hpp (original)
+++ branches/proto/v4/boost/wave/grammars/cpp_expression_grammar.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -755,7 +755,10 @@
     parse_info<iterator_type> hit(first);
     closure_value result; // expression result
     
- try {
+#if !defined(BOOST_NO_EXCEPTIONS)
+ try
+#endif
+ {
         expression_grammar g; // expression grammar
         hit = parse (first, last, g[spirit_assign_actor(result)],
                      ch_p(T_SPACE) | ch_p(T_CCOMMENT) | ch_p(T_CPPCOMMENT));
@@ -768,6 +771,7 @@
                     expression = "<empty expression>";
                 BOOST_WAVE_THROW(preprocess_exception, ill_formed_expression,
                     expression.c_str(), act_pos);
+ return false;
             }
             else {
             // as the if_block_status is false no errors will be reported
@@ -775,17 +779,20 @@
             }
         }
     }
+#if !defined(BOOST_NO_EXCEPTIONS)
     catch (boost::wave::preprocess_exception const& e) {
     // expression is illformed
         if (if_block_status) {
             boost::throw_exception(e);
+ return false;
         }
- else {
+ else {
         // as the if_block_status is false no errors will be reported
             return false;
         }
     }
-
+#endif
+
     if (!hit.full) {
     // The token list starts with a valid expression, but there remains
     // something. If the remainder consists out of whitespace only, the
@@ -812,6 +819,7 @@
                         expression = "<empty expression>";
                     BOOST_WAVE_THROW(preprocess_exception, ill_formed_expression,
                         expression.c_str(), act_pos);
+ return false;
                 }
                 else {
                 // as the if_block_status is false no errors will be reported

Modified: branches/proto/v4/boost/wave/util/cpp_include_paths.hpp
==============================================================================
--- branches/proto/v4/boost/wave/util/cpp_include_paths.hpp (original)
+++ branches/proto/v4/boost/wave/util/cpp_include_paths.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -115,15 +115,15 @@
 //
 // Any directories specified with the 'add_include_path()' function before
 // the function 'set_sys_include_delimiter()' is called are searched only
-// for the case of '#include "file"' directives, they are not searched for
-// '#include <file>' directives. If additional directories are specified
+// for the case of '#include "file"' directives, they are not searched for
+// '#include <file>' directives. If additional directories are specified
 // with the 'add_include_path()' function after a call to the function
 // 'set_sys_include_delimiter()', these directories are searched for all
 // '#include' directives.
 //
 // In addition, a call to the function 'set_sys_include_delimiter()'
 // inhibits the use of the current directory as the first search directory
-// for '#include "file"' directives. Therefore, the current directory is
+// for '#include "file"' directives. Therefore, the current directory is
 // searched only if it is requested explicitly with a call to the function
 // 'add_include_path(".")'.
 //

Modified: branches/proto/v4/boost/wave/util/cpp_macromap.hpp
==============================================================================
--- branches/proto/v4/boost/wave/util/cpp_macromap.hpp (original)
+++ branches/proto/v4/boost/wave/util/cpp_macromap.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -762,7 +762,7 @@
 #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
                             if (boost::wave::need_variadics(ctx.get_language())) {
                             // store a placemarker as the argument
- argument->push_back(token_type(T_PLACEMARKER, "\xA7", // "§",
+ argument->push_back(token_type(T_PLACEMARKER, "\xA7",
                                     (*next).get_position()));
                                 ++count_arguments;
                             }
@@ -787,7 +787,7 @@
 #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
                     if (boost::wave::need_variadics(ctx.get_language())) {
                     // store a placemarker as the argument
- argument->push_back(token_type(T_PLACEMARKER, "\xA7", // "§",
+ argument->push_back(token_type(T_PLACEMARKER, "\xA7",
                             (*next).get_position()));
                         ++count_arguments;
                     }

Modified: branches/proto/v4/boost/wave/util/macro_helpers.hpp
==============================================================================
--- branches/proto/v4/boost/wave/util/macro_helpers.hpp (original)
+++ branches/proto/v4/boost/wave/util/macro_helpers.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -112,7 +112,7 @@
             if (IS_CATEGORY(*it, WhiteSpaceTokenType) || T_NEWLINE == id) {
                 if (!was_whitespace) {
                 // C++ standard 16.3.2.2 [cpp.stringize]
- // Each occurrence of white space between the argument’s
+ // Each occurrence of white space between the argument's
                 // preprocessing tokens becomes a single space character in the
                 // character string literal.
                     result += " ";
@@ -126,7 +126,7 @@
             }
             else
 #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
- if (T_PLACEMARKER != id)
+ if (T_PLACEMARKER != id)
 #endif
             {
             // now append this token to the string
@@ -169,7 +169,7 @@
                 if (IS_CATEGORY(*it, WhiteSpaceTokenType) || T_NEWLINE == id) {
                     if (!was_whitespace) {
                     // C++ standard 16.3.2.2 [cpp.stringize]
- // Each occurrence of white space between the argument’s
+ // Each occurrence of white space between the argument's
                     // preprocessing tokens becomes a single space character in the
                     // character string literal.
                         result += " ";

Modified: branches/proto/v4/boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/core/matcher/assert_bol_matcher.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,7 @@
 # pragma once
 #endif
 
+#include <boost/next_prior.hpp>
 #include <boost/xpressive/detail/detail_fwd.hpp>
 #include <boost/xpressive/detail/core/quant_style.hpp>
 #include <boost/xpressive/detail/core/state.hpp>
@@ -28,6 +29,8 @@
     struct assert_bol_matcher
       : assert_line_base<Traits>
     {
+ typedef typename Traits::char_type char_type;
+
         assert_bol_matcher(Traits const &traits)
           : assert_line_base<Traits>(traits)
         {
@@ -43,9 +46,20 @@
                     return false;
                 }
             }
- else if(!this->is_line_break(state))
+ else
             {
- return false;
+ char_type ch = *boost::prior(state.cur_);
+
+ // If the previous character is not a newline, we're not at the start of a line
+ if(!traits_cast<Traits>(state).isctype(ch, this->newline_))
+ {
+ return false;
+ }
+ // There is no line-break between \r and \n
+ else if(ch == this->cr_ && !state.eos() && *state.cur_ == this->nl_)
+ {
+ return false;
+ }
             }
 
             return next.match(state);

Modified: branches/proto/v4/boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/core/matcher/assert_eol_matcher.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,7 @@
 # pragma once
 #endif
 
+#include <boost/next_prior.hpp>
 #include <boost/xpressive/detail/detail_fwd.hpp>
 #include <boost/xpressive/detail/core/quant_style.hpp>
 #include <boost/xpressive/detail/core/state.hpp>
@@ -28,6 +29,8 @@
     struct assert_eol_matcher
       : assert_line_base<Traits>
     {
+ typedef typename Traits::char_type char_type;
+
         assert_eol_matcher(Traits const &traits)
           : assert_line_base<Traits>(traits)
         {
@@ -43,9 +46,20 @@
                     return false;
                 }
             }
- else if((state.bos() && !state.flags_.match_prev_avail_) || !this->is_line_break(state))
+ else
             {
- return false;
+ char_type ch = *state.cur_;
+
+ // If the current character is not a newline, we're not at the end of a line
+ if(!traits_cast<Traits>(state).isctype(ch, this->newline_))
+ {
+ return false;
+ }
+ // There is no line-break between \r and \n
+ else if(ch == this->nl_ && (!state.bos() || state.flags_.match_prev_avail_) && *boost::prior(state.cur_) == this->cr_)
+ {
+ return false;
+ }
             }
 
             return next.match(state);

Modified: branches/proto/v4/boost/xpressive/detail/core/matcher/assert_line_base.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/core/matcher/assert_line_base.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/core/matcher/assert_line_base.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -38,26 +38,6 @@
         {
         }
 
- template<typename BidiIter>
- bool is_line_break(match_state<BidiIter> &state) const
- {
- BOOST_ASSERT(!state.bos() || state.flags_.match_prev_avail_);
- BidiIter tmp = state.cur_;
- char_type ch = *--tmp;
-
- if(traits_cast<Traits>(state).isctype(ch, this->newline_))
- {
- // there is no line-break between \r and \n
- if(this->cr_ != ch || state.eos() || this->nl_ != *state.cur_)
- {
- return true;
- }
- }
-
- return false;
- }
-
- private:
         char_class_type newline_;
         char_type nl_, cr_;
     };

Modified: branches/proto/v4/boost/xpressive/detail/dynamic/parser_traits.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/dynamic/parser_traits.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/dynamic/parser_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -115,13 +115,13 @@
         case BOOST_XPR_CHAR_(char_type, ')'): ++begin; return token_group_end;
         case BOOST_XPR_CHAR_(char_type, '|'): ++begin; return token_alternate;
         case BOOST_XPR_CHAR_(char_type, '['): ++begin; return token_charset_begin;
- case BOOST_XPR_CHAR_(char_type, ']'): ++begin; return token_charset_end;
 
         case BOOST_XPR_CHAR_(char_type, '*'):
         case BOOST_XPR_CHAR_(char_type, '+'):
         case BOOST_XPR_CHAR_(char_type, '?'):
             return token_invalid_quantifier;
 
+ case BOOST_XPR_CHAR_(char_type, ']'):
         case BOOST_XPR_CHAR_(char_type, '{'):
         default:
             return token_literal;

Modified: branches/proto/v4/boost/xpressive/detail/static/is_pure.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/static/is_pure.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/static/is_pure.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -203,6 +203,14 @@
         BOOST_MPL_ASSERT_RELATION(0, !=, (width_of<Expr, Char>::value));
     };
 
+ template<typename Expr, typename Char>
+ struct use_simple_repeat<Expr &, Char>
+ : use_simple_repeat_<Expr, Char>
+ {
+ // should never try to repeat something of 0-width
+ BOOST_MPL_ASSERT_RELATION(0, !=, (width_of<Expr, Char>::value));
+ };
+
 }}} // namespace boost::xpressive::detail
 
 #endif

Modified: branches/proto/v4/boost/xpressive/detail/static/transforms/as_action.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/static/transforms/as_action.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/static/transforms/as_action.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -45,6 +45,13 @@
         static Nbr nbr() { return Nbr(); }
     };
 
+ template<typename Nbr, typename Matcher>
+ struct read_attr<Nbr, Matcher &>
+ {
+ typedef Nbr nbr_type;
+ typedef Matcher matcher_type;
+ };
+
 }}}
 
 namespace boost { namespace xpressive { namespace grammar_detail

Modified: branches/proto/v4/boost/xpressive/detail/static/width_of.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/detail/static/width_of.hpp (original)
+++ branches/proto/v4/boost/xpressive/detail/static/width_of.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -202,14 +202,10 @@
     struct width_of<Expr, Char, keeper_tag>
       : unknown_width
     {
- // If this assert fires, you put something that doesn't require backtracking
- // in a keep(). In that case, the keep() is not necessary and you should just
- // remove it.
- BOOST_MPL_ASSERT_RELATION(
- (width_of<typename Expr::proto_child_ref0::proto_base_expr, Char>::value)
- , ==
- , unknown_width::value
- );
+ // TODO: keep() now has a second meaning: execute actions immediately.
+ // In that sense, it is perfectly reasonable to put a fixed-width
+ // sub-expression in a keep. Can fixed-width keep() sub-expressions
+ // use the simple_repeat_matcher?
     };
 
     template<typename Expr, typename Char>

Modified: branches/proto/v4/boost/xpressive/match_results.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/match_results.hpp (original)
+++ branches/proto/v4/boost/xpressive/match_results.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -826,6 +826,20 @@
 
     /// INTERNAL ONLY
     ///
+ template<typename OutputIterator, typename Char>
+ OutputIterator format2_(OutputIterator out, Char const *const &result) const
+ {
+ Char const *tmp = result;
+ BOOST_ASSERT(0 != tmp);
+ for(; 0 != *tmp; ++tmp, ++out)
+ {
+ *out = *tmp;
+ }
+ return out;
+ }
+
+ /// INTERNAL ONLY
+ ///
     template<typename OutputIterator, typename ForwardRange>
     OutputIterator format_
     (

Modified: branches/proto/v4/boost/xpressive/regex_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/regex_iterator.hpp (original)
+++ branches/proto/v4/boost/xpressive/regex_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -40,13 +40,13 @@
       , BidiIter cur
       , BidiIter end
       , BidiIter next_search
- , basic_regex<BidiIter> const *rex
+ , basic_regex<BidiIter> const &rex
       , regex_constants::match_flag_type flags
       , bool not_null = false
     )
- : what_()
- , state_(begin, end, what_, *access::get_regex_impl(*rex), flags)
- , rex_(rex)
+ : rex_(rex)
+ , what_()
+ , state_(begin, end, what_, *access::get_regex_impl(rex_), flags)
       , flags_(flags)
       , not_null_(not_null)
     {
@@ -56,8 +56,8 @@
 
     bool next()
     {
- this->state_.reset(this->what_, *access::get_regex_impl(*this->rex_));
- if(!regex_search_impl(this->state_, *this->rex_, this->not_null_))
+ this->state_.reset(this->what_, *access::get_regex_impl(this->rex_));
+ if(!regex_search_impl(this->state_, this->rex_, this->not_null_))
         {
             return false;
         }
@@ -73,17 +73,17 @@
 
     bool equal_to(regex_iterator_impl<BidiIter> const &that) const
     {
- return this->rex_ == that.rex_
- && this->state_.begin_ == that.state_.begin_
- && this->state_.cur_ == that.state_.cur_
- && this->state_.end_ == that.state_.end_
- && this->flags_ == that.flags_
+ return this->rex_.regex_id() == that.rex_.regex_id()
+ && this->state_.begin_ == that.state_.begin_
+ && this->state_.cur_ == that.state_.cur_
+ && this->state_.end_ == that.state_.end_
+ && this->flags_ == that.flags_
             ;
     }
 
+ basic_regex<BidiIter> rex_;
     match_results<BidiIter> what_;
     match_state<BidiIter> state_;
- basic_regex<BidiIter> const *const rex_;
     regex_constants::match_flag_type const flags_;
     bool not_null_;
 };
@@ -118,7 +118,7 @@
       , basic_regex<BidiIter> const &rex
       , regex_constants::match_flag_type flags = regex_constants::match_default
     )
- : impl_(new impl_type_(begin, begin, end, begin, &rex, flags))
+ : impl_(new impl_type_(begin, begin, end, begin, rex, flags))
     {
         this->next_();
     }
@@ -132,7 +132,7 @@
       , detail::let_<LetExpr> const &args
       , regex_constants::match_flag_type flags = regex_constants::match_default
     )
- : impl_(new impl_type_(begin, begin, end, begin, &rex, flags))
+ : impl_(new impl_type_(begin, begin, end, begin, rex, flags))
     {
         detail::bind_args(args, this->impl_->what_);
         this->next_();

Modified: branches/proto/v4/boost/xpressive/regex_token_iterator.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/regex_token_iterator.hpp (original)
+++ branches/proto/v4/boost/xpressive/regex_token_iterator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -40,7 +40,7 @@
       , BidiIter cur
       , BidiIter end
       , BidiIter next_search
- , basic_regex<BidiIter> const *rex
+ , basic_regex<BidiIter> const &rex
       , regex_constants::match_flag_type flags = regex_constants::match_default
       , std::vector<int> subs = std::vector<int>(1, 0)
       , int n = -2
@@ -159,7 +159,7 @@
       , BidiIter end
       , basic_regex<BidiIter> const &rex
     )
- : impl_(new impl_type_(begin, begin, end, begin, &rex))
+ : impl_(new impl_type_(begin, begin, end, begin, rex))
     {
         this->next_();
     }
@@ -177,7 +177,7 @@
       , basic_regex<BidiIter> const &rex
       , detail::let_<LetExpr> const &args
     )
- : impl_(new impl_type_(begin, begin, end, begin, &rex))
+ : impl_(new impl_type_(begin, begin, end, begin, rex))
     {
         detail::bind_args(args, this->impl_->iter_.what_);
         this->next_();
@@ -199,7 +199,7 @@
       , Subs const &subs
       , regex_constants::match_flag_type flags = regex_constants::match_default
     )
- : impl_(new impl_type_(begin, begin, end, begin, &rex, flags, detail::to_vector(subs)))
+ : impl_(new impl_type_(begin, begin, end, begin, rex, flags, detail::to_vector(subs)))
     {
         this->next_();
     }
@@ -222,7 +222,7 @@
       , detail::let_<LetExpr> const &args
       , regex_constants::match_flag_type flags = regex_constants::match_default
     )
- : impl_(new impl_type_(begin, begin, end, begin, &rex, flags, detail::to_vector(subs)))
+ : impl_(new impl_type_(begin, begin, end, begin, rex, flags, detail::to_vector(subs)))
     {
         detail::bind_args(args, this->impl_->iter_.what_);
         this->next_();

Modified: branches/proto/v4/boost/xpressive/traits/c_regex_traits.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/traits/c_regex_traits.hpp (original)
+++ branches/proto/v4/boost/xpressive/traits/c_regex_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -253,7 +253,7 @@
     /// such that if the character sequence [G1, G2) sorts before the character sequence [H1, H2)
     /// then v.transform(G1, G2) < v.transform(H1, H2).
     ///
- /// \attention Not used in xpressive 1.0
+ /// \attention Not currently used
     template<typename FwdIter>
     static string_type transform(FwdIter begin, FwdIter end)
     {
@@ -265,7 +265,7 @@
     /// when character case is not considered then
     /// v.transform_primary(G1, G2) < v.transform_primary(H1, H2).
     ///
- /// \attention Not used in xpressive 1.0
+ /// \attention Not currently used
     template<typename FwdIter>
     static string_type transform_primary(FwdIter begin, FwdIter end)
     {
@@ -276,7 +276,7 @@
     /// consisting of the character sequence designated by the iterator range [F1, F2).
     /// Returns an empty string if the character sequence is not a valid collating element.
     ///
- /// \attention Not used in xpressive 1.0
+ /// \attention Not currently used
     template<typename FwdIter>
     static string_type lookup_collatename(FwdIter begin, FwdIter end)
     {

Modified: branches/proto/v4/boost/xpressive/traits/cpp_regex_traits.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/traits/cpp_regex_traits.hpp (original)
+++ branches/proto/v4/boost/xpressive/traits/cpp_regex_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -451,7 +451,7 @@
     /// such that if the character sequence [G1, G2) sorts before the character sequence [H1, H2)
     /// then v.transform(G1, G2) \< v.transform(H1, H2).
     ///
- /// \attention Not used in xpressive 1.0
+ /// \attention Not currently used
     template<typename FwdIter>
     string_type transform(FwdIter begin, FwdIter end) const
     {
@@ -467,7 +467,7 @@
     /// when character case is not considered then
     /// v.transform_primary(G1, G2) \< v.transform_primary(H1, H2).
     ///
- /// \attention Not used in xpressive 1.0
+ /// \attention Not currently used
     template<typename FwdIter>
     string_type transform_primary(FwdIter begin, FwdIter end) const
     {
@@ -479,7 +479,7 @@
     /// consisting of the character sequence designated by the iterator range [F1, F2).
     /// Returns an empty string if the character sequence is not a valid collating element.
     ///
- /// \attention Not used in xpressive 1.0
+ /// \attention Not currently used
     template<typename FwdIter>
     string_type lookup_collatename(FwdIter begin, FwdIter end) const
     {

Modified: branches/proto/v4/boost/xpressive/traits/null_regex_traits.hpp
==============================================================================
--- branches/proto/v4/boost/xpressive/traits/null_regex_traits.hpp (original)
+++ branches/proto/v4/boost/xpressive/traits/null_regex_traits.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -135,7 +135,7 @@
     /// such that if the character sequence [G1, G2) sorts before the character sequence [H1, H2)
     /// then v.transform(G1, G2) < v.transform(H1, H2).
     ///
- /// \attention Not used in xpressive 1.0
+ /// \attention Not currently used
     template<typename FwdIter>
     static string_type transform(FwdIter begin, FwdIter end)
     {
@@ -147,7 +147,7 @@
     /// when character case is not considered then
     /// v.transform_primary(G1, G2) < v.transform_primary(H1, H2).
     ///
- /// \attention Not used in xpressive 1.0
+ /// \attention Not currently used
     template<typename FwdIter>
     static string_type transform_primary(FwdIter begin, FwdIter end)
     {
@@ -158,7 +158,7 @@
     /// consisting of the character sequence designated by the iterator range [F1, F2).
     /// Returns an empty string if the character sequence is not a valid collating element.
     ///
- /// \attention Not used in xpressive 1.0
+ /// \attention Not currently used
     template<typename FwdIter>
     static string_type lookup_collatename(FwdIter begin, FwdIter end)
     {

Modified: branches/proto/v4/doc/Jamfile.v2
==============================================================================
--- branches/proto/v4/doc/Jamfile.v2 (original)
+++ branches/proto/v4/doc/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,6 +6,8 @@
 project boost/doc ;
 import boostbook : boostbook ;
 
+alias asio : ../libs/asio/doc//asio/<xsl:param>boost.libraries=../../libs/libraries.htm ;
+
 boostbook doc
     :
     src/boost.xml
@@ -41,8 +43,8 @@
     <dependency>../libs/interprocess/doc//interprocess
     <dependency>../libs/intrusive/doc//autodoc.xml
     <dependency>../libs/intrusive/doc//intrusive
+ <dependency>../libs/units/doc//units
     <dependency>../libs/unordered/doc//unordered
- <dependency>../libs/asio/doc//asio
     <dependency>../libs/thread/doc//thread
 
     ## Add path references to the QuickBook generated docs...
@@ -61,6 +63,7 @@
     <implicit-dependency>../libs/mpi/doc//mpi
     <implicit-dependency>../libs/interprocess/doc//interprocess
     <implicit-dependency>../libs/intrusive/doc//intrusive
+ <implicit-dependency>../libs/units/doc//units
     <implicit-dependency>../libs/unordered/doc//unordered
     <implicit-dependency>../libs/thread/doc//thread
 

Modified: branches/proto/v4/doc/html/minimal.css
==============================================================================
--- branches/proto/v4/doc/html/minimal.css (original)
+++ branches/proto/v4/doc/html/minimal.css 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -23,7 +23,7 @@
       Font sizes
 *******************************************************************************/
 
-p, td, li { font-size: 10pt; }
+p, td, li, blockquote { font-size: 10pt; }
 pre { font-size: 9pt; }
 
 /*** end ***/
\ No newline at end of file

Modified: branches/proto/v4/doc/src/boost.xml
==============================================================================
--- branches/proto/v4/doc/src/boost.xml (original)
+++ branches/proto/v4/doc/src/boost.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -54,6 +54,18 @@
     <xi:include href="../../libs/any/doc/any.xml"/>
     <xi:include href="../../libs/array/doc/array.xml"/>
 
+ <library name="Asio" dirname="asio" html-only="1">
+ <libraryinfo>
+ <author>
+ <firstname>Christopher</firstname>
+ <surname>Kohlhoff</surname>
+ </author>
+
+ <librarypurpose>Portable networking, including sockets, timers, hostname resolution and socket iostreams.</librarypurpose>
+ <librarycategory name="category:io"/>
+ </libraryinfo>
+ </library>
+
    <library name="Bind" dirname="bind" html-only="1">
      <libraryinfo>
        <author>
@@ -711,6 +723,8 @@
      </libraryinfo>
    </library>
 
+ <xi:include href="units.xml"/>
+
    <xi:include href="unordered.xml"/>
 
    <library name="Utility" dirname="utility" html-only="1">

Modified: branches/proto/v4/index.html
==============================================================================
--- branches/proto/v4/index.html (original)
+++ branches/proto/v4/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,7 @@
         <a href="index.html">
         <img src="boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86" border="0"></a></td>
       <td width="337" align="middle">
- <h2 style="text-align: center">Release 1.35.0</h2>
+ <h2 style="text-align: center">Release 1.36.0</h2>
       </td>
     </tr>
   </table>
@@ -55,9 +55,9 @@
 
   <h3>Changes in this release</h3>
 
- <p>This release includes <i><b>12 new libraries</b></i> and
- maintenance fixes to existing libraries. See
- <a href="http://www.boost.org/users/history/version_1_35_0">Release
+ <p>This release includes <i><b>4 new libraries</b></i> and
+ updates for many existing libraries. See
+ <a href="http://www.boost.org/users/history/version_1_36_0">Release
   History</a> for more information.</p>
 
   <h3>Getting Started</h3>

Modified: branches/proto/v4/libs/accumulators/doc/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/accumulators/doc/Jamfile.v2 (original)
+++ branches/proto/v4/libs/accumulators/doc/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,10 +7,11 @@
 import doxygen ;
 import quickbook ;
 
-# Use Doxygen to emimt a tagfile with the definition of depends_on<>.
-# That tagfile will be used by Doxygen below when generating the Statistics
-# Library Reference. This is all so that the Doxygen-generated documentation
-# for the features shows the dependency relationships between them.
+
+# Use Doxygen to emit a tagfile with the definition of depends_on<>. That
+# tagfile will be used by Doxygen below when generating the Statistics Library
+# Reference. This is all so that the Doxygen-generated documentation for the
+# features shows the dependency relationships between them.
 doxygen tagfile
     :
         ../../../boost/accumulators/framework/depends_on.hpp
@@ -48,9 +49,8 @@
         <reftitle>"Accumulators Framework Reference"
     ;
 
-# Generate the HTML form of the stats documentation, as this
-# causes Doxygen to generate .png images for the LaTeX formulas
-# embedded in the doc comments.
+# Generate the HTML form of the stats documentation, as this causes Doxygen to
+# generate .png images for the LaTeX formulas embedded in the doc comments.
 doxygen statsdoc.html
     :
         [ glob ../../../boost/accumulators/statistics*.hpp ]
@@ -84,8 +84,8 @@
     echo "Stamped" > "$(<)"
 }
 
-# This causes the png files built above to be copied
-# into the html/images/accumulators directory.
+# This causes the png files built above to be copied into the
+# html/images/accumulators directory.
 make statsdoclatex.tag
     : statsdoc.html
     : @copy-latex-pngs

Modified: branches/proto/v4/libs/accumulators/doc/accumulators.qbk
==============================================================================
--- branches/proto/v4/libs/accumulators/doc/accumulators.qbk (original)
+++ branches/proto/v4/libs/accumulators/doc/accumulators.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,9 +32,9 @@
 [def _left_or_right_ '''<replaceable>left-or-right</replaceable>''']
 [def _implementation_defined_ '''<replaceable>implementation-defined</replaceable>''']
 [def _boost_ [@http://www.boost.org Boost]]
-[def _mpl_ [@../../libs/mpl MPL]]
+[def _mpl_ [@../../libs/mpl/index.html MPL]]
 [def _mpl_lambda_expression_ [@../../libs/mpl/doc/refmanual/lambda-expression.html MPL Lambda Expression]]
-[def _parameter_ [@../../libs/parameter Boost.Parameter]]
+[def _parameter_ [@../../libs/parameter/index.html Boost.Parameter]]
 [def _accumulator_set_ [classref boost::accumulators::accumulator_set `accumulator_set<>`]]
 [def _accumulator_base_ [classref boost::accumulators::accumulator_base `accumulator_base`]]
 [def _depends_on_ [classref boost::accumulators::depends_on `depends_on<>`]]
@@ -823,15 +823,158 @@
 handles this by allowing several different accumulators satisfy the same
 feature.
 
+[*Aliasing feature dependencies with [^feature_of<>]]
 
-* Mapping multiple impls to the same feature with feature_of
-* Creating aliases for features with as_feature
+Imagine that you would like to implement the hypothetical ['fubar] statistic,
+and that you know two ways to calculate fubar on a bunch of samples: an
+accurate but slow calculation and an approximate but fast calculation. You
+might opt to make the accurate calculation the default, so you implement
+two accumulators and call them `impl::fubar_impl` and `impl::fast_fubar_impl`.
+You would also define the `tag::fubar` and `tag::fast_fubar` features as described
+[link accumulators.user_s_guide.the_accumulators_framework.extending_the_accumulators_framework.defining_a_new_feature above].
+Now, you would like to inform the Accumulators Framework that these two features
+are the same from the point of view of dependency resolution. You can do that
+with _feature_of_, as follows:
+
+ namespace boost { namespace accumulators
+ {
+ // For the purposes of feature-based dependency resolution,
+ // fast_fubar provides the same feature as fubar
+ template<>
+ struct feature_of<tag::fast_fubar>
+ : feature_of<tag::fubar>
+ {
+ };
+ }}
+
+The above code instructs the Accumulators Framework that, if another accumulator
+in the set depends on the `tag::fubar` feature, the `tag::fast_fubar` feature
+is an acceptable substitute.
+
+[*Registering feature variants with [^as_feature<>]]
+
+You may hve noticed that some feature variants in the Accumulators Framework can be
+specified with a nicer syntax. For instance, instead of `tag::mean` and `tag::immediate_mean`
+you can specify them with `tag::mean(lazy)` and `tag::mean(immediate)` respectively.
+These are merely aliases, but the syntax makes the relationship between the two clearer.
+You can create these feature aliases with the _as_feature_ trait. Given the fubar example
+above, you might decide to alias `tag::fubar(accurate)` with `tag::fubar` and
+`tag::fubar(fast)` with `tag::fast_fubar`. You would do that as follows:
+
+ namespace boost { namespace accumulators
+ {
+ struct fast {}; // OK to leave these tags empty
+ struct accurate {};
+
+ template<>
+ struct as_feature<tag::fubar(accurate)>
+ {
+ typedef tag::fubar type;
+ };
+
+ template<>
+ struct as_feature<tag::fubar(fast)>
+ {
+ typedef tag::fast_fubar type;
+ };
+ }}
+
+Once you have done this, users of your fubar accumulator can request the `tag::fubar(fast)`
+and `tag::fubar(accurate)` features when defining their `accumulator_set`s and get the correct
+accumulator.
 
 [endsect]
 
-[section:operators_ex Adding or Specializing Operator (Meta-) Functions]
+[section:operators_ex Specializing Numeric Operators]
+
+This section describes how to adapt third-party numeric types to work with the Accumulator
+Framework.
+
+Rather than relying on the built-in operators, the Accumulators Framework relies on functions
+and operator overloads defined in the
+[link accumulators.user_s_guide.the_accumulators_framework.numeric_operators_sub_library
+Numeric Operators Sub-Library] for many of its numeric operations. This is so that it
+is possible to assign non-standard meanings to arithmetic operations. For instance, when
+calculating an average by dividing two integers, the standard integer division behavior
+would be mathematically incorrect for most statistical quantities. So rather than use `x / y`,
+the Accumulators Framework uses `numeric::average(x, y)`, which does floating-point division
+even if both `x` and `y` are integers.
+
+Another example where the Numeric Operators Sub-Library is useful is when a type does not
+define the operator overloads required to use it for some statistical calculations. For instance,
+`std::vector<>` does not overload any arithmetic operators, yet it may be useful to use
+`std::vector<>` as a sample or variate type. The Numeric Operators Sub-Library
+defines the necessary operator overloads in the `boost::numeric::operators` namespace,
+which is brought into scope by the Accumulators Framework with a using directive.
+
+[*Numeric Function Objects and Tag Dispatching]
+
+How are the numeric function object defined by the Numeric Operators Sub-Library made
+to work with types such as `std::vector<>`? The free functions in the `boost::numeric` namespace
+are implemented in terms of the function objects in the `boost::numeric::functional` namespace,
+so to make `boost::numeric::average()` do something sensible with a `std::vector<>`, for instance,
+we'll need to partially specialize the `boost::numeric::functional::average<>` function object.
+
+The functional objects make use of a technique known as
+[@http://www.boost.org/community/generic_programming.html#tag_dispatching ['tag dispatching]] to
+select the proper implementation for the given operands. It works as follows:
+
+ namespace boost { namespace numeric { namespace functional
+ {
+ // Metafunction for looking up the tag associated with
+ // a given numeric type T.
+ template<typename T>
+ struct tag
+ {
+ // by default, all types have void as a tag type
+ typedef void type;
+ };
+
+ // Forward declaration looks up the tag types of each operand
+ template<
+ typename Left
+ , typename Right
+ , typename LeftTag = typename tag<Left>::type
+ , typename RightTag = typename tag<Right>::type
+ >
+ struct average;
+ }}}
+
+If you have some user-defined type `MyDouble` for which you would like to customimze the behavior
+of `numeric::average()`, you would specialize `numeric::functional::average<>` by
+first defining a tag type, as shown below:
+
+ namespace boost { namespace numeric { namespace functional
+ {
+ // Tag type for MyDouble
+ struct MyDoubleTag {};
+
+ // Specialize tag<> for MyDouble.
+ // This only needs to be done once.
+ template<>
+ struct tag<MyDouble>
+ {
+ typedef MyDoubleTag type;
+ };
 
-TODO
+ // Specify how to divide a MyDouble by an integral count
+ template<typename Left, typename Right>
+ struct average<Left, Right, MyDoubleTag, void>
+ {
+ // Define the type of the result
+ typedef ... result_type;
+
+ result_type operator()(Left & left, Right & right) const
+ {
+ return ...;
+ }
+ };
+ }}}
+
+Once you have done this, `numeric::average()` will use your specialization
+of `numeric::functional::average<>` when the first argument is a `MyDouble`
+object. All of the function objects in the Numeric Operators Sub-Library can
+be customized in a similar fashion.
 
 [endsect]
 
@@ -906,6 +1049,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _COUNT_HPP_ [headerref boost/accumulators/statistics/count.hpp]]
+
+ #include <_COUNT_HPP_>
+
 [*Example]
 
     accumulator_set<int, features<tag::count> > acc;
@@ -941,6 +1089,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _COVARIANCE_HPP_ [headerref boost/accumulators/statistics/covariance.hpp]]
+
+ #include <_COVARIANCE_HPP_>
+
 [*Example]
 
     accumulator_set<double, stats<tag::covariance<double, tag::covariate1> > > acc;
@@ -983,6 +1136,11 @@
     [[Extractor Complexity] [O(N), when N is `density::num_bins`]]
 ]
 
+[*Header]
+[def _DENSITY_HPP_ [headerref boost/accumulators/statistics/density.hpp]]
+
+ #include <_DENSITY_HPP_>
+
 [/ TODO add example ]
 
 [*See also]
@@ -1012,6 +1170,13 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _ERROR_OF_HPP_ [headerref boost/accumulators/statistics/error_of.hpp]]
+[def _ERROR_OF_MEAN_HPP_ [headerref boost/accumulators/statistics/error_of_mean.hpp]]
+
+ #include <_ERROR_OF_HPP_>
+ #include <_ERROR_OF_MEAN_HPP_>
+
 [*Example]
 
     accumulator_set<double, stats<tag::error_of<tag::mean> > > acc;
@@ -1048,6 +1213,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _EXTENDED_P_SQUARE_HPP_ [headerref boost/accumulators/statistics/extended_p_square.hpp]]
+
+ #include <_EXTENDED_P_SQUARE_HPP_>
+
 [*Example]
 
     boost::array<double> probs = {0.001,0.01,0.1,0.25,0.5,0.75,0.9,0.99,0.999};
@@ -1100,6 +1270,11 @@
     [[Extractor Complexity] [O(N) where N is the count of probabilities.]]
 ]
 
+[*Header]
+[def _EXTENDED_P_SQUARE_QUANTILE_HPP_ [headerref boost/accumulators/statistics/extended_p_square_quantile.hpp]]
+
+ #include <_EXTENDED_P_SQUARE_QUANTILE_HPP_>
+
 [*Example]
 
     typedef accumulator_set<double, stats<tag::extended_p_square_quantile> >
@@ -1185,6 +1360,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _KURTOSIS_HPP_ [headerref boost/accumulators/statistics/kurtosis.hpp]]
+
+ #include <_KURTOSIS_HPP_>
+
 [*Example]
 
     accumulator_set<int, stats<tag::kurtosis > > acc;
@@ -1226,6 +1406,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _MAX_HPP_ [headerref boost/accumulators/statistics/max.hpp]]
+
+ #include <_MAX_HPP_>
+
 [*Example]
 
     accumulator_set<int, stats<tag::max> > acc;
@@ -1273,6 +1458,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _MEAN_HPP_ [headerref boost/accumulators/statistics/mean.hpp]]
+
+ #include <_MEAN_HPP_>
+
 [*Example]
 
     accumulator_set<
@@ -1371,6 +1561,11 @@
     [[Extractor Complexity] [TODO]]
 ]
 
+[*Header]
+[def _MEDIAN_HPP_ [headerref boost/accumulators/statistics/median.hpp]]
+
+ #include <_MEDIAN_HPP_>
+
 [*Example]
 
     // two random number generators
@@ -1426,6 +1621,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _MIN_HPP_ [headerref boost/accumulators/statistics/min.hpp]]
+
+ #include <_MIN_HPP_>
+
 [*Example]
 
     accumulator_set<int, stats<tag::min> > acc;
@@ -1463,6 +1663,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _MOMENT_HPP_ [headerref boost/accumulators/statistics/moment.hpp]]
+
+ #include <_MOMENT_HPP_>
+
 [*Example]
 
     accumulator_set<int, stats<tag::moment<2> > > acc1;
@@ -1517,6 +1722,11 @@
     [[Extractor Complexity] [O(N) where N is `num_cells`]]
 ]
 
+[*Header]
+[def _P_SQUARE_CUMULATIVE_DISTRIBUTION_HPP_ [headerref boost/accumulators/statistics/p_square_cumulative_distribution.hpp]]
+
+ #include <_P_SQUARE_CUMULATIVE_DISTRIBUTION_HPP_>
+
 [*Example]
 
     // tolerance in %
@@ -1573,6 +1783,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _P_SQUARE_QUANTILE_HPP_ [headerref boost/accumulators/statistics/p_square_quantile.hpp]]
+
+ #include <_P_SQUARE_QUANTILE_HPP_>
+
 [*Example]
 
     typedef accumulator_set<double, stats<tag::p_square_quantile> > accumulator_t;
@@ -1654,6 +1869,11 @@
     [[Extractor Complexity] [TODO]]
 ]
 
+[*Header]
+[def _PEAKS_OVER_THRESHOLD_HPP_ [headerref boost/accumulators/statistics/peaks_over_threshold.hpp]]
+
+ #include <_PEAKS_OVER_THRESHOLD_HPP_>
+
 [*Example]
 
 See example for [link accumulators.user_s_guide.the_statistical_accumulators_library.pot_quantile [^pot_quantile]].
@@ -1693,6 +1913,11 @@
     [[Extractor Complexity] [TODO]]
 ]
 
+[*Header]
+[def _POT_QUANTILE_HPP_ [headerref boost/accumulators/statistics/pot_quantile.hpp]]
+
+ #include <_POT_QUANTILE_HPP_>
+
 [*Example]
 
     // tolerance in %
@@ -1781,6 +2006,11 @@
     [[Extractor Complexity] [TODO]]
 ]
 
+[*Header]
+[def _POT_TAIL_MEAN_HPP_ [headerref boost/accumulators/statistics/pot_tail_mean.hpp]]
+
+ #include <_POT_TAIL_MEAN_HPP_>
+
 [*Example]
 
     // TODO
@@ -1812,6 +2042,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _SKEWNESS_HPP_ [headerref boost/accumulators/statistics/skewness.hpp]]
+
+ #include <_SKEWNESS_HPP_>
+
 [*Example]
 
     accumulator_set<int, stats<tag::skewness > > acc2;
@@ -1827,7 +2062,6 @@
     BOOST_CHECK_EQUAL( moment<3>(acc2), 1171./5. );
     BOOST_CHECK_CLOSE( skewness(acc2), 0.406040288214, 1e-6 );
 
-
 [*See also]
 
 * [classref boost::accumulators::impl::skewness_impl [^skewness_impl]]
@@ -1856,6 +2090,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _SUM_HPP_ [headerref boost/accumulators/statistics/sum.hpp]]
+
+ #include <_SUM_HPP_>
+
 [*Example]
 
     accumulator_set<
@@ -1919,6 +2158,11 @@
     [[Extractor Complexity] [O(N log N), where N is the cache size]]
 ]
 
+[*Header]
+[def _TAIL_HPP_ [headerref boost/accumulators/statistics/tail.hpp]]
+
+ #include <_TAIL_HPP_>
+
 [*Example]
 
 See the Example for [link accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate [^tail_variate]].
@@ -1951,6 +2195,11 @@
     [[Extractor Complexity] [O(N log N), where N is the cache size]]
 ]
 
+[*Header]
+[def _TAIL_MEAN_HPP_ [headerref boost/accumulators/statistics/tail_mean.hpp]]
+
+ #include <_TAIL_MEAN_HPP_>
+
 [*Example]
 
 See the example for
@@ -1988,6 +2237,11 @@
     [[Extractor Complexity] [O(N log N), where N is the cache size]]
 ]
 
+[*Header]
+[def _TAIL_MEAN_HPP_ [headerref boost/accumulators/statistics/tail_mean.hpp]]
+
+ #include <_TAIL_MEAN_HPP_>
+
 [*Example]
 
     // tolerance in %
@@ -2065,6 +2319,11 @@
     [[Extractor Complexity] [O(N log N), where N is the cache size]]
 ]
 
+[*Header]
+[def _TAIL_QUANTILE_HPP_ [headerref boost/accumulators/statistics/tail_quantile.hpp]]
+
+ #include <_TAIL_QUANTILE_HPP_>
+
 [*Example]
 
     // tolerance in %
@@ -2153,6 +2412,11 @@
     [[Extractor Complexity] [O(N log N), where N is the cache size]]
 ]
 
+[*Header]
+[def _TAIL_VARIATE_HPP_ [headerref boost/accumulators/statistics/tail_variate.hpp]]
+
+ #include <_TAIL_VARIATE_HPP_>
+
 [*Example]
 
     accumulator_set<int, stats<tag::tail_variate<int, tag::covariate1, right> > > acc(
@@ -2224,6 +2488,11 @@
     [[Extractor Complexity] [O(N log N), where N is the cache size]]
 ]
 
+[*Header]
+[def _TAIL_VARIATE_MEANS_HPP_ [headerref boost/accumulators/statistics/tail_variate_means.hpp]]
+
+ #include <_TAIL_VARIATE_MEANS_HPP_>
+
 [*Example]
 
     std::size_t c = 5; // cache size
@@ -2338,20 +2607,20 @@
 
 [section:variance variance ['and variants]]
 
-Lazy or iterative calculation of the variance. The lazy calculation is associated with the `tag::variance`
-feature, and the iterative calculation with the `tag::immediate_variance` feature. Both can be extracted
+Lazy or iterative calculation of the variance. The lazy calculation is associated with the `tag::lazy_variance`
+feature, and the iterative calculation with the `tag::variance` feature. Both can be extracted
 using the `tag::variance()` extractor. For more implementation details, see
-[classref boost::accumulators::impl::variance_impl [^variance_impl]] and
-[classref boost::accumulators::impl::immediate_variance_impl [^immediate_variance_impl]]
+[classref boost::accumulators::impl::lazy_variance_impl [^lazy_variance_impl]] and
+[classref boost::accumulators::impl::variance_impl [^variance_impl]]
 
 [variablelist
     [[Result Type] [``
                     numeric::functional::average<_sample_type_, std::size_t>::result_type
                     ``]]
- [[Depends On] [`tag::variance` depends on `tag::moment<2>` and `tag::mean` \n
- `tag::immediate_variance` depends on `tag::count` and `tag::immediate_mean`]]
- [[Variants] [`tag::variance` (a.k.a. `tag::variance(lazy))` \n
- `tag::immediate_variance` (a.k.a. `tag::variance(immediate)`)]]
+ [[Depends On] [`tag::lazy_variance` depends on `tag::moment<2>` and `tag::mean` \n
+ `tag::variance` depends on `tag::count` and `tag::immediate_mean`]]
+ [[Variants] [`tag::lazy_variance` (a.k.a. `tag::variance(lazy))` \n
+ `tag::variance` (a.k.a. `tag::variance(immediate)`)]]
     [[Initialization Parameters] [['none]]]
     [[Accumulator Parameters] [['none]]]
     [[Extractor Parameters] [['none]]]
@@ -2359,10 +2628,15 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _VARIANCE_HPP_ [headerref boost/accumulators/statistics/variance.hpp]]
+
+ #include <_VARIANCE_HPP_>
+
 [*Example]
 
- // basic lazy variance
- accumulator_set<int, stats<tag::variance > > acc1;
+ // lazy variance
+ accumulator_set<int, stats<tag::variance(lazy)> > acc1;
 
     acc1(1);
     acc1(2);
@@ -2376,7 +2650,7 @@
     BOOST_CHECK_CLOSE(2., variance(acc1), 1e-5);
 
     // immediate variance
- accumulator_set<int, stats<tag::variance(immediate) > > acc2;
+ accumulator_set<int, stats<tag::variance> > acc2;
 
     acc2(1);
     acc2(2);
@@ -2388,11 +2662,10 @@
     BOOST_CHECK_CLOSE(3., mean(acc2), 1e-5);
     BOOST_CHECK_CLOSE(2., variance(acc2), 1e-5);
 
-
 [*See also]
 
+* [classref boost::accumulators::impl::lazy_variance_impl [^lazy_variance_impl]]
 * [classref boost::accumulators::impl::variance_impl [^variance_impl]]
-* [classref boost::accumulators::impl::immediate_variance_impl [^immediate_variance_impl]]
 * [link accumulators.user_s_guide.the_statistical_accumulators_library.count [^count]]
 * [link accumulators.user_s_guide.the_statistical_accumulators_library.mean [^mean]]
 * [link accumulators.user_s_guide.the_statistical_accumulators_library.moment [^moment]]
@@ -2432,6 +2705,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _WEIGHTED_COVARIANCE_HPP_ [headerref boost/accumulators/statistics/weighted_covariance.hpp]]
+
+ #include <_WEIGHTED_COVARIANCE_HPP_>
+
 [*Example]
 
     accumulator_set<double, stats<tag::weighted_covariance<double, tag::covariate1> >, double > acc;
@@ -2478,6 +2756,11 @@
     [[Extractor Complexity] [O(N), when N is `weighted_density::num_bins`]]
 ]
 
+[*Header]
+[def _WEIGHTED_DENSITY_HPP_ [headerref boost/accumulators/statistics/weighted_density.hpp]]
+
+ #include <_WEIGHTED_DENSITY_HPP_>
+
 [/ TODO add example ]
 
 [*See also]
@@ -2510,6 +2793,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _WEIGHTED_EXTENDED_P_SQUARE_HPP_ [headerref boost/accumulators/statistics/weighted_extended_p_square.hpp]]
+
+ #include <_WEIGHTED_EXTENDED_P_SQUARE_HPP_>
+
 [*Example]
 
     typedef accumulator_set<double, stats<tag::weighted_extended_p_square>, double> accumulator_t;
@@ -2599,6 +2887,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _WEIGHTED_KURTOSIS_HPP_ [headerref boost/accumulators/statistics/weighted_kurtosis.hpp]]
+
+ #include <_WEIGHTED_KURTOSIS_HPP_>
+
 [*Example]
 
     accumulator_set<int, stats<tag::weighted_kurtosis>, int > acc2;
@@ -2647,6 +2940,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _WEIGHTED_MEAN_HPP_ [headerref boost/accumulators/statistics/weighted_mean.hpp]]
+
+ #include <_WEIGHTED_MEAN_HPP_>
+
 [*Example]
 
     accumulator_set<
@@ -2736,6 +3034,11 @@
     [[Extractor Complexity] [TODO]]
 ]
 
+[*Header]
+[def _WEIGHTED_MEDIAN_HPP_ [headerref boost/accumulators/statistics/weighted_median.hpp]]
+
+ #include <_WEIGHTED_MEDIAN_HPP_>
+
 [*Example]
 
     // Median estimation of normal distribution N(1,1) using samples from a narrow normal distribution N(1,0.01)
@@ -2799,6 +3102,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _WEIGHTED_MOMENT_HPP_ [headerref boost/accumulators/statistics/weighted_moment.hpp]]
+
+ #include <_WEIGHTED_MOMENT_HPP_>
+
 [*Example]
 
     accumulator_set<double, stats<tag::weighted_moment<2> >, double> acc2;
@@ -2850,6 +3158,11 @@
     [[Extractor Complexity] [O(N) where N is `num_cells`]]
 ]
 
+[*Header]
+[def _WEIGHTED_P_SQUARE_CUMULATIVE_DISTRIBUTION_HPP_ [headerref boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp]]
+
+ #include <_WEIGHTED_P_SQUARE_CUMULATIVE_DISTRIBUTION_HPP_>
+
 [*Example]
 
     // tolerance in %
@@ -2890,7 +3203,7 @@
     // than without importance sampling, i.e., with unweighted samples
     
     for (std::size_t i = 0; i < histogram_upper.size(); ++i)
- {
+ {
         // problem with small results: epsilon is relative (in percent), not absolute!
         
         // check upper region of distribution
@@ -2899,7 +3212,7 @@
         // check lower region of distribution
         if ( histogram_lower[i].second < -0.1 )
             BOOST_CHECK_CLOSE( 0.5 * (1.0 + erf( histogram_lower[i].first / sqrt(2.0) )), histogram_lower[i].second, epsilon );
- }
+ }
 
 [*See also]
 
@@ -2932,6 +3245,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _WEIGHTED_P_SQUARE_QUANTILE_HPP_ [headerref boost/accumulators/statistics/weighted_p_square_quantile.hpp]]
+
+ #include <_WEIGHTED_P_SQUARE_QUANTILE_HPP_>
+
 [*Example]
 
     typedef accumulator_set<double, stats<tag::weighted_p_square_quantile>, double> accumulator_t;
@@ -3003,6 +3321,54 @@
 
 [endsect]
 
+[section:weighted_peaks_over_threshold weighted_peaks_over_threshold ['and variants]]
+
+Weighted peaks over threshold method for weighted quantile and weighted tail mean estimation.
+For more implementation details,
+see [classref boost::accumulators::impl::weighted_peaks_over_threshold_impl [^weighted_peaks_over_threshold_impl]]
+and [classref boost::accumulators::impl::weighted_peaks_over_threshold_prob_impl [^weighted_peaks_over_threshold_prob_impl]].
+
+Both `tag::weighted_peaks_over_threshold<_left_or_right_>` and
+`tag::weighted_peaks_over_threshold_prob<_left_or_right_>` satisfy the
+`tag::weighted_peaks_over_threshold<_left_or_right_>` feature and can be extracted using the
+`weighted_peaks_over_threshold()` extractor.
+
+[variablelist
+ [[Result Type] [`tuple<float_type, float_type, float_type>` where `float_type` is
+ ``
+ numeric::functional::average<
+ numeric::functional::multiplies<_sample_type_, _weight_type_>::result_type
+ , std::size_t
+ >::result_type
+ ``]]
+ [[Depends On] [`weighted_peaks_over_threshold<_left_or_right_>` depends on `sum_of_weights` \n
+ `weighted_peaks_over_threshold_prob<_left_or_right_>` depends on `sum_of_weights` and `tail_weights<_left_or_right_>`]]
+ [[Variants] [`weighted_peaks_over_threshold_prob`]]
+ [[Initialization Parameters] [ `tag::peaks_over_threshold::threshold_value` \n
+ `tag::peaks_over_threshold_prob::threshold_probability` \n
+ `tag::tail<_left_or_right_>::cache_size` ]]
+ [[Accumulator Parameters] [`weight`]]
+ [[Extractor Parameters] [['none]]]
+ [[Accumulator Complexity] [TODO]]
+ [[Extractor Complexity] [O(1)]]
+]
+
+[*Header]
+[def _WEIGHTED_PEAKS_OVER_THRESHOLD_HPP_ [headerref boost/accumulators/statistics/weighted_peaks_over_threshold.hpp]]
+
+ #include <_WEIGHTED_PEAKS_OVER_THRESHOLD_HPP_>
+
+[/ TODO Add example]
+
+[*See also]
+
+* [classref boost::accumulators::impl::weighted_peaks_over_threshold_impl [^weighted_peaks_over_threshold_impl]]
+* [classref boost::accumulators::impl::weighted_peaks_over_threshold_prob_impl [^weighted_peaks_over_threshold_prob_impl]]
+* [link accumulators.user_s_guide.the_statistical_accumulators_library.sum [^sum]]
+* [link accumulators.user_s_guide.the_statistical_accumulators_library.tail [^tail]]
+
+[endsect]
+
 [section:weighted_skewness weighted_skewness]
 
 The skewness of a sample distribution is defined as the ratio of the 3rd central moment and the [^3/2]-th power
@@ -3029,6 +3395,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _WEIGHTED_SKEWNESS_HPP_ [headerref boost/accumulators/statistics/weighted_skewness.hpp]]
+
+ #include <_WEIGHTED_SKEWNESS_HPP_>
+
 [*Example]
 
     accumulator_set<int, stats<tag::weighted_skewness>, int > acc2;
@@ -3071,6 +3442,11 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _WEIGHTED_SUM_HPP_ [headerref boost/accumulators/statistics/weighted_sum.hpp]]
+
+ #include <_WEIGHTED_SUM_HPP_>
+
 [*Example]
 
     accumulator_set<int, stats<tag::weighted_sum, tag::weighted_sum_of_variates<int, tag::covariate1> >, int> acc;
@@ -3093,13 +3469,306 @@
 
 [endsect]
 
+[section:non_coherent_weighted_tail_mean non_coherent_weighted_tail_mean]
+
+Estimation of the (non-coherent) weighted tail mean based on order statistics (for both left and right tails).
+The left non-coherent weighted tail mean feature is `tag::non_coherent_weighted_tail_mean<left>`, and the right
+non-choherent weighted tail mean feature is `tag::non_coherent_weighted_tail_mean<right>`. They both share the
+`tag::abstract_non_coherent_tail_mean` feature with the unweighted non-coherent tail mean accumulators and can
+be extracted with either the `non_coherent_tail_mean()` or the `non_coherent_weighted_tail_mean()` extractors.
+For more implementation details, see
+[classref boost::accumulators::impl::non_coherent_weighted_tail_mean_impl [^non_coherent_weighted_tail_mean_impl]].
+
+[variablelist
+ [[Result Type] [``
+ numeric::functional::average<
+ numeric::functional::multiplies<_sample_type_, _weight_type_>::result_type
+ , std::size_t
+ >::result_type
+ ``]]
+ [[Depends On] [`sum_of_weights` \n `tail_weights<_left_or_right_>`]]
+ [[Variants] [`abstract_non_coherent_tail_mean`]]
+ [[Initialization Parameters] [`tag::tail<_left_or_right_>::cache_size`]]
+ [[Accumulator Parameters] [['none]]]
+ [[Extractor Parameters] [`quantile_probability`]]
+ [[Accumulator Complexity] [O(log N), where N is the cache size]]
+ [[Extractor Complexity] [O(N log N), where N is the cache size]]
+]
+
+[*Header]
+[def _WEIGHTED_TAIL_MEAN_HPP_ [headerref boost/accumulators/statistics/weighted_tail_mean.hpp]]
+
+ #include <_WEIGHTED_TAIL_MEAN_HPP_>
+
+[*Example]
+
+ // tolerance in %
+ double epsilon = 1;
+
+ std::size_t n = 100000; // number of MC steps
+ std::size_t c = 25000; // cache size
+
+ accumulator_set<double, stats<tag::non_coherent_weighted_tail_mean<right> >, double >
+ acc0( right_tail_cache_size = c );
+ accumulator_set<double, stats<tag::non_coherent_weighted_tail_mean<left> >, double >
+ acc1( left_tail_cache_size = c );
+
+ // random number generators
+ boost::lagged_fibonacci607 rng;
+
+ for (std::size_t i = 0; i < n; ++i)
+ {
+ double smpl = std::sqrt(rng());
+ acc0(smpl, weight = 1./smpl);
+ }
+
+ for (std::size_t i = 0; i < n; ++i)
+ {
+ double smpl = rng();
+ acc1(smpl*smpl, weight = smpl);
+ }
+
+ // check uniform distribution
+ BOOST_CHECK_CLOSE( non_coherent_weighted_tail_mean(acc0, quantile_probability = 0.95), 0.975, epsilon );
+ BOOST_CHECK_CLOSE( non_coherent_weighted_tail_mean(acc0, quantile_probability = 0.975), 0.9875, epsilon );
+ BOOST_CHECK_CLOSE( non_coherent_weighted_tail_mean(acc0, quantile_probability = 0.99), 0.995, epsilon );
+ BOOST_CHECK_CLOSE( non_coherent_weighted_tail_mean(acc0, quantile_probability = 0.999), 0.9995, epsilon );
+ BOOST_CHECK_CLOSE( non_coherent_weighted_tail_mean(acc1, quantile_probability = 0.05), 0.025, epsilon );
+ BOOST_CHECK_CLOSE( non_coherent_weighted_tail_mean(acc1, quantile_probability = 0.025), 0.0125, epsilon );
+ BOOST_CHECK_CLOSE( non_coherent_weighted_tail_mean(acc1, quantile_probability = 0.01), 0.005, epsilon );
+ BOOST_CHECK_CLOSE( non_coherent_weighted_tail_mean(acc1, quantile_probability = 0.001), 0.0005, 5*epsilon );
+
+[*See also]
+
+* [classref boost::accumulators::impl::non_coherent_weighted_tail_mean_impl [^non_coherent_weighted_tail_mean_impl]]
+* [link accumulators.user_s_guide.the_statistical_accumulators_library.sum [^sum]]
+* [link accumulators.user_s_guide.the_statistical_accumulators_library.tail [^tail]]
+
+[endsect]
+
+[section:weighted_tail_quantile weighted_tail_quantile]
+
+Tail quantile estimation based on order statistics of weighted samples (for both left
+and right tails). The left weighted tail quantile feature is `tag::weighted_tail_quantile<left>`,
+and the right weighted tail quantile feature is `tag::weighted_tail_quantile<right>`. They both
+share the `tag::quantile` feature with the unweighted tail quantile accumulators and can be
+extracted with either the `quantile()` or the `weighted_tail_quantile()` extractors. For more
+implementation details, see
+[classref boost::accumulators::impl::weighted_tail_quantile_impl [^weighted_tail_quantile_impl]]
+
+[variablelist
+ [[Result Type] [``
+ _sample_type_
+ ``]]
+ [[Depends On] [`sum_of_weights` \n `tail_weights<_left_or_right_>`]]
+ [[Variants] [['none]]]
+ [[Initialization Parameters] [`tag::tail<_left_or_right_>::cache_size`]]
+ [[Accumulator Parameters] [['none]]]
+ [[Extractor Parameters] [`quantile_probability`]]
+ [[Accumulator Complexity] [O(log N), where N is the cache size]]
+ [[Extractor Complexity] [O(N log N), where N is the cache size]]
+]
+
+[*Header]
+[def _WEIGHTED_TAIL_QUANTILE_HPP_ [headerref boost/accumulators/statistics/weighted_tail_quantile.hpp]]
+
+ #include <_WEIGHTED_TAIL_QUANTILE_HPP_>
+
+[*Example]
+
+ // tolerance in %
+ double epsilon = 1;
+
+ std::size_t n = 100000; // number of MC steps
+ std::size_t c = 20000; // cache size
+
+ double mu1 = 1.0;
+ double mu2 = -1.0;
+ boost::lagged_fibonacci607 rng;
+ boost::normal_distribution<> mean_sigma1(mu1,1);
+ boost::normal_distribution<> mean_sigma2(mu2,1);
+ boost::variate_generator<boost::lagged_fibonacci607&, boost::normal_distribution<> > normal1(rng, mean_sigma1);
+ boost::variate_generator<boost::lagged_fibonacci607&, boost::normal_distribution<> > normal2(rng, mean_sigma2);
+
+ accumulator_set<double, stats<tag::weighted_tail_quantile<right> >, double>
+ acc1(right_tail_cache_size = c);
+
+ accumulator_set<double, stats<tag::weighted_tail_quantile<left> >, double>
+ acc2(left_tail_cache_size = c);
+
+ for (std::size_t i = 0; i < n; ++i)
+ {
+ double sample1 = normal1();
+ double sample2 = normal2();
+ acc1(sample1, weight = std::exp(-mu1 * (sample1 - 0.5 * mu1)));
+ acc2(sample2, weight = std::exp(-mu2 * (sample2 - 0.5 * mu2)));
+ }
+
+ // check standard normal distribution
+ BOOST_CHECK_CLOSE( quantile(acc1, quantile_probability = 0.975), 1.959963, epsilon );
+ BOOST_CHECK_CLOSE( quantile(acc1, quantile_probability = 0.999), 3.090232, epsilon );
+ BOOST_CHECK_CLOSE( quantile(acc2, quantile_probability = 0.025), -1.959963, epsilon );
+ BOOST_CHECK_CLOSE( quantile(acc2, quantile_probability = 0.001), -3.090232, epsilon );
+
+[*See also]
+
+* [classref boost::accumulators::impl::weighted_tail_quantile_impl [^weighted_tail_quantile_impl]]
+* [link accumulators.user_s_guide.the_statistical_accumulators_library.sum [^sum]]
+* [link accumulators.user_s_guide.the_statistical_accumulators_library.tail [^tail]]
+
+[endsect]
+
+[section:weighted_tail_variate_means weighted_tail_variate_means ['and variants]]
+
+Estimation of the absolute and relative weighted tail variate means (for both left and right tails)
+The absolute weighted tail variate means has the feature
+`tag::absolute_weighted_tail_variate_means<_left_or_right_, _variate_type_, _variate_tag_>`
+and the relative weighted tail variate mean has the feature
+`tag::relative_weighted_tail_variate_means<_left_or_right_, _variate_type_, _variate_tag_>`. All
+absolute weighted tail variate mean features share the `tag::abstract_absolute_tail_variate_means`
+feature with their unweighted variants and can be extracted with the `tail_variate_means()` and
+`weighted_tail_variate_means()` extractors. All the relative weighted tail variate mean features
+share the `tag::abstract_relative_tail_variate_means` feature with their unweighted variants
+and can be extracted with either the `relative_tail_variate_means()` or
+`relative_weighted_tail_variate_means()` extractors.
+
+For more implementation details, see
+[classref boost::accumulators::impl::weighted_tail_variate_means_impl [^weighted_tail_variate_means_impl]]
+
+[variablelist
+ [[Result Type] [``
+ boost::iterator_range<
+ numeric::functional::average<
+ numeric::functional::multiplies<_variate_type_, _weight_type_>::result_type
+ , _weight_type_
+ >::result_type::iterator
+ >
+ ``]]
+ [[Depends On] [`non_coherent_weighted_tail_mean<_left_or_right_>` \n
+ `tail_variate<_variate_type_, _variate_tag_, _left_or_right_>` \n
+ `tail_weights<_left_or_right_>`]]
+ [[Variants] [`tag::absolute_weighted_tail_variate_means<_left_or_right_, _variate_type_, _variate_tag_>` \n
+ `tag::relative_weighted_tail_variate_means<_left_or_right_, _variate_type_, _variate_tag_>`]]
+ [[Initialization Parameters] [`tag::tail<_left_or_right_>::cache_size`]]
+ [[Accumulator Parameters] [['none]]]
+ [[Extractor Parameters] [`quantile_probability`]]
+ [[Accumulator Complexity] [O(log N), where N is the cache size]]
+ [[Extractor Complexity] [O(N log N), where N is the cache size]]
+]
+
+[*Header]
+[def _WEIGHTED_TAIL_VARIATE_MEANS_HPP_ [headerref boost/accumulators/statistics/weighted_tail_variate_means.hpp]]
+
+ #include <_WEIGHTED_TAIL_VARIATE_MEANS_HPP_>
+
+[*Example]
+
+ std::size_t c = 5; // cache size
+
+ typedef double variate_type;
+ typedef std::vector<variate_type> variate_set_type;
+
+ accumulator_set<double, stats<tag::weighted_tail_variate_means<right, variate_set_type, tag::covariate1>(relative)>, double >
+ acc1( right_tail_cache_size = c );
+ accumulator_set<double, stats<tag::weighted_tail_variate_means<right, variate_set_type, tag::covariate1>(absolute)>, double >
+ acc2( right_tail_cache_size = c );
+ accumulator_set<double, stats<tag::weighted_tail_variate_means<left, variate_set_type, tag::covariate1>(relative)>, double >
+ acc3( left_tail_cache_size = c );
+ accumulator_set<double, stats<tag::weighted_tail_variate_means<left, variate_set_type, tag::covariate1>(absolute)>, double >
+ acc4( left_tail_cache_size = c );
+
+ variate_set_type cov1, cov2, cov3, cov4, cov5;
+ double c1[] = { 10., 20., 30., 40. }; // 100
+ double c2[] = { 26., 4., 17., 3. }; // 50
+ double c3[] = { 46., 64., 40., 50. }; // 200
+ double c4[] = { 1., 3., 70., 6. }; // 80
+ double c5[] = { 2., 2., 2., 14. }; // 20
+ cov1.assign(c1, c1 + sizeof(c1)/sizeof(variate_type));
+ cov2.assign(c2, c2 + sizeof(c2)/sizeof(variate_type));
+ cov3.assign(c3, c3 + sizeof(c3)/sizeof(variate_type));
+ cov4.assign(c4, c4 + sizeof(c4)/sizeof(variate_type));
+ cov5.assign(c5, c5 + sizeof(c5)/sizeof(variate_type));
+
+ acc1(100., weight = 0.8, covariate1 = cov1);
+ acc1( 50., weight = 0.9, covariate1 = cov2);
+ acc1(200., weight = 1.0, covariate1 = cov3);
+ acc1( 80., weight = 1.1, covariate1 = cov4);
+ acc1( 20., weight = 1.2, covariate1 = cov5);
+
+ acc2(100., weight = 0.8, covariate1 = cov1);
+ acc2( 50., weight = 0.9, covariate1 = cov2);
+ acc2(200., weight = 1.0, covariate1 = cov3);
+ acc2( 80., weight = 1.1, covariate1 = cov4);
+ acc2( 20., weight = 1.2, covariate1 = cov5);
+
+ acc3(100., weight = 0.8, covariate1 = cov1);
+ acc3( 50., weight = 0.9, covariate1 = cov2);
+ acc3(200., weight = 1.0, covariate1 = cov3);
+ acc3( 80., weight = 1.1, covariate1 = cov4);
+ acc3( 20., weight = 1.2, covariate1 = cov5);
+
+ acc4(100., weight = 0.8, covariate1 = cov1);
+ acc4( 50., weight = 0.9, covariate1 = cov2);
+ acc4(200., weight = 1.0, covariate1 = cov3);
+ acc4( 80., weight = 1.1, covariate1 = cov4);
+ acc4( 20., weight = 1.2, covariate1 = cov5);
+
+ // check relative risk contributions
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc1, quantile_probability = 0.7).begin() ), (0.8*10 + 1.0*46)/(0.8*100 + 1.0*200) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc1, quantile_probability = 0.7).begin() + 1), (0.8*20 + 1.0*64)/(0.8*100 + 1.0*200) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc1, quantile_probability = 0.7).begin() + 2), (0.8*30 + 1.0*40)/(0.8*100 + 1.0*200) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc1, quantile_probability = 0.7).begin() + 3), (0.8*40 + 1.0*50)/(0.8*100 + 1.0*200) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc3, quantile_probability = 0.3).begin() ), (0.9*26 + 1.2*2)/(0.9*50 + 1.2*20) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc3, quantile_probability = 0.3).begin() + 1), (0.9*4 + 1.2*2)/(0.9*50 + 1.2*20) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc3, quantile_probability = 0.3).begin() + 2), (0.9*17 + 1.2*2)/(0.9*50 + 1.2*20) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc3, quantile_probability = 0.3).begin() + 3), (0.9*3 + 1.2*14)/(0.9*50 + 1.2*20) );
+
+ // check absolute risk contributions
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc2, quantile_probability = 0.7).begin() ), (0.8*10 + 1.0*46)/1.8 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc2, quantile_probability = 0.7).begin() + 1), (0.8*20 + 1.0*64)/1.8 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc2, quantile_probability = 0.7).begin() + 2), (0.8*30 + 1.0*40)/1.8 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc2, quantile_probability = 0.7).begin() + 3), (0.8*40 + 1.0*50)/1.8 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc4, quantile_probability = 0.3).begin() ), (0.9*26 + 1.2*2)/2.1 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc4, quantile_probability = 0.3).begin() + 1), (0.9*4 + 1.2*2)/2.1 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc4, quantile_probability = 0.3).begin() + 2), (0.9*17 + 1.2*2)/2.1 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc4, quantile_probability = 0.3).begin() + 3), (0.9*3 + 1.2*14)/2.1 );
+
+ // check relative risk contributions
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc1, quantile_probability = 0.9).begin() ), 1.0*46/(1.0*200) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc1, quantile_probability = 0.9).begin() + 1), 1.0*64/(1.0*200) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc1, quantile_probability = 0.9).begin() + 2), 1.0*40/(1.0*200) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc1, quantile_probability = 0.9).begin() + 3), 1.0*50/(1.0*200) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc3, quantile_probability = 0.1).begin() ), 1.2*2/(1.2*20) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc3, quantile_probability = 0.1).begin() + 1), 1.2*2/(1.2*20) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc3, quantile_probability = 0.1).begin() + 2), 1.2*2/(1.2*20) );
+ BOOST_CHECK_EQUAL( *(relative_weighted_tail_variate_means(acc3, quantile_probability = 0.1).begin() + 3), 1.2*14/(1.2*20) );
+
+ // check absolute risk contributions
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc2, quantile_probability = 0.9).begin() ), 1.0*46/1.0 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc2, quantile_probability = 0.9).begin() + 1), 1.0*64/1.0 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc2, quantile_probability = 0.9).begin() + 2), 1.0*40/1.0 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc2, quantile_probability = 0.9).begin() + 3), 1.0*50/1.0 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc4, quantile_probability = 0.1).begin() ), 1.2*2/1.2 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc4, quantile_probability = 0.1).begin() + 1), 1.2*2/1.2 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc4, quantile_probability = 0.1).begin() + 2), 1.2*2/1.2 );
+ BOOST_CHECK_EQUAL( *(weighted_tail_variate_means(acc4, quantile_probability = 0.1).begin() + 3), 1.2*14/1.2 );
+
+[*See also]
+
+* [classref boost::accumulators::impl::weighted_tail_variate_means_impl [^weighted_tail_variate_means_impl]]
+* [link accumulators.user_s_guide.the_statistical_accumulators_library.non_coherent_weighted_tail_mean [^non_coherent_weighted_tail_mean]]
+* [link accumulators.user_s_guide.the_statistical_accumulators_library.tail_variate [^tail_variate]]
+* [link accumulators.user_s_guide.the_statistical_accumulators_library.tail [^tail]]
+
+[endsect]
+
 [section:weighted_variance weighted_variance ['and variants]]
 
-Lazy or iterative calculation of the weighted variance. The lazy calculation is associated with the `tag::weighted_variance`
-feature, and the iterative calculation with the `tag::immediate_weighted_variance` feature. Both can be extracted
+Lazy or iterative calculation of the weighted variance. The lazy calculation is associated with the `tag::lazy_weighted_variance`
+feature, and the iterative calculation with the `tag::weighted_variance` feature. Both can be extracted
 using the `tag::weighted_variance()` extractor. For more implementation details, see
-[classref boost::accumulators::impl::weighted_variance_impl [^weighted_variance_impl]] and
-[classref boost::accumulators::impl::immediate_weighted_variance_impl [^immediate_weighted_variance_impl]]
+[classref boost::accumulators::impl::lazy_weighted_variance_impl [^lazy_weighted_variance_impl]] and
+[classref boost::accumulators::impl::weighted_variance_impl [^weighted_variance_impl]]
 
 [variablelist
     [[Result Type] [``
@@ -3108,10 +3777,10 @@
                       , std::size_t
>::result_type
                     ``]]
- [[Depends On] [`tag::weighted_variance` depends on `tag::weighted_moment<2>` and `tag::weighted_mean` \n
- `tag::immediate_weighted_variance` depends on `tag::count` and `tag::immediate_weighted_mean`]]
- [[Variants] [`tag::weighted_variance` (a.k.a. `tag::weighted_variance(lazy))` \n
- `tag::immediate_weighted_variance` (a.k.a. `tag::weighted_variance(immediate)`)]]
+ [[Depends On] [`tag::lazy_weighted_variance` depends on `tag::weighted_moment<2>` and `tag::weighted_mean` \n
+ `tag::weighted_variance` depends on `tag::count` and `tag::immediate_weighted_mean`]]
+ [[Variants] [`tag::lazy_weighted_variance` (a.k.a. `tag::weighted_variance(lazy))` \n
+ `tag::weighted_variance` (a.k.a. `tag::weighted_variance(immediate)`)]]
     [[Initialization Parameters] [['none]]]
     [[Accumulator Parameters] [`weight`]]
     [[Extractor Parameters] [['none]]]
@@ -3119,10 +3788,15 @@
     [[Extractor Complexity] [O(1)]]
 ]
 
+[*Header]
+[def _WEIGHTED_VARIANCE_HPP_ [headerref boost/accumulators/statistics/weighted_variance.hpp]]
+
+ #include <_WEIGHTED_VARIANCE_HPP_>
+
 [*Example]
 
- // basic lazy weighted_variance
- accumulator_set<int, stats<tag::weighted_variance>, int> acc1;
+ // lazy weighted_variance
+ accumulator_set<int, stats<tag::weighted_variance(lazy)>, int> acc1;
 
     acc1(1, weight = 2); // 2
     acc1(2, weight = 3); // 6
@@ -3137,7 +3811,8 @@
     BOOST_CHECK_CLOSE(10.1818182, weighted_moment<2>(acc1), 1e-5);
     BOOST_CHECK_CLOSE(1.7190083, weighted_variance(acc1), 1e-5);
 
- accumulator_set<int, stats<tag::weighted_variance(immediate)>, int> acc2;
+ // immediate weighted_variance
+ accumulator_set<int, stats<tag::weighted_variance>, int> acc2;
 
     acc2(1, weight = 2);
     acc2(2, weight = 3);
@@ -3171,8 +3846,8 @@
 
 [*See also]
 
+* [classref boost::accumulators::impl::lazy_weighted_variance_impl [^lazy_weighted_variance_impl]]
 * [classref boost::accumulators::impl::weighted_variance_impl [^weighted_variance_impl]]
-* [classref boost::accumulators::impl::immediate_weighted_variance_impl [^immediate_weighted_variance_impl]]
 * [link accumulators.user_s_guide.the_statistical_accumulators_library.count [^count]]
 * [link accumulators.user_s_guide.the_statistical_accumulators_library.weighted_mean [^weighted_mean]]
 * [link accumulators.user_s_guide.the_statistical_accumulators_library.weighted_moment [^weighted_moment]]

Modified: branches/proto/v4/libs/accumulators/example/main.cpp
==============================================================================
--- branches/proto/v4/libs/accumulators/example/main.cpp (original)
+++ branches/proto/v4/libs/accumulators/example/main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,6 +7,8 @@
 
 #include <iostream>
 #include <algorithm>
+#include <boost/ref.hpp>
+#include <boost/bind.hpp>
 #include <boost/array.hpp>
 #include <boost/foreach.hpp>
 #include <boost/accumulators/accumulators.hpp>
@@ -47,6 +49,11 @@
     // time, and returns a copy of the accumulator.
     acc = std::for_each(data.begin(), data.end(), acc);
 
+ // The following would be equivalent, and could be more efficient
+ // because it doesn't pass and return the entire accumulator set
+ // by value.
+ //std::for_each(data.begin(), data.end(), bind<void>(ref(acc), _1));
+
     std::cout << " min(acc) = " << (min)(acc) << std::endl;
     std::cout << " mean(acc) = " << mean(acc) << std::endl;
 
@@ -59,7 +66,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // example2
 //
-// Calculate some tail statistics. This demonstrates how to specify
+// Calculate some tail statistics. This demonstrates how to specify
 // constructor and accumulator parameters. Note that the tail statistics
 // return multiple values, which are returned in an iterator_range.
 //

Modified: branches/proto/v4/libs/accumulators/test/variance.cpp
==============================================================================
--- branches/proto/v4/libs/accumulators/test/variance.cpp (original)
+++ branches/proto/v4/libs/accumulators/test/variance.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,8 +27,8 @@
     // >> sum(samples .* samples) / length(samples) - mean(samples)^2
     // ans = 2
 
- // basic lazy variance
- accumulator_set<int, stats<tag::variance > > acc1;
+ // lazy variance, now lazy with syntactic sugar, thanks to Eric
+ accumulator_set<int, stats<tag::variance(lazy)> > acc1;
 
     acc1(1);
     acc1(2);
@@ -41,8 +41,8 @@
     BOOST_CHECK_CLOSE(11., moment<2>(acc1), 1e-5);
     BOOST_CHECK_CLOSE(2., variance(acc1), 1e-5);
 
- // immediate variance, now immediate with syntactic sugar, thanks to Eric
- accumulator_set<int, stats<tag::variance(immediate) > > acc2;
+ // immediate variance
+ accumulator_set<int, stats<tag::variance> > acc2;
 
     acc2(1);
     acc2(2);

Modified: branches/proto/v4/libs/accumulators/test/weighted_variance.cpp
==============================================================================
--- branches/proto/v4/libs/accumulators/test/weighted_variance.cpp (original)
+++ branches/proto/v4/libs/accumulators/test/weighted_variance.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,8 +19,8 @@
 //
 void test_stat()
 {
- // basic lazy weighted_variance
- accumulator_set<int, stats<tag::weighted_variance>, int> acc1;
+ // lazy weighted_variance
+ accumulator_set<int, stats<tag::weighted_variance(lazy)>, int> acc1;
 
     acc1(1, weight = 2); // 2
     acc1(2, weight = 3); // 6
@@ -35,7 +35,7 @@
     BOOST_CHECK_CLOSE(10.1818182, weighted_moment<2>(acc1), 1e-5);
     BOOST_CHECK_CLOSE(1.7190083, weighted_variance(acc1), 1e-5);
 
- accumulator_set<int, stats<tag::weighted_variance(immediate)>, int> acc2;
+ accumulator_set<int, stats<tag::weighted_variance>, int> acc2;
 
     acc2(1, weight = 2);
     acc2(2, weight = 3);
@@ -54,8 +54,8 @@
     boost::normal_distribution<> mean_sigma(0,1);
     boost::variate_generator<boost::lagged_fibonacci607&, boost::normal_distribution<> > normal(rng, mean_sigma);
 
- accumulator_set<double, stats<tag::weighted_variance>, double > acc_lazy;
- accumulator_set<double, stats<tag::weighted_variance(immediate)>, double > acc_immediate;
+ accumulator_set<double, stats<tag::weighted_variance(lazy)>, double > acc_lazy;
+ accumulator_set<double, stats<tag::weighted_variance>, double > acc_immediate;
 
     for (std::size_t i=0; i<10000; ++i)
     {

Modified: branches/proto/v4/libs/algorithm/string/doc/concept.xml
==============================================================================
--- branches/proto/v4/libs/algorithm/string/doc/concept.xml (original)
+++ branches/proto/v4/libs/algorithm/string/doc/concept.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -102,7 +102,7 @@
 struct simple_finder
 {
     template&lt;typename ForwardIteratorT&gt;
- boost::iterator_range&lt;ForwardIterator&gt; operator()(
+ boost::iterator_range&lt;ForwardIteratorT&gt; operator()(
         ForwardIteratorT Begin,
         ForwardIteratorT End )
     {

Modified: branches/proto/v4/libs/algorithm/string/example/rle_example.cpp
==============================================================================
--- branches/proto/v4/libs/algorithm/string/example/rle_example.cpp (original)
+++ branches/proto/v4/libs/algorithm/string/example/rle_example.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -114,10 +114,13 @@
     result_type operator()( const ReplaceT& Replace ) const
     {
         SeqT r;
- r.push_back( repeat_mark<value_type>() );
- r.push_back( *(Replace.begin()) );
- r.push_back( value_type( Replace.size() ) );
-
+ if(!Replace.empty())
+ {
+ r.push_back( repeat_mark<value_type>() );
+ r.push_back( *(Replace.begin()) );
+ r.push_back( value_type( Replace.size() ) );
+ }
+
         return r;
     }
 };
@@ -183,14 +186,18 @@
     template< typename ReplaceT >
     result_type operator()( const ReplaceT& Replace ) const
     {
- // extract info
- typename ReplaceT::const_iterator It=Replace.begin();
-
- value_type Value=*(++It);
- value_type Repeat=*(++It);
-
         SeqT r;
- for( value_type Index=0; Index<Repeat; Index++ ) r.push_back( Value );
+
+ if(!Replace.empty())
+ {
+ // extract info
+ typename ReplaceT::const_iterator It=Replace.begin();
+
+ value_type Value=*(++It);
+ value_type Repeat=*(++It);
+
+ for( value_type Index=0; Index<Repeat; Index++ ) r.push_back( Value );
+ }
 
         return r;
     }

Modified: branches/proto/v4/libs/algorithm/string/test/predicate_test.cpp
==============================================================================
--- branches/proto/v4/libs/algorithm/string/test/predicate_test.cpp (original)
+++ branches/proto/v4/libs/algorithm/string/test/predicate_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -121,6 +121,14 @@
 
     TEST_CLASS( !is_classified(std::ctype_base::space), "...", "..\n\r\t " );
     TEST_CLASS( ( !is_any_of("abc") && is_from_range('a','e') ) || is_space(), "d e", "abcde" );
+
+ // is_any_of test
+// TEST_CLASS( !is_any_of(""), "", "aaa" )
+ TEST_CLASS( is_any_of("a"), "a", "ab" )
+ TEST_CLASS( is_any_of("ba"), "ab", "abc" )
+ TEST_CLASS( is_any_of("cba"), "abc", "abcd" )
+ TEST_CLASS( is_any_of("hgfedcba"), "abcdefgh", "abcdefghi" )
+ TEST_CLASS( is_any_of("qponmlkjihgfedcba"), "abcdefghijklmnopq", "zzz" )
 }
 
 #undef TEST_CLASS

Modified: branches/proto/v4/libs/algorithm/string/test/replace_test.cpp
==============================================================================
--- branches/proto/v4/libs/algorithm/string/test/replace_test.cpp (original)
+++ branches/proto/v4/libs/algorithm/string/test/replace_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -120,6 +120,7 @@
 {
     // replace all
     TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("YYY"), string("1YYY3YYY2") );
+ TEST_ALGO( replace_all, string("1abc3abc2"), "/" C_ "\\", string("1abc3abc2") );
     TEST_ALGO( ireplace_all, "1aBc3AbC2", "abC" C_ "YYY", string("1YYY3YYY2") );
     TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("Z"), string("1Z3Z2") );
     TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("XXXX"), string("1XXXX3XXXX2") );

Modified: branches/proto/v4/libs/asio/doc/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/asio/doc/Jamfile.v2 (original)
+++ branches/proto/v4/libs/asio/doc/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,14 +24,17 @@
 
 install images
   :
- design/proactor.png
+ overview/proactor.png
+ overview/sync_op.png
+ overview/async_op1.png
+ overview/async_op2.png
   :
     <location>html/boost_asio
   ;
 
 local example-names = allocation buffers chat echo http/client http/server
- http/server2 http/server3 invocation iostreams multicast serialization
- services socks4 ssl timeouts timers ;
+ http/server2 http/server3 invocation iostreams local multicast nonblocking
+ porthopper serialization services socks4 ssl timeouts timers ;
 
 for local l in $(example-names)
 {
@@ -66,7 +69,10 @@
 
 install asio_doc_images
   :
- design/proactor.png
+ overview/proactor.png
+ overview/sync_op.png
+ overview/async_op1.png
+ overview/async_op2.png
   :
     <location>$(BOOST_ROOT)/doc/html/boost_asio
   ;

Modified: branches/proto/v4/libs/asio/doc/asio.qbk
==============================================================================
--- branches/proto/v4/libs/asio/doc/asio.qbk (original)
+++ branches/proto/v4/libs/asio/doc/asio.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,6 +20,8 @@
 ]
 
 [template mdash[] '''&mdash; ''']
+[template indexterm1[term1] '''<indexterm><primary>'''[term1]'''</primary></indexterm>''']
+[template indexterm2[term1 term2] '''<indexterm><primary>'''[term1]'''</primary><secondary>'''[term2]'''</secondary></indexterm>''']
 [def __POSIX__ /POSIX/]
 [def __Windows__ /Windows/]
 [def __accept__ [@http://www.opengroup.org/onlinepubs/000095399/functions/accept.html `accept()`]]
@@ -35,13 +37,21 @@
 
 [/=============================================================================]
 
-Boost.Asio is a cross-platform C++ library for network programming that
-provides developers with a consistent asynchronous I/O model using a modern C++
-approach.
+Boost.Asio is a cross-platform C++ library for network and low-level I/O
+programming that provides developers with a consistent asynchronous model using
+a modern C++ approach.
 
 [variablelist
   [
     [
+ [link boost_asio.overview Overview]
+ ]
+ [
+ An overview of the features included in Boost.Asio, plus rationale and design information.
+ ]
+ ]
+ [
+ [
       [link boost_asio.using Using Boost.Asio]
     ]
     [
@@ -78,16 +88,17 @@
   ]
   [
     [
- [link boost_asio.design Design]
+ [link boost_asio.index Index]
     ]
     [
- Rationale and design information for Boost.Asio.
+ Book-style text index of Boost.Asio documentation.
     ]
   ]
 ]
 
+[include overview.qbk]
 [include using.qbk]
 [include tutorial.qbk]
 [include examples.qbk]
 [include reference.qbk]
-[include design.qbk]
+[xinclude index.xml]

Deleted: branches/proto/v4/libs/asio/doc/design.qbk
==============================================================================
--- branches/proto/v4/libs/asio/doc/design.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,104 +0,0 @@
-[/
- / 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)
- /]
-
-[section:design Design Notes]
-
-[variablelist
- [
- [
- [link boost_asio.design.rationale Rationale]
- ]
- [
- Design rationale for the Boost.Asio library.
- ]
- ]
- [
- [
- [link boost_asio.design.async Asynchronous operations]
- ]
- [
- Support for asynchronous operations in the Boost.Asio library is based on
- the Proactor pattern. This design note outlines the advantages and
- disadvantages of this approach.
- ]
- ]
- [
- [
- [link boost_asio.design.allocation Custom memory allocation]
- ]
- [
- Describes the custom memory allocation support in Boost.Asio.
- ]
- ]
- [
- [
- [link boost_asio.design.buffers Buffers]
- ]
- [
- Examines the buffer abstraction used by asio in order to support
- scatter-gather operations.
- ]
- ]
- [
- [
- [link boost_asio.design.eof Why EOF is an error]
- ]
- [
- Discusses why the end-of-file condition should be an error code.
- ]
- ]
- [
- [
- [link boost_asio.design.line_based Line-based protocols]
- ]
- [
- Outlines Boost.Asio's support for line-based protocols.
- ]
- ]
- [
- [
- [link boost_asio.design.threads Threads]
- ]
- [
- An implementation of Boost.Asio for a particular platform may make use of
- one or more additional threads to emulate asynchronicity. This design
- note discusses design rules applied to the use of threads in this way.
- ]
- ]
- [
- [
- [link boost_asio.design.strands Strands]
- ]
- [
- Describes the "strand" abstraction provided by Boost.Asio to ease
- concurrent programming and provide scalability across multiple
- processors.
- ]
- ]
- [
- [
- [link boost_asio.design.implementation Platform-specific implementation]
- ]
- [
- This design note lists platform-specific implementation details, such as
- the default demultiplexing mechanism, the number of threads created
- internally, and when threads are created.
- ]
- ]
-]
-
-[include design/rationale.qbk]
-[include design/async.qbk]
-[include design/allocation.qbk]
-[include design/buffers.qbk]
-[include design/eof.qbk]
-[include design/line_based.qbk]
-[include design/threads.qbk]
-[include design/strands.qbk]
-[include design/implementation.qbk]
-
-[endsect]

Modified: branches/proto/v4/libs/asio/doc/examples.qbk
==============================================================================
--- branches/proto/v4/libs/asio/doc/examples.qbk (original)
+++ branches/proto/v4/libs/asio/doc/examples.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -219,4 +219,31 @@
 * [@boost_asio/example/timers/time_t_timer.cpp]
 
 
+[heading Porthopper]
+
+Example illustrating mixed synchronous and asynchronous operations, and how to
+use Boost.Lambda with Boost.Asio.
+
+* [@boost_asio/example/porthopper/protocol.hpp]
+* [@boost_asio/example/porthopper/client.cpp]
+* [@boost_asio/example/porthopper/server.cpp]
+
+
+[heading Nonblocking]
+
+Example demonstrating reactor-style operations for integrating a third-party
+library that wants to perform the I/O operations itself.
+
+* [@boost_asio/example/nonblocking/third_party_lib.cpp]
+
+
+[heading UNIX Domain Sockets]
+
+Examples showing how to use UNIX domain (local) sockets.
+
+* [@boost_asio/example/local/connect_pair.cpp]
+* [@boost_asio/example/local/stream_server.cpp]
+* [@boost_asio/example/local/stream_client.cpp]
+
+
 [endsect]

Modified: branches/proto/v4/libs/asio/doc/quickref.xml
==============================================================================
--- branches/proto/v4/libs/asio/doc/quickref.xml (original)
+++ branches/proto/v4/libs/asio/doc/quickref.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,174 +10,409 @@
 
 <informaltable frame="all">
   <tgroup cols="4">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <colspec colname="d"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="d">
+ <bridgehead renderas="sect2">Core</bridgehead>
+ </entry>
+ </row>
+ </thead>
     <tbody>
       <row>
         <entry valign="top">
           <bridgehead renderas="sect3">Classes</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.const_buffer">const_buffer</link></listitem>
- <listitem><link linkend="boost_asio.reference.const_buffers_1">const_buffers_1</link></listitem>
- <listitem><link linkend="boost_asio.reference.deadline_timer">deadline_timer</link></listitem>
- <listitem><link linkend="boost_asio.reference.io_service">io_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.io_service__id">io_service::id</link></listitem>
- <listitem><link linkend="boost_asio.reference.io_service__service">io_service::service</link></listitem>
- <listitem><link linkend="boost_asio.reference.io_service__strand">io_service::strand</link></listitem>
- <listitem><link linkend="boost_asio.reference.io_service__work">io_service::work</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__address">ip::address</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__address_v4">ip::address_v4</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__address_v6">ip::address_v6</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__resolver_query_base">ip::resolver_query_base</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp">ip::tcp</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp.acceptor">ip::tcp::acceptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp.endpoint">ip::tcp::endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp.iostream">ip::tcp::iostream</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp.resolver">ip::tcp::resolver</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__tcp.socket">ip::tcp::socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__udp">ip::udp</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__udp.endpoint">ip::udp::endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__udp.resolver">ip::udp::resolver</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__udp.socket">ip::udp::socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__stream_protocol">local::stream_protocol</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__stream_protocol.acceptor">local::stream_protocol::acceptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__stream_protocol.endpoint">local::stream_protocol::endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__stream_protocol.iostream">local::stream_protocol::iostream</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__stream_protocol.socket">local::stream_protocol::socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__datagram_protocol">local::datagram_protocol</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__datagram_protocol.endpoint">local::datagram_protocol::endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__datagram_protocol.socket">local::datagram_protocol::socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.mutable_buffer">mutable_buffer</link></listitem>
- <listitem><link linkend="boost_asio.reference.mutable_buffers_1">mutable_buffers_1</link></listitem>
- <listitem><link linkend="boost_asio.reference.posix__descriptor_base">posix::descriptor_base</link></listitem>
- <listitem><link linkend="boost_asio.reference.posix__stream_descriptor">posix::stream_descriptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.socket_base">socket_base</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__context">ssl::context</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__context_base">ssl::context_base</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__stream_base">ssl::stream_base</link></listitem>
- <listitem><link linkend="boost_asio.reference.streambuf">streambuf</link></listitem>
- <listitem><link linkend="boost_asio.reference.windows__stream_handle">windows::stream_handle</link></listitem>
- </itemizedlist>
- </entry>
- <entry valign="top">
- <bridgehead renderas="sect3">Class Templates</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.basic_datagram_socket">basic_datagram_socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_deadline_timer">basic_deadline_timer</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_io_object">basic_io_object</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_socket">basic_socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_socket_acceptor">basic_socket_acceptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_socket_iostream">basic_socket_iostream</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_socket_streambuf">basic_socket_streambuf</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_stream_socket">basic_stream_socket</link></listitem>
- <listitem><link linkend="boost_asio.reference.basic_streambuf">basic_streambuf</link></listitem>
- <listitem><link linkend="boost_asio.reference.buffered_read_stream">buffered_read_stream</link></listitem>
- <listitem><link linkend="boost_asio.reference.buffered_stream">buffered_stream</link></listitem>
- <listitem><link linkend="boost_asio.reference.buffered_write_stream">buffered_write_stream</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__basic_endpoint">ip::basic_endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__basic_resolver">ip::basic_resolver</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__basic_resolver_entry">ip::basic_resolver_entry</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__basic_resolver_iterator">ip::basic_resolver_iterator</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__basic_resolver_query">ip::basic_resolver_query</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__basic_endpoint">local::basic_endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.posix__basic_descriptor">posix::basic_descriptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.posix__basic_stream_descriptor">posix::basic_stream_descriptor</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__basic_context">ssl::basic_context</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__stream">ssl::stream</link></listitem>
- <listitem><link linkend="boost_asio.reference.windows__basic_handle">windows::basic_handle</link></listitem>
- <listitem><link linkend="boost_asio.reference.windows__basic_stream_handle">windows::basic_stream_handle</link></listitem>
- </itemizedlist>
- <bridgehead renderas="sect3">Services</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.datagram_socket_service">datagram_socket_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.deadline_timer_service">deadline_timer_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__resolver_service">ip::resolver_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.posix__stream_descriptor_service">posix::stream_descriptor_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.socket_acceptor_service">socket_acceptor_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__context_service">ssl::context_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.ssl__stream_service">ssl::stream_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.stream_socket_service">stream_socket_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.windows__stream_handle_service">windows::stream_handle_service</link></listitem>
- </itemizedlist>
- <bridgehead renderas="sect3">Placeholders</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.placeholders__bytes_transferred">placeholders::bytes_transferred</link></listitem>
- <listitem><link linkend="boost_asio.reference.placeholders__error">placeholders::error</link></listitem>
- <listitem><link linkend="boost_asio.reference.placeholders__iterator">placeholders::iterator</link></listitem>
- </itemizedlist>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.const_buffer">const_buffer</link></member>
+ <member><link linkend="boost_asio.reference.const_buffers_1">const_buffers_1</link></member>
+ <member><link linkend="boost_asio.reference.invalid_service_owner">invalid_service_owner</link></member>
+ <member><link linkend="boost_asio.reference.io_service">io_service</link></member>
+ <member><link linkend="boost_asio.reference.io_service__id">io_service::id</link></member>
+ <member><link linkend="boost_asio.reference.io_service__service">io_service::service</link></member>
+ <member><link linkend="boost_asio.reference.io_service__strand">io_service::strand</link></member>
+ <member><link linkend="boost_asio.reference.io_service__work">io_service::work</link></member>
+ <member><link linkend="boost_asio.reference.mutable_buffer">mutable_buffer</link></member>
+ <member><link linkend="boost_asio.reference.mutable_buffers_1">mutable_buffers_1</link></member>
+ <member><link linkend="boost_asio.reference.null_buffers">null_buffers</link></member>
+ <member><link linkend="boost_asio.reference.service_already_exists">service_already_exists</link></member>
+ <member><link linkend="boost_asio.reference.streambuf">streambuf</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.basic_io_object">basic_io_object</link></member>
+ <member><link linkend="boost_asio.reference.basic_streambuf">basic_streambuf</link></member>
+ <member><link linkend="boost_asio.reference.buffered_read_stream">buffered_read_stream</link></member>
+ <member><link linkend="boost_asio.reference.buffered_stream">buffered_stream</link></member>
+ <member><link linkend="boost_asio.reference.buffered_write_stream">buffered_write_stream</link></member>
+ <member><link linkend="boost_asio.reference.buffers_iterator">buffers_iterator</link></member>
+ </simplelist>
         </entry>
         <entry valign="top">
           <bridgehead renderas="sect3">Free Functions</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.add_service">add_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.asio_handler_allocate">asio_handler_allocate</link></listitem>
- <listitem><link linkend="boost_asio.reference.asio_handler_deallocate">asio_handler_deallocate</link></listitem>
- <listitem><link linkend="boost_asio.reference.asio_handler_invoke">asio_handler_invoke</link></listitem>
- <listitem><link linkend="boost_asio.reference.async_read">async_read</link></listitem>
- <listitem><link linkend="boost_asio.reference.async_read_until">async_read_until</link></listitem>
- <listitem><link linkend="boost_asio.reference.async_write">async_write</link></listitem>
- <listitem><link linkend="boost_asio.reference.buffer">buffer</link></listitem>
- <listitem><link linkend="boost_asio.reference.has_service">has_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.ip__host_name">ip::host_name</link></listitem>
- <listitem><link linkend="boost_asio.reference.local__connect_pair">local::connect_pair</link></listitem>
- <listitem><link linkend="boost_asio.reference.read">read</link></listitem>
- <listitem><link linkend="boost_asio.reference.read_until">read_until</link></listitem>
- <listitem><link linkend="boost_asio.reference.transfer_all">transfer_all</link></listitem>
- <listitem><link linkend="boost_asio.reference.transfer_at_least">transfer_at_least</link></listitem>
- <listitem><link linkend="boost_asio.reference.use_service">use_service</link></listitem>
- <listitem><link linkend="boost_asio.reference.write">write</link></listitem>
- </itemizedlist>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.add_service">add_service</link></member>
+ <member><link linkend="boost_asio.reference.asio_handler_allocate">asio_handler_allocate</link></member>
+ <member><link linkend="boost_asio.reference.asio_handler_deallocate">asio_handler_deallocate</link></member>
+ <member><link linkend="boost_asio.reference.asio_handler_invoke">asio_handler_invoke</link></member>
+ <member><link linkend="boost_asio.reference.async_read">async_read</link></member>
+ <member><link linkend="boost_asio.reference.async_read_at">async_read_at</link></member>
+ <member><link linkend="boost_asio.reference.async_read_until">async_read_until</link></member>
+ <member><link linkend="boost_asio.reference.async_write">async_write</link></member>
+ <member><link linkend="boost_asio.reference.async_write_at">async_write_at</link></member>
+ <member><link linkend="boost_asio.reference.buffer">buffer</link></member>
+ <member><link linkend="boost_asio.reference.buffers_begin">buffers_begin</link></member>
+ <member><link linkend="boost_asio.reference.buffers_end">buffers_end</link></member>
+ <member><link linkend="boost_asio.reference.has_service">has_service</link></member>
+ <member><link linkend="boost_asio.reference.read">read</link></member>
+ <member><link linkend="boost_asio.reference.read_at">read_at</link></member>
+ <member><link linkend="boost_asio.reference.read_until">read_until</link></member>
+ <member><link linkend="boost_asio.reference.transfer_all">transfer_all</link></member>
+ <member><link linkend="boost_asio.reference.transfer_at_least">transfer_at_least</link></member>
+ <member><link linkend="boost_asio.reference.use_service">use_service</link></member>
+ <member><link linkend="boost_asio.reference.write">write</link></member>
+ <member><link linkend="boost_asio.reference.write_at">write_at</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Placeholders</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.placeholders__bytes_transferred">placeholders::bytes_transferred</link></member>
+ <member><link linkend="boost_asio.reference.placeholders__error">placeholders::error</link></member>
+ <member><link linkend="boost_asio.reference.placeholders__iterator">placeholders::iterator</link></member>
+ </simplelist>
           <bridgehead renderas="sect3">Error Codes</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.error__basic_errors">error::basic_errors</link></listitem>
- <listitem><link linkend="boost_asio.reference.error__netdb_errors">error::netdb_errors</link></listitem>
- <listitem><link linkend="boost_asio.reference.error__addrinfo_errors">error::addrinfo_errors</link></listitem>
- <listitem><link linkend="boost_asio.reference.error__misc_errors">error::misc_errors</link></listitem>
- </itemizedlist>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.error__basic_errors">error::basic_errors</link></member>
+ <member><link linkend="boost_asio.reference.error__netdb_errors">error::netdb_errors</link></member>
+ <member><link linkend="boost_asio.reference.error__addrinfo_errors">error::addrinfo_errors</link></member>
+ <member><link linkend="boost_asio.reference.error__misc_errors">error::misc_errors</link></member>
+ </simplelist>
           <bridgehead renderas="sect3">Type Traits</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.is_read_buffered">is_read_buffered</link></listitem>
- <listitem><link linkend="boost_asio.reference.is_write_buffered">is_write_buffered</link></listitem>
- </itemizedlist>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.is_match_condition">is_match_condition</link></member>
+ <member><link linkend="boost_asio.reference.is_read_buffered">is_read_buffered</link></member>
+ <member><link linkend="boost_asio.reference.is_write_buffered">is_write_buffered</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Type Requirements</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.asynchronous_operations">Asynchronous operations</link></member>
+ <member><link linkend="boost_asio.reference.AsyncRandomAccessReadDevice">AsyncRandomAccessReadDevice</link></member>
+ <member><link linkend="boost_asio.reference.AsyncRandomAccessWriteDevice">AsyncRandomAccessWriteDevice</link></member>
+ <member><link linkend="boost_asio.reference.AsyncReadStream">AsyncReadStream</link></member>
+ <member><link linkend="boost_asio.reference.AsyncWriteStream">AsyncWriteStream</link></member>
+ <member><link linkend="boost_asio.reference.CompletionHandler">CompletionHandler</link></member>
+ <member><link linkend="boost_asio.reference.ConstBufferSequence">ConstBufferSequence</link></member>
+ <member><link linkend="boost_asio.reference.ConvertibleToConstBuffer">ConvertibleToConstBuffer</link></member>
+ <member><link linkend="boost_asio.reference.ConvertibleToMutableBuffer">ConvertibleToMutableBuffer</link></member>
+ <member><link linkend="boost_asio.reference.Handler">Handler</link></member>
+ <member><link linkend="boost_asio.reference.IoObjectService">IoObjectService</link></member>
+ <member><link linkend="boost_asio.reference.MutableBufferSequence">MutableBufferSequence</link></member>
+ <member><link linkend="boost_asio.reference.ReadHandler">ReadHandler</link></member>
+ <member><link linkend="boost_asio.reference.Service">Service</link></member>
+ <member><link linkend="boost_asio.reference.SyncRandomAccessReadDevice">SyncRandomAccessReadDevice</link></member>
+ <member><link linkend="boost_asio.reference.SyncRandomAccessWriteDevice">SyncRandomAccessWriteDevice</link></member>
+ <member><link linkend="boost_asio.reference.SyncReadStream">SyncReadStream</link></member>
+ <member><link linkend="boost_asio.reference.SyncWriteStream">SyncWriteStream</link></member>
+ <member><link linkend="boost_asio.reference.WriteHandler">WriteHandler</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ <tgroup cols="4">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <colspec colname="d"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="d">
+ <bridgehead renderas="sect2">Networking</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ip__address">ip::address</link></member>
+ <member><link linkend="boost_asio.reference.ip__address_v4">ip::address_v4</link></member>
+ <member><link linkend="boost_asio.reference.ip__address_v6">ip::address_v6</link></member>
+ <member><link linkend="boost_asio.reference.ip__icmp">ip::icmp</link></member>
+ <member><link linkend="boost_asio.reference.ip__icmp.endpoint">ip::icmp::endpoint</link></member>
+ <member><link linkend="boost_asio.reference.ip__icmp.resolver">ip::icmp::resolver</link></member>
+ <member><link linkend="boost_asio.reference.ip__icmp.socket">ip::icmp::socket</link></member>
+ <member><link linkend="boost_asio.reference.ip__resolver_query_base">ip::resolver_query_base</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp">ip::tcp</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.acceptor">ip::tcp::acceptor</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.endpoint">ip::tcp::endpoint</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.iostream">ip::tcp::iostream</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.resolver">ip::tcp::resolver</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.socket">ip::tcp::socket</link></member>
+ <member><link linkend="boost_asio.reference.ip__udp">ip::udp</link></member>
+ <member><link linkend="boost_asio.reference.ip__udp.endpoint">ip::udp::endpoint</link></member>
+ <member><link linkend="boost_asio.reference.ip__udp.resolver">ip::udp::resolver</link></member>
+ <member><link linkend="boost_asio.reference.ip__udp.socket">ip::udp::socket</link></member>
+ <member><link linkend="boost_asio.reference.socket_base">socket_base</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Free Functions</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ip__host_name">ip::host_name</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.basic_datagram_socket">basic_datagram_socket</link></member>
+ <member><link linkend="boost_asio.reference.basic_deadline_timer">basic_deadline_timer</link></member>
+ <member><link linkend="boost_asio.reference.basic_socket">basic_socket</link></member>
+ <member><link linkend="boost_asio.reference.basic_raw_socket">basic_raw_socket</link></member>
+ <member><link linkend="boost_asio.reference.basic_socket_acceptor">basic_socket_acceptor</link></member>
+ <member><link linkend="boost_asio.reference.basic_socket_iostream">basic_socket_iostream</link></member>
+ <member><link linkend="boost_asio.reference.basic_socket_streambuf">basic_socket_streambuf</link></member>
+ <member><link linkend="boost_asio.reference.basic_stream_socket">basic_stream_socket</link></member>
+ <member><link linkend="boost_asio.reference.ip__basic_endpoint">ip::basic_endpoint</link></member>
+ <member><link linkend="boost_asio.reference.ip__basic_resolver">ip::basic_resolver</link></member>
+ <member><link linkend="boost_asio.reference.ip__basic_resolver_entry">ip::basic_resolver_entry</link></member>
+ <member><link linkend="boost_asio.reference.ip__basic_resolver_iterator">ip::basic_resolver_iterator</link></member>
+ <member><link linkend="boost_asio.reference.ip__basic_resolver_query">ip::basic_resolver_query</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.datagram_socket_service">datagram_socket_service</link></member>
+ <member><link linkend="boost_asio.reference.ip__resolver_service">ip::resolver_service</link></member>
+ <member><link linkend="boost_asio.reference.raw_socket_service">raw_socket_service</link></member>
+ <member><link linkend="boost_asio.reference.socket_acceptor_service">socket_acceptor_service</link></member>
+ <member><link linkend="boost_asio.reference.stream_socket_service">stream_socket_service</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Socket Options</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ip__multicast__enable_loopback">ip::multicast::enable_loopback</link></member>
+ <member><link linkend="boost_asio.reference.ip__multicast__hops">ip::multicast::hops</link></member>
+ <member><link linkend="boost_asio.reference.ip__multicast__join_group">ip::multicast::join_group</link></member>
+ <member><link linkend="boost_asio.reference.ip__multicast__leave_group">ip::multicast::leave_group</link></member>
+ <member><link linkend="boost_asio.reference.ip__multicast__outbound_interface">ip::multicast::outbound_interface</link></member>
+ <member><link linkend="boost_asio.reference.ip__tcp.no_delay">ip::tcp::no_delay</link></member>
+ <member><link linkend="boost_asio.reference.ip__unicast__hops">ip::unicast::hops</link></member>
+ <member><link linkend="boost_asio.reference.ip__v6_only">ip::v6_only</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.broadcast">socket_base::broadcast</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.debug">socket_base::debug</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.do_not_route">socket_base::do_not_route</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.enable_connection_aborted">socket_base::enable_connection_aborted</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.keep_alive">socket_base::keep_alive</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.linger">socket_base::linger</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.receive_buffer_size">socket_base::receive_buffer_size</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.receive_low_watermark">socket_base::receive_low_watermark</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.reuse_address">socket_base::reuse_address</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.send_buffer_size">socket_base::send_buffer_size</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.send_low_watermark">socket_base::send_low_watermark</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">I/O Control Commands</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.socket_base.bytes_readable">socket_base::bytes_readable</link></member>
+ <member><link linkend="boost_asio.reference.socket_base.non_blocking_io">socket_base::non_blocking_io</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Type Requirements</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.AcceptHandler">AcceptHandler</link></member>
+ <member><link linkend="boost_asio.reference.ConnectHandler">ConnectHandler</link></member>
+ <member><link linkend="boost_asio.reference.DatagramSocketService">DatagramSocketService</link></member>
+ <member><link linkend="boost_asio.reference.Endpoint">Endpoint</link></member>
+ <member><link linkend="boost_asio.reference.GettableSocketOption">GettableSocketOption</link></member>
+ <member><link linkend="boost_asio.reference.InternetProtocol">InternetProtocol</link></member>
+ <member><link linkend="boost_asio.reference.IoControlCommand">IoControlCommand</link></member>
+ <member><link linkend="boost_asio.reference.Protocol">Protocol</link></member>
+ <member><link linkend="boost_asio.reference.RawSocketService">RawSocketService</link></member>
+ <member><link linkend="boost_asio.reference.ResolveHandler">ResolveHandler</link></member>
+ <member><link linkend="boost_asio.reference.ResolverService">ResolverService</link></member>
+ <member><link linkend="boost_asio.reference.SettableSocketOption">SettableSocketOption</link></member>
+ <member><link linkend="boost_asio.reference.SocketAcceptorService">SocketAcceptorService</link></member>
+ <member><link linkend="boost_asio.reference.SocketService">SocketService</link></member>
+ <member><link linkend="boost_asio.reference.StreamSocketService">StreamSocketService</link></member>
+ </simplelist>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ <tgroup cols="4">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <colspec colname="d"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="a">
+ <bridgehead renderas="sect2">Timers</bridgehead>
+ </entry>
+ <entry valign="center" namest="b" nameend="b">
+ <bridgehead renderas="sect2">SSL</bridgehead>
+ </entry>
+ <entry valign="center" namest="c" nameend="d">
+ <bridgehead renderas="sect2">Serial Ports</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.deadline_timer">deadline_timer</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.basic_deadline_timer">basic_deadline_timer</link></member>
+ <member><link linkend="boost_asio.reference.time_traits_lt__ptime__gt_">time_traits</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.deadline_timer_service">deadline_timer_service</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Type Requirements</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.TimerService">TimerService</link></member>
+ <member><link linkend="boost_asio.reference.TimeTraits">TimeTraits</link></member>
+ <member><link linkend="boost_asio.reference.WaitHandler">WaitHandler</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ssl__context">ssl::context</link></member>
+ <member><link linkend="boost_asio.reference.ssl__context_base">ssl::context_base</link></member>
+ <member><link linkend="boost_asio.reference.ssl__stream_base">ssl::stream_base</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ssl__basic_context">ssl::basic_context</link></member>
+ <member><link linkend="boost_asio.reference.ssl__stream">ssl::stream</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.ssl__context_service">ssl::context_service</link></member>
+ <member><link linkend="boost_asio.reference.ssl__stream_service">ssl::stream_service</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.serial_port">serial_port</link></member>
+ <member><link linkend="boost_asio.reference.serial_port_base">serial_port_base</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.basic_serial_port">basic_serial_port</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.serial_port_service">serial_port_service</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Serial Port Options</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.serial_port_base__baud_rate">serial_port_base::baud_rate</link></member>
+ <member><link linkend="boost_asio.reference.serial_port_base__flow_control">serial_port_base::flow_control</link></member>
+ <member><link linkend="boost_asio.reference.serial_port_base__parity">serial_port_base::parity</link></member>
+ <member><link linkend="boost_asio.reference.serial_port_base__stop_bits">serial_port_base::stop_bits</link></member>
+ <member><link linkend="boost_asio.reference.serial_port_base__character_size">serial_port_base::character_size</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Type Requirements</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.GettableSerialPortOption">GettableSerialPortOption</link></member>
+ <member><link linkend="boost_asio.reference.SerialPortService">SerialPortService</link></member>
+ <member><link linkend="boost_asio.reference.SettableSerialPortOption">SettableSerialPortOption</link></member>
+ </simplelist>
         </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ <tgroup cols="4">
+ <colspec colname="a"/>
+ <colspec colname="b"/>
+ <colspec colname="c"/>
+ <colspec colname="d"/>
+ <thead>
+ <row>
+ <entry valign="center" namest="a" nameend="b">
+ <bridgehead renderas="sect2">POSIX-specific</bridgehead>
+ </entry>
+ <entry valign="center" namest="c" nameend="d">
+ <bridgehead renderas="sect2">Windows-specific</bridgehead>
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
         <entry valign="top">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.local__stream_protocol">local::stream_protocol</link></member>
+ <member><link linkend="boost_asio.reference.local__stream_protocol.acceptor">local::stream_protocol::acceptor</link></member>
+ <member><link linkend="boost_asio.reference.local__stream_protocol.endpoint">local::stream_protocol::endpoint</link></member>
+ <member><link linkend="boost_asio.reference.local__stream_protocol.iostream">local::stream_protocol::iostream</link></member>
+ <member><link linkend="boost_asio.reference.local__stream_protocol.socket">local::stream_protocol::socket</link></member>
+ <member><link linkend="boost_asio.reference.local__datagram_protocol">local::datagram_protocol</link></member>
+ <member><link linkend="boost_asio.reference.local__datagram_protocol.endpoint">local::datagram_protocol::endpoint</link></member>
+ <member><link linkend="boost_asio.reference.local__datagram_protocol.socket">local::datagram_protocol::socket</link></member>
+ <member><link linkend="boost_asio.reference.posix__descriptor_base">posix::descriptor_base</link></member>
+ <member><link linkend="boost_asio.reference.posix__stream_descriptor">posix::stream_descriptor</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Free Functions</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.local__connect_pair">local::connect_pair</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top">
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.local__basic_endpoint">local::basic_endpoint</link></member>
+ <member><link linkend="boost_asio.reference.posix__basic_descriptor">posix::basic_descriptor</link></member>
+ <member><link linkend="boost_asio.reference.posix__basic_stream_descriptor">posix::basic_stream_descriptor</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.posix__stream_descriptor_service">posix::stream_descriptor_service</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Type Requirements</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.DescriptorService">DescriptorService</link></member>
+ <member><link linkend="boost_asio.reference.StreamDescriptorService">StreamDescriptorService</link></member>
+ </simplelist>
+ </entry>
+ <entry valign="top" namest="c" nameend="d">
+ <bridgehead renderas="sect3">Classes</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.windows__random_access_handle">windows::random_access_handle</link></member>
+ <member><link linkend="boost_asio.reference.windows__stream_handle">windows::stream_handle</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Class Templates</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.windows__basic_handle">windows::basic_handle</link></member>
+ <member><link linkend="boost_asio.reference.windows__basic_random_access_handle">windows::basic_random_access_handle</link></member>
+ <member><link linkend="boost_asio.reference.windows__basic_stream_handle">windows::basic_stream_handle</link></member>
+ </simplelist>
+ <bridgehead renderas="sect3">Services</bridgehead>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.windows__random_access_handle_service">windows::random_access_handle_service</link></member>
+ <member><link linkend="boost_asio.reference.windows__stream_handle_service">windows::stream_handle_service</link></member>
+ </simplelist>
           <bridgehead renderas="sect3">Type Requirements</bridgehead>
- <itemizedlist>
- <listitem><link linkend="boost_asio.reference.asynchronous_operations">Asynchronous operations</link></listitem>
- <listitem><link linkend="boost_asio.reference.AcceptHandler">AcceptHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.AsyncReadStream">AsyncReadStream</link></listitem>
- <listitem><link linkend="boost_asio.reference.AsyncWriteStream">AsyncWriteStream</link></listitem>
- <listitem><link linkend="boost_asio.reference.CompletionHandler">CompletionHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.ConnectHandler">ConnectHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.ConstBufferSequence">ConstBufferSequence</link></listitem>
- <listitem><link linkend="boost_asio.reference.ConvertibleToConstBuffer">ConvertibleToConstBuffer</link></listitem>
- <listitem><link linkend="boost_asio.reference.ConvertibleToMutableBuffer">ConvertibleToMutableBuffer</link></listitem>
- <listitem><link linkend="boost_asio.reference.DatagramSocketService">DatagramSocketService</link></listitem>
- <listitem><link linkend="boost_asio.reference.DescriptorService">DescriptorService</link></listitem>
- <listitem><link linkend="boost_asio.reference.Endpoint">Endpoint</link></listitem>
- <listitem><link linkend="boost_asio.reference.GettableSocketOption">GettableSocketOption</link></listitem>
- <listitem><link linkend="boost_asio.reference.Handler">Handler</link></listitem>
- <listitem><link linkend="boost_asio.reference.HandleService">HandleService</link></listitem>
- <listitem><link linkend="boost_asio.reference.InternetProtocol">InternetProtocol</link></listitem>
- <listitem><link linkend="boost_asio.reference.IoControlCommand">IoControlCommand</link></listitem>
- <listitem><link linkend="boost_asio.reference.IoObjectService">IoObjectService</link></listitem>
- <listitem><link linkend="boost_asio.reference.MutableBufferSequence">MutableBufferSequence</link></listitem>
- <listitem><link linkend="boost_asio.reference.Protocol">Protocol</link></listitem>
- <listitem><link linkend="boost_asio.reference.ReadHandler">ReadHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.ResolveHandler">ResolveHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.ResolverService">ResolverService</link></listitem>
- <listitem><link linkend="boost_asio.reference.Service">Service</link></listitem>
- <listitem><link linkend="boost_asio.reference.SettableSocketOption">SettableSocketOption</link></listitem>
- <listitem><link linkend="boost_asio.reference.SocketAcceptorService">SocketAcceptorService</link></listitem>
- <listitem><link linkend="boost_asio.reference.SocketService">SocketService</link></listitem>
- <listitem><link linkend="boost_asio.reference.StreamDescriptorService">StreamDescriptorService</link></listitem>
- <listitem><link linkend="boost_asio.reference.StreamHandleService">StreamHandleService</link></listitem>
- <listitem><link linkend="boost_asio.reference.StreamSocketService">StreamSocketService</link></listitem>
- <listitem><link linkend="boost_asio.reference.SyncReadStream">SyncReadStream</link></listitem>
- <listitem><link linkend="boost_asio.reference.SyncWriteStream">SyncWriteStream</link></listitem>
- <listitem><link linkend="boost_asio.reference.TimerService">TimerService</link></listitem>
- <listitem><link linkend="boost_asio.reference.TimeTraits">TimeTraits</link></listitem>
- <listitem><link linkend="boost_asio.reference.WaitHandler">WaitHandler</link></listitem>
- <listitem><link linkend="boost_asio.reference.WriteHandler">WriteHandler</link></listitem>
- </itemizedlist>
+ <simplelist type="vert" columns="1">
+ <member><link linkend="boost_asio.reference.HandleService">HandleService</link></member>
+ <member><link linkend="boost_asio.reference.RandomAccessHandleService">RandomAccessHandleService</link></member>
+ <member><link linkend="boost_asio.reference.StreamHandleService">StreamHandleService</link></member>
+ </simplelist>
         </entry>
       </row>
     </tbody>

Modified: branches/proto/v4/libs/asio/doc/reference.dox
==============================================================================
--- branches/proto/v4/libs/asio/doc/reference.dox (original)
+++ branches/proto/v4/libs/asio/doc/reference.dox 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -200,7 +200,7 @@
 # Configuration::additions related to external references
 #---------------------------------------------------------------------------
 TAGFILES =
-GENERATE_TAGFILE =
+GENERATE_TAGFILE = reference.tags
 ALLEXTERNALS = NO
 EXTERNAL_GROUPS = YES
 PERL_PATH = /usr/bin/perl

Modified: branches/proto/v4/libs/asio/doc/reference.qbk
==============================================================================
--- branches/proto/v4/libs/asio/doc/reference.qbk (original)
+++ branches/proto/v4/libs/asio/doc/reference.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,6 +11,8 @@
 
 [include requirements/asynchronous_operations.qbk]
 [include requirements/AcceptHandler.qbk]
+[include requirements/AsyncRandomAccessReadDevice.qbk]
+[include requirements/AsyncRandomAccessWriteDevice.qbk]
 [include requirements/AsyncReadStream.qbk]
 [include requirements/AsyncWriteStream.qbk]
 [include requirements/CompletionHandler.qbk]
@@ -21,6 +23,7 @@
 [include requirements/DatagramSocketService.qbk]
 [include requirements/DescriptorService.qbk]
 [include requirements/Endpoint.qbk]
+[include requirements/GettableSerialPortOption.qbk]
 [include requirements/GettableSocketOption.qbk]
 [include requirements/Handler.qbk]
 [include requirements/HandleService.qbk]
@@ -29,16 +32,22 @@
 [include requirements/IoObjectService.qbk]
 [include requirements/MutableBufferSequence.qbk]
 [include requirements/Protocol.qbk]
+[include requirements/RandomAccessHandleService.qbk]
+[include requirements/RawSocketService.qbk]
 [include requirements/ReadHandler.qbk]
 [include requirements/ResolveHandler.qbk]
 [include requirements/ResolverService.qbk]
+[include requirements/SerialPortService.qbk]
 [include requirements/Service.qbk]
+[include requirements/SettableSerialPortOption.qbk]
 [include requirements/SettableSocketOption.qbk]
 [include requirements/SocketAcceptorService.qbk]
 [include requirements/SocketService.qbk]
 [include requirements/StreamDescriptorService.qbk]
 [include requirements/StreamHandleService.qbk]
 [include requirements/StreamSocketService.qbk]
+[include requirements/SyncRandomAccessReadDevice.qbk]
+[include requirements/SyncRandomAccessWriteDevice.qbk]
 [include requirements/SyncReadStream.qbk]
 [include requirements/SyncWriteStream.qbk]
 [include requirements/TimeTraits.qbk]
@@ -50,7 +59,7 @@
 
 [section:add_service add_service]
 
-
+[indexterm1 add_service]
 
   template<
       typename ``[link boost_asio.reference.Service Service]``>
@@ -72,7 +81,6 @@
 [[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:
 ``
    delete static_cast<io_service::service*>(svc)
-
 ``
 ]]
 
@@ -97,7 +105,7 @@
 
 [section:asio_handler_allocate asio_handler_allocate]
 
-Default allocation function for handlers.
+[indexterm1 asio_handler_allocate] Default allocation function for handlers.
 
   void * asio_handler_allocate(
       std::size_t size,
@@ -110,7 +118,7 @@
 
 This default implementation is simply:
 
- return ::operator new(bytes);
+ return ::operator new(size);
 
 
 
@@ -148,7 +156,7 @@
 
 [section:asio_handler_deallocate asio_handler_deallocate]
 
-Default deallocation function for handlers.
+[indexterm1 asio_handler_deallocate] Default deallocation function for handlers.
 
   void asio_handler_deallocate(
       void * pointer,
@@ -174,7 +182,7 @@
 
 [section:asio_handler_invoke asio_handler_invoke]
 
-Default invoke function for handlers.
+[indexterm1 asio_handler_invoke] Default invoke function for handlers.
 
   template<
       typename Function>
@@ -219,8 +227,8 @@
 
 [section:async_read async_read]
 
-Start an asynchronous operation to read a certain amount of data from a stream.
-
+[indexterm1 async_read] Start an asynchronous operation to read a certain amount of data from a stream.
+
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -306,7 +314,6 @@
                                              // bytes successfully transferred
                                              // prior to the error.
    );
-
 ``
 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().]]
 
@@ -382,7 +389,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's async\_read\_some function are required.]]
 
@@ -397,7 +403,6 @@
                                              // bytes successfully transferred
                                              // prior to the error.
    );
-
 ``
 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().]]
 
@@ -465,7 +470,6 @@
                                              // bytes successfully transferred
                                              // prior to the error.
    );
-
 ``
 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().]]
 
@@ -531,7 +535,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's async\_read\_some function are required.]]
 
@@ -546,7 +549,358 @@
                                              // bytes successfully transferred
                                              // prior to the error.
    );
+``
+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(). ]]
+
+]
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:async_read_at async_read_at]
+
+[indexterm1 async_read_at] Start an asynchronous operation to read a certain amount of data at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void ``[link boost_asio.reference.async_read_at.overload1 async_read_at]``(
+ AsyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void ``[link boost_asio.reference.async_read_at.overload2 async_read_at]``(
+ AsyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition,
+ ReadHandler handler);
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
+ typename Allocator,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void ``[link boost_asio.reference.async_read_at.overload3 async_read_at]``(
+ AsyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ ReadHandler handler);
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
+ typename Allocator,
+ typename CompletionCondition,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void ``[link boost_asio.reference.async_read_at.overload4 async_read_at]``(
+ AsyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition,
+ ReadHandler handler);
+
+
+[section:overload1 async_read_at (1 of 4 overloads)]
+
+Start an asynchronous operation to read a certain amount of data at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_at(
+ AsyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
+
+
+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:
+
+
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
+
+* An error occurred.
+
+This operation is implemented in terms of one or more calls to the device's async\_read\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device from which the data is to be read. The type must support the AsyncRandomAccessReadDevice concept.]]
+
+[[offset][The offset at which the data will be read.]]
+
+[[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.]]
+
+[[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:
+``
+ 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
+ );
+``
+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().]]
+
+]
+
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ boost::asio::async_read_at(d, 42, boost::asio::buffer(data, size), handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+[heading Remarks]
+
+This overload is equivalent to calling:
+
+ boost::asio::async_read_at(
+ d, 42, buffers,
+ boost::asio::transfer_all(),
+ handler);
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 async_read_at (2 of 4 overloads)]
+
+Start an asynchronous operation to read a certain amount of data at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_at(
+ AsyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition,
+ ReadHandler handler);
+
+
+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:
+
+
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
+
+* The completion_condition function object returns true.
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device from which the data is to be read. The type must support the AsyncRandomAccessReadDevice concept.]]
+
+[[offset][The offset at which the data will be read.]]
+
+[[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.]]
+
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool 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
+ );
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the device's async\_read\_some\_at function are required.]]
+
+[[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:
+``
+ 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
+ );
+``
+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().]]
+
+]
+
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ boost::asio::async_read_at(d, 42,
+ boost::asio::buffer(data, size),
+ boost::asio::transfer_at_least(32),
+ handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:overload3 async_read_at (3 of 4 overloads)]
+
+Start an asynchronous operation to read a certain amount of data at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
+ typename Allocator,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_at(
+ AsyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ ReadHandler handler);
+
+
+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:
+
+
+* An error occurred.
+
+This operation is implemented in terms of one or more calls to the device's async\_read\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device from which the data is to be read. The type must support the AsyncRandomAccessReadDevice concept.]]
+
+[[offset][The offset at which the data will be read.]]
+
+[[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.]]
+
+[[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:
+``
+ 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
+ );
+``
+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().]]
+
+]
+
+[heading Remarks]
+
+This overload is equivalent to calling:
+
+ boost::asio::async_read_at(
+ d, 42, b,
+ boost::asio::transfer_all(),
+ handler);
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload4 async_read_at (4 of 4 overloads)]
+
+Start an asynchronous operation to read a certain amount of data at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessReadDevice AsyncRandomAccessReadDevice]``,
+ typename Allocator,
+ typename CompletionCondition,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_at(
+ AsyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition,
+ ReadHandler handler);
+
+
+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:
+
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the device's async\_read\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device from which the data is to be read. The type must support the AsyncRandomAccessReadDevice concept.]]
+
+[[offset][The offset at which the data will be read.]]
+
+[[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.]]
+
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool 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
+ );
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the device's async\_read\_some\_at function are required.]]
+
+[[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:
+``
+ 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
+ );
 ``
 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(). ]]
 
@@ -561,8 +915,8 @@
 
 [section:async_read_until async_read_until]
 
-Start an asynchronous operation to read data into a streambuf until a delimiter is encountered.
-
+[indexterm1 async_read_until] 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.
+
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
       typename Allocator,
@@ -593,10 +947,22 @@
       const boost::regex & expr,
       ReadHandler handler);
 
+ template<
+ typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
+ typename Allocator,
+ typename MatchCondition,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void ``[link boost_asio.reference.async_read_until.overload4 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);
 
-[section:overload1 async_read_until (1 of 3 overloads)]
 
-Start an asynchronous operation to read data into a streambuf until a delimiter is encountered.
+[section:overload1 async_read_until (1 of 4 overloads)]
+
+Start an asynchronous operation to read data into a streambuf until it contains a specified delimiter.
 
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
@@ -633,19 +999,23 @@
 [[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:
 ``
    void handler(
- const boost::system::error_code& error, // Result of operation.
+ // Result of operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // The number of bytes in the
- // streambuf's get area up to
- // and including the delimiter.
- // 0 if an error occurred.
+ // 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
    );
-
 ``
 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().]]
 
 ]
 
+[heading Remarks]
+
+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.
+
 [heading Example]
   
 To asynchronously read data into a streambuf until a newline is encountered:
@@ -674,9 +1044,9 @@
 
 
 
-[section:overload2 async_read_until (2 of 3 overloads)]
+[section:overload2 async_read_until (2 of 4 overloads)]
 
-Start an asynchronous operation to read data into a streambuf until a delimiter is encountered.
+Start an asynchronous operation to read data into a streambuf until it contains a specified delimiter.
 
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
@@ -713,19 +1083,23 @@
 [[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:
 ``
    void handler(
- const boost::system::error_code& error, // Result of operation.
+ // Result of operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // The number of bytes in the
- // streambuf's get area up to
- // and including the delimiter.
- // 0 if an error occurred.
+ // 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
    );
-
 ``
 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().]]
 
 ]
 
+[heading Remarks]
+
+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.
+
 [heading Example]
   
 To asynchronously read data into a streambuf until a newline is encountered:
@@ -754,9 +1128,9 @@
 
 
 
-[section:overload3 async_read_until (3 of 3 overloads)]
+[section:overload3 async_read_until (3 of 4 overloads)]
 
-Start an asynchronous operation to read data into a streambuf until a regular expression is located.
+Start an asynchronous operation to read data into a streambuf until some part of its data matches a regular expression.
 
   template<
       typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
@@ -793,21 +1167,24 @@
 [[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:
 ``
    void handler(
- const boost::system::error_code& error, // Result of operation.
+ // Result of operation.
+ const boost::system::error_code& error,
 
- std::size_t bytes_transferred // 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.
+ // 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
    );
-
 ``
 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().]]
 
 ]
 
+[heading Remarks]
+
+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.
+
 [heading Example]
   
 To asynchronously read data into a streambuf until a CR-LF sequence is encountered:
@@ -835,12 +1212,145 @@
 [endsect]
 
 
+
+[section:overload4 async_read_until (4 of 4 overloads)]
+
+Start an asynchronous operation to read data into a streambuf until a function object indicates a match.
+
+ template<
+ typename ``[link boost_asio.reference.AsyncReadStream AsyncReadStream]``,
+ typename Allocator,
+ typename MatchCondition,
+ typename ``[link boost_asio.reference.ReadHandler 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);
+
+
+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:
+
+
+* The match condition function object returns a std::pair where the second element evaluates to true.
+
+* 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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the AsyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[match_condition][The function object to be called to determine whether a match exists. The signature of the function object must be:
+``
+ pair<iterator, bool> match_condition(iterator begin, iterator end);
+``
+where `iterator` represents the type:
+``
+ buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
+``
+The iterator parameters `begin` and `end` define the range of bytes to be scanned to determine whether there is a match. The `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 `begin` parameter for any subsequent invocation of the match condition. The `second` member of the return value is true if a match has been found, false otherwise.]]
+
+[[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:
+``
+ 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
+ );
+``
+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().]]
+
+]
+
+[heading Remarks]
+
+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.
+
+The default implementation of the `is_match_condition` type trait evaluates to true for function pointers and function objects with a `result_type` typedef. It must be specialised for other user-defined function objects.
+
+[heading Examples]
+
+To asynchronously read data into a streambuf until whitespace is encountered:
+
+ 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);
+
+
+
+
+To asynchronously read data into a streambuf until a matching character is found:
+
+ 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);
+
+
+
+
+
+[endsect]
+
+
 [endsect]
 
 [section:async_write async_write]
 
-Start an asynchronous operation to write of all of the supplied data to a stream.
-
+[indexterm1 async_write] Start an asynchronous operation to write a certain amount of data to a stream.
+
   template<
       typename ``[link boost_asio.reference.AsyncWriteStream AsyncWriteStream]``,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -884,7 +1394,7 @@
 
 [section:overload1 async_write (1 of 4 overloads)]
 
-Start an asynchronous operation to write of all of the supplied data to a stream.
+Start an asynchronous operation to write all of the supplied data to a stream.
 
   template<
       typename ``[link boost_asio.reference.AsyncWriteStream AsyncWriteStream]``,
@@ -925,7 +1435,6 @@
                                              // this will be less than the sum
                                              // of the buffer sizes.
    );
-
 ``
 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().]]
 
@@ -992,7 +1501,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's async\_write\_some function are required.]]
 
@@ -1006,7 +1514,6 @@
                                              // this will be less than the sum
                                              // of the buffer sizes.
    );
-
 ``
 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().]]
 
@@ -1034,7 +1541,7 @@
 
 [section:overload3 async_write (3 of 4 overloads)]
 
-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.
 
   template<
       typename ``[link boost_asio.reference.AsyncWriteStream AsyncWriteStream]``,
@@ -1075,7 +1582,6 @@
                                              // this will be less than the sum
                                              // of the buffer sizes.
    );
-
 ``
 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(). ]]
 
@@ -1131,7 +1637,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's async\_write\_some function are required.]]
 
@@ -1145,7 +1650,6 @@
                                              // this will be less than the sum
                                              // of the buffer sizes.
    );
-
 ``
 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(). ]]
 
@@ -1158,132 +1662,463 @@
 
 [endsect]
 
-[section:basic_datagram_socket basic_datagram_socket]
+[section:async_write_at async_write_at]
 
-Provides datagram-oriented socket functionality.
+[indexterm1 async_write_at] Start an asynchronous operation to write a certain amount of data at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void ``[link boost_asio.reference.async_write_at.overload1 async_write_at]``(
+ AsyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
 
   template<
- typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.DatagramSocketService DatagramSocketService]`` = datagram_socket_service<Protocol>>
- class basic_datagram_socket :
- public basic_socket< Protocol, DatagramSocketService >
+ typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename CompletionCondition,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void ``[link boost_asio.reference.async_write_at.overload2 async_write_at]``(
+ AsyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ CompletionCondition completion_condition,
+ WriteHandler handler);
 
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
+ typename Allocator,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void ``[link boost_asio.reference.async_write_at.overload3 async_write_at]``(
+ AsyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ WriteHandler handler);
 
-[heading Types]
-[table
- [[Name][Description]]
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
+ typename Allocator,
+ typename CompletionCondition,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void ``[link boost_asio.reference.async_write_at.overload4 async_write_at]``(
+ AsyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition,
+ WriteHandler handler);
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
+[section:overload1 async_write_at (1 of 4 overloads)]
 
- [
+Start an asynchronous operation to write all of the supplied data at the specified offset.
 
- [[link boost_asio.reference.basic_datagram_socket.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_at(
+ AsyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
+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:
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
+* 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.
 
- [
+* An error occurred.
 
- [[link boost_asio.reference.basic_datagram_socket.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
-
- ]
+This operation is implemented in terms of one or more calls to the device's async\_write\_some\_at function.
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[d][The device to which the data is to be written. The type must support the AsyncRandomAccessWriteDevice concept.]]
 
- [
+[[offset][The offset at which the data will be written.]]
 
- [[link boost_asio.reference.basic_datagram_socket.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
+[[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.]]
 
- [
+[[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:
+``
+ void handler(
+ // Result of operation.
+ const boost::system::error_code& error,
 
- [[link boost_asio.reference.basic_datagram_socket.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
-
- ]
+ // 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
+ );
+``
+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().]]
 
- [
+]
 
- [[link boost_asio.reference.basic_datagram_socket.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+[heading Example]
   
- ]
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
- [
+ boost::asio::async_write_at(d, 42, boost::asio::buffer(data, size), handler);
 
- [[link boost_asio.reference.basic_datagram_socket.lowest_layer_type [*lowest_layer_type]]]
- [A basic_socket is always the lowest layer. ]
-
- ]
 
- [
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
- [[link boost_asio.reference.basic_datagram_socket.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.native_type [*native_type]]]
- [The native representation of a socket. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
- ]
 
- [
+[section:overload2 async_write_at (2 of 4 overloads)]
 
- [[link boost_asio.reference.basic_datagram_socket.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
+Start an asynchronous operation to write a certain amount of data at the specified offset.
 
- [
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename CompletionCondition,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_at(
+ AsyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ CompletionCondition completion_condition,
+ WriteHandler handler);
 
- [[link boost_asio.reference.basic_datagram_socket.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
-
- ]
 
- [
+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:
 
- [[link boost_asio.reference.basic_datagram_socket.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
-
- ]
+
+* 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.
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the device's async\_write\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device to which the data is to be written. The type must support the AsyncRandomAccessWriteDevice concept.]]
+
+[[offset][The offset at which the data will be written.]]
+
+[[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.]]
+
+[[completion_condition][The function object to be called to determine whether the write operation is complete. The signature of the function object must be:
+``
+ bool 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
+ );
+``
+A return value of true indicates that the write operation is complete. False indicates that further calls to the device's async\_write\_some\_at function are required.]]
+
+[[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:
+``
+ 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
+ );
+``
+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().]]
+
+]
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ boost::asio::async_write_at(d, 42,
+ boost::asio::buffer(data, size),
+ boost::asio::transfer_at_least(32),
+ handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:overload3 async_write_at (3 of 4 overloads)]
+
+Start an asynchronous operation to write all of the supplied data at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
+ typename Allocator,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_at(
+ AsyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ WriteHandler handler);
+
+
+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:
+
+
+* All of the data in the supplied basic_streambuf has been written.
+
+* An error occurred.
+
+This operation is implemented in terms of one or more calls to the device's async\_write\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device to which the data is to be written. The type must support the AsyncRandomAccessWriteDevice concept.]]
+
+[[offset][The offset at which the data will be written.]]
+
+[[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.]]
+
+[[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:
+``
+ 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
+ );
+``
+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(). ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload4 async_write_at (4 of 4 overloads)]
+
+Start an asynchronous operation to write a certain amount of data at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.AsyncRandomAccessWriteDevice AsyncRandomAccessWriteDevice]``,
+ typename Allocator,
+ typename CompletionCondition,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_at(
+ AsyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition,
+ WriteHandler handler);
+
+
+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:
+
+
+* All of the data in the supplied basic_streambuf has been written.
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the device's async\_write\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device to which the data is to be written. The type must support the AsyncRandomAccessWriteDevice concept.]]
+
+[[offset][The offset at which the data will be written.]]
+
+[[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.]]
+
+[[completion_condition][The function object to be called to determine whether the write operation is complete. The signature of the function object must be:
+``
+ bool 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
+ );
+``
+A return value of true indicates that the write operation is complete. False indicates that further calls to the device's async\_write\_some\_at function are required.]]
+
+[[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:
+``
+ 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
+ );
+``
+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(). ]]
+
+]
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:basic_datagram_socket basic_datagram_socket]
+
+Provides datagram-oriented socket functionality.
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.DatagramSocketService DatagramSocketService]`` = datagram_socket_service<Protocol>>
+ class basic_datagram_socket :
+ public basic_socket< Protocol, DatagramSocketService >
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.native_type [*native_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
 
   [
 
@@ -1527,7 +2362,7 @@
 
 [section:assign basic_datagram_socket::assign]
 
-Assign an existing native socket to the socket.
+[indexterm2 assign..basic_datagram_socket] Assign an existing native socket to the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.assign.overload1 assign]``(
       const protocol_type & protocol,
@@ -1581,7 +2416,7 @@
 
 ['Inherited from basic_socket.]
 
-Start an asynchronous connect.
+[indexterm2 async_connect..basic_datagram_socket] Start an asynchronous connect.
 
   void async_connect(
       const endpoint_type & peer_endpoint,
@@ -1590,7 +2425,7 @@
 
 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 returned to the closed state.
+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.
 
 
 [heading Parameters]
@@ -1605,7 +2440,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation
    );
-
 ``
 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().]]
 
@@ -1640,7 +2474,7 @@
 
 [section:async_receive basic_datagram_socket::async_receive]
 
-Start an asynchronous receive on a connected socket.
+[indexterm2 async_receive..basic_datagram_socket] Start an asynchronous receive on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -1686,7 +2520,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 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().]]
 
@@ -1744,7 +2577,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 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().]]
 
@@ -1763,7 +2595,7 @@
 
 [section:async_receive_from basic_datagram_socket::async_receive_from]
 
-Start an asynchronous receive.
+[indexterm2 async_receive_from..basic_datagram_socket] Start an asynchronous receive.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -1814,7 +2646,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 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().]]
 
@@ -1872,7 +2703,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 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(). ]]
 
@@ -1887,7 +2717,7 @@
 
 [section:async_send basic_datagram_socket::async_send]
 
-Start an asynchronous send on a connected socket.
+[indexterm2 async_send..basic_datagram_socket] Start an asynchronous send on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -1933,7 +2763,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 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().]]
 
@@ -1991,7 +2820,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 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().]]
 
@@ -2010,7 +2838,7 @@
 
 [section:async_send_to basic_datagram_socket::async_send_to]
 
-Start an asynchronous send.
+[indexterm2 async_send_to..basic_datagram_socket] Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -2061,7 +2889,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 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().]]
 
@@ -2121,7 +2948,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 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(). ]]
 
@@ -2136,7 +2962,7 @@
 
 [section:at_mark basic_datagram_socket::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 at_mark..basic_datagram_socket] Determine whether the socket is at the out-of-band data mark.
 
   bool ``[link boost_asio.reference.basic_datagram_socket.at_mark.overload1 at_mark]``() const;
 
@@ -2212,7 +3038,7 @@
 
 [section:available basic_datagram_socket::available]
 
-Determine the number of bytes available for reading.
+[indexterm2 available..basic_datagram_socket] Determine the number of bytes available for reading.
 
   std::size_t ``[link boost_asio.reference.basic_datagram_socket.available.overload1 available]``() const;
 
@@ -2288,7 +3114,7 @@
 
 [section:basic_datagram_socket basic_datagram_socket::basic_datagram_socket]
 
-Construct a basic_datagram_socket without opening it.
+[indexterm2 basic_datagram_socket..basic_datagram_socket] Construct a basic_datagram_socket without opening it.
 
   ``[link boost_asio.reference.basic_datagram_socket.basic_datagram_socket.overload1 basic_datagram_socket]``(
       boost::asio::io_service & io_service);
@@ -2453,7 +3279,7 @@
 
 [section:bind basic_datagram_socket::bind]
 
-Bind the socket to the given local endpoint.
+[indexterm2 bind..basic_datagram_socket] Bind the socket to the given local endpoint.
 
   void ``[link boost_asio.reference.basic_datagram_socket.bind.overload1 bind]``(
       const endpoint_type & endpoint);
@@ -2569,7 +3395,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to permit sending of broadcast messages.
+[indexterm2 broadcast..basic_datagram_socket] Socket option to permit sending of broadcast messages.
 
   typedef implementation_defined broadcast;
 
@@ -2612,7 +3438,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..basic_datagram_socket] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -2641,7 +3467,7 @@
 
 [section:cancel basic_datagram_socket::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..basic_datagram_socket] Cancel all asynchronous operations associated with the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.cancel.overload1 cancel]``();
 
@@ -2741,7 +3567,7 @@
 
 [section:close basic_datagram_socket::close]
 
-Close the socket.
+[indexterm2 close..basic_datagram_socket] Close the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.close.overload1 close]``();
 
@@ -2833,7 +3659,7 @@
 
 [section:connect basic_datagram_socket::connect]
 
-Connect the socket to the specified endpoint.
+[indexterm2 connect..basic_datagram_socket] Connect the socket to the specified endpoint.
 
   void ``[link boost_asio.reference.basic_datagram_socket.connect.overload1 connect]``(
       const endpoint_type & peer_endpoint);
@@ -2856,7 +3682,7 @@
 
 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 returned to the closed state.
+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.
 
 
 [heading Parameters]
@@ -2909,7 +3735,7 @@
 
 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 returned to the closed state.
+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.
 
 
 [heading Parameters]
@@ -2953,7 +3779,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to enable socket-level debugging.
+[indexterm2 debug..basic_datagram_socket] Socket option to enable socket-level debugging.
 
   typedef implementation_defined debug;
 
@@ -2996,7 +3822,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 do_not_route..basic_datagram_socket] Socket option to prevent routing, use local interfaces only.
 
   typedef implementation_defined do_not_route;
 
@@ -3039,7 +3865,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to report aborted connections on accept.
+[indexterm2 enable_connection_aborted..basic_datagram_socket] Socket option to report aborted connections on accept.
 
   typedef implementation_defined enable_connection_aborted;
 
@@ -3079,7 +3905,7 @@
 
 [section:endpoint_type basic_datagram_socket::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..basic_datagram_socket] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -3095,7 +3921,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_datagram_socket] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -3114,7 +3940,7 @@
 
 [section:get_option basic_datagram_socket::get_option]
 
-Get an option from the socket.
+[indexterm2 get_option..basic_datagram_socket] Get an option from the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.get_option.overload1 get_option]``(
       GettableSocketOption & option) const;
@@ -3232,7 +4058,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_datagram_socket] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -3247,7 +4073,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_datagram_socket] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -3259,7 +4085,7 @@
 
 [section:io_control basic_datagram_socket::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..basic_datagram_socket] Perform an IO control command on the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.io_control.overload1 io_control]``(
       IoControlCommand & command);
@@ -3377,7 +4203,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_datagram_socket] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -3400,7 +4226,7 @@
 
 ['Inherited from basic_socket.]
 
-Determine whether the socket is open.
+[indexterm2 is_open..basic_datagram_socket] Determine whether the socket is open.
 
   bool is_open() const;
 
@@ -3415,7 +4241,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to send keep-alives.
+[indexterm2 keep_alive..basic_datagram_socket] Socket option to send keep-alives.
 
   typedef implementation_defined keep_alive;
 
@@ -3458,7 +4284,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+[indexterm2 linger..basic_datagram_socket] Socket option to specify whether the socket lingers on close if unsent data is present.
 
   typedef implementation_defined linger;
 
@@ -3498,7 +4324,7 @@
 
 [section:local_endpoint basic_datagram_socket::local_endpoint]
 
-Get the local endpoint of the socket.
+[indexterm2 local_endpoint..basic_datagram_socket] Get the local endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_datagram_socket.local_endpoint.overload1 local_endpoint]``() const;
 
@@ -3605,7 +4431,7 @@
 
 ['Inherited from basic_socket.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..basic_datagram_socket] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -3628,7 +4454,7 @@
 
 ['Inherited from basic_socket.]
 
-A basic_socket is always the lowest layer.
+[indexterm2 lowest_layer_type..basic_datagram_socket] A basic_socket is always the lowest layer.
 
   typedef basic_socket< Protocol, DatagramSocketService > lowest_layer_type;
 
@@ -3971,7 +4797,7 @@
 
 ['Inherited from socket_base.]
 
-The maximum length of the queue of pending incoming connections.
+[indexterm2 max_connections..basic_datagram_socket] The maximum length of the queue of pending incoming connections.
 
   static const int max_connections = implementation_defined;
 
@@ -3986,7 +4812,7 @@
 
 ['Inherited from socket_base.]
 
-Specify that the data should not be subject to routing.
+[indexterm2 message_do_not_route..basic_datagram_socket] Specify that the data should not be subject to routing.
 
   static const int message_do_not_route = implementation_defined;
 
@@ -4001,7 +4827,7 @@
 
 ['Inherited from socket_base.]
 
-Bitmask type for flags that can be passed to send and receive operations.
+[indexterm2 message_flags..basic_datagram_socket] Bitmask type for flags that can be passed to send and receive operations.
 
   typedef int message_flags;
 
@@ -4017,7 +4843,7 @@
 
 ['Inherited from socket_base.]
 
-Process out-of-band data.
+[indexterm2 message_out_of_band..basic_datagram_socket] Process out-of-band data.
 
   static const int message_out_of_band = implementation_defined;
 
@@ -4032,7 +4858,7 @@
 
 ['Inherited from socket_base.]
 
-Peek at incoming data without removing it from the input queue.
+[indexterm2 message_peek..basic_datagram_socket] Peek at incoming data without removing it from the input queue.
 
   static const int message_peek = implementation_defined;
 
@@ -4047,7 +4873,7 @@
 
 ['Inherited from basic_socket.]
 
-Get the native socket representation.
+[indexterm2 native..basic_datagram_socket] Get the native socket representation.
 
   native_type native();
 
@@ -4061,7 +4887,7 @@
 
 [section:native_type basic_datagram_socket::native_type]
 
-The native representation of a socket.
+[indexterm2 native_type..basic_datagram_socket] The native representation of a socket.
 
   typedef DatagramSocketService::native_type native_type;
 
@@ -4077,7 +4903,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to set the blocking mode of the socket.
+[indexterm2 non_blocking_io..basic_datagram_socket] IO control command to set the blocking mode of the socket.
 
   typedef implementation_defined non_blocking_io;
 
@@ -4105,7 +4931,7 @@
 
 [section:open basic_datagram_socket::open]
 
-Open the socket using the specified protocol.
+[indexterm2 open..basic_datagram_socket] Open the socket using the specified protocol.
 
   void ``[link boost_asio.reference.basic_datagram_socket.open.overload1 open]``(
       const protocol_type & protocol = protocol_type());
@@ -4214,7 +5040,7 @@
 
 [section:protocol_type basic_datagram_socket::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..basic_datagram_socket] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -4226,7 +5052,7 @@
 
 [section:receive basic_datagram_socket::receive]
 
-Receive some data on a connected socket.
+[indexterm2 receive..basic_datagram_socket] Receive some data on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -4400,7 +5226,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 receive_buffer_size..basic_datagram_socket] Socket option for the receive buffer size of a socket.
 
   typedef implementation_defined receive_buffer_size;
 
@@ -4439,7 +5265,7 @@
 
 [section:receive_from basic_datagram_socket::receive_from]
 
-Receive a datagram with the endpoint of the sender.
+[indexterm2 receive_from..basic_datagram_socket] Receive a datagram with the endpoint of the sender.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -4615,7 +5441,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive low watermark.
+[indexterm2 receive_low_watermark..basic_datagram_socket] Socket option for the receive low watermark.
 
   typedef implementation_defined receive_low_watermark;
 
@@ -4654,7 +5480,7 @@
 
 [section:remote_endpoint basic_datagram_socket::remote_endpoint]
 
-Get the remote endpoint of the socket.
+[indexterm2 remote_endpoint..basic_datagram_socket] Get the remote endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_datagram_socket.remote_endpoint.overload1 remote_endpoint]``() const;
 
@@ -4761,7 +5587,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 reuse_address..basic_datagram_socket] Socket option to allow the socket to be bound to an address that is already in use.
 
   typedef implementation_defined reuse_address;
 
@@ -4800,7 +5626,7 @@
 
 [section:send basic_datagram_socket::send]
 
-Send some data on a connected socket.
+[indexterm2 send..basic_datagram_socket] Send some data on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -4974,7 +5800,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 send_buffer_size..basic_datagram_socket] Socket option for the send buffer size of a socket.
 
   typedef implementation_defined send_buffer_size;
 
@@ -5017,7 +5843,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send low watermark.
+[indexterm2 send_low_watermark..basic_datagram_socket] Socket option for the send low watermark.
 
   typedef implementation_defined send_low_watermark;
 
@@ -5056,7 +5882,7 @@
 
 [section:send_to basic_datagram_socket::send_to]
 
-Send a datagram to the specified endpoint.
+[indexterm2 send_to..basic_datagram_socket] Send a datagram to the specified endpoint.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -5232,7 +6058,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_datagram_socket] The service associated with the I/O object.
 
   service_type & service;
 
@@ -5247,7 +6073,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_datagram_socket] The type of the service that will be used to provide I/O operations.
 
   typedef DatagramSocketService service_type;
 
@@ -5259,7 +6085,7 @@
 
 [section:set_option basic_datagram_socket::set_option]
 
-Set an option on the socket.
+[indexterm2 set_option..basic_datagram_socket] Set an option on the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.set_option.overload1 set_option]``(
       const SettableSocketOption & option);
@@ -5371,7 +6197,7 @@
 
 [section:shutdown basic_datagram_socket::shutdown]
 
-Disable sends or receives on the socket.
+[indexterm2 shutdown..basic_datagram_socket] Disable sends or receives on the socket.
 
   void ``[link boost_asio.reference.basic_datagram_socket.shutdown.overload1 shutdown]``(
       shutdown_type what);
@@ -5485,7 +6311,7 @@
 
 ['Inherited from socket_base.]
 
-Different ways a socket may be shutdown.
+[indexterm2 shutdown_type..basic_datagram_socket] Different ways a socket may be shutdown.
 
   enum shutdown_type
 
@@ -5722,7 +6548,7 @@
 
 [section:async_wait basic_deadline_timer::async_wait]
 
-Start an asynchronous wait on the timer.
+[indexterm2 async_wait..basic_deadline_timer] Start an asynchronous wait on the timer.
 
   template<
       typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
@@ -5749,7 +6575,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation.
    );
-
 ``
 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(). ]]
 
@@ -5762,7 +6587,7 @@
 
 [section:basic_deadline_timer basic_deadline_timer::basic_deadline_timer]
 
-Constructor.
+[indexterm2 basic_deadline_timer..basic_deadline_timer] Constructor.
 
   ``[link boost_asio.reference.basic_deadline_timer.basic_deadline_timer.overload1 basic_deadline_timer]``(
       boost::asio::io_service & io_service);
@@ -5863,7 +6688,7 @@
 
 [section:cancel basic_deadline_timer::cancel]
 
-Cancel any asynchronous operations that are waiting on the timer.
+[indexterm2 cancel..basic_deadline_timer] Cancel any asynchronous operations that are waiting on the timer.
 
   std::size_t ``[link boost_asio.reference.basic_deadline_timer.cancel.overload1 cancel]``();
 
@@ -5938,7 +6763,7 @@
 
 [section:duration_type basic_deadline_timer::duration_type]
 
-The duration type.
+[indexterm2 duration_type..basic_deadline_timer] The duration type.
 
   typedef traits_type::duration_type duration_type;
 
@@ -5950,7 +6775,7 @@
 
 [section:expires_at basic_deadline_timer::expires_at]
 
-Get the timer's expiry time as an absolute time.
+[indexterm2 expires_at..basic_deadline_timer] Get the timer's expiry time as an absolute time.
 
   time_type ``[link boost_asio.reference.basic_deadline_timer.expires_at.overload1 expires_at]``() const;
 
@@ -6051,7 +6876,7 @@
 
 [section:expires_from_now basic_deadline_timer::expires_from_now]
 
-Get the timer's expiry time relative to now.
+[indexterm2 expires_from_now..basic_deadline_timer] Get the timer's expiry time relative to now.
 
   duration_type ``[link boost_asio.reference.basic_deadline_timer.expires_from_now.overload1 expires_from_now]``() const;
 
@@ -6156,7 +6981,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_deadline_timer] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -6179,7 +7004,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_deadline_timer] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -6194,7 +7019,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_deadline_timer] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -6210,7 +7035,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_deadline_timer] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -6233,7 +7058,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_deadline_timer] The service associated with the I/O object.
 
   service_type & service;
 
@@ -6248,7 +7073,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_deadline_timer] The type of the service that will be used to provide I/O operations.
 
   typedef TimerService service_type;
 
@@ -6261,7 +7086,7 @@
 
 [section:time_type basic_deadline_timer::time_type]
 
-The time type.
+[indexterm2 time_type..basic_deadline_timer] The time type.
 
   typedef traits_type::time_type time_type;
 
@@ -6274,7 +7099,7 @@
 
 [section:traits_type basic_deadline_timer::traits_type]
 
-The time traits type.
+[indexterm2 traits_type..basic_deadline_timer] The time traits type.
 
   typedef TimeTraits traits_type;
 
@@ -6286,7 +7111,7 @@
 
 [section:wait basic_deadline_timer::wait]
 
-Perform a blocking wait on the timer.
+[indexterm2 wait..basic_deadline_timer] Perform a blocking wait on the timer.
 
   void ``[link boost_asio.reference.basic_deadline_timer.wait.overload1 wait]``();
 
@@ -6430,7 +7255,7 @@
 
 [section:basic_io_object basic_io_object::basic_io_object]
 
-Construct a basic_io_object.
+[indexterm2 basic_io_object..basic_io_object] Construct a basic_io_object.
 
   basic_io_object(
       boost::asio::io_service & io_service);
@@ -6450,7 +7275,7 @@
 
 [section:get_io_service basic_io_object::get_io_service]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_io_object] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -6470,7 +7295,7 @@
 
 [section:implementation basic_io_object::implementation]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_io_object] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -6482,7 +7307,7 @@
 
 [section:implementation_type basic_io_object::implementation_type]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_io_object] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -6495,7 +7320,7 @@
 
 [section:io_service basic_io_object::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_io_object] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -6515,7 +7340,7 @@
 
 [section:service basic_io_object::service]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_io_object] The service associated with the I/O object.
 
   service_type & service;
 
@@ -6527,7 +7352,7 @@
 
 [section:service_type basic_io_object::service_type]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_io_object] The type of the service that will be used to provide I/O operations.
 
   typedef IoObjectService service_type;
 
@@ -6540,7 +7365,7 @@
 
 [section:_basic_io_object basic_io_object::~basic_io_object]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 ~basic_io_object..basic_io_object] Protected destructor to prevent deletion through this type.
 
   ~basic_io_object();
 
@@ -6928,7 +7753,7 @@
 
 [section:assign basic_raw_socket::assign]
 
-Assign an existing native socket to the socket.
+[indexterm2 assign..basic_raw_socket] Assign an existing native socket to the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.assign.overload1 assign]``(
       const protocol_type & protocol,
@@ -6982,7 +7807,7 @@
 
 ['Inherited from basic_socket.]
 
-Start an asynchronous connect.
+[indexterm2 async_connect..basic_raw_socket] Start an asynchronous connect.
 
   void async_connect(
       const endpoint_type & peer_endpoint,
@@ -6991,7 +7816,7 @@
 
 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 returned to the closed state.
+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.
 
 
 [heading Parameters]
@@ -7006,7 +7831,6 @@
    void handler(
      const boost::system::error_code& error // Result of operation
    );
-
 ``
 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().]]
 
@@ -7041,7 +7865,7 @@
 
 [section:async_receive basic_raw_socket::async_receive]
 
-Start an asynchronous receive on a connected socket.
+[indexterm2 async_receive..basic_raw_socket] Start an asynchronous receive on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -7087,7 +7911,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 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().]]
 
@@ -7145,7 +7968,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 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().]]
 
@@ -7164,7 +7986,7 @@
 
 [section:async_receive_from basic_raw_socket::async_receive_from]
 
-Start an asynchronous receive.
+[indexterm2 async_receive_from..basic_raw_socket] Start an asynchronous receive.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -7215,7 +8037,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 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().]]
 
@@ -7273,7 +8094,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes received.
    );
-
 ``
 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(). ]]
 
@@ -7288,7 +8108,7 @@
 
 [section:async_send basic_raw_socket::async_send]
 
-Start an asynchronous send on a connected socket.
+[indexterm2 async_send..basic_raw_socket] Start an asynchronous send on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -7334,7 +8154,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 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().]]
 
@@ -7392,7 +8211,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 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().]]
 
@@ -7411,7 +8229,7 @@
 
 [section:async_send_to basic_raw_socket::async_send_to]
 
-Start an asynchronous send.
+[indexterm2 async_send_to..basic_raw_socket] Start an asynchronous send.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -7462,7 +8280,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 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().]]
 
@@ -7522,7 +8339,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes sent.
    );
-
 ``
 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(). ]]
 
@@ -7537,7 +8353,7 @@
 
 [section:at_mark basic_raw_socket::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 at_mark..basic_raw_socket] Determine whether the socket is at the out-of-band data mark.
 
   bool ``[link boost_asio.reference.basic_raw_socket.at_mark.overload1 at_mark]``() const;
 
@@ -7613,7 +8429,7 @@
 
 [section:available basic_raw_socket::available]
 
-Determine the number of bytes available for reading.
+[indexterm2 available..basic_raw_socket] Determine the number of bytes available for reading.
 
   std::size_t ``[link boost_asio.reference.basic_raw_socket.available.overload1 available]``() const;
 
@@ -7689,7 +8505,7 @@
 
 [section:basic_raw_socket basic_raw_socket::basic_raw_socket]
 
-Construct a basic_raw_socket without opening it.
+[indexterm2 basic_raw_socket..basic_raw_socket] Construct a basic_raw_socket without opening it.
 
   ``[link boost_asio.reference.basic_raw_socket.basic_raw_socket.overload1 basic_raw_socket]``(
       boost::asio::io_service & io_service);
@@ -7854,7 +8670,7 @@
 
 [section:bind basic_raw_socket::bind]
 
-Bind the socket to the given local endpoint.
+[indexterm2 bind..basic_raw_socket] Bind the socket to the given local endpoint.
 
   void ``[link boost_asio.reference.basic_raw_socket.bind.overload1 bind]``(
       const endpoint_type & endpoint);
@@ -7970,7 +8786,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to permit sending of broadcast messages.
+[indexterm2 broadcast..basic_raw_socket] Socket option to permit sending of broadcast messages.
 
   typedef implementation_defined broadcast;
 
@@ -8013,7 +8829,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 bytes_readable..basic_raw_socket] IO control command to get the amount of data that can be read without blocking.
 
   typedef implementation_defined bytes_readable;
 
@@ -8042,7 +8858,7 @@
 
 [section:cancel basic_raw_socket::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..basic_raw_socket] Cancel all asynchronous operations associated with the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.cancel.overload1 cancel]``();
 
@@ -8142,7 +8958,7 @@
 
 [section:close basic_raw_socket::close]
 
-Close the socket.
+[indexterm2 close..basic_raw_socket] Close the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.close.overload1 close]``();
 
@@ -8234,7 +9050,7 @@
 
 [section:connect basic_raw_socket::connect]
 
-Connect the socket to the specified endpoint.
+[indexterm2 connect..basic_raw_socket] Connect the socket to the specified endpoint.
 
   void ``[link boost_asio.reference.basic_raw_socket.connect.overload1 connect]``(
       const endpoint_type & peer_endpoint);
@@ -8257,7 +9073,7 @@
 
 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 returned to the closed state.
+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.
 
 
 [heading Parameters]
@@ -8310,7 +9126,7 @@
 
 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 returned to the closed state.
+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.
 
 
 [heading Parameters]
@@ -8354,7 +9170,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to enable socket-level debugging.
+[indexterm2 debug..basic_raw_socket] Socket option to enable socket-level debugging.
 
   typedef implementation_defined debug;
 
@@ -8397,7 +9213,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 do_not_route..basic_raw_socket] Socket option to prevent routing, use local interfaces only.
 
   typedef implementation_defined do_not_route;
 
@@ -8440,7 +9256,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to report aborted connections on accept.
+[indexterm2 enable_connection_aborted..basic_raw_socket] Socket option to report aborted connections on accept.
 
   typedef implementation_defined enable_connection_aborted;
 
@@ -8480,7 +9296,7 @@
 
 [section:endpoint_type basic_raw_socket::endpoint_type]
 
-The endpoint type.
+[indexterm2 endpoint_type..basic_raw_socket] The endpoint type.
 
   typedef Protocol::endpoint endpoint_type;
 
@@ -8496,7 +9312,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..basic_raw_socket] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -8515,7 +9331,7 @@
 
 [section:get_option basic_raw_socket::get_option]
 
-Get an option from the socket.
+[indexterm2 get_option..basic_raw_socket] Get an option from the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.get_option.overload1 get_option]``(
       GettableSocketOption & option) const;
@@ -8633,7 +9449,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..basic_raw_socket] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -8648,7 +9464,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..basic_raw_socket] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -8660,7 +9476,7 @@
 
 [section:io_control basic_raw_socket::io_control]
 
-Perform an IO control command on the socket.
+[indexterm2 io_control..basic_raw_socket] Perform an IO control command on the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.io_control.overload1 io_control]``(
       IoControlCommand & command);
@@ -8778,7 +9594,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..basic_raw_socket] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -8801,7 +9617,7 @@
 
 ['Inherited from basic_socket.]
 
-Determine whether the socket is open.
+[indexterm2 is_open..basic_raw_socket] Determine whether the socket is open.
 
   bool is_open() const;
 
@@ -8816,7 +9632,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to send keep-alives.
+[indexterm2 keep_alive..basic_raw_socket] Socket option to send keep-alives.
 
   typedef implementation_defined keep_alive;
 
@@ -8859,7 +9675,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+[indexterm2 linger..basic_raw_socket] Socket option to specify whether the socket lingers on close if unsent data is present.
 
   typedef implementation_defined linger;
 
@@ -8899,7 +9715,7 @@
 
 [section:local_endpoint basic_raw_socket::local_endpoint]
 
-Get the local endpoint of the socket.
+[indexterm2 local_endpoint..basic_raw_socket] Get the local endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_raw_socket.local_endpoint.overload1 local_endpoint]``() const;
 
@@ -9006,7 +9822,7 @@
 
 ['Inherited from basic_socket.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..basic_raw_socket] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -9029,7 +9845,7 @@
 
 ['Inherited from basic_socket.]
 
-A basic_socket is always the lowest layer.
+[indexterm2 lowest_layer_type..basic_raw_socket] A basic_socket is always the lowest layer.
 
   typedef basic_socket< Protocol, RawSocketService > lowest_layer_type;
 
@@ -9372,7 +10188,7 @@
 
 ['Inherited from socket_base.]
 
-The maximum length of the queue of pending incoming connections.
+[indexterm2 max_connections..basic_raw_socket] The maximum length of the queue of pending incoming connections.
 
   static const int max_connections = implementation_defined;
 
@@ -9387,7 +10203,7 @@
 
 ['Inherited from socket_base.]
 
-Specify that the data should not be subject to routing.
+[indexterm2 message_do_not_route..basic_raw_socket] Specify that the data should not be subject to routing.
 
   static const int message_do_not_route = implementation_defined;
 
@@ -9402,7 +10218,7 @@
 
 ['Inherited from socket_base.]
 
-Bitmask type for flags that can be passed to send and receive operations.
+[indexterm2 message_flags..basic_raw_socket] Bitmask type for flags that can be passed to send and receive operations.
 
   typedef int message_flags;
 
@@ -9418,7 +10234,7 @@
 
 ['Inherited from socket_base.]
 
-Process out-of-band data.
+[indexterm2 message_out_of_band..basic_raw_socket] Process out-of-band data.
 
   static const int message_out_of_band = implementation_defined;
 
@@ -9433,7 +10249,7 @@
 
 ['Inherited from socket_base.]
 
-Peek at incoming data without removing it from the input queue.
+[indexterm2 message_peek..basic_raw_socket] Peek at incoming data without removing it from the input queue.
 
   static const int message_peek = implementation_defined;
 
@@ -9448,7 +10264,7 @@
 
 ['Inherited from basic_socket.]
 
-Get the native socket representation.
+[indexterm2 native..basic_raw_socket] Get the native socket representation.
 
   native_type native();
 
@@ -9462,7 +10278,7 @@
 
 [section:native_type basic_raw_socket::native_type]
 
-The native representation of a socket.
+[indexterm2 native_type..basic_raw_socket] The native representation of a socket.
 
   typedef RawSocketService::native_type native_type;
 
@@ -9478,7 +10294,7 @@
 
 ['Inherited from socket_base.]
 
-IO control command to set the blocking mode of the socket.
+[indexterm2 non_blocking_io..basic_raw_socket] IO control command to set the blocking mode of the socket.
 
   typedef implementation_defined non_blocking_io;
 
@@ -9506,7 +10322,7 @@
 
 [section:open basic_raw_socket::open]
 
-Open the socket using the specified protocol.
+[indexterm2 open..basic_raw_socket] Open the socket using the specified protocol.
 
   void ``[link boost_asio.reference.basic_raw_socket.open.overload1 open]``(
       const protocol_type & protocol = protocol_type());
@@ -9615,7 +10431,7 @@
 
 [section:protocol_type basic_raw_socket::protocol_type]
 
-The protocol type.
+[indexterm2 protocol_type..basic_raw_socket] The protocol type.
 
   typedef Protocol protocol_type;
 
@@ -9627,7 +10443,7 @@
 
 [section:receive basic_raw_socket::receive]
 
-Receive some data on a connected socket.
+[indexterm2 receive..basic_raw_socket] Receive some data on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -9801,7 +10617,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 receive_buffer_size..basic_raw_socket] Socket option for the receive buffer size of a socket.
 
   typedef implementation_defined receive_buffer_size;
 
@@ -9840,7 +10656,7 @@
 
 [section:receive_from basic_raw_socket::receive_from]
 
-Receive raw data with the endpoint of the sender.
+[indexterm2 receive_from..basic_raw_socket] Receive raw data with the endpoint of the sender.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -10016,7 +10832,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the receive low watermark.
+[indexterm2 receive_low_watermark..basic_raw_socket] Socket option for the receive low watermark.
 
   typedef implementation_defined receive_low_watermark;
 
@@ -10055,7 +10871,7 @@
 
 [section:remote_endpoint basic_raw_socket::remote_endpoint]
 
-Get the remote endpoint of the socket.
+[indexterm2 remote_endpoint..basic_raw_socket] Get the remote endpoint of the socket.
 
   endpoint_type ``[link boost_asio.reference.basic_raw_socket.remote_endpoint.overload1 remote_endpoint]``() const;
 
@@ -10162,7 +10978,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 reuse_address..basic_raw_socket] Socket option to allow the socket to be bound to an address that is already in use.
 
   typedef implementation_defined reuse_address;
 
@@ -10201,7 +11017,7 @@
 
 [section:send basic_raw_socket::send]
 
-Send some data on a connected socket.
+[indexterm2 send..basic_raw_socket] Send some data on a connected socket.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -10375,7 +11191,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 send_buffer_size..basic_raw_socket] Socket option for the send buffer size of a socket.
 
   typedef implementation_defined send_buffer_size;
 
@@ -10418,7 +11234,7 @@
 
 ['Inherited from socket_base.]
 
-Socket option for the send low watermark.
+[indexterm2 send_low_watermark..basic_raw_socket] Socket option for the send low watermark.
 
   typedef implementation_defined send_low_watermark;
 
@@ -10457,7 +11273,7 @@
 
 [section:send_to basic_raw_socket::send_to]
 
-Send raw data to the specified endpoint.
+[indexterm2 send_to..basic_raw_socket] Send raw data to the specified endpoint.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -10633,7 +11449,7 @@
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..basic_raw_socket] The service associated with the I/O object.
 
   service_type & service;
 
@@ -10648,7 +11464,7 @@
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..basic_raw_socket] The type of the service that will be used to provide I/O operations.
 
   typedef RawSocketService service_type;
 
@@ -10660,7 +11476,7 @@
 
 [section:set_option basic_raw_socket::set_option]
 
-Set an option on the socket.
+[indexterm2 set_option..basic_raw_socket] Set an option on the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.set_option.overload1 set_option]``(
       const SettableSocketOption & option);
@@ -10772,7 +11588,7 @@
 
 [section:shutdown basic_raw_socket::shutdown]
 
-Disable sends or receives on the socket.
+[indexterm2 shutdown..basic_raw_socket] Disable sends or receives on the socket.
 
   void ``[link boost_asio.reference.basic_raw_socket.shutdown.overload1 shutdown]``(
       shutdown_type what);
@@ -10886,7 +11702,7 @@
 
 ['Inherited from socket_base.]
 
-Different ways a socket may be shutdown.
+[indexterm2 shutdown_type..basic_raw_socket] Different ways a socket may be shutdown.
 
   enum shutdown_type
 
@@ -10918,16 +11734,15 @@
 
 [endsect]
 
-[section:basic_socket basic_socket]
+[section:basic_serial_port basic_serial_port]
 
-Provides socket functionality.
+Provides serial port functionality.
 
   template<
- typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- class basic_socket :
- public basic_io_object< SocketService >,
- public socket_base
+ typename ``[link boost_asio.reference.SerialPortService SerialPortService]`` = serial_port_service>
+ class basic_serial_port :
+ public basic_io_object< SerialPortService >,
+ public serial_port_base
 
 
 [heading Types]
@@ -10936,318 +11751,142 @@
 
   [
 
- [[link boost_asio.reference.basic_socket.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.implementation_type [*implementation_type]]]
+ [[link boost_asio.reference.basic_serial_port.implementation_type [*implementation_type]]]
     [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
+ [[link boost_asio.reference.basic_serial_port.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_serial_port is always the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+ [[link boost_asio.reference.basic_serial_port.native_type [*native_type]]]
+ [The native representation of a serial port. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.lowest_layer_type [*lowest_layer_type]]]
- [A basic_socket is always the lowest layer. ]
+ [[link boost_asio.reference.basic_serial_port.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
- [
+]
 
- [[link boost_asio.reference.basic_socket.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
-
- ]
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
   [
-
- [[link boost_asio.reference.basic_socket.native_type [*native_type]]]
- [The native representation of a socket. ]
-
+ [[link boost_asio.reference.basic_serial_port.assign [*assign]]]
+ [Assign an existing native serial port to the serial port. ]
   ]
-
- [
-
- [[link boost_asio.reference.basic_socket.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
   
- ]
-
   [
-
- [[link boost_asio.reference.basic_socket.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
+ [[link boost_asio.reference.basic_serial_port.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
   ]
-
- [
-
- [[link boost_asio.reference.basic_socket.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
   
- ]
-
   [
-
- [[link boost_asio.reference.basic_socket.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
-
+ [[link boost_asio.reference.basic_serial_port.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
   ]
-
- [
-
- [[link boost_asio.reference.basic_socket.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
   
- ]
-
   [
-
- [[link boost_asio.reference.basic_socket.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
-
+ [[link boost_asio.reference.basic_serial_port.basic_serial_port [*basic_serial_port]]]
+ [Construct a basic_serial_port without opening it. ]
   ]
-
- [
-
- [[link boost_asio.reference.basic_socket.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
   
- ]
-
   [
-
- [[link boost_asio.reference.basic_socket.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
+ [[link boost_asio.reference.basic_serial_port.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the serial port. ]
   ]
-
- [
-
- [[link boost_asio.reference.basic_socket.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
   
- ]
-
-]
-
-[heading Member Functions]
-[table
- [[Name][Description]]
-
   [
- [[link boost_asio.reference.basic_socket.assign [*assign]]]
- [Assign an existing native socket to the socket. ]
+ [[link boost_asio.reference.basic_serial_port.close [*close]]]
+ [Close the serial port. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
+ [[link boost_asio.reference.basic_serial_port.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
+ [[link boost_asio.reference.basic_serial_port.get_option [*get_option]]]
+ [Get an option from the serial port. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.available [*available]]]
- [Determine the number of bytes available for reading. ]
+ [[link boost_asio.reference.basic_serial_port.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.basic_socket [*basic_socket]]]
- [Construct a basic_socket without opening it. ]
+ [[link boost_asio.reference.basic_serial_port.is_open [*is_open]]]
+ [Determine whether the serial port is open. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.bind [*bind]]]
- [Bind the socket to the given local endpoint. ]
+ [[link boost_asio.reference.basic_serial_port.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
+ [[link boost_asio.reference.basic_serial_port.native [*native]]]
+ [Get the native serial port representation. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.close [*close]]]
- [Close the socket. ]
+ [[link boost_asio.reference.basic_serial_port.open [*open]]]
+ [Open the serial port using the specified device name. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.connect [*connect]]]
- [Connect the socket to the specified endpoint. ]
+ [[link boost_asio.reference.basic_serial_port.read_some [*read_some]]]
+ [Read some data from the serial port. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
+ [[link boost_asio.reference.basic_serial_port.send_break [*send_break]]]
+ [Send a break sequence to the serial port. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.get_option [*get_option]]]
- [Get an option from the socket. ]
+ [[link boost_asio.reference.basic_serial_port.set_option [*set_option]]]
+ [Set an option on the serial port. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
+ [[link boost_asio.reference.basic_serial_port.write_some [*write_some]]]
+ [Write some data to the serial port. ]
   ]
   
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.basic_socket.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ [[link boost_asio.reference.basic_serial_port.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
   ]
-
+
   [
- [[link boost_asio.reference.basic_socket.is_open [*is_open]]]
- [Determine whether the socket is open. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.local_endpoint [*local_endpoint]]]
- [Get the local endpoint of the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.native [*native]]]
- [Get the native socket representation. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.open [*open]]]
- [Open the socket using the specified protocol. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint of the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.set_option [*set_option]]]
- [Set an option on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
- ]
-
-]
-
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
- [Protected destructor to prevent deletion through this type. ]
- ]
-
-]
-
-[heading Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_socket.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
- ]
-
-]
-
-[heading Protected Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.service [*service]]]
- [The service associated with the I/O object. ]
+ [[link boost_asio.reference.basic_serial_port.service [*service]]]
+ [The service associated with the I/O object. ]
   ]
 
 ]
 
-The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
+The basic_serial_port class template provides functionality that is common to all serial ports.
 
 
 [heading Thread Safety]
@@ -11257,27 +11896,24 @@
 [*Shared] [*objects:] Unsafe.
 
 
-[section:assign basic_socket::assign]
+[section:assign basic_serial_port::assign]
 
-Assign an existing native socket to the socket.
+[indexterm2 assign..basic_serial_port] Assign an existing native serial port to the serial port.
 
- void ``[link boost_asio.reference.basic_socket.assign.overload1 assign]``(
- const protocol_type & protocol,
- const native_type & native_socket);
+ void ``[link boost_asio.reference.basic_serial_port.assign.overload1 assign]``(
+ const native_type & native_serial_port);
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket.assign.overload2 assign]``(
- const protocol_type & protocol,
- const native_type & native_socket,
+ boost::system::error_code ``[link boost_asio.reference.basic_serial_port.assign.overload2 assign]``(
+ const native_type & native_serial_port,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket::assign (1 of 2 overloads)]
+[section:overload1 basic_serial_port::assign (1 of 2 overloads)]
 
-Assign an existing native socket to the socket.
+Assign an existing native serial port to the serial port.
 
   void assign(
- const protocol_type & protocol,
- const native_type & native_socket);
+ const native_type & native_serial_port);
 
 
 
@@ -11285,13 +11921,12 @@
 
 
 
-[section:overload2 basic_socket::assign (2 of 2 overloads)]
+[section:overload2 basic_serial_port::assign (2 of 2 overloads)]
 
-Assign an existing native socket to the socket.
+Assign an existing native serial port to the serial port.
 
   boost::system::error_code assign(
- const protocol_type & protocol,
- const native_type & native_socket,
+ const native_type & native_serial_port,
       boost::system::error_code & ec);
 
 
@@ -11302,20 +11937,19 @@
 [endsect]
 
 
-[section:async_connect basic_socket::async_connect]
+[section:async_read_some basic_serial_port::async_read_some]
 
-Start an asynchronous connect.
+[indexterm2 async_read_some..basic_serial_port] Start an asynchronous read.
 
   template<
- typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
- const endpoint_type & peer_endpoint,
- ConnectHandler handler);
-
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
 
-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 returned to the closed state.
+This function is used to asynchronously read data from the serial port. The function call always returns immediately.
 
 
 [heading Parameters]
@@ -11323,94 +11957,124 @@
 
 [variablelist
   
-[[peer_endpoint][The remote endpoint to which the socket will be connected. Copies will be made of the endpoint object as required.]]
+[[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.]]
 
-[[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:
+[[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:
 ``
    void handler(
- const boost::system::error_code& error // Result of operation
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes read.
    );
-
 ``
 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().]]
 
 ]
 
+[heading Remarks]
+
+The read operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
+
 [heading Example]
   
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
+ serial_port.async_read_some(boost::asio::buffer(data, size), handler);
 
- void connect_handler(const boost::system::error_code& error)
- {
- if (!error)
- {
- // Connect succeeded.
- }
- }
 
- ...
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
- 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);
 
 
+[endsect]
 
 
 
+[section:async_write_some basic_serial_port::async_write_some]
 
-[endsect]
+[indexterm2 async_write_some..basic_serial_port] Start an asynchronous write.
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
 
-[section:at_mark basic_socket::at_mark]
 
-Determine whether the socket is at the out-of-band data mark.
+This function is used to asynchronously write data to the serial port. The function call always returns immediately.
 
- bool ``[link boost_asio.reference.basic_socket.at_mark.overload1 at_mark]``() const;
 
- bool ``[link boost_asio.reference.basic_socket.at_mark.overload2 at_mark]``(
- boost::system::error_code & ec) const;
+[heading Parameters]
+
 
+[variablelist
+
+[[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.]]
 
-[section:overload1 basic_socket::at_mark (1 of 2 overloads)]
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes written.
+ );
+``
+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().]]
 
-Determine whether the socket is at the out-of-band data mark.
+]
 
- bool at_mark() const;
+[heading Remarks]
+
+The write operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
 
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
-This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
+ serial_port.async_write_some(boost::asio::buffer(data, size), handler);
 
 
-[heading Return Value]
-
-A bool indicating whether the socket is at the out-of-band data mark.
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+[endsect]
 
 
+[section:basic_serial_port basic_serial_port::basic_serial_port]
 
-[endsect]
+[indexterm2 basic_serial_port..basic_serial_port] Construct a basic_serial_port without opening it.
 
+ ``[link boost_asio.reference.basic_serial_port.basic_serial_port.overload1 basic_serial_port]``(
+ boost::asio::io_service & io_service);
 
+ ``[link boost_asio.reference.basic_serial_port.basic_serial_port.overload2 basic_serial_port]``(
+ boost::asio::io_service & io_service,
+ const char * device);
 
-[section:overload2 basic_socket::at_mark (2 of 2 overloads)]
+ ``[link boost_asio.reference.basic_serial_port.basic_serial_port.overload3 basic_serial_port]``(
+ boost::asio::io_service & io_service,
+ const std::string & device);
 
-Determine whether the socket is at the out-of-band data mark.
+ ``[link boost_asio.reference.basic_serial_port.basic_serial_port.overload4 basic_serial_port]``(
+ boost::asio::io_service & io_service,
+ const native_type & native_serial_port);
 
- bool at_mark(
- boost::system::error_code & ec) const;
 
+[section:overload1 basic_serial_port::basic_serial_port (1 of 4 overloads)]
 
-This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
+Construct a basic_serial_port without opening it.
+
+ basic_serial_port(
+ boost::asio::io_service & io_service);
+
+
+This constructor creates a serial port without opening it.
 
 
 [heading Parameters]
@@ -11418,51 +12082,65 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any.]]
+[[io_service][The io\_service object that the serial port will use to dispatch handlers for any asynchronous operations performed on the port. ]]
 
 ]
 
-[heading Return Value]
-
-A bool indicating whether the socket is at the out-of-band data mark.
-
 
 
 [endsect]
 
 
-[endsect]
 
-[section:available basic_socket::available]
+[section:overload2 basic_serial_port::basic_serial_port (2 of 4 overloads)]
 
-Determine the number of bytes available for reading.
+Construct and open a basic_serial_port.
 
- std::size_t ``[link boost_asio.reference.basic_socket.available.overload1 available]``() const;
+ basic_serial_port(
+ boost::asio::io_service & io_service,
+ const char * device);
 
- std::size_t ``[link boost_asio.reference.basic_socket.available.overload2 available]``(
- boost::system::error_code & ec) const;
 
+This constructor creates and opens a serial port for the specified device name.
 
-[section:overload1 basic_socket::available (1 of 2 overloads)]
 
-Determine the number of bytes available for reading.
+[heading Parameters]
+
 
- std::size_t available() const;
+[variablelist
+
+[[io_service][The io\_service object that the serial port will use to dispatch handlers for any asynchronous operations performed on the port.]]
 
+[[device][The platform-specific device name for this serial port. ]]
 
-This function is used to determine the number of bytes that may be read without blocking.
+]
 
 
-[heading Return Value]
-
-The number of bytes that may be read without blocking, or 0 if an error occurs.
 
-[heading Exceptions]
+[endsect]
+
+
+
+[section:overload3 basic_serial_port::basic_serial_port (3 of 4 overloads)]
+
+Construct and open a basic_serial_port.
+
+ basic_serial_port(
+ boost::asio::io_service & io_service,
+ const std::string & device);
+
+
+This constructor creates and opens a serial port for the specified device name.
+
+
+[heading Parameters]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure. ]]
+[[io_service][The io\_service object that the serial port will use to dispatch handlers for any asynchronous operations performed on the port.]]
+
+[[device][The platform-specific device name for this serial port. ]]
 
 ]
 
@@ -11472,15 +12150,16 @@
 
 
 
-[section:overload2 basic_socket::available (2 of 2 overloads)]
+[section:overload4 basic_serial_port::basic_serial_port (4 of 4 overloads)]
 
-Determine the number of bytes available for reading.
+Construct a basic_serial_port on an existing native serial port.
 
- std::size_t available(
- boost::system::error_code & ec) const;
+ basic_serial_port(
+ boost::asio::io_service & io_service,
+ const native_type & native_serial_port);
 
 
-This function is used to determine the number of bytes that may be read without blocking.
+This constructor creates a serial port object to hold an existing native serial port.
 
 
 [heading Parameters]
@@ -11488,59 +12167,54 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any.]]
+[[io_service][The io\_service object that the serial port will use to dispatch handlers for any asynchronous operations performed on the port.]]
+
+[[native_serial_port][A native serial port.]]
 
 ]
 
-[heading Return Value]
-
-The number of bytes that may be read without blocking, or 0 if an error occurs.
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
-[endsect]
 
 
 [endsect]
 
-[section:basic_socket basic_socket::basic_socket]
 
-Construct a basic_socket without opening it.
+[endsect]
 
- ``[link boost_asio.reference.basic_socket.basic_socket.overload1 basic_socket]``(
- boost::asio::io_service & io_service);
+[section:cancel basic_serial_port::cancel]
 
- ``[link boost_asio.reference.basic_socket.basic_socket.overload2 basic_socket]``(
- boost::asio::io_service & io_service,
- const protocol_type & protocol);
+[indexterm2 cancel..basic_serial_port] Cancel all asynchronous operations associated with the serial port.
 
- ``[link boost_asio.reference.basic_socket.basic_socket.overload3 basic_socket]``(
- boost::asio::io_service & io_service,
- const endpoint_type & endpoint);
+ void ``[link boost_asio.reference.basic_serial_port.cancel.overload1 cancel]``();
 
- ``[link boost_asio.reference.basic_socket.basic_socket.overload4 basic_socket]``(
- boost::asio::io_service & io_service,
- const protocol_type & protocol,
- const native_type & native_socket);
+ boost::system::error_code ``[link boost_asio.reference.basic_serial_port.cancel.overload2 cancel]``(
+ boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket::basic_socket (1 of 4 overloads)]
+[section:overload1 basic_serial_port::cancel (1 of 2 overloads)]
 
-Construct a basic_socket without opening it.
+Cancel all asynchronous operations associated with the serial port.
 
- basic_socket(
- boost::asio::io_service & io_service);
+ void cancel();
 
 
-This constructor creates a socket without opening it.
+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.
 
 
-[heading Parameters]
+[heading Exceptions]
     
 
 [variablelist
   
-[[io_service][The io\_service object that the socket will use to dispatch handlers for any asynchronous operations performed on the socket. ]]
+[[boost::system::system_error][Thrown on failure. ]]
 
 ]
 
@@ -11550,16 +12224,15 @@
 
 
 
-[section:overload2 basic_socket::basic_socket (2 of 4 overloads)]
+[section:overload2 basic_serial_port::cancel (2 of 2 overloads)]
 
-Construct and open a basic_socket.
+Cancel all asynchronous operations associated with the serial port.
 
- basic_socket(
- boost::asio::io_service & io_service,
- const protocol_type & protocol);
+ boost::system::error_code cancel(
+ boost::system::error_code & ec);
 
 
-This constructor creates and opens a socket.
+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.
 
 
 [heading Parameters]
@@ -11567,49 +12240,36 @@
 
 [variablelist
   
-[[io_service][The io\_service object that the socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
-
-[[protocol][An object specifying protocol parameters to be used.]]
+[[ec][Set to indicate what error occurred, if any. ]]
 
 ]
 
-[heading Exceptions]
-
-
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
 
+[endsect]
 
 
 [endsect]
 
+[section:close basic_serial_port::close]
 
+[indexterm2 close..basic_serial_port] Close the serial port.
 
-[section:overload3 basic_socket::basic_socket (3 of 4 overloads)]
-
-Construct a basic_socket, opening it and binding it to the given local endpoint.
+ void ``[link boost_asio.reference.basic_serial_port.close.overload1 close]``();
 
- basic_socket(
- boost::asio::io_service & io_service,
- const endpoint_type & endpoint);
+ boost::system::error_code ``[link boost_asio.reference.basic_serial_port.close.overload2 close]``(
+ boost::system::error_code & ec);
 
 
-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.
+[section:overload1 basic_serial_port::close (1 of 2 overloads)]
 
+Close the serial port.
 
-[heading Parameters]
-
+ void close();
 
-[variablelist
-
-[[io_service][The io\_service object that the socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
 
-[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
+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.
 
-]
 
 [heading Exceptions]
     
@@ -11626,17 +12286,15 @@
 
 
 
-[section:overload4 basic_socket::basic_socket (4 of 4 overloads)]
+[section:overload2 basic_serial_port::close (2 of 2 overloads)]
 
-Construct a basic_socket on an existing native socket.
+Close the serial port.
 
- basic_socket(
- boost::asio::io_service & io_service,
- const protocol_type & protocol,
- const native_type & native_socket);
+ boost::system::error_code close(
+ boost::system::error_code & ec);
 
 
-This constructor creates a socket object to hold an existing native socket.
+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.
 
 
 [heading Parameters]
@@ -11644,51 +12302,67 @@
 
 [variablelist
   
-[[io_service][The io\_service object that the socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
+[[ec][Set to indicate what error occurred, if any. ]]
 
-[[protocol][An object specifying protocol parameters to be used.]]
+]
 
-[[native_socket][A native socket.]]
 
-]
 
-[heading Exceptions]
-
+[endsect]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+[endsect]
 
 
+[section:get_io_service basic_serial_port::get_io_service]
+
+
+['Inherited from basic_io_object.]
+
+[indexterm2 get_io_service..basic_serial_port] Get the io_service associated with the object.
+
+ boost::asio::io_service & get_io_service();
+
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
-[endsect]
 
 
 [endsect]
 
-[section:bind basic_socket::bind]
 
-Bind the socket to the given local endpoint.
+[section:get_option basic_serial_port::get_option]
 
- void ``[link boost_asio.reference.basic_socket.bind.overload1 bind]``(
- const endpoint_type & endpoint);
+[indexterm2 get_option..basic_serial_port] Get an option from the serial port.
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket.bind.overload2 bind]``(
- const endpoint_type & endpoint,
+ template<
+ typename ``[link boost_asio.reference.GettableSerialPortOption GettableSerialPortOption]``>
+ void ``[link boost_asio.reference.basic_serial_port.get_option.overload1 get_option]``(
+ GettableSerialPortOption & option);
+
+ template<
+ typename ``[link boost_asio.reference.GettableSerialPortOption GettableSerialPortOption]``>
+ boost::system::error_code ``[link boost_asio.reference.basic_serial_port.get_option.overload2 get_option]``(
+ GettableSerialPortOption & option,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket::bind (1 of 2 overloads)]
+[section:overload1 basic_serial_port::get_option (1 of 2 overloads)]
 
-Bind the socket to the given local endpoint.
+Get an option from the serial port.
 
- void bind(
- const endpoint_type & endpoint);
+ template<
+ typename ``[link boost_asio.reference.GettableSerialPortOption GettableSerialPortOption]``>
+ void get_option(
+ GettableSerialPortOption & option);
 
 
-This function binds the socket to the specified endpoint on the local machine.
+This function is used to get the current value of an option on the serial port.
 
 
 [heading Parameters]
@@ -11696,7 +12370,7 @@
 
 [variablelist
   
-[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
+[[option][The option value to be obtained from the serial port.]]
 
 ]
 
@@ -11709,34 +12383,24 @@
 
 ]
 
-[heading Example]
-
-
-
- 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));
-
-
-
-
 
 
 [endsect]
 
 
 
-[section:overload2 basic_socket::bind (2 of 2 overloads)]
+[section:overload2 basic_serial_port::get_option (2 of 2 overloads)]
 
-Bind the socket to the given local endpoint.
+Get an option from the serial port.
 
- boost::system::error_code bind(
- const endpoint_type & endpoint,
+ template<
+ typename ``[link boost_asio.reference.GettableSerialPortOption GettableSerialPortOption]``>
+ boost::system::error_code get_option(
+ GettableSerialPortOption & option,
       boost::system::error_code & ec);
 
 
-This function binds the socket to the specified endpoint on the local machine.
+This function is used to get the current value of an option on the serial port.
 
 
 [heading Parameters]
@@ -11744,29 +12408,12 @@
 
 [variablelist
   
-[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
+[[option][The option value to be obtained from the serial port.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[[ec][Set to indicate what error occured, if any.]]
 
 ]
 
-[heading Example]
-
-
-
- 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.
- }
-
-
-
-
 
 
 [endsect]
@@ -11775,207 +12422,322 @@
 [endsect]
 
 
-[section:broadcast basic_socket::broadcast]
-
+[section:implementation basic_serial_port::implementation]
 
-['Inherited from socket_base.]
 
-Socket option to permit sending of broadcast messages.
+['Inherited from basic_io_object.]
 
- typedef implementation_defined broadcast;
+[indexterm2 implementation..basic_serial_port] The underlying implementation of the I/O object.
 
+ implementation_type implementation;
 
 
-Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
 
+[endsect]
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::broadcast option(true);
- socket.set_option(option);
 
+[section:implementation_type basic_serial_port::implementation_type]
 
 
+['Inherited from basic_io_object.]
 
-Getting the current option value:
+[indexterm2 implementation_type..basic_serial_port] The underlying implementation type of I/O object.
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::broadcast option;
- socket.get_option(option);
- bool is_set = option.value();
+ typedef service_type::implementation_type implementation_type;
 
 
 
 
+[endsect]
 
 
-[endsect]
 
+[section:io_service basic_serial_port::io_service]
 
 
-[section:bytes_readable basic_socket::bytes_readable]
+['Inherited from basic_io_object.]
 
+[indexterm2 io_service..basic_serial_port] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
-['Inherited from socket_base.]
+ boost::asio::io_service & io_service();
 
-IO control command to get the amount of data that can be read without blocking.
 
- typedef implementation_defined bytes_readable;
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
 
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
-Implements the FIONREAD IO control command.
 
 
-[heading Example]
-
+[endsect]
 
 
- 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();
 
+[section:is_open basic_serial_port::is_open]
 
+[indexterm2 is_open..basic_serial_port] Determine whether the serial port is open.
 
+ bool is_open() const;
 
 
 
 [endsect]
 
 
-[section:cancel basic_socket::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[section:lowest_layer basic_serial_port::lowest_layer]
 
- void ``[link boost_asio.reference.basic_socket.cancel.overload1 cancel]``();
+[indexterm2 lowest_layer..basic_serial_port] Get a reference to the lowest layer.
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket.cancel.overload2 cancel]``(
- boost::system::error_code & ec);
+ lowest_layer_type & lowest_layer();
 
 
-[section:overload1 basic_socket::cancel (1 of 2 overloads)]
+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.
 
-Cancel all asynchronous operations associated with the socket.
 
- void cancel();
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
 
 
-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.
 
+[endsect]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
+[section:lowest_layer_type basic_serial_port::lowest_layer_type]
 
-[heading Remarks]
-
-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:
+[indexterm2 lowest_layer_type..basic_serial_port] A basic_serial_port is always the lowest layer.
 
-* It will only cancel asynchronous operations that were initiated in the current thread.
+ typedef basic_serial_port< SerialPortService > lowest_layer_type;
 
-* 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:
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
-* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
+ [[link boost_asio.reference.basic_serial_port.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
 
-* 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.
+ [[link boost_asio.reference.basic_serial_port.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_serial_port is always the lowest layer. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.basic_serial_port.native_type [*native_type]]]
+ [The native representation of a serial port. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_serial_port.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
 
-[section:overload2 basic_socket::cancel (2 of 2 overloads)]
+]
 
-Cancel all asynchronous operations associated with the socket.
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
- boost::system::error_code cancel(
- boost::system::error_code & ec);
+ [
+ [[link boost_asio.reference.basic_serial_port.assign [*assign]]]
+ [Assign an existing native serial port to the serial port. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.basic_serial_port [*basic_serial_port]]]
+ [Construct a basic_serial_port without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the serial port. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.close [*close]]]
+ [Close the serial port. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.get_option [*get_option]]]
+ [Get an option from the serial port. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.is_open [*is_open]]]
+ [Determine whether the serial port is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.native [*native]]]
+ [Get the native serial port representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.open [*open]]]
+ [Open the serial port using the specified device name. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.read_some [*read_some]]]
+ [Read some data from the serial port. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.send_break [*send_break]]]
+ [Send a break sequence to the serial port. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.set_option [*set_option]]]
+ [Set an option on the serial port. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.write_some [*write_some]]]
+ [Write some data to the serial port. ]
+ ]
+
+]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
 
-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.
+ [
+ [[link boost_asio.reference.basic_serial_port.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
 
+ [
+ [[link boost_asio.reference.basic_serial_port.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
 
-[heading Parameters]
-
+]
 
-[variablelist
+The basic_serial_port class template provides functionality that is common to all serial ports.
+
+
+[heading Thread Safety]
   
-[[ec][Set to indicate what error occurred, if any.]]
+[*Distinct] [*objects:] Safe.
 
-]
+[*Shared] [*objects:] Unsafe.
 
-[heading Remarks]
-
-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:
 
-* It will only cancel asynchronous operations that were initiated in the current thread.
 
-* 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:
+[endsect]
 
 
-* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
 
-* Use the close() function to simultaneously cancel the outstanding operations and close the socket.
+[section:native basic_serial_port::native]
+
+[indexterm2 native..basic_serial_port] Get the native serial port representation.
+
+ native_type native();
 
-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.
+
+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.
 
 
 [endsect]
 
 
+
+[section:native_type basic_serial_port::native_type]
+
+[indexterm2 native_type..basic_serial_port] The native representation of a serial port.
+
+ typedef SerialPortService::native_type native_type;
+
+
+
+
 [endsect]
 
-[section:close basic_socket::close]
 
-Close the socket.
+[section:open basic_serial_port::open]
 
- void ``[link boost_asio.reference.basic_socket.close.overload1 close]``();
+[indexterm2 open..basic_serial_port] Open the serial port using the specified device name.
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket.close.overload2 close]``(
+ void ``[link boost_asio.reference.basic_serial_port.open.overload1 open]``(
+ const std::string & device);
+
+ boost::system::error_code ``[link boost_asio.reference.basic_serial_port.open.overload2 open]``(
+ const std::string & device,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket::close (1 of 2 overloads)]
+[section:overload1 basic_serial_port::open (1 of 2 overloads)]
 
-Close the socket.
+Open the serial port using the specified device name.
 
- void close();
+ void open(
+ const std::string & device);
 
 
-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.
+This function opens the serial port for the specified device name.
 
 
-[heading Exceptions]
+[heading Parameters]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure.]]
+[[device][The platform-specific device name.]]
 
 ]
 
-[heading Remarks]
-
-For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
 
 
 
@@ -11983,15 +12745,16 @@
 
 
 
-[section:overload2 basic_socket::close (2 of 2 overloads)]
+[section:overload2 basic_serial_port::open (2 of 2 overloads)]
 
-Close the socket.
+Open the serial port using the specified device name.
 
- boost::system::error_code close(
+ boost::system::error_code open(
+ const std::string & device,
       boost::system::error_code & ec);
 
 
-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.
+This function opens the serial port using the given platform-specific device name.
 
 
 [heading Parameters]
@@ -11999,29 +12762,11 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any.]]
-
-]
-
-[heading Example]
-
-
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::system::error_code ec;
- socket.close(ec);
- if (ec)
- {
- // An error occurred.
- }
-
+[[device][The platform-specific device name.]]
 
+[[ec][Set the indicate what error occurred, if any. ]]
 
-
-[heading Remarks]
-
-For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
+]
 
 
 
@@ -12030,29 +12775,33 @@
 
 [endsect]
 
-[section:connect basic_socket::connect]
+[section:read_some basic_serial_port::read_some]
 
-Connect the socket to the specified endpoint.
+[indexterm2 read_some..basic_serial_port] Read some data from the serial port.
 
- void ``[link boost_asio.reference.basic_socket.connect.overload1 connect]``(
- const endpoint_type & peer_endpoint);
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_serial_port.read_some.overload1 read_some]``(
+ const MutableBufferSequence & buffers);
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket.connect.overload2 connect]``(
- const endpoint_type & peer_endpoint,
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_serial_port.read_some.overload2 read_some]``(
+ const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket::connect (1 of 2 overloads)]
-
-Connect the socket to the specified endpoint.
+[section:overload1 basic_serial_port::read_some (1 of 2 overloads)]
 
- void connect(
- const endpoint_type & peer_endpoint);
+Read some data from the serial port.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers);
 
-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 returned to the closed state.
+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.
 
 
 [heading Parameters]
@@ -12060,30 +12809,38 @@
 
 [variablelist
   
-[[peer_endpoint][The remote endpoint to which the socket will be connected.]]
+[[buffers][One or more buffers into which the data will be read.]]
 
 ]
 
+[heading Return Value]
+
+The number of bytes read.
+
 [heading Exceptions]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure.]]
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
 
 ]
 
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+
 [heading Example]
   
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
-
- 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);
-
+ serial_port.read_some(boost::asio::buffer(data, size));
 
 
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -12091,18 +12848,18 @@
 
 
 
-[section:overload2 basic_socket::connect (2 of 2 overloads)]
+[section:overload2 basic_serial_port::read_some (2 of 2 overloads)]
 
-Connect the socket to the specified endpoint.
+Read some data from the serial port.
 
- boost::system::error_code connect(
- const endpoint_type & peer_endpoint,
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
-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 returned to the closed state.
+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.
 
 
 [heading Parameters]
@@ -12110,28 +12867,20 @@
 
 [variablelist
   
-[[peer_endpoint][The remote endpoint to which the socket will be connected.]]
+[[buffers][One or more buffers into which the data will be read.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Example]
-
-
-
- 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.
- }
-
-
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
 
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
 
 
@@ -12140,43 +12889,34 @@
 
 [endsect]
 
+[section:send_break basic_serial_port::send_break]
 
-[section:debug basic_socket::debug]
-
-
-['Inherited from socket_base.]
-
-Socket option to enable socket-level debugging.
-
- typedef implementation_defined debug;
-
+[indexterm2 send_break..basic_serial_port] Send a break sequence to the serial port.
 
+ void ``[link boost_asio.reference.basic_serial_port.send_break.overload1 send_break]``();
 
-Implements the SOL\_SOCKET/SO\_DEBUG socket option.
-
+ boost::system::error_code ``[link boost_asio.reference.basic_serial_port.send_break.overload2 send_break]``(
+ boost::system::error_code & ec);
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::debug option(true);
- socket.set_option(option);
+[section:overload1 basic_serial_port::send_break (1 of 2 overloads)]
 
+Send a break sequence to the serial port.
 
+ void send_break();
 
 
-Getting the current option value:
+This function causes a break sequence of platform-specific duration to be sent out the serial port.
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::debug option;
- socket.get_option(option);
- bool is_set = option.value();
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -12184,42 +12924,42 @@
 
 
 
-[section:do_not_route basic_socket::do_not_route]
+[section:overload2 basic_serial_port::send_break (2 of 2 overloads)]
 
+Send a break sequence to the serial port.
 
-['Inherited from socket_base.]
+ boost::system::error_code send_break(
+ boost::system::error_code & ec);
 
-Socket option to prevent routing, use local interfaces only.
 
- typedef implementation_defined do_not_route;
+This function causes a break sequence of platform-specific duration to be sent out the serial port.
 
 
+[heading Parameters]
+
 
-Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
 
+]
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::do_not_route option(true);
- socket.set_option(option);
 
+[endsect]
 
 
+[endsect]
 
-Getting the current option value:
 
- 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();
+[section:service basic_serial_port::service]
 
 
+['Inherited from basic_io_object.]
+
+[indexterm2 service..basic_serial_port] The service associated with the I/O object.
 
+ service_type & service;
 
 
 
@@ -12227,55 +12967,67 @@
 
 
 
-[section:enable_connection_aborted basic_socket::enable_connection_aborted]
-
+[section:service_type basic_serial_port::service_type]
 
-['Inherited from socket_base.]
 
-Socket option to report aborted connections on accept.
+['Inherited from basic_io_object.]
 
- typedef implementation_defined enable_connection_aborted;
+[indexterm2 service_type..basic_serial_port] The type of the service that will be used to provide I/O operations.
 
+ typedef SerialPortService service_type;
 
 
-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.
 
 
-[heading Examples]
-
-Setting the option:
+[endsect]
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::enable_connection_aborted option(true);
- acceptor.set_option(option);
 
+[section:set_option basic_serial_port::set_option]
 
+[indexterm2 set_option..basic_serial_port] Set an option on the serial port.
 
+ template<
+ typename ``[link boost_asio.reference.SettableSerialPortOption SettableSerialPortOption]``>
+ void ``[link boost_asio.reference.basic_serial_port.set_option.overload1 set_option]``(
+ const SettableSerialPortOption & option);
 
-Getting the current option value:
+ template<
+ typename ``[link boost_asio.reference.SettableSerialPortOption SettableSerialPortOption]``>
+ boost::system::error_code ``[link boost_asio.reference.basic_serial_port.set_option.overload2 set_option]``(
+ const SettableSerialPortOption & option,
+ boost::system::error_code & ec);
 
- 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();
 
+[section:overload1 basic_serial_port::set_option (1 of 2 overloads)]
 
+Set an option on the serial port.
 
+ template<
+ typename ``[link boost_asio.reference.SettableSerialPortOption SettableSerialPortOption]``>
+ void set_option(
+ const SettableSerialPortOption & option);
 
 
+This function is used to set an option on the serial port.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[option][The option value to be set on the serial port.]]
 
-[section:endpoint_type basic_socket::endpoint_type]
+]
 
-The endpoint type.
+[heading Exceptions]
+
 
- typedef Protocol::endpoint endpoint_type;
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
 
 
@@ -12283,55 +13035,65 @@
 
 
 
-[section:get_io_service basic_socket::get_io_service]
+[section:overload2 basic_serial_port::set_option (2 of 2 overloads)]
 
+Set an option on the serial port.
 
-['Inherited from basic_io_object.]
+ template<
+ typename ``[link boost_asio.reference.SettableSerialPortOption SettableSerialPortOption]``>
+ boost::system::error_code set_option(
+ const SettableSerialPortOption & option,
+ boost::system::error_code & ec);
 
-Get the io_service associated with the object.
 
- boost::asio::io_service & get_io_service();
+This function is used to set an option on the serial port.
 
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+[heading Parameters]
+
 
+[variablelist
+
+[[option][The option value to be set on the serial port.]]
 
-[heading Return Value]
-
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
 
 
 
 [endsect]
 
 
-[section:get_option basic_socket::get_option]
+[endsect]
 
-Get an option from the socket.
+[section:write_some basic_serial_port::write_some]
+
+[indexterm2 write_some..basic_serial_port] Write some data to the serial port.
 
   template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- void ``[link boost_asio.reference.basic_socket.get_option.overload1 get_option]``(
- GettableSocketOption & option) const;
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_serial_port.write_some.overload1 write_some]``(
+ const ConstBufferSequence & buffers);
 
   template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- boost::system::error_code ``[link boost_asio.reference.basic_socket.get_option.overload2 get_option]``(
- GettableSocketOption & option,
- boost::system::error_code & ec) const;
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_serial_port.write_some.overload2 write_some]``(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket::get_option (1 of 2 overloads)]
+[section:overload1 basic_serial_port::write_some (1 of 2 overloads)]
 
-Get an option from the socket.
+Write some data to the serial port.
 
   template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- void get_option(
- GettableSocketOption & option) const;
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers);
 
 
-This function is used to get the current value of an option on the socket.
+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.
 
 
 [heading Parameters]
@@ -12339,31 +13101,38 @@
 
 [variablelist
   
-[[option][The option value to be obtained from the socket.]]
+[[buffers][One or more data buffers to be written to the serial port.]]
 
 ]
 
+[heading Return Value]
+
+The number of bytes written.
+
 [heading Exceptions]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure.]]
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
 
 ]
 
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+
 [heading Example]
   
-Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
-
- 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();
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
+ serial_port.write_some(boost::asio::buffer(data, size));
 
 
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -12371,18 +13140,18 @@
 
 
 
-[section:overload2 basic_socket::get_option (2 of 2 overloads)]
+[section:overload2 basic_serial_port::write_some (2 of 2 overloads)]
 
-Get an option from the socket.
+Write some data to the serial port.
 
   template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- boost::system::error_code get_option(
- GettableSocketOption & option,
- boost::system::error_code & ec) const;
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
-This function is used to get the current value of an option on the socket.
+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.
 
 
 [heading Parameters]
@@ -12390,30 +13159,24 @@
 
 [variablelist
   
-[[option][The option value to be obtained from the socket.]]
+[[buffers][One or more data buffers to be written to the serial port.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Example]
-
-Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
-
- 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();
+[heading Return Value]
+
+The number of bytes written. Returns 0 if an error occurred.
 
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
 
 
+[endsect]
 
 
 [endsect]
@@ -12421,468 +13184,86 @@
 
 [endsect]
 
+[section:basic_socket basic_socket]
 
-[section:implementation basic_socket::implementation]
+Provides socket functionality.
 
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ class basic_socket :
+ public basic_io_object< SocketService >,
+ public socket_base
 
-['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[heading Types]
+[table
+ [[Name][Description]]
 
- implementation_type implementation;
+ [
 
+ [[link boost_asio.reference.basic_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.basic_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
 
-[section:implementation_type basic_socket::implementation_type]
+ [
 
+ [[link boost_asio.reference.basic_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
 
-['Inherited from basic_io_object.]
+ [
 
-The underlying implementation type of I/O object.
+ [[link boost_asio.reference.basic_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
 
- typedef service_type::implementation_type implementation_type;
+ [
 
+ [[link boost_asio.reference.basic_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
 
-[endsect]
+ [
 
+ [[link boost_asio.reference.basic_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
 
-[section:io_control basic_socket::io_control]
+ [
 
-Perform an IO control command on the socket.
+ [[link boost_asio.reference.basic_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
 
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- void ``[link boost_asio.reference.basic_socket.io_control.overload1 io_control]``(
- IoControlCommand & command);
-
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code ``[link boost_asio.reference.basic_socket.io_control.overload2 io_control]``(
- IoControlCommand & command,
- boost::system::error_code & ec);
-
-
-[section:overload1 basic_socket::io_control (1 of 2 overloads)]
-
-Perform an IO control command on the socket.
-
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- void io_control(
- IoControlCommand & command);
-
-
-This function is used to execute an IO control command on the socket.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[command][The IO control command to be performed on the socket.]]
-
-]
-
-[heading Exceptions]
-
-
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
-
-]
-
-[heading Example]
-
-Getting the number of bytes ready to read:
-
- 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();
-
-
-
-
-
-
-[endsect]
-
-
-
-[section:overload2 basic_socket::io_control (2 of 2 overloads)]
-
-Perform an IO control command on the socket.
-
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code io_control(
- IoControlCommand & command,
- boost::system::error_code & ec);
-
-
-This function is used to execute an IO control command on the socket.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[command][The IO control command to be performed on the socket.]]
-
-[[ec][Set to indicate what error occurred, if any.]]
-
-]
-
-[heading Example]
-
-Getting the number of bytes ready to read:
-
- 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();
-
-
-
-
-
-
-[endsect]
-
-
-[endsect]
-
-
-[section:io_service basic_socket::io_service]
-
-
-['Inherited from basic_io_object.]
-
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
-
- boost::asio::io_service & io_service();
-
-
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
-
-
-[heading Return Value]
-
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
-
-
-
-[endsect]
-
-
-
-[section:is_open basic_socket::is_open]
-
-Determine whether the socket is open.
-
- bool is_open() const;
-
-
-
-[endsect]
-
-
-
-[section:keep_alive basic_socket::keep_alive]
-
-
-['Inherited from socket_base.]
-
-Socket option to send keep-alives.
-
- typedef implementation_defined keep_alive;
-
-
-
-Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
-
-
-[heading Examples]
-
-Setting the option:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::keep_alive option(true);
- socket.set_option(option);
-
-
-
-
-Getting the current option value:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::keep_alive option;
- socket.get_option(option);
- bool is_set = option.value();
-
-
-
-
-
-
-[endsect]
-
-
-
-[section:linger basic_socket::linger]
-
-
-['Inherited from socket_base.]
-
-Socket option to specify whether the socket lingers on close if unsent data is present.
-
- typedef implementation_defined linger;
-
-
-
-Implements the SOL\_SOCKET/SO\_LINGER socket option.
-
-
-[heading Examples]
-
-Setting the option:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::linger option(true, 30);
- socket.set_option(option);
-
-
-
-
-Getting the current option value:
-
- 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();
-
-
-
-
-
-
-[endsect]
-
-
-[section:local_endpoint basic_socket::local_endpoint]
-
-Get the local endpoint of the socket.
-
- endpoint_type ``[link boost_asio.reference.basic_socket.local_endpoint.overload1 local_endpoint]``() const;
-
- endpoint_type ``[link boost_asio.reference.basic_socket.local_endpoint.overload2 local_endpoint]``(
- boost::system::error_code & ec) const;
-
-
-[section:overload1 basic_socket::local_endpoint (1 of 2 overloads)]
-
-Get the local endpoint of the socket.
-
- endpoint_type local_endpoint() const;
-
-
-This function is used to obtain the locally bound endpoint of the socket.
-
-
-[heading Return Value]
-
-An object that represents the local endpoint of the socket.
-
-[heading Exceptions]
-
-
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
-
-]
-
-[heading Example]
-
-
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
-
-
-
-
-
-
-[endsect]
-
-
-
-[section:overload2 basic_socket::local_endpoint (2 of 2 overloads)]
-
-Get the local endpoint of the socket.
-
- endpoint_type local_endpoint(
- boost::system::error_code & ec) const;
-
-
-This function is used to obtain the locally bound endpoint of the socket.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
-
-]
-
-[heading Return Value]
-
-An object that represents the local endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
-
-[heading Example]
-
-
-
- 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.
- }
-
-
-
-
-
-
-[endsect]
-
-
-[endsect]
-
-
-[section:lowest_layer basic_socket::lowest_layer]
-
-Get a reference to the lowest layer.
-
- lowest_layer_type & 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.
-
-
-[heading Return Value]
-
-A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
-
-
-
-[endsect]
-
-
-
-[section:lowest_layer_type basic_socket::lowest_layer_type]
-
-A basic_socket is always the lowest layer.
-
- typedef basic_socket< Protocol, SocketService > lowest_layer_type;
-
-
-[heading Types]
-[table
- [[Name][Description]]
-
- [
-
- [[link boost_asio.reference.basic_socket.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
-
- ]
-
- [
+ [
 
     [[link boost_asio.reference.basic_socket.lowest_layer_type [*lowest_layer_type]]]
     [A basic_socket is always the lowest layer. ]
@@ -13142,20 +13523,27 @@
 [*Shared] [*objects:] Unsafe.
 
 
+[section:assign basic_socket::assign]
 
+[indexterm2 assign..basic_socket] Assign an existing native socket to the socket.
 
-[endsect]
-
-
+ void ``[link boost_asio.reference.basic_socket.assign.overload1 assign]``(
+ const protocol_type & protocol,
+ const native_type & native_socket);
 
-[section:max_connections basic_socket::max_connections]
+ boost::system::error_code ``[link boost_asio.reference.basic_socket.assign.overload2 assign]``(
+ const protocol_type & protocol,
+ const native_type & native_socket,
+ boost::system::error_code & ec);
 
 
-['Inherited from socket_base.]
+[section:overload1 basic_socket::assign (1 of 2 overloads)]
 
-The maximum length of the queue of pending incoming connections.
+Assign an existing native socket to the socket.
 
- static const int max_connections = implementation_defined;
+ void assign(
+ const protocol_type & protocol,
+ const native_type & native_socket);
 
 
 
@@ -13163,146 +13551,201 @@
 
 
 
-[section:message_do_not_route basic_socket::message_do_not_route]
+[section:overload2 basic_socket::assign (2 of 2 overloads)]
 
+Assign an existing native socket to the socket.
 
-['Inherited from socket_base.]
+ boost::system::error_code assign(
+ const protocol_type & protocol,
+ const native_type & native_socket,
+ boost::system::error_code & ec);
 
-Specify that the data should not be subject to routing.
 
- static const int message_do_not_route = implementation_defined;
 
+[endsect]
 
 
 [endsect]
 
 
+[section:async_connect basic_socket::async_connect]
 
-[section:message_flags basic_socket::message_flags]
+[indexterm2 async_connect..basic_socket] Start an asynchronous connect.
+
+ template<
+ typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
+ void async_connect(
+ const endpoint_type & peer_endpoint,
+ ConnectHandler handler);
 
 
-['Inherited from socket_base.]
+This function is used to asynchronously connect a socket to the specified remote endpoint. The function call always returns immediately.
 
-Bitmask type for flags that can be passed to send and receive operations.
+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.
 
- typedef int message_flags;
 
+[heading Parameters]
+
 
+[variablelist
+
+[[peer_endpoint][The remote endpoint to which the socket will be connected. Copies will be made of the endpoint object as required.]]
 
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error // Result of operation
+ );
+``
+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().]]
 
-[endsect]
+]
 
+[heading Example]
+
 
 
-[section:message_out_of_band basic_socket::message_out_of_band]
+ 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);
 
-['Inherited from socket_base.]
 
-Process out-of-band data.
 
- static const int message_out_of_band = implementation_defined;
 
 
 
 [endsect]
 
 
+[section:at_mark basic_socket::at_mark]
 
-[section:message_peek basic_socket::message_peek]
+[indexterm2 at_mark..basic_socket] Determine whether the socket is at the out-of-band data mark.
 
+ bool ``[link boost_asio.reference.basic_socket.at_mark.overload1 at_mark]``() const;
 
-['Inherited from socket_base.]
+ bool ``[link boost_asio.reference.basic_socket.at_mark.overload2 at_mark]``(
+ boost::system::error_code & ec) const;
 
-Peek at incoming data without removing it from the input queue.
 
- static const int message_peek = implementation_defined;
+[section:overload1 basic_socket::at_mark (1 of 2 overloads)]
 
+Determine whether the socket is at the out-of-band data mark.
 
+ bool at_mark() const;
 
-[endsect]
 
+This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
 
 
-[section:native basic_socket::native]
+[heading Return Value]
+
+A bool indicating whether the socket is at the out-of-band data mark.
 
-Get the native socket representation.
+[heading Exceptions]
+
 
- native_type native();
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
-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.
 
 
 [endsect]
 
 
 
-[section:native_type basic_socket::native_type]
+[section:overload2 basic_socket::at_mark (2 of 2 overloads)]
 
-The native representation of a socket.
+Determine whether the socket is at the out-of-band data mark.
 
- typedef SocketService::native_type native_type;
+ bool at_mark(
+ boost::system::error_code & ec) const;
 
 
+This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
 
 
-[endsect]
+[heading Parameters]
+
 
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
-[section:non_blocking_io basic_socket::non_blocking_io]
+[heading Return Value]
+
+A bool indicating whether the socket is at the out-of-band data mark.
 
 
-['Inherited from socket_base.]
 
-IO control command to set the blocking mode of the socket.
+[endsect]
 
- typedef implementation_defined non_blocking_io;
 
+[endsect]
 
+[section:available basic_socket::available]
 
-Implements the FIONBIO IO control command.
+[indexterm2 available..basic_socket] Determine the number of bytes available for reading.
 
+ std::size_t ``[link boost_asio.reference.basic_socket.available.overload1 available]``() const;
 
-[heading Example]
-
+ std::size_t ``[link boost_asio.reference.basic_socket.available.overload2 available]``(
+ boost::system::error_code & ec) const;
 
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::non_blocking_io command(true);
- socket.io_control(command);
+[section:overload1 basic_socket::available (1 of 2 overloads)]
+
+Determine the number of bytes available for reading.
 
+ std::size_t available() const;
 
 
+This function is used to determine the number of bytes that may be read without blocking.
 
 
+[heading Return Value]
+
+The number of bytes that may be read without blocking, or 0 if an error occurs.
 
-[endsect]
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
-[section:open basic_socket::open]
+]
 
-Open the socket using the specified protocol.
 
- void ``[link boost_asio.reference.basic_socket.open.overload1 open]``(
- const protocol_type & protocol = protocol_type());
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket.open.overload2 open]``(
- const protocol_type & protocol,
- boost::system::error_code & ec);
+[endsect]
 
 
-[section:overload1 basic_socket::open (1 of 2 overloads)]
 
-Open the socket using the specified protocol.
+[section:overload2 basic_socket::available (2 of 2 overloads)]
 
- void open(
- const protocol_type & protocol = protocol_type());
+Determine the number of bytes available for reading.
+
+ std::size_t available(
+ boost::system::error_code & ec) const;
 
 
-This function opens the socket so that it will use the specified protocol.
+This function is used to determine the number of bytes that may be read without blocking.
 
 
 [heading Parameters]
@@ -13310,45 +13753,51 @@
 
 [variablelist
   
-[[protocol][An object specifying protocol parameters to be used.]]
+[[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Exceptions]
-
-
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
+[heading Return Value]
+
+The number of bytes that may be read without blocking, or 0 if an error occurs.
 
-]
 
-[heading Example]
-
 
+[endsect]
 
- boost::asio::ip::tcp::socket socket(io_service);
- socket.open(boost::asio::ip::tcp::v4());
 
+[endsect]
 
+[section:basic_socket basic_socket::basic_socket]
 
+[indexterm2 basic_socket..basic_socket] Construct a basic_socket without opening it.
 
+ ``[link boost_asio.reference.basic_socket.basic_socket.overload1 basic_socket]``(
+ boost::asio::io_service & io_service);
 
+ ``[link boost_asio.reference.basic_socket.basic_socket.overload2 basic_socket]``(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol);
 
-[endsect]
+ ``[link boost_asio.reference.basic_socket.basic_socket.overload3 basic_socket]``(
+ boost::asio::io_service & io_service,
+ const endpoint_type & endpoint);
 
+ ``[link boost_asio.reference.basic_socket.basic_socket.overload4 basic_socket]``(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol,
+ const native_type & native_socket);
 
 
-[section:overload2 basic_socket::open (2 of 2 overloads)]
+[section:overload1 basic_socket::basic_socket (1 of 4 overloads)]
 
-Open the socket using the specified protocol.
+Construct a basic_socket without opening it.
 
- boost::system::error_code open(
- const protocol_type & protocol,
- boost::system::error_code & ec);
+ basic_socket(
+ boost::asio::io_service & io_service);
 
 
-This function opens the socket so that it will use the specified protocol.
+This constructor creates a socket without opening it.
 
 
 [heading Parameters]
@@ -13356,84 +13805,85 @@
 
 [variablelist
   
-[[protocol][An object specifying which protocol is to be used.]]
-
-[[ec][Set to indicate what error occurred, if any.]]
+[[io_service][The io\_service object that the socket will use to dispatch handlers for any asynchronous operations performed on the socket. ]]
 
 ]
 
-[heading Example]
-
 
 
- 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.
- }
+[endsect]
 
 
 
+[section:overload2 basic_socket::basic_socket (2 of 4 overloads)]
 
+Construct and open a basic_socket.
 
+ basic_socket(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol);
 
-[endsect]
 
+This constructor creates and opens a socket.
 
-[endsect]
 
+[heading Parameters]
+
 
-[section:protocol_type basic_socket::protocol_type]
+[variablelist
+
+[[io_service][The io\_service object that the socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
 
-The protocol type.
+[[protocol][An object specifying protocol parameters to be used.]]
 
- typedef Protocol protocol_type;
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
-[endsect]
 
 
+[endsect]
 
-[section:receive_buffer_size basic_socket::receive_buffer_size]
 
 
-['Inherited from socket_base.]
+[section:overload3 basic_socket::basic_socket (3 of 4 overloads)]
 
-Socket option for the receive buffer size of a socket.
+Construct a basic_socket, opening it and binding it to the given local endpoint.
 
- typedef implementation_defined receive_buffer_size;
+ basic_socket(
+ boost::asio::io_service & io_service,
+ const endpoint_type & 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.
 
-Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_buffer_size option(8192);
- socket.set_option(option);
-
-
-
+[[io_service][The io\_service object that the socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
 
-Getting the current option value:
+[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_buffer_size option;
- socket.get_option(option);
- int size = option.value();
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -13441,71 +13891,79 @@
 
 
 
-[section:receive_low_watermark basic_socket::receive_low_watermark]
-
-
-['Inherited from socket_base.]
+[section:overload4 basic_socket::basic_socket (4 of 4 overloads)]
 
-Socket option for the receive low watermark.
+Construct a basic_socket on an existing native socket.
 
- typedef implementation_defined receive_low_watermark;
+ basic_socket(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol,
+ const native_type & native_socket);
 
 
+This constructor creates a socket object to hold an existing native socket.
 
-Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_low_watermark option(1024);
- socket.set_option(option);
+[[io_service][The io\_service object that the socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
 
+[[protocol][An object specifying protocol parameters to be used.]]
 
+[[native_socket][A native socket.]]
 
+]
 
-Getting the current option value:
+[heading Exceptions]
+
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_low_watermark option;
- socket.get_option(option);
- int size = option.value();
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
+[endsect]
 
 
 [endsect]
 
+[section:bind basic_socket::bind]
 
-[section:remote_endpoint basic_socket::remote_endpoint]
+[indexterm2 bind..basic_socket] Bind the socket to the given local endpoint.
 
-Get the remote endpoint of the socket.
+ void ``[link boost_asio.reference.basic_socket.bind.overload1 bind]``(
+ const endpoint_type & endpoint);
 
- endpoint_type ``[link boost_asio.reference.basic_socket.remote_endpoint.overload1 remote_endpoint]``() const;
+ boost::system::error_code ``[link boost_asio.reference.basic_socket.bind.overload2 bind]``(
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
 
- endpoint_type ``[link boost_asio.reference.basic_socket.remote_endpoint.overload2 remote_endpoint]``(
- boost::system::error_code & ec) const;
 
+[section:overload1 basic_socket::bind (1 of 2 overloads)]
 
-[section:overload1 basic_socket::remote_endpoint (1 of 2 overloads)]
+Bind the socket to the given local endpoint.
 
-Get the remote endpoint of the socket.
+ void bind(
+ const endpoint_type & endpoint);
 
- endpoint_type remote_endpoint() const;
 
+This function binds the socket to the specified endpoint on the local machine.
 
-This function is used to obtain the remote endpoint of the socket.
 
+[heading Parameters]
+
 
-[heading Return Value]
-
-An object that represents the remote endpoint of the socket.
+[variablelist
+
+[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
+
+]
 
 [heading Exceptions]
     
@@ -13521,8 +13979,9 @@
 
 
    boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
+ socket.open(boost::asio::ip::tcp::v4());
+ socket.bind(boost::asio::ip::tcp::endpoint(
+ boost::asio::ip::tcp::v4(), 12345));
 
 
 
@@ -13533,15 +13992,16 @@
 
 
 
-[section:overload2 basic_socket::remote_endpoint (2 of 2 overloads)]
+[section:overload2 basic_socket::bind (2 of 2 overloads)]
 
-Get the remote endpoint of the socket.
+Bind the socket to the given local endpoint.
 
- endpoint_type remote_endpoint(
- boost::system::error_code & ec) const;
+ boost::system::error_code bind(
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
 
 
-This function is used to obtain the remote endpoint of the socket.
+This function binds the socket to the specified endpoint on the local machine.
 
 
 [heading Parameters]
@@ -13549,22 +14009,21 @@
 
 [variablelist
   
+[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
+
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Return Value]
-
-An object that represents the remote endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
-
 [heading Example]
   
 
 
    boost::asio::ip::tcp::socket socket(io_service);
- ...
+ socket.open(boost::asio::ip::tcp::v4());
    boost::system::error_code ec;
- boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(ec);
+ socket.bind(boost::asio::ip::tcp::endpoint(
+ boost::asio::ip::tcp::v4(), 12345), ec);
    if (ec)
    {
      // An error occurred.
@@ -13581,38 +14040,38 @@
 [endsect]
 
 
-[section:reuse_address basic_socket::reuse_address]
+[section:broadcast basic_socket::broadcast]
 
 
 ['Inherited from socket_base.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 broadcast..basic_socket] Socket option to permit sending of broadcast messages.
 
- typedef implementation_defined reuse_address;
+ typedef implementation_defined broadcast;
 
 
 
-Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
+Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
 
 
 [heading Examples]
   
 Setting the option:
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
+ boost::asio::ip::udp::socket socket(io_service);
    ...
- boost::asio::socket_base::reuse_address option(true);
- acceptor.set_option(option);
+ boost::asio::socket_base::broadcast option(true);
+ socket.set_option(option);
 
 
 
 
 Getting the current option value:
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
+ boost::asio::ip::udp::socket socket(io_service);
    ...
- boost::asio::socket_base::reuse_address option;
- acceptor.get_option(option);
+ boost::asio::socket_base::broadcast option;
+ socket.get_option(option);
    bool is_set = option.value();
 
 
@@ -13624,39 +14083,29 @@
 
 
 
-[section:send_buffer_size basic_socket::send_buffer_size]
+[section:bytes_readable basic_socket::bytes_readable]
 
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 bytes_readable..basic_socket] IO control command to get the amount of data that can be read without blocking.
 
- typedef implementation_defined send_buffer_size;
+ typedef implementation_defined bytes_readable;
 
 
 
-Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
+Implements the FIONREAD IO control command.
 
 
-[heading Examples]
+[heading Example]
   
-Setting the option:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_buffer_size option(8192);
- socket.set_option(option);
-
-
-
 
-Getting the current option value:
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::send_buffer_size option;
- socket.get_option(option);
- int size = option.value();
+ boost::asio::socket_base::bytes_readable command(true);
+ socket.io_control(command);
+ std::size_t bytes_readable = command.get();
 
 
 
@@ -13666,117 +14115,119 @@
 [endsect]
 
 
+[section:cancel basic_socket::cancel]
 
-[section:send_low_watermark basic_socket::send_low_watermark]
+[indexterm2 cancel..basic_socket] Cancel all asynchronous operations associated with the socket.
 
+ void ``[link boost_asio.reference.basic_socket.cancel.overload1 cancel]``();
 
-['Inherited from socket_base.]
+ boost::system::error_code ``[link boost_asio.reference.basic_socket.cancel.overload2 cancel]``(
+ boost::system::error_code & ec);
 
-Socket option for the send low watermark.
 
- typedef implementation_defined send_low_watermark;
+[section:overload1 basic_socket::cancel (1 of 2 overloads)]
 
+Cancel all asynchronous operations associated with the socket.
 
+ void cancel();
 
-Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
 
+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.
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_low_watermark option(1024);
- socket.set_option(option);
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
+[heading Remarks]
+
+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:
 
-Getting the current option value:
+* It will only cancel asynchronous operations that were initiated in the current thread.
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_low_watermark option;
- socket.get_option(option);
- int size = option.value();
+* 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:
 
 
+* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
 
+* 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.
 
 
 [endsect]
 
 
 
-[section:service basic_socket::service]
+[section:overload2 basic_socket::cancel (2 of 2 overloads)]
 
+Cancel all asynchronous operations associated with the socket.
 
-['Inherited from basic_io_object.]
+ boost::system::error_code cancel(
+ boost::system::error_code & ec);
 
-The service associated with the I/O object.
 
- service_type & service;
+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.
 
 
+[heading Parameters]
+
 
-[endsect]
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
+[heading Remarks]
+
+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:
 
-[section:service_type basic_socket::service_type]
+* It will only cancel asynchronous operations that were initiated in the current thread.
 
+* 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.
 
-['Inherited from basic_io_object.]
+For portable cancellation, consider using one of the following alternatives:
 
-The type of the service that will be used to provide I/O operations.
 
- typedef SocketService service_type;
+* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
 
+* 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.
 
 
 [endsect]
 
 
-[section:set_option basic_socket::set_option]
-
-Set an option on the socket.
-
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- void ``[link boost_asio.reference.basic_socket.set_option.overload1 set_option]``(
- const SettableSocketOption & option);
+[endsect]
 
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- boost::system::error_code ``[link boost_asio.reference.basic_socket.set_option.overload2 set_option]``(
- const SettableSocketOption & option,
- boost::system::error_code & ec);
+[section:close basic_socket::close]
 
+[indexterm2 close..basic_socket] Close the socket.
 
-[section:overload1 basic_socket::set_option (1 of 2 overloads)]
+ void ``[link boost_asio.reference.basic_socket.close.overload1 close]``();
 
-Set an option on the socket.
+ boost::system::error_code ``[link boost_asio.reference.basic_socket.close.overload2 close]``(
+ boost::system::error_code & ec);
 
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- void set_option(
- const SettableSocketOption & option);
 
+[section:overload1 basic_socket::close (1 of 2 overloads)]
 
-This function is used to set an option on the socket.
+Close the socket.
 
+ void close();
 
-[heading Parameters]
-
 
-[variablelist
-
-[[option][The new option value to be set on 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.
 
-]
 
 [heading Exceptions]
     
@@ -13787,17 +14238,9 @@
 
 ]
 
-[heading Example]
-
-Setting the IPPROTO\_TCP/TCP\_NODELAY option:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::ip::tcp::no_delay option(true);
- socket.set_option(option);
-
-
-
+[heading Remarks]
+
+For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
 
 
 
@@ -13805,18 +14248,15 @@
 
 
 
-[section:overload2 basic_socket::set_option (2 of 2 overloads)]
+[section:overload2 basic_socket::close (2 of 2 overloads)]
 
-Set an option on the socket.
+Close the socket.
 
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- boost::system::error_code set_option(
- const SettableSocketOption & option,
+ boost::system::error_code close(
       boost::system::error_code & ec);
 
 
-This function is used to set an option on 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.
 
 
 [heading Parameters]
@@ -13824,21 +14264,18 @@
 
 [variablelist
   
-[[option][The new option value to be set on the socket.]]
-
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
 [heading Example]
   
-Setting the IPPROTO\_TCP/TCP\_NODELAY option:
+
 
    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);
+ socket.close(ec);
    if (ec)
    {
      // An error occurred.
@@ -13847,6 +14284,10 @@
 
 
 
+[heading Remarks]
+
+For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
+
 
 
 [endsect]
@@ -13854,27 +14295,29 @@
 
 [endsect]
 
-[section:shutdown basic_socket::shutdown]
+[section:connect basic_socket::connect]
 
-Disable sends or receives on the socket.
+[indexterm2 connect..basic_socket] Connect the socket to the specified endpoint.
 
- void ``[link boost_asio.reference.basic_socket.shutdown.overload1 shutdown]``(
- shutdown_type what);
+ void ``[link boost_asio.reference.basic_socket.connect.overload1 connect]``(
+ const endpoint_type & peer_endpoint);
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket.shutdown.overload2 shutdown]``(
- shutdown_type what,
+ boost::system::error_code ``[link boost_asio.reference.basic_socket.connect.overload2 connect]``(
+ const endpoint_type & peer_endpoint,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket::shutdown (1 of 2 overloads)]
+[section:overload1 basic_socket::connect (1 of 2 overloads)]
 
-Disable sends or receives on the socket.
+Connect the socket to the specified endpoint.
 
- void shutdown(
- shutdown_type what);
+ void connect(
+ const endpoint_type & peer_endpoint);
 
 
-This function is used to disable send operations, receive operations, or both.
+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.
 
 
 [heading Parameters]
@@ -13882,7 +14325,7 @@
 
 [variablelist
   
-[[what][Determines what types of operation will no longer be allowed.]]
+[[peer_endpoint][The remote endpoint to which the socket will be connected.]]
 
 ]
 
@@ -13897,11 +14340,12 @@
 
 [heading Example]
   
-Shutting down the send side of the socket:
+
 
    boost::asio::ip::tcp::socket socket(io_service);
- ...
- socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send);
+ boost::asio::ip::tcp::endpoint endpoint(
+ boost::asio::ip::address::from_string("1.2.3.4"), 12345);
+ socket.connect(endpoint);
 
 
 
@@ -13912,16 +14356,18 @@
 
 
 
-[section:overload2 basic_socket::shutdown (2 of 2 overloads)]
+[section:overload2 basic_socket::connect (2 of 2 overloads)]
 
-Disable sends or receives on the socket.
+Connect the socket to the specified endpoint.
 
- boost::system::error_code shutdown(
- shutdown_type what,
+ boost::system::error_code connect(
+ const endpoint_type & peer_endpoint,
       boost::system::error_code & ec);
 
 
-This function is used to disable send operations, receive operations, or both.
+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.
 
 
 [heading Parameters]
@@ -13929,7 +14375,7 @@
 
 [variablelist
   
-[[what][Determines what types of operation will no longer be allowed.]]
+[[peer_endpoint][The remote endpoint to which the socket will be connected.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -13937,12 +14383,13 @@
 
 [heading Example]
   
-Shutting down the send side of the socket:
+
 
    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.shutdown(boost::asio::ip::tcp::socket::shutdown_send, ec);
+ socket.connect(endpoint, ec);
    if (ec)
    {
      // An error occurred.
@@ -13959,46 +14406,42 @@
 [endsect]
 
 
-[section:shutdown_type basic_socket::shutdown_type]
+[section:debug basic_socket::debug]
 
 
 ['Inherited from socket_base.]
 
-Different ways a socket may be shutdown.
+[indexterm2 debug..basic_socket] Socket option to enable socket-level debugging.
 
- enum shutdown_type
+ typedef implementation_defined debug;
 
-[heading Values]
-[variablelist
 
- [
- [shutdown_receive]
- [Shutdown the receive side of the socket. ]
- ]
 
- [
- [shutdown_send]
- [Shutdown the send side of the socket. ]
- ]
+Implements the SOL\_SOCKET/SO\_DEBUG socket option.
 
- [
- [shutdown_both]
- [Shutdown both send and receive on the socket. ]
- ]
 
-]
+[heading Examples]
+
+Setting the option:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::debug option(true);
+ socket.set_option(option);
 
 
-[endsect]
 
 
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::debug option;
+ socket.get_option(option);
+ bool is_set = option.value();
 
-[section:_basic_socket basic_socket::~basic_socket]
 
-Protected destructor to prevent deletion through this type.
 
- ~basic_socket();
 
 
 
@@ -14006,358 +14449,154 @@
 
 
 
-[endsect]
+[section:do_not_route basic_socket::do_not_route]
 
-[section:basic_socket_acceptor basic_socket_acceptor]
 
-Provides the ability to accept new connections.
+['Inherited from socket_base.]
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.SocketAcceptorService SocketAcceptorService]`` = socket_acceptor_service<Protocol>>
- class basic_socket_acceptor :
- public basic_io_object< SocketAcceptorService >,
- public socket_base
+[indexterm2 do_not_route..basic_socket] Socket option to prevent routing, use local interfaces only.
 
+ typedef implementation_defined do_not_route;
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
+Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
+[heading Examples]
   
- ]
+Setting the option:
 
- [
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::do_not_route option(true);
+ socket.set_option(option);
 
- [[link boost_asio.reference.basic_socket_acceptor.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
 
- [
+Getting the current option value:
 
- [[link boost_asio.reference.basic_socket_acceptor.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
-
- ]
+ 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();
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
-
- ]
 
- [
+[section:enable_connection_aborted basic_socket::enable_connection_aborted]
 
- [[link boost_asio.reference.basic_socket_acceptor.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
-
- ]
 
- [
+['Inherited from socket_base.]
 
- [[link boost_asio.reference.basic_socket_acceptor.native_type [*native_type]]]
- [The native representation of an acceptor. ]
-
- ]
+[indexterm2 enable_connection_aborted..basic_socket] Socket option to report aborted connections on accept.
 
- [
+ typedef implementation_defined enable_connection_aborted;
 
- [[link boost_asio.reference.basic_socket_acceptor.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
+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.
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
+[heading Examples]
   
- ]
-
- [
+Setting the option:
 
- [[link boost_asio.reference.basic_socket_acceptor.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
-
- ]
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::enable_connection_aborted option(true);
+ acceptor.set_option(option);
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
-
- ]
+Getting the current option value:
 
- [
+ 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();
 
- [[link boost_asio.reference.basic_socket_acceptor.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
-
- ]
 
-]
+[endsect]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.accept [*accept]]]
- [Accept a new connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.assign [*assign]]]
- [Assigns an existing native acceptor to the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.async_accept [*async_accept]]]
- [Start an asynchronous accept. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor [*basic_socket_acceptor]]]
- [Construct an acceptor without opening it. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.bind [*bind]]]
- [Bind the acceptor to the given local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.close [*close]]]
- [Close the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.get_option [*get_option]]]
- [Get an option from the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.is_open [*is_open]]]
- [Determine whether the acceptor is open. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.listen [*listen]]]
- [Place the acceptor into the state where it will listen for new connections. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.local_endpoint [*local_endpoint]]]
- [Get the local endpoint of the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.native [*native]]]
- [Get the native acceptor representation. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.open [*open]]]
- [Open the acceptor using the specified protocol. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.set_option [*set_option]]]
- [Set an option on the acceptor. ]
- ]
-
-]
 
-[heading Data Members]
-[table
- [[Name][Description]]
+[section:endpoint_type basic_socket::endpoint_type]
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
+[indexterm2 endpoint_type..basic_socket] The endpoint type.
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
- ]
+ typedef Protocol::endpoint endpoint_type;
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
- ]
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
- ]
 
-]
 
-[heading Protected Data Members]
-[table
- [[Name][Description]]
+[endsect]
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.service [*service]]]
- [The service associated with the I/O object. ]
- ]
 
-]
+[section:get_io_service basic_socket::get_io_service]
 
-The basic_socket_acceptor class template is used for accepting new socket connections.
 
+['Inherited from basic_io_object.]
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+[indexterm2 get_io_service..basic_socket] Get the io_service associated with the object.
 
-[*Shared] [*objects:] Unsafe.
+ boost::asio::io_service & get_io_service();
 
-[heading Example]
-
-Opening a socket acceptor with the SO\_REUSEADDR option enabled:
 
- 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();
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
 
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
-[section:accept basic_socket_acceptor::accept]
+[endsect]
 
-Accept a new connection.
 
- template<
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- void ``[link boost_asio.reference.basic_socket_acceptor.accept.overload1 accept]``(
- basic_socket< protocol_type, SocketService > & peer);
+[section:get_option basic_socket::get_option]
 
- template<
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.accept.overload2 accept]``(
- basic_socket< protocol_type, SocketService > & peer,
- boost::system::error_code & ec);
+[indexterm2 get_option..basic_socket] Get an option from the socket.
 
   template<
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- void ``[link boost_asio.reference.basic_socket_acceptor.accept.overload3 accept]``(
- basic_socket< protocol_type, SocketService > & peer,
- endpoint_type & peer_endpoint);
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ void ``[link boost_asio.reference.basic_socket.get_option.overload1 get_option]``(
+ GettableSocketOption & option) const;
 
   template<
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.accept.overload4 accept]``(
- basic_socket< protocol_type, SocketService > & peer,
- endpoint_type & peer_endpoint,
- boost::system::error_code & ec);
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ boost::system::error_code ``[link boost_asio.reference.basic_socket.get_option.overload2 get_option]``(
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
 
 
-[section:overload1 basic_socket_acceptor::accept (1 of 4 overloads)]
+[section:overload1 basic_socket::get_option (1 of 2 overloads)]
 
-Accept a new connection.
+Get an option from the socket.
 
   template<
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- void accept(
- basic_socket< protocol_type, SocketService > & peer);
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ void get_option(
+ GettableSocketOption & option) const;
 
 
-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.
+This function is used to get the current value of an option on the socket.
 
 
 [heading Parameters]
@@ -14365,7 +14604,7 @@
 
 [variablelist
   
-[[peer][The socket into which the new connection will be accepted.]]
+[[option][The option value to be obtained from the socket.]]
 
 ]
 
@@ -14380,12 +14619,13 @@
 
 [heading Example]
   
+Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
 
-
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
    boost::asio::ip::tcp::socket socket(io_service);
- acceptor.accept(socket);
+ ...
+ boost::asio::ip::tcp::socket::keep_alive option;
+ socket.get_option(option);
+ bool is_set = option.get();
 
 
 
@@ -14396,18 +14636,18 @@
 
 
 
-[section:overload2 basic_socket_acceptor::accept (2 of 4 overloads)]
+[section:overload2 basic_socket::get_option (2 of 2 overloads)]
 
-Accept a new connection.
+Get an option from the socket.
 
   template<
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- boost::system::error_code accept(
- basic_socket< protocol_type, SocketService > & peer,
- boost::system::error_code & ec);
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ boost::system::error_code get_option(
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
 
 
-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.
+This function is used to get the current value of an option on the socket.
 
 
 [heading Parameters]
@@ -14415,7 +14655,7 @@
 
 [variablelist
   
-[[peer][The socket into which the new connection will be accepted.]]
+[[option][The option value to be obtained from the socket.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -14423,17 +14663,18 @@
 
 [heading Example]
   
+Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
 
-
- boost::asio::ip::tcp::acceptor acceptor(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::ip::tcp::soocket socket(io_service);
+ boost::asio::ip::tcp::socket::keep_alive option;
    boost::system::error_code ec;
- acceptor.accept(socket, ec);
+ socket.get_option(option, ec);
    if (ec)
    {
      // An error occurred.
    }
+ bool is_set = option.get();
 
 
 
@@ -14443,19 +14684,66 @@
 [endsect]
 
 
+[endsect]
 
-[section:overload3 basic_socket_acceptor::accept (3 of 4 overloads)]
 
-Accept a new connection and obtain the endpoint of the peer.
+[section:implementation basic_socket::implementation]
+
+
+['Inherited from basic_io_object.]
+
+[indexterm2 implementation..basic_socket] The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
+[section:implementation_type basic_socket::implementation_type]
+
+
+['Inherited from basic_io_object.]
+
+[indexterm2 implementation_type..basic_socket] The underlying implementation type of I/O object.
+
+ typedef service_type::implementation_type implementation_type;
+
+
+
+
+[endsect]
+
+
+[section:io_control basic_socket::io_control]
+
+[indexterm2 io_control..basic_socket] Perform an IO control command on the socket.
 
   template<
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- void accept(
- basic_socket< protocol_type, SocketService > & peer,
- endpoint_type & peer_endpoint);
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ void ``[link boost_asio.reference.basic_socket.io_control.overload1 io_control]``(
+ IoControlCommand & command);
+
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code ``[link boost_asio.reference.basic_socket.io_control.overload2 io_control]``(
+ IoControlCommand & command,
+ boost::system::error_code & ec);
 
 
-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.
+[section:overload1 basic_socket::io_control (1 of 2 overloads)]
+
+Perform an IO control command on the socket.
+
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ void io_control(
+ IoControlCommand & command);
+
+
+This function is used to execute an IO control command on the socket.
 
 
 [heading Parameters]
@@ -14463,9 +14751,7 @@
 
 [variablelist
   
-[[peer][The socket into which the new connection will be accepted.]]
-
-[[peer_endpoint][An endpoint object which will receive the endpoint of the remote peer.]]
+[[command][The IO control command to be performed on the socket.]]
 
 ]
 
@@ -14480,13 +14766,13 @@
 
 [heading Example]
   
+Getting the number of bytes ready to read:
 
-
- 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);
+ ...
+ boost::asio::ip::tcp::socket::bytes_readable command;
+ socket.io_control(command);
+ std::size_t bytes_readable = command.get();
 
 
 
@@ -14497,19 +14783,18 @@
 
 
 
-[section:overload4 basic_socket_acceptor::accept (4 of 4 overloads)]
+[section:overload2 basic_socket::io_control (2 of 2 overloads)]
 
-Accept a new connection and obtain the endpoint of the peer.
+Perform an IO control command on the socket.
 
   template<
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- boost::system::error_code accept(
- basic_socket< protocol_type, SocketService > & peer,
- endpoint_type & peer_endpoint,
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ IoControlCommand & command,
       boost::system::error_code & ec);
 
 
-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.
+This function is used to execute an IO control command on the socket.
 
 
 [heading Parameters]
@@ -14517,9 +14802,7 @@
 
 [variablelist
   
-[[peer][The socket into which the new connection will be accepted.]]
-
-[[peer_endpoint][An endpoint object which will receive the endpoint of the remote peer.]]
+[[command][The IO control command to be performed on the socket.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -14527,18 +14810,18 @@
 
 [heading Example]
   
+Getting the number of bytes ready to read:
 
-
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
    boost::asio::ip::tcp::socket socket(io_service);
- boost::asio::ip::tcp::endpoint endpoint;
+ ...
+ boost::asio::ip::tcp::socket::bytes_readable command;
    boost::system::error_code ec;
- acceptor.accept(socket, endpoint, ec);
+ socket.io_control(command, ec);
    if (ec)
    {
      // An error occurred.
    }
+ std::size_t bytes_readable = command.get();
 
 
 
@@ -14550,388 +14833,151 @@
 
 [endsect]
 
-[section:assign basic_socket_acceptor::assign]
 
-Assigns an existing native acceptor to the acceptor.
+[section:io_service basic_socket::io_service]
 
- void ``[link boost_asio.reference.basic_socket_acceptor.assign.overload1 assign]``(
- const protocol_type & protocol,
- const native_type & native_acceptor);
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.assign.overload2 assign]``(
- const protocol_type & protocol,
- const native_type & native_acceptor,
- boost::system::error_code & ec);
+['Inherited from basic_io_object.]
 
+[indexterm2 io_service..basic_socket] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
-[section:overload1 basic_socket_acceptor::assign (1 of 2 overloads)]
+ boost::asio::io_service & io_service();
 
-Assigns an existing native acceptor to the acceptor.
 
- void assign(
- const protocol_type & protocol,
- const native_type & native_acceptor);
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
 
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
-[endsect]
 
 
+[endsect]
 
-[section:overload2 basic_socket_acceptor::assign (2 of 2 overloads)]
 
-Assigns an existing native acceptor to the acceptor.
 
- boost::system::error_code assign(
- const protocol_type & protocol,
- const native_type & native_acceptor,
- boost::system::error_code & ec);
+[section:is_open basic_socket::is_open]
 
+[indexterm2 is_open..basic_socket] Determine whether the socket is open.
 
+ bool is_open() const;
 
-[endsect]
 
 
 [endsect]
 
-[section:async_accept basic_socket_acceptor::async_accept]
-
-Start an asynchronous accept.
-
- template<
- typename ``[link boost_asio.reference.SocketService SocketService]``,
- typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void ``[link boost_asio.reference.basic_socket_acceptor.async_accept.overload1 async_accept]``(
- basic_socket< protocol_type, SocketService > & peer,
- AcceptHandler handler);
-
- template<
- typename ``[link boost_asio.reference.SocketService SocketService]``,
- typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void ``[link boost_asio.reference.basic_socket_acceptor.async_accept.overload2 async_accept]``(
- basic_socket< protocol_type, SocketService > & peer,
- endpoint_type & peer_endpoint,
- AcceptHandler handler);
-
-
-[section:overload1 basic_socket_acceptor::async_accept (1 of 2 overloads)]
 
-Start an asynchronous accept.
 
- template<
- typename ``[link boost_asio.reference.SocketService SocketService]``,
- typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void async_accept(
- basic_socket< protocol_type, SocketService > & peer,
- AcceptHandler handler);
+[section:keep_alive basic_socket::keep_alive]
 
 
-This function is used to asynchronously accept a new connection into a socket. The function call always returns immediately.
+['Inherited from socket_base.]
 
+[indexterm2 keep_alive..basic_socket] Socket option to send keep-alives.
 
-[heading Parameters]
-
+ typedef implementation_defined keep_alive;
 
-[variablelist
-
-[[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.]]
 
-[[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:
-``
- void handler(
- const boost::system::error_code& error // Result of operation.
- );
 
-``
-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().]]
+Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
 
-]
 
-[heading Example]
+[heading Examples]
   
+Setting the option:
 
-
- 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);
    ...
- boost::asio::ip::tcp::socket socket(io_service);
- acceptor.async_accept(socket, accept_handler);
-
-
-
-
-
-
-[endsect]
-
-
-
-[section:overload2 basic_socket_acceptor::async_accept (2 of 2 overloads)]
-
-Start an asynchronous accept.
-
- template<
- typename ``[link boost_asio.reference.SocketService SocketService]``,
- typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void async_accept(
- basic_socket< protocol_type, SocketService > & peer,
- endpoint_type & peer_endpoint,
- AcceptHandler handler);
-
-
-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.
-
+ boost::asio::socket_base::keep_alive option(true);
+ socket.set_option(option);
 
-[heading Parameters]
-
 
-[variablelist
-
-[[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.]]
 
-[[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.]]
 
-[[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:
-``
- void handler(
- const boost::system::error_code& error // Result of operation.
- );
+Getting the current option value:
 
-``
-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(). ]]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::keep_alive option;
+ socket.get_option(option);
+ bool is_set = option.value();
 
-]
 
 
 
-[endsect]
 
 
 [endsect]
 
-[section:basic_socket_acceptor basic_socket_acceptor::basic_socket_acceptor]
-
-Construct an acceptor without opening it.
-
- ``[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload1 basic_socket_acceptor]``(
- boost::asio::io_service & io_service);
-
- ``[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload2 basic_socket_acceptor]``(
- boost::asio::io_service & io_service,
- const protocol_type & protocol);
 
- ``[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload3 basic_socket_acceptor]``(
- boost::asio::io_service & io_service,
- const endpoint_type & endpoint,
- bool reuse_addr = true);
 
- ``[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload4 basic_socket_acceptor]``(
- boost::asio::io_service & io_service,
- const protocol_type & protocol,
- const native_type & native_acceptor);
+[section:linger basic_socket::linger]
 
 
-[section:overload1 basic_socket_acceptor::basic_socket_acceptor (1 of 4 overloads)]
+['Inherited from socket_base.]
 
-Construct an acceptor without opening it.
+[indexterm2 linger..basic_socket] Socket option to specify whether the socket lingers on close if unsent data is present.
 
- basic_socket_acceptor(
- boost::asio::io_service & io_service);
+ typedef implementation_defined linger;
 
 
-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.
 
+Implements the SOL\_SOCKET/SO\_LINGER socket option.
 
-[heading Parameters]
-
 
-[variablelist
+[heading Examples]
   
-[[io_service][The io\_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor. ]]
-
-]
-
-
-
-[endsect]
-
-
-
-[section:overload2 basic_socket_acceptor::basic_socket_acceptor (2 of 4 overloads)]
-
-Construct an open acceptor.
-
- basic_socket_acceptor(
- boost::asio::io_service & io_service,
- const protocol_type & protocol);
-
+Setting the option:
 
-This constructor creates an acceptor and automatically opens it.
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::linger option(true, 30);
+ socket.set_option(option);
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[io_service][The io\_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor.]]
 
-[[protocol][An object specifying protocol parameters to be used.]]
+Getting the current option value:
 
-]
+ 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();
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
 
 
 
 [endsect]
 
 
+[section:local_endpoint basic_socket::local_endpoint]
 
-[section:overload3 basic_socket_acceptor::basic_socket_acceptor (3 of 4 overloads)]
-
-Construct an acceptor opened on the given endpoint.
-
- basic_socket_acceptor(
- boost::asio::io_service & io_service,
- const endpoint_type & endpoint,
- bool reuse_addr = true);
-
-
-This constructor creates an acceptor and automatically opens it to listen for new connections on the specified endpoint.
+[indexterm2 local_endpoint..basic_socket] Get the local endpoint of the socket.
 
+ endpoint_type ``[link boost_asio.reference.basic_socket.local_endpoint.overload1 local_endpoint]``() const;
 
-[heading Parameters]
-
+ endpoint_type ``[link boost_asio.reference.basic_socket.local_endpoint.overload2 local_endpoint]``(
+ boost::system::error_code & ec) const;
 
-[variablelist
-
-[[io_service][The io\_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor.]]
 
-[[endpoint][An endpoint on the local machine on which the acceptor will listen for new connections.]]
+[section:overload1 basic_socket::local_endpoint (1 of 2 overloads)]
 
-[[reuse_addr][Whether the constructor should set the socket option socket\_base::reuse\_address.]]
+Get the local endpoint of the socket.
 
-]
+ endpoint_type local_endpoint() const;
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
+This function is used to obtain the locally bound endpoint of the socket.
 
-]
 
-[heading Remarks]
+[heading Return Value]
       
-This constructor is equivalent to the following 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);
-
-
-
-
-
-
-[endsect]
-
-
-
-[section:overload4 basic_socket_acceptor::basic_socket_acceptor (4 of 4 overloads)]
-
-Construct a basic_socket_acceptor on an existing native acceptor.
-
- basic_socket_acceptor(
- boost::asio::io_service & io_service,
- const protocol_type & protocol,
- const native_type & native_acceptor);
-
-
-This constructor creates an acceptor object to hold an existing native acceptor.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[io_service][The io\_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor.]]
-
-[[protocol][An object specifying protocol parameters to be used.]]
-
-[[native_acceptor][A native acceptor.]]
-
-]
-
-[heading Exceptions]
-
-
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
-
-]
-
-
-
-[endsect]
-
-
-[endsect]
-
-[section:bind basic_socket_acceptor::bind]
-
-Bind the acceptor to the given local endpoint.
-
- void ``[link boost_asio.reference.basic_socket_acceptor.bind.overload1 bind]``(
- const endpoint_type & endpoint);
-
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.bind.overload2 bind]``(
- const endpoint_type & endpoint,
- boost::system::error_code & ec);
-
-
-[section:overload1 basic_socket_acceptor::bind (1 of 2 overloads)]
-
-Bind the acceptor to the given local endpoint.
-
- void bind(
- const endpoint_type & endpoint);
-
-
-This function binds the socket acceptor to the specified endpoint on the local machine.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[endpoint][An endpoint on the local machine to which the socket acceptor will be bound.]]
-
-]
+An object that represents the local endpoint of the socket.
 
 [heading Exceptions]
     
@@ -14946,9 +14992,9 @@
   
 
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- acceptor.open(boost::asio::ip::tcp::v4());
- acceptor.bind(boost::asio::ip::tcp::endpoint(12345));
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
 
 
 
@@ -14959,16 +15005,15 @@
 
 
 
-[section:overload2 basic_socket_acceptor::bind (2 of 2 overloads)]
+[section:overload2 basic_socket::local_endpoint (2 of 2 overloads)]
 
-Bind the acceptor to the given local endpoint.
+Get the local endpoint of the socket.
 
- boost::system::error_code bind(
- const endpoint_type & endpoint,
- boost::system::error_code & ec);
+ endpoint_type local_endpoint(
+ boost::system::error_code & ec) const;
 
 
-This function binds the socket acceptor to the specified endpoint on the local machine.
+This function is used to obtain the locally bound endpoint of the socket.
 
 
 [heading Parameters]
@@ -14976,20 +15021,22 @@
 
 [variablelist
   
-[[endpoint][An endpoint on the local machine to which the socket acceptor will be bound.]]
-
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
+[heading Return Value]
+
+An object that represents the local endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
+
 [heading Example]
   
 
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- acceptor.open(boost::asio::ip::tcp::v4());
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
    boost::system::error_code ec;
- acceptor.bind(boost::asio::ip::tcp::endpoint(12345), ec);
+ boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint(ec);
    if (ec)
    {
      // An error occurred.
@@ -15006,216 +15053,358 @@
 [endsect]
 
 
-[section:broadcast basic_socket_acceptor::broadcast]
-
+[section:lowest_layer basic_socket::lowest_layer]
 
-['Inherited from socket_base.]
+[indexterm2 lowest_layer..basic_socket] Get a reference to the lowest layer.
 
-Socket option to permit sending of broadcast messages.
+ lowest_layer_type & lowest_layer();
 
- typedef implementation_defined broadcast;
 
+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.
 
 
-Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
 
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::broadcast option(true);
- socket.set_option(option);
+[endsect]
 
 
 
+[section:lowest_layer_type basic_socket::lowest_layer_type]
 
-Getting the current option value:
+[indexterm2 lowest_layer_type..basic_socket] A basic_socket is always the lowest layer.
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::broadcast option;
- socket.get_option(option);
- bool is_set = option.value();
+ typedef basic_socket< Protocol, SocketService > lowest_layer_type;
 
 
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
+ [[link boost_asio.reference.basic_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.basic_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
 
-[section:bytes_readable basic_socket_acceptor::bytes_readable]
+ [
 
+ [[link boost_asio.reference.basic_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
 
-['Inherited from socket_base.]
+ [
 
-IO control command to get the amount of data that can be read without blocking.
+ [[link boost_asio.reference.basic_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
 
- typedef implementation_defined bytes_readable;
+ [
 
+ [[link boost_asio.reference.basic_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
 
+ [
 
-Implements the FIONREAD IO control command.
+ [[link boost_asio.reference.basic_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
 
+ [
 
-[heading Example]
+ [[link boost_asio.reference.basic_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
   
+ ]
 
+ [
 
- 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();
+ [[link boost_asio.reference.basic_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.basic_socket.native_type [*native_type]]]
+ [The native representation of a socket. ]
+
+ ]
 
+ [
 
-[section:cancel basic_socket_acceptor::cancel]
+ [[link boost_asio.reference.basic_socket.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
 
-Cancel all asynchronous operations associated with the acceptor.
+ [
 
- void ``[link boost_asio.reference.basic_socket_acceptor.cancel.overload1 cancel]``();
+ [[link boost_asio.reference.basic_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.cancel.overload2 cancel]``(
- boost::system::error_code & ec);
+ [
 
+ [[link boost_asio.reference.basic_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
 
-[section:overload1 basic_socket_acceptor::cancel (1 of 2 overloads)]
+ [
 
-Cancel all asynchronous operations associated with the acceptor.
+ [[link boost_asio.reference.basic_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
 
- void cancel();
+ [
 
+ [[link boost_asio.reference.basic_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
 
-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.
+ [
 
+ [[link boost_asio.reference.basic_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
 
-[heading Exceptions]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.basic_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
   
-[[boost::system::system_error][Thrown on failure. ]]
+ ]
 
-]
-
-
-
-[endsect]
-
-
-
-[section:overload2 basic_socket_acceptor::cancel (2 of 2 overloads)]
-
-Cancel all asynchronous operations associated with the acceptor.
-
- boost::system::error_code cancel(
- boost::system::error_code & ec);
-
-
-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.
+ [
 
+ [[link boost_asio.reference.basic_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
 
-[heading Parameters]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.basic_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
   
-[[ec][Set to indicate what error occurred, if any. ]]
+ ]
 
 ]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-
-[endsect]
-
-
-[endsect]
-
-[section:close basic_socket_acceptor::close]
-
-Close the acceptor.
-
- void ``[link boost_asio.reference.basic_socket_acceptor.close.overload1 close]``();
-
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.close.overload2 close]``(
- boost::system::error_code & ec);
-
-
-[section:overload1 basic_socket_acceptor::close (1 of 2 overloads)]
-
-Close the acceptor.
-
- void close();
-
-
-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.
-
-
-[heading Exceptions]
-
-
-[variablelist
+ [
+ [[link boost_asio.reference.basic_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.basic_socket [*basic_socket]]]
+ [Construct a basic_socket without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.native [*native]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
   
-[[boost::system::system_error][Thrown on failure. ]]
-
 ]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
 
-[endsect]
-
-
-
-[section:overload2 basic_socket_acceptor::close (2 of 2 overloads)]
+[heading Data Members]
+[table
+ [[Name][Description]]
 
-Close the acceptor.
+ [
+ [[link boost_asio.reference.basic_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
 
- boost::system::error_code close(
- boost::system::error_code & ec);
+ [
+ [[link boost_asio.reference.basic_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
 
+ [
+ [[link boost_asio.reference.basic_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
 
-This function is used to close the acceptor. Any asynchronous accept operations will be cancelled immediately.
+ [
+ [[link boost_asio.reference.basic_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
 
-A subsequent call to open() is required before the acceptor can again be used to again perform socket accept operations.
+]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
 
-[heading Parameters]
-
+ [
+ [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
+ [
+ [[link boost_asio.reference.basic_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
 
 ]
 
-[heading Example]
-
-
+The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::system::error_code ec;
- acceptor.close(ec);
- if (ec)
- {
- // An error occurred.
- }
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
+[*Shared] [*objects:] Unsafe.
 
 
 
@@ -15223,45 +15412,30 @@
 [endsect]
 
 
-[endsect]
-
 
-[section:debug basic_socket_acceptor::debug]
+[section:max_connections basic_socket::max_connections]
 
 
 ['Inherited from socket_base.]
 
-Socket option to enable socket-level debugging.
-
- typedef implementation_defined debug;
-
-
-
-Implements the SOL\_SOCKET/SO\_DEBUG socket option.
+[indexterm2 max_connections..basic_socket] The maximum length of the queue of pending incoming connections.
 
+ static const int max_connections = implementation_defined;
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::debug option(true);
- socket.set_option(option);
 
+[endsect]
 
 
 
-Getting the current option value:
+[section:message_do_not_route basic_socket::message_do_not_route]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::debug option;
- socket.get_option(option);
- bool is_set = option.value();
 
+['Inherited from socket_base.]
 
+[indexterm2 message_do_not_route..basic_socket] Specify that the data should not be subject to routing.
 
+ static const int message_do_not_route = implementation_defined;
 
 
 
@@ -15269,42 +15443,30 @@
 
 
 
-[section:do_not_route basic_socket_acceptor::do_not_route]
+[section:message_flags basic_socket::message_flags]
 
 
 ['Inherited from socket_base.]
 
-Socket option to prevent routing, use local interfaces only.
-
- typedef implementation_defined do_not_route;
-
+[indexterm2 message_flags..basic_socket] Bitmask type for flags that can be passed to send and receive operations.
 
-
-Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
+ typedef int message_flags;
 
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::do_not_route option(true);
- socket.set_option(option);
 
+[endsect]
 
 
 
-Getting the current option value:
+[section:message_out_of_band basic_socket::message_out_of_band]
 
- 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();
 
+['Inherited from socket_base.]
 
+[indexterm2 message_out_of_band..basic_socket] Process out-of-band data.
 
+ static const int message_out_of_band = implementation_defined;
 
 
 
@@ -15312,111 +15474,100 @@
 
 
 
-[section:enable_connection_aborted basic_socket_acceptor::enable_connection_aborted]
+[section:message_peek basic_socket::message_peek]
 
 
 ['Inherited from socket_base.]
 
-Socket option to report aborted connections on accept.
+[indexterm2 message_peek..basic_socket] Peek at incoming data without removing it from the input queue.
 
- typedef implementation_defined enable_connection_aborted;
+ static const int message_peek = implementation_defined;
 
 
 
-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.
+[endsect]
 
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::enable_connection_aborted option(true);
- acceptor.set_option(option);
+[section:native basic_socket::native]
 
+[indexterm2 native..basic_socket] Get the native socket representation.
 
+ native_type native();
 
 
-Getting the current option value:
+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.
 
- 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();
 
+[endsect]
 
 
 
+[section:native_type basic_socket::native_type]
 
+[indexterm2 native_type..basic_socket] The native representation of a socket.
 
-[endsect]
+ typedef SocketService::native_type native_type;
 
 
 
-[section:endpoint_type basic_socket_acceptor::endpoint_type]
 
-The endpoint type.
+[endsect]
 
- typedef Protocol::endpoint endpoint_type;
 
 
+[section:non_blocking_io basic_socket::non_blocking_io]
 
 
-[endsect]
+['Inherited from socket_base.]
 
+[indexterm2 non_blocking_io..basic_socket] IO control command to set the blocking mode of the socket.
 
+ typedef implementation_defined non_blocking_io;
 
-[section:get_io_service basic_socket_acceptor::get_io_service]
 
 
-['Inherited from basic_io_object.]
+Implements the FIONBIO IO control command.
 
-Get the io_service associated with the object.
 
- boost::asio::io_service & get_io_service();
+[heading Example]
+
 
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::non_blocking_io command(true);
+ socket.io_control(command);
+
 
 
-[heading Return Value]
-
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
 [endsect]
 
 
-[section:get_option basic_socket_acceptor::get_option]
+[section:open basic_socket::open]
 
-Get an option from the acceptor.
+[indexterm2 open..basic_socket] Open the socket using the specified protocol.
 
- template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- void ``[link boost_asio.reference.basic_socket_acceptor.get_option.overload1 get_option]``(
- GettableSocketOption & option);
+ void ``[link boost_asio.reference.basic_socket.open.overload1 open]``(
+ const protocol_type & protocol = protocol_type());
 
- template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.get_option.overload2 get_option]``(
- GettableSocketOption & option,
+ boost::system::error_code ``[link boost_asio.reference.basic_socket.open.overload2 open]``(
+ const protocol_type & protocol,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket_acceptor::get_option (1 of 2 overloads)]
+[section:overload1 basic_socket::open (1 of 2 overloads)]
 
-Get an option from the acceptor.
+Open the socket using the specified protocol.
 
- template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- void get_option(
- GettableSocketOption & option);
+ void open(
+ const protocol_type & protocol = protocol_type());
 
 
-This function is used to get the current value of an option on the acceptor.
+This function opens the socket so that it will use the specified protocol.
 
 
 [heading Parameters]
@@ -15424,7 +15575,7 @@
 
 [variablelist
   
-[[option][The option value to be obtained from the acceptor.]]
+[[protocol][An object specifying protocol parameters to be used.]]
 
 ]
 
@@ -15439,13 +15590,10 @@
 
 [heading Example]
   
-Getting the value of the SOL\_SOCKET/SO\_REUSEADDR option:
 
- 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();
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ socket.open(boost::asio::ip::tcp::v4());
 
 
 
@@ -15456,18 +15604,16 @@
 
 
 
-[section:overload2 basic_socket_acceptor::get_option (2 of 2 overloads)]
+[section:overload2 basic_socket::open (2 of 2 overloads)]
 
-Get an option from the acceptor.
+Open the socket using the specified protocol.
 
- template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- boost::system::error_code get_option(
- GettableSocketOption & option,
+ boost::system::error_code open(
+ const protocol_type & protocol,
       boost::system::error_code & ec);
 
 
-This function is used to get the current value of an option on the acceptor.
+This function opens the socket so that it will use the specified protocol.
 
 
 [heading Parameters]
@@ -15475,7 +15621,7 @@
 
 [variablelist
   
-[[option][The option value to be obtained from the acceptor.]]
+[[protocol][An object specifying which protocol is to be used.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -15483,18 +15629,15 @@
 
 [heading Example]
   
-Getting the value of the SOL\_SOCKET/SO\_REUSEADDR option:
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::ip::tcp::acceptor::reuse_address option;
+
+ boost::asio::ip::tcp::socket socket(io_service);
    boost::system::error_code ec;
- acceptor.get_option(option, ec);
+ socket.open(boost::asio::ip::tcp::v4(), ec);
    if (ec)
    {
      // An error occurred.
    }
- bool is_set = option.get();
 
 
 
@@ -15507,14 +15650,12 @@
 [endsect]
 
 
-[section:implementation basic_socket_acceptor::implementation]
-
+[section:protocol_type basic_socket::protocol_type]
 
-['Inherited from basic_io_object.]
+[indexterm2 protocol_type..basic_socket] The protocol type.
 
-The underlying implementation of the I/O object.
+ typedef Protocol protocol_type;
 
- implementation_type implementation;
 
 
 
@@ -15522,50 +15663,42 @@
 
 
 
-[section:implementation_type basic_socket_acceptor::implementation_type]
-
-
-['Inherited from basic_io_object.]
-
-The underlying implementation type of I/O object.
-
- typedef service_type::implementation_type implementation_type;
-
-
-
-
-[endsect]
-
+[section:receive_buffer_size basic_socket::receive_buffer_size]
 
 
-[section:io_service basic_socket_acceptor::io_service]
+['Inherited from socket_base.]
 
+[indexterm2 receive_buffer_size..basic_socket] Socket option for the receive buffer size of a socket.
 
-['Inherited from basic_io_object.]
+ typedef implementation_defined receive_buffer_size;
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
 
- boost::asio::io_service & io_service();
 
+Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
+[heading Examples]
+
+Setting the option:
 
-[heading Return Value]
-
-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::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option(8192);
+ socket.set_option(option);
 
 
 
-[endsect]
 
+Getting the current option value:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
 
-[section:is_open basic_socket_acceptor::is_open]
 
-Determine whether the acceptor is open.
 
- bool is_open() const;
 
 
 
@@ -15573,18 +15706,18 @@
 
 
 
-[section:keep_alive basic_socket_acceptor::keep_alive]
+[section:receive_low_watermark basic_socket::receive_low_watermark]
 
 
 ['Inherited from socket_base.]
 
-Socket option to send keep-alives.
+[indexterm2 receive_low_watermark..basic_socket] Socket option for the receive low watermark.
 
- typedef implementation_defined keep_alive;
+ typedef implementation_defined receive_low_watermark;
 
 
 
-Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
+Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
 
 
 [heading Examples]
@@ -15593,7 +15726,7 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::keep_alive option(true);
+ boost::asio::socket_base::receive_low_watermark option(1024);
    socket.set_option(option);
 
 
@@ -15603,9 +15736,9 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::keep_alive option;
+ boost::asio::socket_base::receive_low_watermark option;
    socket.get_option(option);
- bool is_set = option.value();
+ int size = option.value();
 
 
 
@@ -15615,41 +15748,46 @@
 [endsect]
 
 
+[section:remote_endpoint basic_socket::remote_endpoint]
 
-[section:linger basic_socket_acceptor::linger]
+[indexterm2 remote_endpoint..basic_socket] Get the remote endpoint of the socket.
 
+ endpoint_type ``[link boost_asio.reference.basic_socket.remote_endpoint.overload1 remote_endpoint]``() const;
 
-['Inherited from socket_base.]
+ endpoint_type ``[link boost_asio.reference.basic_socket.remote_endpoint.overload2 remote_endpoint]``(
+ boost::system::error_code & ec) const;
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
 
- typedef implementation_defined linger;
+[section:overload1 basic_socket::remote_endpoint (1 of 2 overloads)]
 
+Get the remote endpoint of the socket.
 
+ endpoint_type remote_endpoint() const;
 
-Implements the SOL\_SOCKET/SO\_LINGER socket option.
 
+This function is used to obtain the remote endpoint of the socket.
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::linger option(true, 30);
- socket.set_option(option);
+[heading Return Value]
+
+An object that represents the remote endpoint of the socket.
+
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
+[heading Example]
+
 
-Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
+ 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();
+ boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
 
 
 
@@ -15659,63 +15797,16 @@
 [endsect]
 
 
-[section:listen basic_socket_acceptor::listen]
 
-Place the acceptor into the state where it will listen for new connections.
+[section:overload2 basic_socket::remote_endpoint (2 of 2 overloads)]
 
- void ``[link boost_asio.reference.basic_socket_acceptor.listen.overload1 listen]``(
- int backlog = socket_base::max_connections);
+Get the remote endpoint of the socket.
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.listen.overload2 listen]``(
- int backlog,
- boost::system::error_code & ec);
+ endpoint_type remote_endpoint(
+ boost::system::error_code & ec) const;
 
 
-[section:overload1 basic_socket_acceptor::listen (1 of 2 overloads)]
-
-Place the acceptor into the state where it will listen for new connections.
-
- void listen(
- int backlog = socket_base::max_connections);
-
-
-This function puts the socket acceptor into the state where it may accept new connections.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[backlog][The maximum length of the queue of pending connections.]]
-
-]
-
-[heading Exceptions]
-
-
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
-
-]
-
-
-
-[endsect]
-
-
-
-[section:overload2 basic_socket_acceptor::listen (2 of 2 overloads)]
-
-Place the acceptor into the state where it will listen for new connections.
-
- boost::system::error_code listen(
- int backlog,
- boost::system::error_code & ec);
-
-
-This function puts the socket acceptor into the state where it may accept new connections.
+This function is used to obtain the remote endpoint of the socket.
 
 
 [heading Parameters]
@@ -15723,20 +15814,22 @@
 
 [variablelist
   
-[[backlog][The maximum length of the queue of pending connections.]]
-
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
+[heading Return Value]
+
+An object that represents the remote endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
+
 [heading Example]
   
 
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
    boost::system::error_code ec;
- acceptor.listen(boost::asio::socket_base::max_connections, ec);
+ boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(ec);
    if (ec)
    {
      // An error occurred.
@@ -15752,46 +15845,40 @@
 
 [endsect]
 
-[section:local_endpoint basic_socket_acceptor::local_endpoint]
-
-Get the local endpoint of the acceptor.
 
- endpoint_type ``[link boost_asio.reference.basic_socket_acceptor.local_endpoint.overload1 local_endpoint]``() const;
+[section:reuse_address basic_socket::reuse_address]
 
- endpoint_type ``[link boost_asio.reference.basic_socket_acceptor.local_endpoint.overload2 local_endpoint]``(
- boost::system::error_code & ec) const;
 
+['Inherited from socket_base.]
 
-[section:overload1 basic_socket_acceptor::local_endpoint (1 of 2 overloads)]
+[indexterm2 reuse_address..basic_socket] Socket option to allow the socket to be bound to an address that is already in use.
 
-Get the local endpoint of the acceptor.
+ typedef implementation_defined reuse_address;
 
- endpoint_type local_endpoint() const;
 
 
-This function is used to obtain the locally bound endpoint of the acceptor.
+Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
 
 
-[heading Return Value]
-
-An object that represents the local endpoint of the acceptor.
+[heading Examples]
+
+Setting the option:
 
-[heading Exceptions]
-
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::reuse_address option(true);
+ acceptor.set_option(option);
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
 
-[heading Example]
-
 
+Getting the current option value:
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
    ...
- boost::asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint();
+ boost::asio::socket_base::reuse_address option;
+ acceptor.get_option(option);
+ bool is_set = option.value();
 
 
 
@@ -15802,42 +15889,39 @@
 
 
 
-[section:overload2 basic_socket_acceptor::local_endpoint (2 of 2 overloads)]
+[section:send_buffer_size basic_socket::send_buffer_size]
 
-Get the local endpoint of the acceptor.
 
- endpoint_type local_endpoint(
- boost::system::error_code & ec) const;
+['Inherited from socket_base.]
 
+[indexterm2 send_buffer_size..basic_socket] Socket option for the send buffer size of a socket.
 
-This function is used to obtain the locally bound endpoint of the acceptor.
+ typedef implementation_defined send_buffer_size;
 
 
-[heading Parameters]
-
 
-[variablelist
+Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
+
+
+[heading Examples]
   
-[[ec][Set to indicate what error occurred, if any.]]
+Setting the option:
 
-]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_buffer_size option(8192);
+ socket.set_option(option);
 
-[heading Return Value]
-
-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.
 
-[heading Example]
-
 
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::system::error_code ec;
- boost::asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint(ec);
- if (ec)
- {
- // An error occurred.
- }
+ boost::asio::socket_base::send_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
 
 
 
@@ -15847,104 +15931,137 @@
 [endsect]
 
 
-[endsect]
-
 
-[section:max_connections basic_socket_acceptor::max_connections]
+[section:send_low_watermark basic_socket::send_low_watermark]
 
 
 ['Inherited from socket_base.]
 
-The maximum length of the queue of pending incoming connections.
+[indexterm2 send_low_watermark..basic_socket] Socket option for the send low watermark.
 
- static const int max_connections = implementation_defined;
+ typedef implementation_defined send_low_watermark;
 
 
 
-[endsect]
+Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
 
 
+[heading Examples]
+
+Setting the option:
 
-[section:message_do_not_route basic_socket_acceptor::message_do_not_route]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option(1024);
+ socket.set_option(option);
 
 
-['Inherited from socket_base.]
 
-Specify that the data should not be subject to routing.
 
- static const int message_do_not_route = implementation_defined;
+Getting the current option value:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option;
+ socket.get_option(option);
+ int size = option.value();
 
 
-[endsect]
 
 
 
-[section:message_flags basic_socket_acceptor::message_flags]
 
+[endsect]
 
-['Inherited from socket_base.]
 
-Bitmask type for flags that can be passed to send and receive operations.
 
- typedef int message_flags;
+[section:service basic_socket::service]
 
 
+['Inherited from basic_io_object.]
 
+[indexterm2 service..basic_socket] The service associated with the I/O object.
 
-[endsect]
+ service_type & service;
 
 
 
-[section:message_out_of_band basic_socket_acceptor::message_out_of_band]
+[endsect]
 
 
-['Inherited from socket_base.]
 
-Process out-of-band data.
+[section:service_type basic_socket::service_type]
 
- static const int message_out_of_band = implementation_defined;
 
+['Inherited from basic_io_object.]
 
+[indexterm2 service_type..basic_socket] The type of the service that will be used to provide I/O operations.
 
-[endsect]
+ typedef SocketService service_type;
 
 
 
-[section:message_peek basic_socket_acceptor::message_peek]
 
+[endsect]
 
-['Inherited from socket_base.]
 
-Peek at incoming data without removing it from the input queue.
+[section:set_option basic_socket::set_option]
 
- static const int message_peek = implementation_defined;
+[indexterm2 set_option..basic_socket] Set an option on the socket.
+
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ void ``[link boost_asio.reference.basic_socket.set_option.overload1 set_option]``(
+ const SettableSocketOption & option);
 
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ boost::system::error_code ``[link boost_asio.reference.basic_socket.set_option.overload2 set_option]``(
+ const SettableSocketOption & option,
+ boost::system::error_code & ec);
 
 
-[endsect]
+[section:overload1 basic_socket::set_option (1 of 2 overloads)]
 
+Set an option on the socket.
 
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ void set_option(
+ const SettableSocketOption & option);
 
-[section:native basic_socket_acceptor::native]
 
-Get the native acceptor representation.
+This function is used to set an option on the socket.
 
- native_type native();
 
+[heading Parameters]
+
 
-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.
+[variablelist
+
+[[option][The new option value to be set on the socket.]]
 
+]
 
-[endsect]
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
-[section:native_type basic_socket_acceptor::native_type]
+[heading Example]
+
+Setting the IPPROTO\_TCP/TCP\_NODELAY option:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::ip::tcp::no_delay option(true);
+ socket.set_option(option);
 
-The native representation of an acceptor.
 
- typedef SocketAcceptorService::native_type native_type;
 
 
 
@@ -15953,28 +16070,44 @@
 
 
 
-[section:non_blocking_io basic_socket_acceptor::non_blocking_io]
+[section:overload2 basic_socket::set_option (2 of 2 overloads)]
 
+Set an option on the socket.
 
-['Inherited from socket_base.]
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ boost::system::error_code set_option(
+ const SettableSocketOption & option,
+ boost::system::error_code & ec);
 
-IO control command to set the blocking mode of the socket.
 
- typedef implementation_defined non_blocking_io;
+This function is used to set an option on the socket.
 
 
+[heading Parameters]
+
 
-Implements the FIONBIO IO control command.
+[variablelist
+
+[[option][The new option value to be set on the socket.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
 [heading Example]
   
+Setting the IPPROTO\_TCP/TCP\_NODELAY option:
 
-
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::non_blocking_io command(true);
- socket.io_control(command);
+ boost::asio::ip::tcp::no_delay option(true);
+ boost::system::error_code ec;
+ socket.set_option(option, ec);
+ if (ec)
+ {
+ // An error occurred.
+ }
 
 
 
@@ -15984,27 +16117,29 @@
 [endsect]
 
 
-[section:open basic_socket_acceptor::open]
+[endsect]
 
-Open the acceptor using the specified protocol.
+[section:shutdown basic_socket::shutdown]
 
- void ``[link boost_asio.reference.basic_socket_acceptor.open.overload1 open]``(
- const protocol_type & protocol = protocol_type());
+[indexterm2 shutdown..basic_socket] Disable sends or receives on the socket.
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.open.overload2 open]``(
- const protocol_type & protocol,
+ void ``[link boost_asio.reference.basic_socket.shutdown.overload1 shutdown]``(
+ shutdown_type what);
+
+ boost::system::error_code ``[link boost_asio.reference.basic_socket.shutdown.overload2 shutdown]``(
+ shutdown_type what,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket_acceptor::open (1 of 2 overloads)]
+[section:overload1 basic_socket::shutdown (1 of 2 overloads)]
 
-Open the acceptor using the specified protocol.
+Disable sends or receives on the socket.
 
- void open(
- const protocol_type & protocol = protocol_type());
+ void shutdown(
+ shutdown_type what);
 
 
-This function opens the socket acceptor so that it will use the specified protocol.
+This function is used to disable send operations, receive operations, or both.
 
 
 [heading Parameters]
@@ -16012,7 +16147,7 @@
 
 [variablelist
   
-[[protocol][An object specifying which protocol is to be used.]]
+[[what][Determines what types of operation will no longer be allowed.]]
 
 ]
 
@@ -16027,10 +16162,11 @@
 
 [heading Example]
   
+Shutting down the send side of the socket:
 
-
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- acceptor.open(boost::asio::ip::tcp::v4());
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send);
 
 
 
@@ -16041,16 +16177,16 @@
 
 
 
-[section:overload2 basic_socket_acceptor::open (2 of 2 overloads)]
+[section:overload2 basic_socket::shutdown (2 of 2 overloads)]
 
-Open the acceptor using the specified protocol.
+Disable sends or receives on the socket.
 
- boost::system::error_code open(
- const protocol_type & protocol,
+ boost::system::error_code shutdown(
+ shutdown_type what,
       boost::system::error_code & ec);
 
 
-This function opens the socket acceptor so that it will use the specified protocol.
+This function is used to disable send operations, receive operations, or both.
 
 
 [heading Parameters]
@@ -16058,7 +16194,7 @@
 
 [variablelist
   
-[[protocol][An object specifying which protocol is to be used.]]
+[[what][Determines what types of operation will no longer be allowed.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -16066,11 +16202,12 @@
 
 [heading Example]
   
+Shutting down the send side of the socket:
 
-
- boost::asio::ip::tcp::acceptor acceptor(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
    boost::system::error_code ec;
- acceptor.open(boost::asio::ip::tcp::v4(), ec);
+ socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send, ec);
    if (ec)
    {
      // An error occurred.
@@ -16087,55 +16224,46 @@
 [endsect]
 
 
-[section:protocol_type basic_socket_acceptor::protocol_type]
-
-The protocol type.
-
- typedef Protocol protocol_type;
-
-
-
-
-[endsect]
-
-
-
-[section:receive_buffer_size basic_socket_acceptor::receive_buffer_size]
+[section:shutdown_type basic_socket::shutdown_type]
 
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
-
- typedef implementation_defined receive_buffer_size;
+[indexterm2 shutdown_type..basic_socket] Different ways a socket may be shutdown.
 
+ enum shutdown_type
 
+[heading Values]
+[variablelist
 
-Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
+ [
+ [shutdown_receive]
+ [Shutdown the receive side of the socket. ]
+ ]
 
+ [
+ [shutdown_send]
+ [Shutdown the send side of the socket. ]
+ ]
 
-[heading Examples]
-
-Setting the option:
+ [
+ [shutdown_both]
+ [Shutdown both send and receive on the socket. ]
+ ]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_buffer_size option(8192);
- socket.set_option(option);
+]
 
 
 
+[endsect]
 
-Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_buffer_size option;
- socket.get_option(option);
- int size = option.value();
 
+[section:_basic_socket basic_socket::~basic_socket]
 
+[indexterm2 ~basic_socket..basic_socket] Protected destructor to prevent deletion through this type.
 
+ ~basic_socket();
 
 
 
@@ -16143,235 +16271,456 @@
 
 
 
-[section:receive_low_watermark basic_socket_acceptor::receive_low_watermark]
-
-
-['Inherited from socket_base.]
+[endsect]
 
-Socket option for the receive low watermark.
+[section:basic_socket_acceptor basic_socket_acceptor]
 
- typedef implementation_defined receive_low_watermark;
+Provides the ability to accept new connections.
 
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.SocketAcceptorService SocketAcceptorService]`` = socket_acceptor_service<Protocol>>
+ class basic_socket_acceptor :
+ public basic_io_object< SocketAcceptorService >,
+ public socket_base
 
 
-Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
-[heading Examples]
+ [[link boost_asio.reference.basic_socket_acceptor.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
   
-Setting the option:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_low_watermark option(1024);
- socket.set_option(option);
-
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
 
-Getting the current option value:
+ [
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_low_watermark option;
- socket.get_option(option);
- int size = option.value();
+ [[link boost_asio.reference.basic_socket_acceptor.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.basic_socket_acceptor.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
 
-[section:reuse_address basic_socket_acceptor::reuse_address]
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
 
-['Inherited from socket_base.]
+ [
 
-Socket option to allow the socket to be bound to an address that is already in use.
+ [[link boost_asio.reference.basic_socket_acceptor.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
 
- typedef implementation_defined reuse_address;
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
 
+ [
 
-Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
+ [[link boost_asio.reference.basic_socket_acceptor.native_type [*native_type]]]
+ [The native representation of an acceptor. ]
+
+ ]
 
+ [
 
-[heading Examples]
+ [[link boost_asio.reference.basic_socket_acceptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
   
-Setting the option:
+ ]
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::reuse_address option(true);
- acceptor.set_option(option);
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
 
-Getting the current option value:
+ [
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::reuse_address option;
- acceptor.get_option(option);
- bool is_set = option.value();
+ [[link boost_asio.reference.basic_socket_acceptor.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.basic_socket_acceptor.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
 
-[section:send_buffer_size basic_socket_acceptor::send_buffer_size]
+ [
 
+ [[link boost_asio.reference.basic_socket_acceptor.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
 
-['Inherited from socket_base.]
+]
 
-Socket option for the send buffer size of a socket.
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
- typedef implementation_defined send_buffer_size;
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.accept [*accept]]]
+ [Accept a new connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.assign [*assign]]]
+ [Assigns an existing native acceptor to the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.async_accept [*async_accept]]]
+ [Start an asynchronous accept. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor [*basic_socket_acceptor]]]
+ [Construct an acceptor without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.bind [*bind]]]
+ [Bind the acceptor to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.close [*close]]]
+ [Close the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.get_option [*get_option]]]
+ [Get an option from the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.is_open [*is_open]]]
+ [Determine whether the acceptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.listen [*listen]]]
+ [Place the acceptor into the state where it will listen for new connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.native [*native]]]
+ [Get the native acceptor representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.open [*open]]]
+ [Open the acceptor using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.set_option [*set_option]]]
+ [Set an option on the acceptor. ]
+ ]
+
+]
 
+[heading Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
 
-Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
 
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
 
-[heading Examples]
-
-Setting the option:
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_buffer_size option(8192);
- socket.set_option(option);
+]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
 
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
 
-Getting the current option value:
+]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_buffer_size option;
- socket.get_option(option);
- int size = option.value();
+The basic_socket_acceptor class template is used for accepting new socket connections.
 
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
+[*Shared] [*objects:] Unsafe.
 
+[heading Example]
+
+Opening a socket acceptor with the SO\_REUSEADDR option enabled:
 
+ 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();
 
-[endsect]
 
 
 
-[section:send_low_watermark basic_socket_acceptor::send_low_watermark]
 
+[section:accept basic_socket_acceptor::accept]
 
-['Inherited from socket_base.]
+[indexterm2 accept..basic_socket_acceptor] Accept a new connection.
 
-Socket option for the send low watermark.
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ void ``[link boost_asio.reference.basic_socket_acceptor.accept.overload1 accept]``(
+ basic_socket< protocol_type, SocketService > & peer);
 
- typedef implementation_defined send_low_watermark;
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.accept.overload2 accept]``(
+ basic_socket< protocol_type, SocketService > & peer,
+ boost::system::error_code & ec);
 
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ void ``[link boost_asio.reference.basic_socket_acceptor.accept.overload3 accept]``(
+ basic_socket< protocol_type, SocketService > & peer,
+ endpoint_type & peer_endpoint);
 
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.accept.overload4 accept]``(
+ basic_socket< protocol_type, SocketService > & peer,
+ endpoint_type & peer_endpoint,
+ boost::system::error_code & ec);
 
-Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
 
+[section:overload1 basic_socket_acceptor::accept (1 of 4 overloads)]
 
-[heading Examples]
-
-Setting the option:
+Accept a new connection.
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_low_watermark option(1024);
- socket.set_option(option);
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ void accept(
+ basic_socket< protocol_type, SocketService > & peer);
 
 
+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.
 
 
-Getting the current option value:
+[heading Parameters]
+
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_low_watermark option;
- socket.get_option(option);
- int size = option.value();
+[variablelist
+
+[[peer][The socket into which the new connection will be accepted.]]
 
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
+[heading Example]
+
 
-[endsect]
 
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::ip::tcp::socket socket(io_service);
+ acceptor.accept(socket);
 
 
-[section:service basic_socket_acceptor::service]
 
 
-['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
 
- service_type & service;
+[endsect]
 
 
 
-[endsect]
+[section:overload2 basic_socket_acceptor::accept (2 of 4 overloads)]
 
+Accept a new connection.
 
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ boost::system::error_code accept(
+ basic_socket< protocol_type, SocketService > & peer,
+ boost::system::error_code & ec);
 
-[section:service_type basic_socket_acceptor::service_type]
 
+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.
 
-['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[heading Parameters]
+
 
- typedef SocketAcceptorService service_type;
+[variablelist
+
+[[peer][The socket into which the new connection will be accepted.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
+[heading Example]
+
 
-[endsect]
+
+ 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.
+ }
 
 
-[section:set_option basic_socket_acceptor::set_option]
 
-Set an option on the acceptor.
 
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- void ``[link boost_asio.reference.basic_socket_acceptor.set_option.overload1 set_option]``(
- const SettableSocketOption & option);
 
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.set_option.overload2 set_option]``(
- const SettableSocketOption & option,
- boost::system::error_code & ec);
 
+[endsect]
 
-[section:overload1 basic_socket_acceptor::set_option (1 of 2 overloads)]
 
-Set an option on the acceptor.
+
+[section:overload3 basic_socket_acceptor::accept (3 of 4 overloads)]
+
+Accept a new connection and obtain the endpoint of the peer.
 
   template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- void set_option(
- const SettableSocketOption & option);
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ void accept(
+ basic_socket< protocol_type, SocketService > & peer,
+ endpoint_type & peer_endpoint);
 
 
-This function is used to set an option on the acceptor.
+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.
 
 
 [heading Parameters]
@@ -16379,7 +16728,9 @@
 
 [variablelist
   
-[[option][The new option value to be set on the acceptor.]]
+[[peer][The socket into which the new connection will be accepted.]]
+
+[[peer_endpoint][An endpoint object which will receive the endpoint of the remote peer.]]
 
 ]
 
@@ -16394,12 +16745,13 @@
 
 [heading Example]
   
-Setting the SOL\_SOCKET/SO\_REUSEADDR option:
+
 
    boost::asio::ip::tcp::acceptor acceptor(io_service);
    ...
- boost::asio::ip::tcp::acceptor::reuse_address option(true);
- acceptor.set_option(option);
+ boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::tcp::endpoint endpoint;
+ acceptor.accept(socket, endpoint);
 
 
 
@@ -16410,18 +16762,19 @@
 
 
 
-[section:overload2 basic_socket_acceptor::set_option (2 of 2 overloads)]
+[section:overload4 basic_socket_acceptor::accept (4 of 4 overloads)]
 
-Set an option on the acceptor.
+Accept a new connection and obtain the endpoint of the peer.
 
   template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- boost::system::error_code set_option(
- const SettableSocketOption & option,
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ boost::system::error_code accept(
+ basic_socket< protocol_type, SocketService > & peer,
+ endpoint_type & peer_endpoint,
       boost::system::error_code & ec);
 
 
-This function is used to set an option on the acceptor.
+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.
 
 
 [heading Parameters]
@@ -16429,7 +16782,9 @@
 
 [variablelist
   
-[[option][The new option value to be set on the acceptor.]]
+[[peer][The socket into which the new connection will be accepted.]]
+
+[[peer_endpoint][An endpoint object which will receive the endpoint of the remote peer.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -16437,13 +16792,14 @@
 
 [heading Example]
   
-Setting the SOL\_SOCKET/SO\_REUSEADDR option:
+
 
    boost::asio::ip::tcp::acceptor acceptor(io_service);
    ...
- boost::asio::ip::tcp::acceptor::reuse_address option(true);
+ boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::tcp::endpoint endpoint;
    boost::system::error_code ec;
- acceptor.set_option(option, ec);
+ acceptor.accept(socket, endpoint, ec);
    if (ec)
    {
      // An error occurred.
@@ -16459,592 +16815,423 @@
 
 [endsect]
 
+[section:assign basic_socket_acceptor::assign]
 
-[section:shutdown_type basic_socket_acceptor::shutdown_type]
+[indexterm2 assign..basic_socket_acceptor] Assigns an existing native acceptor to the acceptor.
 
+ void ``[link boost_asio.reference.basic_socket_acceptor.assign.overload1 assign]``(
+ const protocol_type & protocol,
+ const native_type & native_acceptor);
 
-['Inherited from socket_base.]
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.assign.overload2 assign]``(
+ const protocol_type & protocol,
+ const native_type & native_acceptor,
+ boost::system::error_code & ec);
 
-Different ways a socket may be shutdown.
 
- enum shutdown_type
+[section:overload1 basic_socket_acceptor::assign (1 of 2 overloads)]
 
-[heading Values]
-[variablelist
+Assigns an existing native acceptor to the acceptor.
 
- [
- [shutdown_receive]
- [Shutdown the receive side of the socket. ]
- ]
+ void assign(
+ const protocol_type & protocol,
+ const native_type & native_acceptor);
 
- [
- [shutdown_send]
- [Shutdown the send side of the socket. ]
- ]
 
- [
- [shutdown_both]
- [Shutdown both send and receive on the socket. ]
- ]
 
-]
+[endsect]
 
 
 
-[endsect]
+[section:overload2 basic_socket_acceptor::assign (2 of 2 overloads)]
+
+Assigns an existing native acceptor to the acceptor.
+
+ boost::system::error_code assign(
+ const protocol_type & protocol,
+ const native_type & native_acceptor,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
-[section:basic_socket_iostream basic_socket_iostream]
 
-Iostream interface for a socket.
+[endsect]
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.StreamSocketService StreamSocketService]`` = stream_socket_service<Protocol>>
- class basic_socket_iostream
+[section:async_accept basic_socket_acceptor::async_accept]
 
+[indexterm2 async_accept..basic_socket_acceptor] Start an asynchronous accept.
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``,
+ typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
+ void ``[link boost_asio.reference.basic_socket_acceptor.async_accept.overload1 async_accept]``(
+ basic_socket< protocol_type, SocketService > & peer,
+ AcceptHandler handler);
 
- [
- [[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream [*basic_socket_iostream]]]
- [Construct a basic_socket_iostream without establishing a connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_iostream.close [*close]]]
- [Close the connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_iostream.connect [*connect]]]
- [Establish a connection to an endpoint corresponding to a resolver query. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_iostream.rdbuf [*rdbuf]]]
- [Return a pointer to the underlying streambuf. ]
- ]
-
-]
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``,
+ typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
+ void ``[link boost_asio.reference.basic_socket_acceptor.async_accept.overload2 async_accept]``(
+ basic_socket< protocol_type, SocketService > & peer,
+ endpoint_type & peer_endpoint,
+ AcceptHandler handler);
 
-[section:basic_socket_iostream basic_socket_iostream::basic_socket_iostream]
 
-Construct a basic_socket_iostream without establishing a connection.
+[section:overload1 basic_socket_acceptor::async_accept (1 of 2 overloads)]
 
- ``[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream.overload1 basic_socket_iostream]``();
+Start an asynchronous accept.
 
   template<
- typename T1,
- ... ,
- typename TN>
- ``[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream.overload2 basic_socket_iostream]``(
- T1 t1,
- ... ,
- TN tn);
+ typename ``[link boost_asio.reference.SocketService SocketService]``,
+ typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
+ void async_accept(
+ basic_socket< protocol_type, SocketService > & peer,
+ AcceptHandler handler);
 
 
-[section:overload1 basic_socket_iostream::basic_socket_iostream (1 of 2 overloads)]
+This function is used to asynchronously accept a new connection into a socket. The function call always returns immediately.
 
-Construct a basic_socket_iostream without establishing a connection.
 
- basic_socket_iostream();
+[heading Parameters]
+
 
+[variablelist
+
+[[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.]]
 
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error // Result of operation.
+ );
+``
+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().]]
 
-[endsect]
+]
 
+[heading Example]
+
 
 
-[section:overload2 basic_socket_iostream::basic_socket_iostream (2 of 2 overloads)]
+ void accept_handler(const boost::system::error_code& error)
+ {
+ if (!error)
+ {
+ // Accept succeeded.
+ }
+ }
 
-Establish a connection to an endpoint corresponding to a resolver query.
+ ...
 
- template<
- typename T1,
- ... ,
- typename TN>
- basic_socket_iostream(
- T1 t1,
- ... ,
- TN tn);
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::ip::tcp::socket socket(io_service);
+ acceptor.async_accept(socket, accept_handler);
 
 
-This constructor automatically establishes a connection based on the supplied resolver query parameters. The arguments are used to construct a resolver query object.
 
 
-[endsect]
 
 
 [endsect]
 
 
-[section:close basic_socket_iostream::close]
 
-Close the connection.
+[section:overload2 basic_socket_acceptor::async_accept (2 of 2 overloads)]
 
- void close();
+Start an asynchronous accept.
 
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``,
+ typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
+ void async_accept(
+ basic_socket< protocol_type, SocketService > & peer,
+ endpoint_type & peer_endpoint,
+ AcceptHandler handler);
 
 
-[endsect]
+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.
 
 
+[heading Parameters]
+
 
-[section:connect basic_socket_iostream::connect]
+[variablelist
+
+[[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.]]
 
-Establish a connection to an endpoint corresponding to a resolver query.
+[[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.]]
 
- template<
- typename T1,
- ... ,
- typename TN>
- void connect(
- T1 t1,
- ... ,
- TN tn);
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error // Result of operation.
+ );
+``
+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(). ]]
 
+]
 
-This function automatically establishes a connection based on the supplied resolver query parameters. The arguments are used to construct a resolver query object.
 
 
 [endsect]
 
 
+[endsect]
 
-[section:rdbuf basic_socket_iostream::rdbuf]
+[section:basic_socket_acceptor basic_socket_acceptor::basic_socket_acceptor]
 
-Return a pointer to the underlying streambuf.
+[indexterm2 basic_socket_acceptor..basic_socket_acceptor] Construct an acceptor without opening it.
 
- basic_socket_streambuf< Protocol, StreamSocketService > * rdbuf() const;
+ ``[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload1 basic_socket_acceptor]``(
+ boost::asio::io_service & io_service);
 
+ ``[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload2 basic_socket_acceptor]``(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol);
 
+ ``[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload3 basic_socket_acceptor]``(
+ boost::asio::io_service & io_service,
+ const endpoint_type & endpoint,
+ bool reuse_addr = true);
 
-[endsect]
+ ``[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor.overload4 basic_socket_acceptor]``(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol,
+ const native_type & native_acceptor);
 
 
+[section:overload1 basic_socket_acceptor::basic_socket_acceptor (1 of 4 overloads)]
 
-[endsect]
+Construct an acceptor without opening it.
 
-[section:basic_socket_streambuf basic_socket_streambuf]
-
-Iostream streambuf for a socket.
+ basic_socket_acceptor(
+ boost::asio::io_service & io_service);
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.StreamSocketService StreamSocketService]`` = stream_socket_service<Protocol>>
- class basic_socket_streambuf :
- public basic_socket< Protocol, StreamSocketService >
 
+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.
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.basic_socket_streambuf.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
+[variablelist
   
- ]
+[[io_service][The io\_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor. ]]
 
- [
+]
 
- [[link boost_asio.reference.basic_socket_streambuf.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_streambuf.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_socket_streambuf.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
 
- [
+[section:overload2 basic_socket_acceptor::basic_socket_acceptor (2 of 4 overloads)]
 
- [[link boost_asio.reference.basic_socket_streambuf.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
-
- ]
+Construct an open acceptor.
 
- [
+ basic_socket_acceptor(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol);
 
- [[link boost_asio.reference.basic_socket_streambuf.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
 
- [
+This constructor creates an acceptor and automatically opens it.
 
- [[link boost_asio.reference.basic_socket_streambuf.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.basic_socket_streambuf.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
+[variablelist
   
- ]
+[[io_service][The io\_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor.]]
 
- [
+[[protocol][An object specifying protocol parameters to be used.]]
 
- [[link boost_asio.reference.basic_socket_streambuf.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
-
- ]
+]
 
- [
+[heading Exceptions]
+
 
- [[link boost_asio.reference.basic_socket_streambuf.lowest_layer_type [*lowest_layer_type]]]
- [A basic_socket is always the lowest layer. ]
+[variablelist
   
- ]
+[[boost::system::system_error][Thrown on failure. ]]
 
- [
+]
 
- [[link boost_asio.reference.basic_socket_streambuf.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_streambuf.native_type [*native_type]]]
- [The native representation of a socket. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_socket_streambuf.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
- ]
 
- [
+[section:overload3 basic_socket_acceptor::basic_socket_acceptor (3 of 4 overloads)]
 
- [[link boost_asio.reference.basic_socket_streambuf.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
+Construct an acceptor opened on the given endpoint.
 
- [
+ basic_socket_acceptor(
+ boost::asio::io_service & io_service,
+ const endpoint_type & endpoint,
+ bool reuse_addr = true);
 
- [[link boost_asio.reference.basic_socket_streambuf.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
-
- ]
 
- [
+This constructor creates an acceptor and automatically opens it to listen for new connections on the specified endpoint.
 
- [[link boost_asio.reference.basic_socket_streambuf.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
-
- ]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.basic_socket_streambuf.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
+[variablelist
   
- ]
+[[io_service][The io\_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor.]]
 
- [
+[[endpoint][An endpoint on the local machine on which the acceptor will listen for new connections.]]
 
- [[link boost_asio.reference.basic_socket_streambuf.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
-
- ]
+[[reuse_addr][Whether the constructor should set the socket option socket\_base::reuse\_address.]]
 
- [
+]
 
- [[link boost_asio.reference.basic_socket_streambuf.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
+[heading Exceptions]
+
+
+[variablelist
   
- ]
+[[boost::system::system_error][Thrown on failure.]]
 
- [
+]
 
- [[link boost_asio.reference.basic_socket_streambuf.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
+[heading Remarks]
+
+This constructor is equivalent to the following 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);
 
- [[link boost_asio.reference.basic_socket_streambuf.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
-
- ]
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.basic_socket_streambuf.assign [*assign]]]
- [Assign an existing native socket to the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.available [*available]]]
- [Determine the number of bytes available for reading. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.basic_socket_streambuf [*basic_socket_streambuf]]]
- [Construct a basic_socket_streambuf without establishing a connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.bind [*bind]]]
- [Bind the socket to the given local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.close [*close]]]
- [Close the connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.connect [*connect]]]
- [Establish a connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.get_option [*get_option]]]
- [Get an option from the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.is_open [*is_open]]]
- [Determine whether the socket is open. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.local_endpoint [*local_endpoint]]]
- [Get the local endpoint of the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.native [*native]]]
- [Get the native socket representation. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.open [*open]]]
- [Open the socket using the specified protocol. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint of the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.set_option [*set_option]]]
- [Set an option on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf._basic_socket_streambuf [*~basic_socket_streambuf]]]
- [Destructor flushes buffered data. ]
- ]
-
-]
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.basic_socket_streambuf.overflow [*overflow]]]
- []
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.setbuf [*setbuf]]]
- []
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.sync [*sync]]]
- []
- ]
-
- [
- [[link boost_asio.reference.basic_socket_streambuf.underflow [*underflow]]]
- []
- ]
+[endsect]
+
+
+
+[section:overload4 basic_socket_acceptor::basic_socket_acceptor (4 of 4 overloads)]
+
+Construct a basic_socket_acceptor on an existing native acceptor.
+
+ basic_socket_acceptor(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol,
+ const native_type & native_acceptor);
+
+
+This constructor creates an acceptor object to hold an existing native acceptor.
+
+
+[heading Parameters]
+
+
+[variablelist
   
-]
+[[io_service][The io\_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor.]]
 
-[heading Data Members]
-[table
- [[Name][Description]]
+[[protocol][An object specifying protocol parameters to be used.]]
 
- [
- [[link boost_asio.reference.basic_socket_streambuf.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
+[[native_acceptor][A native acceptor.]]
 
- [
- [[link boost_asio.reference.basic_socket_streambuf.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
- ]
+]
 
- [
- [[link boost_asio.reference.basic_socket_streambuf.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
- ]
+[heading Exceptions]
+
 
- [
- [[link boost_asio.reference.basic_socket_streambuf.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
- ]
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
 ]
 
-[heading Protected Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.basic_socket_streambuf.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
 
- [
- [[link boost_asio.reference.basic_socket_streambuf.service [*service]]]
- [The service associated with the I/O object. ]
- ]
+[endsect]
 
-]
 
-[section:assign basic_socket_streambuf::assign]
+[endsect]
 
-Assign an existing native socket to the socket.
+[section:bind basic_socket_acceptor::bind]
 
- void ``[link boost_asio.reference.basic_socket_streambuf.assign.overload1 assign]``(
- const protocol_type & protocol,
- const native_type & native_socket);
+[indexterm2 bind..basic_socket_acceptor] Bind the acceptor to the given local endpoint.
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.assign.overload2 assign]``(
- const protocol_type & protocol,
- const native_type & native_socket,
- boost::system::error_code & ec);
+ void ``[link boost_asio.reference.basic_socket_acceptor.bind.overload1 bind]``(
+ const endpoint_type & endpoint);
 
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.bind.overload2 bind]``(
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
 
-[section:overload1 basic_socket_streambuf::assign (1 of 2 overloads)]
 
+[section:overload1 basic_socket_acceptor::bind (1 of 2 overloads)]
 
-['Inherited from basic_socket.]
+Bind the acceptor to the given local endpoint.
 
-Assign an existing native socket to the socket.
+ void bind(
+ const endpoint_type & endpoint);
 
- void assign(
- const protocol_type & protocol,
- const native_type & native_socket);
 
+This function binds the socket acceptor to the specified endpoint on the local machine.
 
 
-[endsect]
+[heading Parameters]
+
 
+[variablelist
+
+[[endpoint][An endpoint on the local machine to which the socket acceptor will be bound.]]
 
+]
 
-[section:overload2 basic_socket_streambuf::assign (2 of 2 overloads)]
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
-['Inherited from basic_socket.]
+]
 
-Assign an existing native socket to the socket.
+[heading Example]
+
 
- boost::system::error_code assign(
- const protocol_type & protocol,
- const native_type & native_socket,
- boost::system::error_code & ec);
 
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ acceptor.open(boost::asio::ip::tcp::v4());
+ acceptor.bind(boost::asio::ip::tcp::endpoint(12345));
 
 
-[endsect]
 
 
-[endsect]
 
 
-[section:async_connect basic_socket_streambuf::async_connect]
+[endsect]
 
 
-['Inherited from basic_socket.]
 
-Start an asynchronous connect.
+[section:overload2 basic_socket_acceptor::bind (2 of 2 overloads)]
 
- void async_connect(
- const endpoint_type & peer_endpoint,
- ConnectHandler handler);
+Bind the acceptor to the given local endpoint.
 
+ boost::system::error_code bind(
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
 
-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 returned to the closed state.
+This function binds the socket acceptor to the specified endpoint on the local machine.
 
 
 [heading Parameters]
@@ -17052,16 +17239,9 @@
 
 [variablelist
   
-[[peer_endpoint][The remote endpoint to which the socket will be connected. Copies will be made of the endpoint object as required.]]
-
-[[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:
-``
- void handler(
- const boost::system::error_code& error // Result of operation
- );
+[[endpoint][An endpoint on the local machine to which the socket acceptor will be bound.]]
 
-``
-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().]]
+[[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
@@ -17069,64 +17249,62 @@
   
 
 
- void connect_handler(const boost::system::error_code& error)
+ 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)
    {
- if (!error)
- {
- // Connect succeeded.
- }
+ // An error occurred.
    }
 
- ...
 
- 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);
 
 
 
 
+[endsect]
 
 
 [endsect]
 
 
-[section:at_mark basic_socket_streambuf::at_mark]
+[section:broadcast basic_socket_acceptor::broadcast]
 
-Determine whether the socket is at the out-of-band data mark.
 
- bool ``[link boost_asio.reference.basic_socket_streambuf.at_mark.overload1 at_mark]``() const;
+['Inherited from socket_base.]
 
- bool ``[link boost_asio.reference.basic_socket_streambuf.at_mark.overload2 at_mark]``(
- boost::system::error_code & ec) const;
+[indexterm2 broadcast..basic_socket_acceptor] Socket option to permit sending of broadcast messages.
 
+ typedef implementation_defined broadcast;
 
-[section:overload1 basic_socket_streambuf::at_mark (1 of 2 overloads)]
 
 
-['Inherited from basic_socket.]
+Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
 
-Determine whether the socket is at the out-of-band data mark.
 
- bool at_mark() const;
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::broadcast option(true);
+ socket.set_option(option);
 
 
-This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
 
 
-[heading Return Value]
-
-A bool indicating whether the socket is at the out-of-band data mark.
+Getting the current option value:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::broadcast option;
+ socket.get_option(option);
+ bool is_set = option.value();
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
 
 
 
@@ -17134,66 +17312,57 @@
 
 
 
-[section:overload2 basic_socket_streambuf::at_mark (2 of 2 overloads)]
+[section:bytes_readable basic_socket_acceptor::bytes_readable]
 
 
-['Inherited from basic_socket.]
+['Inherited from socket_base.]
 
-Determine whether the socket is at the out-of-band data mark.
+[indexterm2 bytes_readable..basic_socket_acceptor] IO control command to get the amount of data that can be read without blocking.
 
- bool at_mark(
- boost::system::error_code & ec) const;
+ typedef implementation_defined bytes_readable;
 
 
-This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
 
+Implements the FIONREAD IO control command.
 
-[heading Parameters]
-
 
-[variablelist
+[heading Example]
   
-[[ec][Set to indicate what error occurred, if any.]]
-
-]
 
-[heading Return Value]
-
-A bool indicating whether the socket is at the out-of-band data mark.
 
+ 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();
 
 
-[endsect]
 
 
-[endsect]
 
-[section:available basic_socket_streambuf::available]
 
-Determine the number of bytes available for reading.
+[endsect]
 
- std::size_t ``[link boost_asio.reference.basic_socket_streambuf.available.overload1 available]``() const;
 
- std::size_t ``[link boost_asio.reference.basic_socket_streambuf.available.overload2 available]``(
- boost::system::error_code & ec) const;
+[section:cancel basic_socket_acceptor::cancel]
 
+[indexterm2 cancel..basic_socket_acceptor] Cancel all asynchronous operations associated with the acceptor.
 
-[section:overload1 basic_socket_streambuf::available (1 of 2 overloads)]
+ void ``[link boost_asio.reference.basic_socket_acceptor.cancel.overload1 cancel]``();
 
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.cancel.overload2 cancel]``(
+ boost::system::error_code & ec);
 
-['Inherited from basic_socket.]
 
-Determine the number of bytes available for reading.
+[section:overload1 basic_socket_acceptor::cancel (1 of 2 overloads)]
 
- std::size_t available() const;
+Cancel all asynchronous operations associated with the acceptor.
 
+ void cancel();
 
-This function is used to determine the number of bytes that may be read without blocking.
 
+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.
 
-[heading Return Value]
-
-The number of bytes that may be read without blocking, or 0 if an error occurs.
 
 [heading Exceptions]
     
@@ -17210,18 +17379,15 @@
 
 
 
-[section:overload2 basic_socket_streambuf::available (2 of 2 overloads)]
-
-
-['Inherited from basic_socket.]
+[section:overload2 basic_socket_acceptor::cancel (2 of 2 overloads)]
 
-Determine the number of bytes available for reading.
+Cancel all asynchronous operations associated with the acceptor.
 
- std::size_t available(
- boost::system::error_code & ec) const;
+ boost::system::error_code cancel(
+ boost::system::error_code & ec);
 
 
-This function is used to determine the number of bytes that may be read without blocking.
+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.
 
 
 [heading Parameters]
@@ -17229,108 +17395,65 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any.]]
+[[ec][Set to indicate what error occurred, if any. ]]
 
 ]
 
-[heading Return Value]
-
-The number of bytes that may be read without blocking, or 0 if an error occurs.
-
-
-
-[endsect]
 
 
 [endsect]
 
 
-[section:basic_socket_streambuf basic_socket_streambuf::basic_socket_streambuf]
-
-Construct a basic_socket_streambuf without establishing a connection.
-
- basic_socket_streambuf();
-
-
-
 [endsect]
 
+[section:close basic_socket_acceptor::close]
 
-[section:bind basic_socket_streambuf::bind]
-
-Bind the socket to the given local endpoint.
+[indexterm2 close..basic_socket_acceptor] Close the acceptor.
 
- void ``[link boost_asio.reference.basic_socket_streambuf.bind.overload1 bind]``(
- const endpoint_type & endpoint);
+ void ``[link boost_asio.reference.basic_socket_acceptor.close.overload1 close]``();
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.bind.overload2 bind]``(
- const endpoint_type & endpoint,
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.close.overload2 close]``(
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket_streambuf::bind (1 of 2 overloads)]
-
-
-['Inherited from basic_socket.]
-
-Bind the socket to the given local endpoint.
-
- void bind(
- const endpoint_type & endpoint);
+[section:overload1 basic_socket_acceptor::close (1 of 2 overloads)]
 
+Close the acceptor.
 
-This function binds the socket to the specified endpoint on the local machine.
+ void close();
 
 
-[heading Parameters]
-
+This function is used to close the acceptor. Any asynchronous accept operations will be cancelled immediately.
 
-[variablelist
-
-[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
+A subsequent call to open() is required before the acceptor can again be used to again perform socket accept operations.
 
-]
 
 [heading Exceptions]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure.]]
+[[boost::system::system_error][Thrown on failure. ]]
 
 ]
 
-[heading Example]
-
-
-
- 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));
-
-
-
-
 
 
 [endsect]
 
 
 
-[section:overload2 basic_socket_streambuf::bind (2 of 2 overloads)]
-
-
-['Inherited from basic_socket.]
+[section:overload2 basic_socket_acceptor::close (2 of 2 overloads)]
 
-Bind the socket to the given local endpoint.
+Close the acceptor.
 
- boost::system::error_code bind(
- const endpoint_type & endpoint,
+ boost::system::error_code close(
       boost::system::error_code & ec);
 
 
-This function binds the socket to the specified endpoint on the local machine.
+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.
 
 
 [heading Parameters]
@@ -17338,8 +17461,6 @@
 
 [variablelist
   
-[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
-
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
@@ -17348,11 +17469,10 @@
   
 
 
- boost::asio::ip::tcp::socket socket(io_service);
- socket.open(boost::asio::ip::tcp::v4());
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
    boost::system::error_code ec;
- socket.bind(boost::asio::ip::tcp::endpoint(
- boost::asio::ip::tcp::v4(), 12345), ec);
+ acceptor.close(ec);
    if (ec)
    {
      // An error occurred.
@@ -17369,27 +17489,27 @@
 [endsect]
 
 
-[section:broadcast basic_socket_streambuf::broadcast]
+[section:debug basic_socket_acceptor::debug]
 
 
 ['Inherited from socket_base.]
 
-Socket option to permit sending of broadcast messages.
+[indexterm2 debug..basic_socket_acceptor] Socket option to enable socket-level debugging.
 
- typedef implementation_defined broadcast;
+ typedef implementation_defined debug;
 
 
 
-Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
+Implements the SOL\_SOCKET/SO\_DEBUG socket option.
 
 
 [heading Examples]
   
 Setting the option:
 
- boost::asio::ip::udp::socket socket(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::broadcast option(true);
+ boost::asio::socket_base::debug option(true);
    socket.set_option(option);
 
 
@@ -17397,9 +17517,9 @@
 
 Getting the current option value:
 
- boost::asio::ip::udp::socket socket(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::broadcast option;
+ boost::asio::socket_base::debug option;
    socket.get_option(option);
    bool is_set = option.value();
 
@@ -17412,178 +17532,205 @@
 
 
 
-[section:bytes_readable basic_socket_streambuf::bytes_readable]
+[section:do_not_route basic_socket_acceptor::do_not_route]
 
 
 ['Inherited from socket_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[indexterm2 do_not_route..basic_socket_acceptor] Socket option to prevent routing, use local interfaces only.
 
- typedef implementation_defined bytes_readable;
+ typedef implementation_defined do_not_route;
 
 
 
-Implements the FIONREAD IO control command.
+Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
 
 
-[heading Example]
+[heading Examples]
   
+Setting the option:
 
-
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::udp::socket socket(io_service);
    ...
- boost::asio::socket_base::bytes_readable command(true);
- socket.io_control(command);
- std::size_t bytes_readable = command.get();
+ boost::asio::socket_base::do_not_route option(true);
+ socket.set_option(option);
 
 
 
 
+Getting the current option value:
 
+ 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();
 
-[endsect]
 
 
-[section:cancel basic_socket_streambuf::cancel]
 
-Cancel all asynchronous operations associated with the socket.
 
- void ``[link boost_asio.reference.basic_socket_streambuf.cancel.overload1 cancel]``();
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.cancel.overload2 cancel]``(
- boost::system::error_code & ec);
+[endsect]
 
 
-[section:overload1 basic_socket_streambuf::cancel (1 of 2 overloads)]
 
+[section:enable_connection_aborted basic_socket_acceptor::enable_connection_aborted]
 
-['Inherited from basic_socket.]
 
-Cancel all asynchronous operations associated with the socket.
+['Inherited from socket_base.]
 
- void cancel();
+[indexterm2 enable_connection_aborted..basic_socket_acceptor] Socket option to report aborted connections on accept.
+
+ typedef implementation_defined enable_connection_aborted;
 
 
-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.
 
+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.
 
-[heading Exceptions]
-
 
-[variablelist
+[heading Examples]
   
-[[boost::system::system_error][Thrown on failure.]]
+Setting the option:
 
-]
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::enable_connection_aborted option(true);
+ acceptor.set_option(option);
 
-[heading Remarks]
-
-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:
 
-* It will only cancel asynchronous operations that were initiated in the current thread.
 
-* 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:
+Getting the current option value:
+
+ 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();
 
 
-* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
 
-* 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.
 
 
 [endsect]
 
 
 
-[section:overload2 basic_socket_streambuf::cancel (2 of 2 overloads)]
+[section:endpoint_type basic_socket_acceptor::endpoint_type]
 
+[indexterm2 endpoint_type..basic_socket_acceptor] The endpoint type.
 
-['Inherited from basic_socket.]
+ typedef Protocol::endpoint endpoint_type;
 
-Cancel all asynchronous operations associated with the socket.
 
- boost::system::error_code cancel(
- boost::system::error_code & ec);
 
 
-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.
+[endsect]
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
+[section:get_io_service basic_socket_acceptor::get_io_service]
 
-]
 
-[heading Remarks]
-
-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:
+['Inherited from basic_io_object.]
 
-* It will only cancel asynchronous operations that were initiated in the current thread.
+[indexterm2 get_io_service..basic_socket_acceptor] Get the io_service associated with the object.
 
-* 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.
+ boost::asio::io_service & get_io_service();
 
-For portable cancellation, consider using one of the following alternatives:
 
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
-* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
 
-* Use the close() function to simultaneously cancel the outstanding operations and close the socket.
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
-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.
 
 
 [endsect]
 
 
-[endsect]
-
-[section:close basic_socket_streambuf::close]
+[section:get_option basic_socket_acceptor::get_option]
 
-Close the connection.
+[indexterm2 get_option..basic_socket_acceptor] Get an option from the acceptor.
 
- basic_socket_streambuf< Protocol, StreamSocketService > * ``[link boost_asio.reference.basic_socket_streambuf.close.overload1 close]``();
+ template<
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ void ``[link boost_asio.reference.basic_socket_acceptor.get_option.overload1 get_option]``(
+ GettableSocketOption & option);
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.close.overload2 close]``(
+ template<
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.get_option.overload2 get_option]``(
+ GettableSocketOption & option,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket_streambuf::close (1 of 2 overloads)]
+[section:overload1 basic_socket_acceptor::get_option (1 of 2 overloads)]
 
-Close the connection.
+Get an option from the acceptor.
 
- basic_socket_streambuf< Protocol, StreamSocketService > * close();
+ template<
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ void get_option(
+ GettableSocketOption & option);
 
 
+This function is used to get the current value of an option on the acceptor.
 
-[heading Return Value]
-
-this if a connection was successfully established, a null pointer otherwise.
 
+[heading Parameters]
+
+
+[variablelist
+
+[[option][The option value to be obtained from the acceptor.]]
 
+]
 
-[endsect]
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
-[section:overload2 basic_socket_streambuf::close (2 of 2 overloads)]
+[heading Example]
+
+Getting the value of the SOL\_SOCKET/SO\_REUSEADDR option:
 
+ 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();
 
-['Inherited from basic_socket.]
 
-Close the socket.
 
- boost::system::error_code close(
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_socket_acceptor::get_option (2 of 2 overloads)]
+
+Get an option from the acceptor.
+
+ template<
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ boost::system::error_code get_option(
+ GettableSocketOption & option,
       boost::system::error_code & ec);
 
 
-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.
+This function is used to get the current value of an option on the acceptor.
 
 
 [heading Parameters]
@@ -17591,30 +17738,30 @@
 
 [variablelist
   
+[[option][The option value to be obtained from the acceptor.]]
+
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
 [heading Example]
   
+Getting the value of the SOL\_SOCKET/SO\_REUSEADDR option:
 
-
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
    ...
+ boost::asio::ip::tcp::acceptor::reuse_address option;
    boost::system::error_code ec;
- socket.close(ec);
+ acceptor.get_option(option, ec);
    if (ec)
    {
      // An error occurred.
    }
+ bool is_set = option.get();
 
 
 
 
-[heading Remarks]
-
-For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
-
 
 
 [endsect]
@@ -17622,41 +17769,15 @@
 
 [endsect]
 
-[section:connect basic_socket_streambuf::connect]
-
-Establish a connection.
-
- basic_socket_streambuf< Protocol, StreamSocketService > * ``[link boost_asio.reference.basic_socket_streambuf.connect.overload1 connect]``(
- const endpoint_type & endpoint);
-
- template<
- typename T1,
- ... ,
- typename TN>
- basic_socket_streambuf< Protocol, StreamSocketService > * ``[link boost_asio.reference.basic_socket_streambuf.connect.overload2 connect]``(
- T1 t1,
- ... ,
- TN tn);
-
- boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.connect.overload3 connect]``(
- const endpoint_type & peer_endpoint,
- boost::system::error_code & ec);
-
-
-[section:overload1 basic_socket_streambuf::connect (1 of 3 overloads)]
-
-Establish a connection.
 
- basic_socket_streambuf< Protocol, StreamSocketService > * connect(
- const endpoint_type & endpoint);
+[section:implementation basic_socket_acceptor::implementation]
 
 
-This function establishes a connection to the specified endpoint.
+['Inherited from basic_io_object.]
 
+[indexterm2 implementation..basic_socket_acceptor] The underlying implementation of the I/O object.
 
-[heading Return Value]
-
-this if a connection was successfully established, a null pointer otherwise.
+ implementation_type implementation;
 
 
 
@@ -17664,26 +17785,15 @@
 
 
 
-[section:overload2 basic_socket_streambuf::connect (2 of 3 overloads)]
-
-Establish a connection.
+[section:implementation_type basic_socket_acceptor::implementation_type]
 
- template<
- typename T1,
- ... ,
- typename TN>
- basic_socket_streambuf< Protocol, StreamSocketService > * connect(
- T1 t1,
- ... ,
- TN tn);
 
+['Inherited from basic_io_object.]
 
-This function automatically establishes a connection based on the supplied resolver query parameters. The arguments are used to construct a resolver query object.
+[indexterm2 implementation_type..basic_socket_acceptor] The underlying implementation type of I/O object.
 
+ typedef service_type::implementation_type implementation_type;
 
-[heading Return Value]
-
-this if a connection was successfully established, a null pointer otherwise.
 
 
 
@@ -17691,71 +17801,53 @@
 
 
 
-[section:overload3 basic_socket_streambuf::connect (3 of 3 overloads)]
-
-
-['Inherited from basic_socket.]
+[section:io_service basic_socket_acceptor::io_service]
 
-Connect the socket to the specified endpoint.
 
- boost::system::error_code connect(
- const endpoint_type & peer_endpoint,
- boost::system::error_code & ec);
+['Inherited from basic_io_object.]
 
+[indexterm2 io_service..basic_socket_acceptor] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
-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.
+ boost::asio::io_service & io_service();
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
 
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
-[heading Parameters]
-
 
-[variablelist
-
-[[peer_endpoint][The remote endpoint to which the socket will be connected.]]
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
 
-[heading Example]
-
+[endsect]
 
 
- 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.
- }
 
+[section:is_open basic_socket_acceptor::is_open]
 
+[indexterm2 is_open..basic_socket_acceptor] Determine whether the acceptor is open.
 
+ bool is_open() const;
 
 
 
 [endsect]
 
 
-[endsect]
-
 
-[section:debug basic_socket_streambuf::debug]
+[section:keep_alive basic_socket_acceptor::keep_alive]
 
 
 ['Inherited from socket_base.]
 
-Socket option to enable socket-level debugging.
+[indexterm2 keep_alive..basic_socket_acceptor] Socket option to send keep-alives.
 
- typedef implementation_defined debug;
+ typedef implementation_defined keep_alive;
 
 
 
-Implements the SOL\_SOCKET/SO\_DEBUG socket option.
+Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
 
 
 [heading Examples]
@@ -17764,7 +17856,7 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::debug option(true);
+ boost::asio::socket_base::keep_alive option(true);
    socket.set_option(option);
 
 
@@ -17774,7 +17866,7 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::debug option;
+ boost::asio::socket_base::keep_alive option;
    socket.get_option(option);
    bool is_set = option.value();
 
@@ -17787,27 +17879,27 @@
 
 
 
-[section:do_not_route basic_socket_streambuf::do_not_route]
+[section:linger basic_socket_acceptor::linger]
 
 
 ['Inherited from socket_base.]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 linger..basic_socket_acceptor] Socket option to specify whether the socket lingers on close if unsent data is present.
 
- typedef implementation_defined do_not_route;
+ typedef implementation_defined linger;
 
 
 
-Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
+Implements the SOL\_SOCKET/SO\_LINGER socket option.
 
 
 [heading Examples]
   
 Setting the option:
 
- boost::asio::ip::udp::socket socket(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::do_not_route option(true);
+ boost::asio::socket_base::linger option(true, 30);
    socket.set_option(option);
 
 
@@ -17815,11 +17907,12 @@
 
 Getting the current option value:
 
- boost::asio::ip::udp::socket socket(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::do_not_route option;
+ boost::asio::socket_base::linger option;
    socket.get_option(option);
- bool is_set = option.value();
+ bool is_set = option.enabled();
+ unsigned short timeout = option.timeout();
 
 
 
@@ -17829,43 +17922,46 @@
 [endsect]
 
 
+[section:listen basic_socket_acceptor::listen]
 
-[section:enable_connection_aborted basic_socket_streambuf::enable_connection_aborted]
-
-
-['Inherited from socket_base.]
-
-Socket option to report aborted connections on accept.
+[indexterm2 listen..basic_socket_acceptor] Place the acceptor into the state where it will listen for new connections.
 
- typedef implementation_defined enable_connection_aborted;
+ void ``[link boost_asio.reference.basic_socket_acceptor.listen.overload1 listen]``(
+ int backlog = socket_base::max_connections);
 
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.listen.overload2 listen]``(
+ int backlog,
+ boost::system::error_code & ec);
 
 
-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.
+[section:overload1 basic_socket_acceptor::listen (1 of 2 overloads)]
 
+Place the acceptor into the state where it will listen for new connections.
 
-[heading Examples]
-
-Setting the option:
+ void listen(
+ int backlog = socket_base::max_connections);
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::enable_connection_aborted option(true);
- acceptor.set_option(option);
 
+This function puts the socket acceptor into the state where it may accept new connections.
 
 
+[heading Parameters]
+
 
-Getting the current option value:
+[variablelist
+
+[[backlog][The maximum length of the queue of pending connections.]]
 
- 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();
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -17873,75 +17969,75 @@
 
 
 
-[section:endpoint_type basic_socket_streambuf::endpoint_type]
-
-The endpoint type.
-
- typedef Protocol::endpoint endpoint_type;
-
+[section:overload2 basic_socket_acceptor::listen (2 of 2 overloads)]
 
+Place the acceptor into the state where it will listen for new connections.
 
+ boost::system::error_code listen(
+ int backlog,
+ boost::system::error_code & ec);
 
-[endsect]
 
+This function puts the socket acceptor into the state where it may accept new connections.
 
 
-[section:get_io_service basic_socket_streambuf::get_io_service]
+[heading Parameters]
+
 
+[variablelist
+
+[[backlog][The maximum length of the queue of pending connections.]]
 
-['Inherited from basic_io_object.]
+[[ec][Set to indicate what error occurred, if any.]]
 
-Get the io_service associated with the object.
+]
 
- boost::asio::io_service & get_io_service();
+[heading Example]
+
 
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
-
-
-[heading Return Value]
-
-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::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.
+ }
 
 
 
-[endsect]
 
 
-[section:get_option basic_socket_streambuf::get_option]
 
-Get an option from the socket.
+[endsect]
 
- void ``[link boost_asio.reference.basic_socket_streambuf.get_option.overload1 get_option]``(
- GettableSocketOption & option) const;
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.get_option.overload2 get_option]``(
- GettableSocketOption & option,
- boost::system::error_code & ec) const;
+[endsect]
 
+[section:local_endpoint basic_socket_acceptor::local_endpoint]
 
-[section:overload1 basic_socket_streambuf::get_option (1 of 2 overloads)]
+[indexterm2 local_endpoint..basic_socket_acceptor] Get the local endpoint of the acceptor.
 
+ endpoint_type ``[link boost_asio.reference.basic_socket_acceptor.local_endpoint.overload1 local_endpoint]``() const;
 
-['Inherited from basic_socket.]
+ endpoint_type ``[link boost_asio.reference.basic_socket_acceptor.local_endpoint.overload2 local_endpoint]``(
+ boost::system::error_code & ec) const;
 
-Get an option from the socket.
 
- void get_option(
- GettableSocketOption & option) const;
+[section:overload1 basic_socket_acceptor::local_endpoint (1 of 2 overloads)]
 
+Get the local endpoint of the acceptor.
 
-This function is used to get the current value of an option on the socket.
+ endpoint_type local_endpoint() const;
 
 
-[heading Parameters]
-
+This function is used to obtain the locally bound endpoint of the acceptor.
 
-[variablelist
-
-[[option][The option value to be obtained from the socket.]]
 
-]
+[heading Return Value]
+
+An object that represents the local endpoint of the acceptor.
 
 [heading Exceptions]
     
@@ -17954,13 +18050,11 @@
 
 [heading Example]
   
-Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
 
- boost::asio::ip::tcp::socket socket(io_service);
+
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
    ...
- boost::asio::ip::tcp::socket::keep_alive option;
- socket.get_option(option);
- bool is_set = option.get();
+ boost::asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint();
 
 
 
@@ -17971,19 +18065,15 @@
 
 
 
-[section:overload2 basic_socket_streambuf::get_option (2 of 2 overloads)]
-
-
-['Inherited from basic_socket.]
+[section:overload2 basic_socket_acceptor::local_endpoint (2 of 2 overloads)]
 
-Get an option from the socket.
+Get the local endpoint of the acceptor.
 
- boost::system::error_code get_option(
- GettableSocketOption & option,
+ endpoint_type local_endpoint(
       boost::system::error_code & ec) const;
 
 
-This function is used to get the current value of an option on the socket.
+This function is used to obtain the locally bound endpoint of the acceptor.
 
 
 [heading Parameters]
@@ -17991,26 +18081,26 @@
 
 [variablelist
   
-[[option][The option value to be obtained from the socket.]]
-
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
+[heading Return Value]
+
+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.
+
 [heading Example]
   
-Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
 
- boost::asio::ip::tcp::socket socket(io_service);
+
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
    ...
- boost::asio::ip::tcp::socket::keep_alive option;
    boost::system::error_code ec;
- socket.get_option(option, ec);
+ boost::asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint(ec);
    if (ec)
    {
      // An error occurred.
    }
- bool is_set = option.get();
 
 
 
@@ -18023,14 +18113,14 @@
 [endsect]
 
 
-[section:implementation basic_socket_streambuf::implementation]
+[section:max_connections basic_socket_acceptor::max_connections]
 
 
-['Inherited from basic_io_object.]
+['Inherited from socket_base.]
 
-The underlying implementation of the I/O object.
+[indexterm2 max_connections..basic_socket_acceptor] The maximum length of the queue of pending incoming connections.
 
- implementation_type implementation;
+ static const int max_connections = implementation_defined;
 
 
 
@@ -18038,14 +18128,29 @@
 
 
 
-[section:implementation_type basic_socket_streambuf::implementation_type]
+[section:message_do_not_route basic_socket_acceptor::message_do_not_route]
 
 
-['Inherited from basic_io_object.]
+['Inherited from socket_base.]
 
-The underlying implementation type of I/O object.
+[indexterm2 message_do_not_route..basic_socket_acceptor] Specify that the data should not be subject to routing.
 
- typedef service_type::implementation_type implementation_type;
+ static const int message_do_not_route = implementation_defined;
+
+
+
+[endsect]
+
+
+
+[section:message_flags basic_socket_acceptor::message_flags]
+
+
+['Inherited from socket_base.]
+
+[indexterm2 message_flags..basic_socket_acceptor] Bitmask type for flags that can be passed to send and receive operations.
+
+ typedef int message_flags;
 
 
 
@@ -18053,30 +18158,116 @@
 [endsect]
 
 
-[section:io_control basic_socket_streambuf::io_control]
 
-Perform an IO control command on the socket.
+[section:message_out_of_band basic_socket_acceptor::message_out_of_band]
 
- void ``[link boost_asio.reference.basic_socket_streambuf.io_control.overload1 io_control]``(
- IoControlCommand & command);
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.io_control.overload2 io_control]``(
- IoControlCommand & command,
- boost::system::error_code & ec);
+['Inherited from socket_base.]
 
+[indexterm2 message_out_of_band..basic_socket_acceptor] Process out-of-band data.
 
-[section:overload1 basic_socket_streambuf::io_control (1 of 2 overloads)]
+ static const int message_out_of_band = implementation_defined;
 
 
-['Inherited from basic_socket.]
 
-Perform an IO control command on the socket.
+[endsect]
 
- void io_control(
- IoControlCommand & command);
 
 
-This function is used to execute an IO control command on the socket.
+[section:message_peek basic_socket_acceptor::message_peek]
+
+
+['Inherited from socket_base.]
+
+[indexterm2 message_peek..basic_socket_acceptor] Peek at incoming data without removing it from the input queue.
+
+ static const int message_peek = implementation_defined;
+
+
+
+[endsect]
+
+
+
+[section:native basic_socket_acceptor::native]
+
+[indexterm2 native..basic_socket_acceptor] Get the native acceptor representation.
+
+ native_type native();
+
+
+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.
+
+
+[endsect]
+
+
+
+[section:native_type basic_socket_acceptor::native_type]
+
+[indexterm2 native_type..basic_socket_acceptor] The native representation of an acceptor.
+
+ typedef SocketAcceptorService::native_type native_type;
+
+
+
+
+[endsect]
+
+
+
+[section:non_blocking_io basic_socket_acceptor::non_blocking_io]
+
+
+['Inherited from socket_base.]
+
+[indexterm2 non_blocking_io..basic_socket_acceptor] IO control command to set the blocking mode of the socket.
+
+ typedef implementation_defined non_blocking_io;
+
+
+
+Implements the FIONBIO IO control command.
+
+
+[heading Example]
+
+
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::non_blocking_io command(true);
+ socket.io_control(command);
+
+
+
+
+
+
+[endsect]
+
+
+[section:open basic_socket_acceptor::open]
+
+[indexterm2 open..basic_socket_acceptor] Open the acceptor using the specified protocol.
+
+ void ``[link boost_asio.reference.basic_socket_acceptor.open.overload1 open]``(
+ const protocol_type & protocol = protocol_type());
+
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.open.overload2 open]``(
+ const protocol_type & protocol,
+ boost::system::error_code & ec);
+
+
+[section:overload1 basic_socket_acceptor::open (1 of 2 overloads)]
+
+Open the acceptor using the specified protocol.
+
+ void open(
+ const protocol_type & protocol = protocol_type());
+
+
+This function opens the socket acceptor so that it will use the specified protocol.
 
 
 [heading Parameters]
@@ -18084,7 +18275,7 @@
 
 [variablelist
   
-[[command][The IO control command to be performed on the socket.]]
+[[protocol][An object specifying which protocol is to be used.]]
 
 ]
 
@@ -18099,36 +18290,30 @@
 
 [heading Example]
   
-Getting the number of bytes ready to read:
-
- 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();
 
 
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ acceptor.open(boost::asio::ip::tcp::v4());
 
 
 
 
-[endsect]
 
 
+[endsect]
 
-[section:overload2 basic_socket_streambuf::io_control (2 of 2 overloads)]
 
 
-['Inherited from basic_socket.]
+[section:overload2 basic_socket_acceptor::open (2 of 2 overloads)]
 
-Perform an IO control command on the socket.
+Open the acceptor using the specified protocol.
 
- boost::system::error_code io_control(
- IoControlCommand & command,
+ boost::system::error_code open(
+ const protocol_type & protocol,
       boost::system::error_code & ec);
 
 
-This function is used to execute an IO control command on the socket.
+This function opens the socket acceptor so that it will use the specified protocol.
 
 
 [heading Parameters]
@@ -18136,7 +18321,7 @@
 
 [variablelist
   
-[[command][The IO control command to be performed on the socket.]]
+[[protocol][An object specifying which protocol is to be used.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -18144,18 +18329,15 @@
 
 [heading Example]
   
-Getting the number of bytes ready to read:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::ip::tcp::socket::bytes_readable command;
+
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
    boost::system::error_code ec;
- socket.io_control(command, ec);
+ acceptor.open(boost::asio::ip::tcp::v4(), ec);
    if (ec)
    {
      // An error occurred.
    }
- std::size_t bytes_readable = command.get();
 
 
 
@@ -18168,37 +18350,55 @@
 [endsect]
 
 
-[section:io_service basic_socket_streambuf::io_service]
+[section:protocol_type basic_socket_acceptor::protocol_type]
 
+[indexterm2 protocol_type..basic_socket_acceptor] The protocol type.
 
-['Inherited from basic_io_object.]
+ typedef Protocol protocol_type;
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
 
- boost::asio::io_service & io_service();
 
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+[endsect]
 
 
-[heading Return Value]
-
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
+[section:receive_buffer_size basic_socket_acceptor::receive_buffer_size]
 
 
-[endsect]
+['Inherited from socket_base.]
 
+[indexterm2 receive_buffer_size..basic_socket_acceptor] Socket option for the receive buffer size of a socket.
 
+ typedef implementation_defined receive_buffer_size;
 
-[section:is_open basic_socket_streambuf::is_open]
 
 
-['Inherited from basic_socket.]
+Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
+
+
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option(8192);
+ socket.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
+
 
-Determine whether the socket is open.
 
- bool is_open() const;
 
 
 
@@ -18206,18 +18406,18 @@
 
 
 
-[section:keep_alive basic_socket_streambuf::keep_alive]
+[section:receive_low_watermark basic_socket_acceptor::receive_low_watermark]
 
 
 ['Inherited from socket_base.]
 
-Socket option to send keep-alives.
+[indexterm2 receive_low_watermark..basic_socket_acceptor] Socket option for the receive low watermark.
 
- typedef implementation_defined keep_alive;
+ typedef implementation_defined receive_low_watermark;
 
 
 
-Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
+Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
 
 
 [heading Examples]
@@ -18226,7 +18426,7 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::keep_alive option(true);
+ boost::asio::socket_base::receive_low_watermark option(1024);
    socket.set_option(option);
 
 
@@ -18236,9 +18436,9 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::keep_alive option;
+ boost::asio::socket_base::receive_low_watermark option;
    socket.get_option(option);
- bool is_set = option.value();
+ int size = option.value();
 
 
 
@@ -18249,40 +18449,39 @@
 
 
 
-[section:linger basic_socket_streambuf::linger]
+[section:reuse_address basic_socket_acceptor::reuse_address]
 
 
 ['Inherited from socket_base.]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+[indexterm2 reuse_address..basic_socket_acceptor] Socket option to allow the socket to be bound to an address that is already in use.
 
- typedef implementation_defined linger;
+ typedef implementation_defined reuse_address;
 
 
 
-Implements the SOL\_SOCKET/SO\_LINGER socket option.
+Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
 
 
 [heading Examples]
   
 Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
    ...
- boost::asio::socket_base::linger option(true, 30);
- socket.set_option(option);
+ boost::asio::socket_base::reuse_address option(true);
+ acceptor.set_option(option);
 
 
 
 
 Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
    ...
- boost::asio::socket_base::linger option;
- socket.get_option(option);
- bool is_set = option.enabled();
- unsigned short timeout = option.timeout();
+ boost::asio::socket_base::reuse_address option;
+ acceptor.get_option(option);
+ bool is_set = option.value();
 
 
 
@@ -18292,49 +18491,40 @@
 [endsect]
 
 
-[section:local_endpoint basic_socket_streambuf::local_endpoint]
-
-Get the local endpoint of the socket.
-
- endpoint_type ``[link boost_asio.reference.basic_socket_streambuf.local_endpoint.overload1 local_endpoint]``() const;
-
- endpoint_type ``[link boost_asio.reference.basic_socket_streambuf.local_endpoint.overload2 local_endpoint]``(
- boost::system::error_code & ec) const;
 
+[section:send_buffer_size basic_socket_acceptor::send_buffer_size]
 
-[section:overload1 basic_socket_streambuf::local_endpoint (1 of 2 overloads)]
 
+['Inherited from socket_base.]
 
-['Inherited from basic_socket.]
+[indexterm2 send_buffer_size..basic_socket_acceptor] Socket option for the send buffer size of a socket.
 
-Get the local endpoint of the socket.
+ typedef implementation_defined send_buffer_size;
 
- endpoint_type local_endpoint() const;
 
 
-This function is used to obtain the locally bound endpoint of the socket.
+Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
 
 
-[heading Return Value]
-
-An object that represents the local endpoint of the socket.
+[heading Examples]
+
+Setting the option:
 
-[heading Exceptions]
-
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_buffer_size option(8192);
+ socket.set_option(option);
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
 
-[heading Example]
-
 
+Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
+ boost::asio::socket_base::send_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
 
 
 
@@ -18345,45 +18535,39 @@
 
 
 
-[section:overload2 basic_socket_streambuf::local_endpoint (2 of 2 overloads)]
+[section:send_low_watermark basic_socket_acceptor::send_low_watermark]
 
 
-['Inherited from basic_socket.]
+['Inherited from socket_base.]
 
-Get the local endpoint of the socket.
+[indexterm2 send_low_watermark..basic_socket_acceptor] Socket option for the send low watermark.
 
- endpoint_type local_endpoint(
- boost::system::error_code & ec) const;
+ typedef implementation_defined send_low_watermark;
 
 
-This function is used to obtain the locally bound endpoint of the socket.
 
+Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
 
-[heading Parameters]
-
 
-[variablelist
+[heading Examples]
   
-[[ec][Set to indicate what error occurred, if any.]]
+Setting the option:
 
-]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option(1024);
+ socket.set_option(option);
 
-[heading Return Value]
-
-An object that represents the local endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
 
-[heading Example]
-
 
 
- boost::asio::ip::tcp::socket socket(io_service);
+Getting the current option value:
+
+ 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.
- }
+ boost::asio::socket_base::send_low_watermark option;
+ socket.get_option(option);
+ int size = option.value();
 
 
 
@@ -18393,189 +18577,481 @@
 [endsect]
 
 
-[endsect]
 
+[section:service basic_socket_acceptor::service]
 
-[section:lowest_layer basic_socket_streambuf::lowest_layer]
 
+['Inherited from basic_io_object.]
 
-['Inherited from basic_socket.]
+[indexterm2 service..basic_socket_acceptor] The service associated with the I/O object.
 
-Get a reference to the lowest layer.
+ service_type & service;
 
- lowest_layer_type & 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.
+[endsect]
 
 
-[heading Return Value]
-
-A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
 
+[section:service_type basic_socket_acceptor::service_type]
 
 
-[endsect]
+['Inherited from basic_io_object.]
 
+[indexterm2 service_type..basic_socket_acceptor] The type of the service that will be used to provide I/O operations.
 
+ typedef SocketAcceptorService service_type;
 
-[section:lowest_layer_type basic_socket_streambuf::lowest_layer_type]
 
 
-['Inherited from basic_socket.]
 
-A basic_socket is always the lowest layer.
+[endsect]
 
- typedef basic_socket< Protocol, StreamSocketService > lowest_layer_type;
 
+[section:set_option basic_socket_acceptor::set_option]
 
-[heading Types]
-[table
- [[Name][Description]]
+[indexterm2 set_option..basic_socket_acceptor] Set an option on the acceptor.
 
- [
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ void ``[link boost_asio.reference.basic_socket_acceptor.set_option.overload1 set_option]``(
+ const SettableSocketOption & option);
 
- [[link boost_asio.reference.basic_socket.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_acceptor.set_option.overload2 set_option]``(
+ const SettableSocketOption & option,
+ boost::system::error_code & ec);
 
- [
 
- [[link boost_asio.reference.basic_socket.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
+[section:overload1 basic_socket_acceptor::set_option (1 of 2 overloads)]
 
- [
+Set an option on the acceptor.
 
- [[link boost_asio.reference.basic_socket.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ void set_option(
+ const SettableSocketOption & option);
 
- [
 
- [[link boost_asio.reference.basic_socket.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
+This function is used to set an option on the acceptor.
 
- [
 
- [[link boost_asio.reference.basic_socket.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[option][The new option value to be set on the acceptor.]]
 
- [
+]
 
- [[link boost_asio.reference.basic_socket.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
+[heading Exceptions]
+
+
+[variablelist
   
- ]
+[[boost::system::system_error][Thrown on failure.]]
 
- [
+]
 
- [[link boost_asio.reference.basic_socket.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
+[heading Example]
   
- ]
+Setting the SOL\_SOCKET/SO\_REUSEADDR option:
 
- [
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::ip::tcp::acceptor::reuse_address option(true);
+ acceptor.set_option(option);
 
- [[link boost_asio.reference.basic_socket.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket.lowest_layer_type [*lowest_layer_type]]]
- [A basic_socket is always the lowest layer. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.basic_socket.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
-
- ]
+
+
+[section:overload2 basic_socket_acceptor::set_option (2 of 2 overloads)]
+
+Set an option on the acceptor.
+
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ boost::system::error_code set_option(
+ const SettableSocketOption & option,
+ boost::system::error_code & ec);
+
+
+This function is used to set an option on the acceptor.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[option][The new option value to be set on the acceptor.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Example]
+
+Setting the SOL\_SOCKET/SO\_REUSEADDR option:
+
+ 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.
+ }
+
+
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:shutdown_type basic_socket_acceptor::shutdown_type]
+
+
+['Inherited from socket_base.]
+
+[indexterm2 shutdown_type..basic_socket_acceptor] Different ways a socket may be shutdown.
+
+ enum shutdown_type
+
+[heading Values]
+[variablelist
+
+ [
+ [shutdown_receive]
+ [Shutdown the receive side of the socket. ]
+ ]
 
   [
+ [shutdown_send]
+ [Shutdown the send side of the socket. ]
+ ]
 
- [[link boost_asio.reference.basic_socket.native_type [*native_type]]]
+ [
+ [shutdown_both]
+ [Shutdown both send and receive on the socket. ]
+ ]
+
+]
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:basic_socket_iostream basic_socket_iostream]
+
+Iostream interface for a socket.
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.StreamSocketService StreamSocketService]`` = stream_socket_service<Protocol>>
+ class basic_socket_iostream
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream [*basic_socket_iostream]]]
+ [Construct a basic_socket_iostream without establishing a connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.close [*close]]]
+ [Close the connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.connect [*connect]]]
+ [Establish a connection to an endpoint corresponding to a resolver query. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.rdbuf [*rdbuf]]]
+ [Return a pointer to the underlying streambuf. ]
+ ]
+
+]
+
+[section:basic_socket_iostream basic_socket_iostream::basic_socket_iostream]
+
+[indexterm2 basic_socket_iostream..basic_socket_iostream] Construct a basic_socket_iostream without establishing a connection.
+
+ ``[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream.overload1 basic_socket_iostream]``();
+
+ template<
+ typename T1,
+ ... ,
+ typename TN>
+ ``[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream.overload2 basic_socket_iostream]``(
+ T1 t1,
+ ... ,
+ TN tn);
+
+
+[section:overload1 basic_socket_iostream::basic_socket_iostream (1 of 2 overloads)]
+
+Construct a basic_socket_iostream without establishing a connection.
+
+ basic_socket_iostream();
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_socket_iostream::basic_socket_iostream (2 of 2 overloads)]
+
+Establish a connection to an endpoint corresponding to a resolver query.
+
+ template<
+ typename T1,
+ ... ,
+ typename TN>
+ basic_socket_iostream(
+ T1 t1,
+ ... ,
+ TN tn);
+
+
+This constructor automatically establishes a connection based on the supplied resolver query parameters. The arguments are used to construct a resolver query object.
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:close basic_socket_iostream::close]
+
+[indexterm2 close..basic_socket_iostream] Close the connection.
+
+ void close();
+
+
+
+[endsect]
+
+
+
+[section:connect basic_socket_iostream::connect]
+
+[indexterm2 connect..basic_socket_iostream] Establish a connection to an endpoint corresponding to a resolver query.
+
+ template<
+ typename T1,
+ ... ,
+ typename TN>
+ void connect(
+ T1 t1,
+ ... ,
+ TN tn);
+
+
+This function automatically establishes a connection based on the supplied resolver query parameters. The arguments are used to construct a resolver query object.
+
+
+[endsect]
+
+
+
+[section:rdbuf basic_socket_iostream::rdbuf]
+
+[indexterm2 rdbuf..basic_socket_iostream] Return a pointer to the underlying streambuf.
+
+ basic_socket_streambuf< Protocol, StreamSocketService > * rdbuf() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:basic_socket_streambuf basic_socket_streambuf]
+
+Iostream streambuf for a socket.
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.StreamSocketService StreamSocketService]`` = stream_socket_service<Protocol>>
+ class basic_socket_streambuf :
+ public basic_socket< Protocol, StreamSocketService >
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_streambuf.native_type [*native_type]]]
     [The native representation of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.non_blocking_io [*non_blocking_io]]]
+ [[link boost_asio.reference.basic_socket_streambuf.non_blocking_io [*non_blocking_io]]]
     [IO control command to set the blocking mode of the socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.protocol_type [*protocol_type]]]
+ [[link boost_asio.reference.basic_socket_streambuf.protocol_type [*protocol_type]]]
     [The protocol type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.receive_buffer_size [*receive_buffer_size]]]
+ [[link boost_asio.reference.basic_socket_streambuf.receive_buffer_size [*receive_buffer_size]]]
     [Socket option for the receive buffer size of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.receive_low_watermark [*receive_low_watermark]]]
+ [[link boost_asio.reference.basic_socket_streambuf.receive_low_watermark [*receive_low_watermark]]]
     [Socket option for the receive low watermark. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.reuse_address [*reuse_address]]]
+ [[link boost_asio.reference.basic_socket_streambuf.reuse_address [*reuse_address]]]
     [Socket option to allow the socket to be bound to an address that is already in use. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.send_buffer_size [*send_buffer_size]]]
+ [[link boost_asio.reference.basic_socket_streambuf.send_buffer_size [*send_buffer_size]]]
     [Socket option for the send buffer size of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.send_low_watermark [*send_low_watermark]]]
+ [[link boost_asio.reference.basic_socket_streambuf.send_low_watermark [*send_low_watermark]]]
     [Socket option for the send low watermark. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.service_type [*service_type]]]
+ [[link boost_asio.reference.basic_socket_streambuf.service_type [*service_type]]]
     [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket.shutdown_type [*shutdown_type]]]
+ [[link boost_asio.reference.basic_socket_streambuf.shutdown_type [*shutdown_type]]]
     [Different ways a socket may be shutdown. ]
   
   ]
@@ -18587,110 +19063,115 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_socket.assign [*assign]]]
+ [[link boost_asio.reference.basic_socket_streambuf.assign [*assign]]]
     [Assign an existing native socket to the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.async_connect [*async_connect]]]
+ [[link boost_asio.reference.basic_socket_streambuf.async_connect [*async_connect]]]
     [Start an asynchronous connect. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.at_mark [*at_mark]]]
+ [[link boost_asio.reference.basic_socket_streambuf.at_mark [*at_mark]]]
     [Determine whether the socket is at the out-of-band data mark. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.available [*available]]]
+ [[link boost_asio.reference.basic_socket_streambuf.available [*available]]]
     [Determine the number of bytes available for reading. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.basic_socket [*basic_socket]]]
- [Construct a basic_socket without opening it. ]
+ [[link boost_asio.reference.basic_socket_streambuf.basic_socket_streambuf [*basic_socket_streambuf]]]
+ [Construct a basic_socket_streambuf without establishing a connection. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.bind [*bind]]]
+ [[link boost_asio.reference.basic_socket_streambuf.bind [*bind]]]
     [Bind the socket to the given local endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.cancel [*cancel]]]
+ [[link boost_asio.reference.basic_socket_streambuf.cancel [*cancel]]]
     [Cancel all asynchronous operations associated with the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.close [*close]]]
- [Close the socket. ]
+ [[link boost_asio.reference.basic_socket_streambuf.close [*close]]]
+ [Close the connection. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.connect [*connect]]]
- [Connect the socket to the specified endpoint. ]
+ [[link boost_asio.reference.basic_socket_streambuf.connect [*connect]]]
+ [Establish a connection. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.get_io_service [*get_io_service]]]
+ [[link boost_asio.reference.basic_socket_streambuf.get_io_service [*get_io_service]]]
     [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.get_option [*get_option]]]
+ [[link boost_asio.reference.basic_socket_streambuf.get_option [*get_option]]]
     [Get an option from the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.io_control [*io_control]]]
+ [[link boost_asio.reference.basic_socket_streambuf.io_control [*io_control]]]
     [Perform an IO control command on the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.io_service [*io_service]]]
+ [[link boost_asio.reference.basic_socket_streambuf.io_service [*io_service]]]
     [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.is_open [*is_open]]]
+ [[link boost_asio.reference.basic_socket_streambuf.is_open [*is_open]]]
     [Determine whether the socket is open. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.local_endpoint [*local_endpoint]]]
+ [[link boost_asio.reference.basic_socket_streambuf.local_endpoint [*local_endpoint]]]
     [Get the local endpoint of the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.lowest_layer [*lowest_layer]]]
+ [[link boost_asio.reference.basic_socket_streambuf.lowest_layer [*lowest_layer]]]
     [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.native [*native]]]
+ [[link boost_asio.reference.basic_socket_streambuf.native [*native]]]
     [Get the native socket representation. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.open [*open]]]
+ [[link boost_asio.reference.basic_socket_streambuf.open [*open]]]
     [Open the socket using the specified protocol. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
+ [[link boost_asio.reference.basic_socket_streambuf.remote_endpoint [*remote_endpoint]]]
     [Get the remote endpoint of the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.set_option [*set_option]]]
+ [[link boost_asio.reference.basic_socket_streambuf.set_option [*set_option]]]
     [Set an option on the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_socket.shutdown [*shutdown]]]
+ [[link boost_asio.reference.basic_socket_streambuf.shutdown [*shutdown]]]
     [Disable sends or receives on the socket. ]
   ]
   
+ [
+ [[link boost_asio.reference.basic_socket_streambuf._basic_socket_streambuf [*~basic_socket_streambuf]]]
+ [Destructor flushes buffered data. ]
+ ]
+
 ]
 
 [heading Protected Member Functions]
@@ -18698,8 +19179,23 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
- [Protected destructor to prevent deletion through this type. ]
+ [[link boost_asio.reference.basic_socket_streambuf.overflow [*overflow]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_streambuf.setbuf [*setbuf]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_streambuf.sync [*sync]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_streambuf.underflow [*underflow]]]
+ []
   ]
   
 ]
@@ -18709,22 +19205,22 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_socket.max_connections [*max_connections]]]
+ [[link boost_asio.reference.basic_socket_streambuf.max_connections [*max_connections]]]
     [The maximum length of the queue of pending incoming connections. ]
   ]
 
   [
- [[link boost_asio.reference.basic_socket.message_do_not_route [*message_do_not_route]]]
+ [[link boost_asio.reference.basic_socket_streambuf.message_do_not_route [*message_do_not_route]]]
     [Specify that the data should not be subject to routing. ]
   ]
 
   [
- [[link boost_asio.reference.basic_socket.message_out_of_band [*message_out_of_band]]]
+ [[link boost_asio.reference.basic_socket_streambuf.message_out_of_band [*message_out_of_band]]]
     [Process out-of-band data. ]
   ]
 
   [
- [[link boost_asio.reference.basic_socket.message_peek [*message_peek]]]
+ [[link boost_asio.reference.basic_socket_streambuf.message_peek [*message_peek]]]
     [Peek at incoming data without removing it from the input queue. ]
   ]
 
@@ -18735,41 +19231,41 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
+ [[link boost_asio.reference.basic_socket_streambuf.implementation [*implementation]]]
     [The underlying implementation of the I/O object. ]
   ]
 
   [
- [[link boost_asio.reference.basic_socket.service [*service]]]
+ [[link boost_asio.reference.basic_socket_streambuf.service [*service]]]
     [The service associated with the I/O object. ]
   ]
 
 ]
 
-The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
-
-
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
-
-[*Shared] [*objects:] Unsafe.
-
-
+[section:assign basic_socket_streambuf::assign]
 
+[indexterm2 assign..basic_socket_streambuf] Assign an existing native socket to the socket.
 
-[endsect]
+ void ``[link boost_asio.reference.basic_socket_streambuf.assign.overload1 assign]``(
+ const protocol_type & protocol,
+ const native_type & native_socket);
 
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.assign.overload2 assign]``(
+ const protocol_type & protocol,
+ const native_type & native_socket,
+ boost::system::error_code & ec);
 
 
-[section:max_connections basic_socket_streambuf::max_connections]
+[section:overload1 basic_socket_streambuf::assign (1 of 2 overloads)]
 
 
-['Inherited from socket_base.]
+['Inherited from basic_socket.]
 
-The maximum length of the queue of pending incoming connections.
+Assign an existing native socket to the socket.
 
- static const int max_connections = implementation_defined;
+ void assign(
+ const protocol_type & protocol,
+ const native_type & native_socket);
 
 
 
@@ -18777,155 +19273,275 @@
 
 
 
-[section:message_do_not_route basic_socket_streambuf::message_do_not_route]
+[section:overload2 basic_socket_streambuf::assign (2 of 2 overloads)]
 
 
-['Inherited from socket_base.]
+['Inherited from basic_socket.]
 
-Specify that the data should not be subject to routing.
+Assign an existing native socket to the socket.
 
- static const int message_do_not_route = implementation_defined;
+ boost::system::error_code assign(
+ const protocol_type & protocol,
+ const native_type & native_socket,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:message_flags basic_socket_streambuf::message_flags]
 
+[section:async_connect basic_socket_streambuf::async_connect]
 
-['Inherited from socket_base.]
 
-Bitmask type for flags that can be passed to send and receive operations.
+['Inherited from basic_socket.]
 
- typedef int message_flags;
+[indexterm2 async_connect..basic_socket_streambuf] Start an asynchronous connect.
 
+ void async_connect(
+ const endpoint_type & peer_endpoint,
+ ConnectHandler handler);
 
 
+This function is used to asynchronously connect a socket to the specified remote endpoint. The function call always returns immediately.
 
-[endsect]
+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.
 
 
+[heading Parameters]
+
 
-[section:message_out_of_band basic_socket_streambuf::message_out_of_band]
+[variablelist
+
+[[peer_endpoint][The remote endpoint to which the socket will be connected. Copies will be made of the endpoint object as required.]]
 
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error // Result of operation
+ );
+``
+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().]]
 
-['Inherited from socket_base.]
+]
 
-Process out-of-band data.
+[heading Example]
+
 
- static const int message_out_of_band = implementation_defined;
 
+ void connect_handler(const boost::system::error_code& error)
+ {
+ if (!error)
+ {
+ // Connect succeeded.
+ }
+ }
 
+ ...
 
-[endsect]
+ 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);
 
 
 
-[section:message_peek basic_socket_streambuf::message_peek]
 
 
-['Inherited from socket_base.]
 
-Peek at incoming data without removing it from the input queue.
+[endsect]
 
- static const int message_peek = implementation_defined;
 
+[section:at_mark basic_socket_streambuf::at_mark]
 
+[indexterm2 at_mark..basic_socket_streambuf] Determine whether the socket is at the out-of-band data mark.
 
-[endsect]
+ bool ``[link boost_asio.reference.basic_socket_streambuf.at_mark.overload1 at_mark]``() const;
 
+ bool ``[link boost_asio.reference.basic_socket_streambuf.at_mark.overload2 at_mark]``(
+ boost::system::error_code & ec) const;
 
 
-[section:native basic_socket_streambuf::native]
+[section:overload1 basic_socket_streambuf::at_mark (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Get the native socket representation.
-
- native_type native();
-
+Determine whether the socket is at the out-of-band data mark.
 
-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.
+ bool at_mark() const;
 
 
-[endsect]
+This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
 
 
+[heading Return Value]
+
+A bool indicating whether the socket is at the out-of-band data mark.
 
-[section:native_type basic_socket_streambuf::native_type]
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_socket_streambuf::at_mark (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-The native representation of a socket.
+Determine whether the socket is at the out-of-band data mark.
 
- typedef StreamSocketService::native_type native_type;
+ bool at_mark(
+ boost::system::error_code & ec) const;
+
+
+This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
 
+[heading Return Value]
+
+A bool indicating whether the socket is at the out-of-band data mark.
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:non_blocking_io basic_socket_streambuf::non_blocking_io]
+[section:available basic_socket_streambuf::available]
 
+[indexterm2 available..basic_socket_streambuf] Determine the number of bytes available for reading.
 
-['Inherited from socket_base.]
+ std::size_t ``[link boost_asio.reference.basic_socket_streambuf.available.overload1 available]``() const;
 
-IO control command to set the blocking mode of the socket.
+ std::size_t ``[link boost_asio.reference.basic_socket_streambuf.available.overload2 available]``(
+ boost::system::error_code & ec) const;
 
- typedef implementation_defined non_blocking_io;
 
+[section:overload1 basic_socket_streambuf::available (1 of 2 overloads)]
 
 
-Implements the FIONBIO IO control command.
+['Inherited from basic_socket.]
+
+Determine the number of bytes available for reading.
+
+ std::size_t available() const;
 
 
-[heading Example]
+This function is used to determine the number of bytes that may be read without blocking.
+
+
+[heading Return Value]
+
+The number of bytes that may be read without blocking, or 0 if an error occurs.
+
+[heading Exceptions]
+
+
+[variablelist
   
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::non_blocking_io command(true);
- socket.io_control(command);
 
 
+[endsect]
+
+
+
+[section:overload2 basic_socket_streambuf::available (2 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Determine the number of bytes available for reading.
+
+ std::size_t available(
+ boost::system::error_code & ec) const;
+
+
+This function is used to determine the number of bytes that may be read without blocking.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes that may be read without blocking, or 0 if an error occurs.
+
 
 
+[endsect]
 
 
 [endsect]
 
 
-[section:open basic_socket_streambuf::open]
+[section:basic_socket_streambuf basic_socket_streambuf::basic_socket_streambuf]
 
-Open the socket using the specified protocol.
+[indexterm2 basic_socket_streambuf..basic_socket_streambuf] Construct a basic_socket_streambuf without establishing a connection.
 
- void ``[link boost_asio.reference.basic_socket_streambuf.open.overload1 open]``(
- const protocol_type & protocol = protocol_type());
+ basic_socket_streambuf();
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.open.overload2 open]``(
- const protocol_type & protocol,
+
+
+[endsect]
+
+
+[section:bind basic_socket_streambuf::bind]
+
+[indexterm2 bind..basic_socket_streambuf] Bind the socket to the given local endpoint.
+
+ void ``[link boost_asio.reference.basic_socket_streambuf.bind.overload1 bind]``(
+ const endpoint_type & endpoint);
+
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.bind.overload2 bind]``(
+ const endpoint_type & endpoint,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket_streambuf::open (1 of 2 overloads)]
+[section:overload1 basic_socket_streambuf::bind (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Open the socket using the specified protocol.
+Bind the socket to the given local endpoint.
 
- void open(
- const protocol_type & protocol = protocol_type());
+ void bind(
+ const endpoint_type & endpoint);
 
 
-This function opens the socket so that it will use the specified protocol.
+This function binds the socket to the specified endpoint on the local machine.
 
 
 [heading Parameters]
@@ -18933,7 +19549,7 @@
 
 [variablelist
   
-[[protocol][An object specifying protocol parameters to be used.]]
+[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
 
 ]
 
@@ -18952,6 +19568,8 @@
 
    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));
 
 
 
@@ -18962,19 +19580,19 @@
 
 
 
-[section:overload2 basic_socket_streambuf::open (2 of 2 overloads)]
+[section:overload2 basic_socket_streambuf::bind (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Open the socket using the specified protocol.
+Bind the socket to the given local endpoint.
 
- boost::system::error_code open(
- const protocol_type & protocol,
+ boost::system::error_code bind(
+ const endpoint_type & endpoint,
       boost::system::error_code & ec);
 
 
-This function opens the socket so that it will use the specified protocol.
+This function binds the socket to the specified endpoint on the local machine.
 
 
 [heading Parameters]
@@ -18982,7 +19600,7 @@
 
 [variablelist
   
-[[protocol][An object specifying which protocol is to be used.]]
+[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -18993,8 +19611,10 @@
 
 
    boost::asio::ip::tcp::socket socket(io_service);
+ socket.open(boost::asio::ip::tcp::v4());
    boost::system::error_code ec;
- socket.open(boost::asio::ip::tcp::v4(), ec);
+ socket.bind(boost::asio::ip::tcp::endpoint(
+ boost::asio::ip::tcp::v4(), 12345), ec);
    if (ec)
    {
      // An error occurred.
@@ -19011,27 +19631,41 @@
 [endsect]
 
 
-[section:overflow basic_socket_streambuf::overflow]
+[section:broadcast basic_socket_streambuf::broadcast]
 
 
+['Inherited from socket_base.]
 
- int_type overflow(
- int_type c);
+[indexterm2 broadcast..basic_socket_streambuf] Socket option to permit sending of broadcast messages.
 
+ typedef implementation_defined broadcast;
 
 
-[endsect]
 
+Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
 
 
-[section:protocol_type basic_socket_streambuf::protocol_type]
+[heading Examples]
+
+Setting the option:
 
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::broadcast option(true);
+ socket.set_option(option);
 
-['Inherited from basic_socket.]
 
-The protocol type.
 
- typedef Protocol protocol_type;
+
+Getting the current option value:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::broadcast option;
+ socket.get_option(option);
+ bool is_set = option.value();
+
+
 
 
 
@@ -19040,124 +19674,186 @@
 
 
 
-[section:receive_buffer_size basic_socket_streambuf::receive_buffer_size]
+[section:bytes_readable basic_socket_streambuf::bytes_readable]
 
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 bytes_readable..basic_socket_streambuf] IO control command to get the amount of data that can be read without blocking.
 
- typedef implementation_defined receive_buffer_size;
+ typedef implementation_defined bytes_readable;
 
 
 
-Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
+Implements the FIONREAD IO control command.
 
 
-[heading Examples]
+[heading Example]
   
-Setting the option:
+
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::receive_buffer_size option(8192);
- socket.set_option(option);
+ boost::asio::socket_base::bytes_readable command(true);
+ socket.io_control(command);
+ std::size_t bytes_readable = command.get();
 
 
 
 
-Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_buffer_size option;
- socket.get_option(option);
- int size = option.value();
 
+[endsect]
+
+
+[section:cancel basic_socket_streambuf::cancel]
+
+[indexterm2 cancel..basic_socket_streambuf] Cancel all asynchronous operations associated with the socket.
+
+ void ``[link boost_asio.reference.basic_socket_streambuf.cancel.overload1 cancel]``();
+
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.cancel.overload2 cancel]``(
+ boost::system::error_code & ec);
+
+
+[section:overload1 basic_socket_streambuf::cancel (1 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Cancel all asynchronous operations associated with the socket.
+
+ void cancel();
+
+
+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.
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Remarks]
+
+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:
+
+* It will only cancel asynchronous operations that were initiated in the current thread.
+
+* 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:
 
 
+* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
+
+* 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.
 
 
 [endsect]
 
 
 
-[section:receive_low_watermark basic_socket_streambuf::receive_low_watermark]
+[section:overload2 basic_socket_streambuf::cancel (2 of 2 overloads)]
 
 
-['Inherited from socket_base.]
+['Inherited from basic_socket.]
 
-Socket option for the receive low watermark.
+Cancel all asynchronous operations associated with the socket.
 
- typedef implementation_defined receive_low_watermark;
+ boost::system::error_code cancel(
+ boost::system::error_code & ec);
 
 
+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.
 
-Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
+[[ec][Set to indicate what error occurred, if any.]]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_low_watermark option(1024);
- socket.set_option(option);
+]
 
+[heading Remarks]
+
+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:
 
+* It will only cancel asynchronous operations that were initiated in the current thread.
 
+* 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.
 
-Getting the current option value:
+For portable cancellation, consider using one of the following alternatives:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_low_watermark option;
- socket.get_option(option);
- int size = option.value();
 
+* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
+
+* 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.
 
 
+[endsect]
 
 
 [endsect]
 
+[section:close basic_socket_streambuf::close]
 
-[section:remote_endpoint basic_socket_streambuf::remote_endpoint]
+[indexterm2 close..basic_socket_streambuf] Close the connection.
 
-Get the remote endpoint of the socket.
+ basic_socket_streambuf< Protocol, StreamSocketService > * ``[link boost_asio.reference.basic_socket_streambuf.close.overload1 close]``();
 
- endpoint_type ``[link boost_asio.reference.basic_socket_streambuf.remote_endpoint.overload1 remote_endpoint]``() const;
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.close.overload2 close]``(
+ boost::system::error_code & ec);
 
- endpoint_type ``[link boost_asio.reference.basic_socket_streambuf.remote_endpoint.overload2 remote_endpoint]``(
- boost::system::error_code & ec) const;
 
+[section:overload1 basic_socket_streambuf::close (1 of 2 overloads)]
 
-[section:overload1 basic_socket_streambuf::remote_endpoint (1 of 2 overloads)]
+Close the connection.
 
+ basic_socket_streambuf< Protocol, StreamSocketService > * close();
 
-['Inherited from basic_socket.]
 
-Get the remote endpoint of the socket.
 
- endpoint_type remote_endpoint() const;
+[heading Return Value]
+
+`this` if a connection was successfully established, a null pointer otherwise.
 
 
-This function is used to obtain the remote endpoint of the socket.
 
+[endsect]
 
-[heading Return Value]
-
-An object that represents the remote endpoint of the socket.
 
-[heading Exceptions]
+
+[section:overload2 basic_socket_streambuf::close (2 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Close the socket.
+
+ boost::system::error_code close(
+ boost::system::error_code & ec);
+
+
+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.
+
+
+[heading Parameters]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure.]]
+[[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
@@ -19167,29 +19863,111 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
+ boost::system::error_code ec;
+ socket.close(ec);
+ if (ec)
+ {
+ // An error occurred.
+ }
+
 
 
 
+[heading Remarks]
+
+For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
+
+
 
+[endsect]
 
 
 [endsect]
 
+[section:connect basic_socket_streambuf::connect]
+
+[indexterm2 connect..basic_socket_streambuf] Establish a connection.
+
+ basic_socket_streambuf< Protocol, StreamSocketService > * ``[link boost_asio.reference.basic_socket_streambuf.connect.overload1 connect]``(
+ const endpoint_type & endpoint);
+
+ template<
+ typename T1,
+ ... ,
+ typename TN>
+ basic_socket_streambuf< Protocol, StreamSocketService > * ``[link boost_asio.reference.basic_socket_streambuf.connect.overload2 connect]``(
+ T1 t1,
+ ... ,
+ TN tn);
+
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.connect.overload3 connect]``(
+ const endpoint_type & peer_endpoint,
+ boost::system::error_code & ec);
+
+
+[section:overload1 basic_socket_streambuf::connect (1 of 3 overloads)]
+
+Establish a connection.
+
+ basic_socket_streambuf< Protocol, StreamSocketService > * connect(
+ const endpoint_type & endpoint);
+
+
+This function establishes a connection to the specified endpoint.
+
+
+[heading Return Value]
+
+`this` if a connection was successfully established, a null pointer otherwise.
+
+
+
+[endsect]
 
 
-[section:overload2 basic_socket_streambuf::remote_endpoint (2 of 2 overloads)]
+
+[section:overload2 basic_socket_streambuf::connect (2 of 3 overloads)]
+
+Establish a connection.
+
+ template<
+ typename T1,
+ ... ,
+ typename TN>
+ basic_socket_streambuf< Protocol, StreamSocketService > * connect(
+ T1 t1,
+ ... ,
+ TN tn);
+
+
+This function automatically establishes a connection based on the supplied resolver query parameters. The arguments are used to construct a resolver query object.
+
+
+[heading Return Value]
+
+`this` if a connection was successfully established, a null pointer otherwise.
+
+
+
+[endsect]
+
+
+
+[section:overload3 basic_socket_streambuf::connect (3 of 3 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Get the remote endpoint of the socket.
+Connect the socket to the specified endpoint.
 
- endpoint_type remote_endpoint(
- boost::system::error_code & ec) const;
+ boost::system::error_code connect(
+ const endpoint_type & peer_endpoint,
+ boost::system::error_code & ec);
 
 
-This function is used to obtain the remote endpoint of the socket.
+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.
 
 
 [heading Parameters]
@@ -19197,22 +19975,21 @@
 
 [variablelist
   
+[[peer_endpoint][The remote endpoint to which the socket will be connected.]]
+
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Return Value]
-
-An object that represents the remote endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
-
 [heading Example]
   
 
 
    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;
- boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(ec);
+ socket.connect(endpoint, ec);
    if (ec)
    {
      // An error occurred.
@@ -19229,38 +20006,38 @@
 [endsect]
 
 
-[section:reuse_address basic_socket_streambuf::reuse_address]
+[section:debug basic_socket_streambuf::debug]
 
 
 ['Inherited from socket_base.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 debug..basic_socket_streambuf] Socket option to enable socket-level debugging.
 
- typedef implementation_defined reuse_address;
+ typedef implementation_defined debug;
 
 
 
-Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
+Implements the SOL\_SOCKET/SO\_DEBUG socket option.
 
 
 [heading Examples]
   
 Setting the option:
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::reuse_address option(true);
- acceptor.set_option(option);
+ boost::asio::socket_base::debug option(true);
+ socket.set_option(option);
 
 
 
 
 Getting the current option value:
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::reuse_address option;
- acceptor.get_option(option);
+ boost::asio::socket_base::debug option;
+ socket.get_option(option);
    bool is_set = option.value();
 
 
@@ -19272,27 +20049,27 @@
 
 
 
-[section:send_buffer_size basic_socket_streambuf::send_buffer_size]
+[section:do_not_route basic_socket_streambuf::do_not_route]
 
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 do_not_route..basic_socket_streambuf] Socket option to prevent routing, use local interfaces only.
 
- typedef implementation_defined send_buffer_size;
+ typedef implementation_defined do_not_route;
 
 
 
-Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
+Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
 
 
 [heading Examples]
   
 Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::udp::socket socket(io_service);
    ...
- boost::asio::socket_base::send_buffer_size option(8192);
+ boost::asio::socket_base::do_not_route option(true);
    socket.set_option(option);
 
 
@@ -19300,11 +20077,11 @@
 
 Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::udp::socket socket(io_service);
    ...
- boost::asio::socket_base::send_buffer_size option;
+ boost::asio::socket_base::do_not_route option;
    socket.get_option(option);
- int size = option.value();
+ bool is_set = option.value();
 
 
 
@@ -19315,39 +20092,39 @@
 
 
 
-[section:send_low_watermark basic_socket_streambuf::send_low_watermark]
+[section:enable_connection_aborted basic_socket_streambuf::enable_connection_aborted]
 
 
 ['Inherited from socket_base.]
 
-Socket option for the send low watermark.
+[indexterm2 enable_connection_aborted..basic_socket_streambuf] Socket option to report aborted connections on accept.
 
- typedef implementation_defined send_low_watermark;
+ typedef implementation_defined enable_connection_aborted;
 
 
 
-Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
+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.
 
 
 [heading Examples]
   
 Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
    ...
- boost::asio::socket_base::send_low_watermark option(1024);
- socket.set_option(option);
+ boost::asio::socket_base::enable_connection_aborted option(true);
+ acceptor.set_option(option);
 
 
 
 
 Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
    ...
- boost::asio::socket_base::send_low_watermark option;
- socket.get_option(option);
- int size = option.value();
+ boost::asio::socket_base::enable_connection_aborted option;
+ acceptor.get_option(option);
+ bool is_set = option.value();
 
 
 
@@ -19358,14 +20135,12 @@
 
 
 
-[section:service basic_socket_streambuf::service]
-
+[section:endpoint_type basic_socket_streambuf::endpoint_type]
 
-['Inherited from basic_io_object.]
+[indexterm2 endpoint_type..basic_socket_streambuf] The endpoint type.
 
-The service associated with the I/O object.
+ typedef Protocol::endpoint endpoint_type;
 
- service_type & service;
 
 
 
@@ -19373,45 +20148,52 @@
 
 
 
-[section:service_type basic_socket_streambuf::service_type]
+[section:get_io_service basic_socket_streambuf::get_io_service]
 
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 get_io_service..basic_socket_streambuf] Get the io_service associated with the object.
 
- typedef StreamSocketService service_type;
+ boost::asio::io_service & get_io_service();
 
 
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
 
-[endsect]
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
-[section:set_option basic_socket_streambuf::set_option]
 
-Set an option on the socket.
+[endsect]
 
- void ``[link boost_asio.reference.basic_socket_streambuf.set_option.overload1 set_option]``(
- const SettableSocketOption & option);
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.set_option.overload2 set_option]``(
- const SettableSocketOption & option,
- boost::system::error_code & ec);
+[section:get_option basic_socket_streambuf::get_option]
 
+[indexterm2 get_option..basic_socket_streambuf] Get an option from the socket.
 
-[section:overload1 basic_socket_streambuf::set_option (1 of 2 overloads)]
+ void ``[link boost_asio.reference.basic_socket_streambuf.get_option.overload1 get_option]``(
+ GettableSocketOption & option) const;
+
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.get_option.overload2 get_option]``(
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
+
+
+[section:overload1 basic_socket_streambuf::get_option (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Set an option on the socket.
+Get an option from the socket.
 
- void set_option(
- const SettableSocketOption & option);
+ void get_option(
+ GettableSocketOption & option) const;
 
 
-This function is used to set an option on the socket.
+This function is used to get the current value of an option on the socket.
 
 
 [heading Parameters]
@@ -19419,7 +20201,7 @@
 
 [variablelist
   
-[[option][The new option value to be set on the socket.]]
+[[option][The option value to be obtained from the socket.]]
 
 ]
 
@@ -19434,12 +20216,13 @@
 
 [heading Example]
   
-Setting the IPPROTO\_TCP/TCP\_NODELAY option:
+Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::ip::tcp::no_delay option(true);
- socket.set_option(option);
+ boost::asio::ip::tcp::socket::keep_alive option;
+ socket.get_option(option);
+ bool is_set = option.get();
 
 
 
@@ -19450,19 +20233,19 @@
 
 
 
-[section:overload2 basic_socket_streambuf::set_option (2 of 2 overloads)]
+[section:overload2 basic_socket_streambuf::get_option (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Set an option on the socket.
+Get an option from the socket.
 
- boost::system::error_code set_option(
- const SettableSocketOption & option,
- boost::system::error_code & ec);
+ boost::system::error_code get_option(
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
 
 
-This function is used to set an option on the socket.
+This function is used to get the current value of an option on the socket.
 
 
 [heading Parameters]
@@ -19470,7 +20253,7 @@
 
 [variablelist
   
-[[option][The new option value to be set on the socket.]]
+[[option][The option value to be obtained from the socket.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -19478,17 +20261,18 @@
 
 [heading Example]
   
-Setting the IPPROTO\_TCP/TCP\_NODELAY option:
+Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::ip::tcp::no_delay option(true);
+ boost::asio::ip::tcp::socket::keep_alive option;
    boost::system::error_code ec;
- socket.set_option(option, ec);
+ socket.get_option(option, ec);
    if (ec)
    {
      // An error occurred.
    }
+ bool is_set = option.get();
 
 
 
@@ -19501,43 +20285,60 @@
 [endsect]
 
 
-[section:setbuf basic_socket_streambuf::setbuf]
+[section:implementation basic_socket_streambuf::implementation]
 
 
+['Inherited from basic_io_object.]
 
- std::streambuf * setbuf(
- char_type * s,
- std::streamsize n);
+[indexterm2 implementation..basic_socket_streambuf] The underlying implementation of the I/O object.
+
+ implementation_type implementation;
 
 
 
 [endsect]
 
 
-[section:shutdown basic_socket_streambuf::shutdown]
 
-Disable sends or receives on the socket.
+[section:implementation_type basic_socket_streambuf::implementation_type]
 
- void ``[link boost_asio.reference.basic_socket_streambuf.shutdown.overload1 shutdown]``(
- shutdown_type what);
 
- boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.shutdown.overload2 shutdown]``(
- shutdown_type what,
+['Inherited from basic_io_object.]
+
+[indexterm2 implementation_type..basic_socket_streambuf] The underlying implementation type of I/O object.
+
+ typedef service_type::implementation_type implementation_type;
+
+
+
+
+[endsect]
+
+
+[section:io_control basic_socket_streambuf::io_control]
+
+[indexterm2 io_control..basic_socket_streambuf] Perform an IO control command on the socket.
+
+ void ``[link boost_asio.reference.basic_socket_streambuf.io_control.overload1 io_control]``(
+ IoControlCommand & command);
+
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.io_control.overload2 io_control]``(
+ IoControlCommand & command,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_socket_streambuf::shutdown (1 of 2 overloads)]
+[section:overload1 basic_socket_streambuf::io_control (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Disable sends or receives on the socket.
+Perform an IO control command on the socket.
 
- void shutdown(
- shutdown_type what);
+ void io_control(
+ IoControlCommand & command);
 
 
-This function is used to disable send operations, receive operations, or both.
+This function is used to execute an IO control command on the socket.
 
 
 [heading Parameters]
@@ -19545,7 +20346,7 @@
 
 [variablelist
   
-[[what][Determines what types of operation will no longer be allowed.]]
+[[command][The IO control command to be performed on the socket.]]
 
 ]
 
@@ -19560,11 +20361,13 @@
 
 [heading Example]
   
-Shutting down the send side of the socket:
+Getting the number of bytes ready to read:
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send);
+ boost::asio::ip::tcp::socket::bytes_readable command;
+ socket.io_control(command);
+ std::size_t bytes_readable = command.get();
 
 
 
@@ -19575,19 +20378,19 @@
 
 
 
-[section:overload2 basic_socket_streambuf::shutdown (2 of 2 overloads)]
+[section:overload2 basic_socket_streambuf::io_control (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Disable sends or receives on the socket.
+Perform an IO control command on the socket.
 
- boost::system::error_code shutdown(
- shutdown_type what,
+ boost::system::error_code io_control(
+ IoControlCommand & command,
       boost::system::error_code & ec);
 
 
-This function is used to disable send operations, receive operations, or both.
+This function is used to execute an IO control command on the socket.
 
 
 [heading Parameters]
@@ -19595,7 +20398,7 @@
 
 [variablelist
   
-[[what][Determines what types of operation will no longer be allowed.]]
+[[command][The IO control command to be performed on the socket.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -19603,16 +20406,18 @@
 
 [heading Example]
   
-Shutting down the send side of the socket:
+Getting the number of bytes ready to read:
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
+ boost::asio::ip::tcp::socket::bytes_readable command;
    boost::system::error_code ec;
- socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send, ec);
+ socket.io_control(command, ec);
    if (ec)
    {
      // An error occurred.
    }
+ std::size_t bytes_readable = command.get();
 
 
 
@@ -19625,34 +20430,80 @@
 [endsect]
 
 
-[section:shutdown_type basic_socket_streambuf::shutdown_type]
+[section:io_service basic_socket_streambuf::io_service]
+
+
+['Inherited from basic_io_object.]
+
+[indexterm2 io_service..basic_socket_streambuf] (Deprecated: use get_io_service().) Get the io_service associated with the object.
+
+ boost::asio::io_service & io_service();
+
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+
+[section:is_open basic_socket_streambuf::is_open]
+
+
+['Inherited from basic_socket.]
+
+[indexterm2 is_open..basic_socket_streambuf] Determine whether the socket is open.
+
+ bool is_open() const;
+
+
+
+[endsect]
+
+
+
+[section:keep_alive basic_socket_streambuf::keep_alive]
 
 
 ['Inherited from socket_base.]
 
-Different ways a socket may be shutdown.
+[indexterm2 keep_alive..basic_socket_streambuf] Socket option to send keep-alives.
 
- enum shutdown_type
+ typedef implementation_defined keep_alive;
 
-[heading Values]
-[variablelist
 
- [
- [shutdown_receive]
- [Shutdown the receive side of the socket. ]
- ]
 
- [
- [shutdown_send]
- [Shutdown the send side of the socket. ]
- ]
+Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
+
+
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::keep_alive option(true);
+ socket.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::keep_alive option;
+ socket.get_option(option);
+ bool is_set = option.value();
+
 
- [
- [shutdown_both]
- [Shutdown both send and receive on the socket. ]
- ]
 
-]
 
 
 
@@ -19660,23 +20511,95 @@
 
 
 
-[section:sync basic_socket_streambuf::sync]
+[section:linger basic_socket_streambuf::linger]
+
+
+['Inherited from socket_base.]
+
+[indexterm2 linger..basic_socket_streambuf] Socket option to specify whether the socket lingers on close if unsent data is present.
+
+ typedef implementation_defined linger;
+
+
+
+Implements the SOL\_SOCKET/SO\_LINGER socket option.
+
+
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::linger option(true, 30);
+ socket.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ 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();
 
 
 
- int sync();
 
 
 
 [endsect]
 
 
+[section:local_endpoint basic_socket_streambuf::local_endpoint]
 
-[section:underflow basic_socket_streambuf::underflow]
+[indexterm2 local_endpoint..basic_socket_streambuf] Get the local endpoint of the socket.
+
+ endpoint_type ``[link boost_asio.reference.basic_socket_streambuf.local_endpoint.overload1 local_endpoint]``() const;
+
+ endpoint_type ``[link boost_asio.reference.basic_socket_streambuf.local_endpoint.overload2 local_endpoint]``(
+ boost::system::error_code & ec) const;
+
+
+[section:overload1 basic_socket_streambuf::local_endpoint (1 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Get the local endpoint of the socket.
+
+ endpoint_type local_endpoint() const;
+
+
+This function is used to obtain the locally bound endpoint of the socket.
+
+
+[heading Return Value]
+
+An object that represents the local endpoint of the socket.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Example]
+
+
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
 
 
 
- int_type underflow();
 
 
 
@@ -19684,29 +20607,88 @@
 
 
 
-[section:_basic_socket_streambuf basic_socket_streambuf::~basic_socket_streambuf]
+[section:overload2 basic_socket_streambuf::local_endpoint (2 of 2 overloads)]
 
-Destructor flushes buffered data.
 
- virtual ~basic_socket_streambuf();
+['Inherited from basic_socket.]
+
+Get the local endpoint of the socket.
+
+ endpoint_type local_endpoint(
+ boost::system::error_code & ec) const;
+
+
+This function is used to obtain the locally bound endpoint of the socket.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+An object that represents the local endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
+
+[heading Example]
+
+
+
+ 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.
+ }
 
 
 
+
+
+
+[endsect]
+
+
 [endsect]
 
 
+[section:lowest_layer basic_socket_streambuf::lowest_layer]
+
+
+['Inherited from basic_socket.]
+
+[indexterm2 lowest_layer..basic_socket_streambuf] Get a reference to the lowest layer.
+
+ lowest_layer_type & 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.
+
+
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+
+
 
 [endsect]
 
-[section:basic_stream_socket basic_stream_socket]
 
-Provides stream-oriented socket functionality.
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.StreamSocketService StreamSocketService]`` = stream_socket_service<Protocol>>
- class basic_stream_socket :
- public basic_socket< Protocol, StreamSocketService >
+[section:lowest_layer_type basic_socket_streambuf::lowest_layer_type]
+
+
+['Inherited from basic_socket.]
+
+[indexterm2 lowest_layer_type..basic_socket_streambuf] A basic_socket is always the lowest layer.
+
+ typedef basic_socket< Protocol, StreamSocketService > lowest_layer_type;
 
 
 [heading Types]
@@ -19715,147 +20697,147 @@
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.broadcast [*broadcast]]]
+ [[link boost_asio.reference.basic_socket.broadcast [*broadcast]]]
     [Socket option to permit sending of broadcast messages. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.bytes_readable [*bytes_readable]]]
+ [[link boost_asio.reference.basic_socket.bytes_readable [*bytes_readable]]]
     [IO control command to get the amount of data that can be read without blocking. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.debug [*debug]]]
+ [[link boost_asio.reference.basic_socket.debug [*debug]]]
     [Socket option to enable socket-level debugging. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.do_not_route [*do_not_route]]]
+ [[link boost_asio.reference.basic_socket.do_not_route [*do_not_route]]]
     [Socket option to prevent routing, use local interfaces only. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [[link boost_asio.reference.basic_socket.enable_connection_aborted [*enable_connection_aborted]]]
     [Socket option to report aborted connections on accept. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.endpoint_type [*endpoint_type]]]
+ [[link boost_asio.reference.basic_socket.endpoint_type [*endpoint_type]]]
     [The endpoint type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.implementation_type [*implementation_type]]]
+ [[link boost_asio.reference.basic_socket.implementation_type [*implementation_type]]]
     [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.keep_alive [*keep_alive]]]
+ [[link boost_asio.reference.basic_socket.keep_alive [*keep_alive]]]
     [Socket option to send keep-alives. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.linger [*linger]]]
+ [[link boost_asio.reference.basic_socket.linger [*linger]]]
     [Socket option to specify whether the socket lingers on close if unsent data is present. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.lowest_layer_type [*lowest_layer_type]]]
+ [[link boost_asio.reference.basic_socket.lowest_layer_type [*lowest_layer_type]]]
     [A basic_socket is always the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.message_flags [*message_flags]]]
+ [[link boost_asio.reference.basic_socket.message_flags [*message_flags]]]
     [Bitmask type for flags that can be passed to send and receive operations. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.native_type [*native_type]]]
+ [[link boost_asio.reference.basic_socket.native_type [*native_type]]]
     [The native representation of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.non_blocking_io [*non_blocking_io]]]
+ [[link boost_asio.reference.basic_socket.non_blocking_io [*non_blocking_io]]]
     [IO control command to set the blocking mode of the socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.protocol_type [*protocol_type]]]
+ [[link boost_asio.reference.basic_socket.protocol_type [*protocol_type]]]
     [The protocol type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.receive_buffer_size [*receive_buffer_size]]]
+ [[link boost_asio.reference.basic_socket.receive_buffer_size [*receive_buffer_size]]]
     [Socket option for the receive buffer size of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.receive_low_watermark [*receive_low_watermark]]]
+ [[link boost_asio.reference.basic_socket.receive_low_watermark [*receive_low_watermark]]]
     [Socket option for the receive low watermark. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.reuse_address [*reuse_address]]]
+ [[link boost_asio.reference.basic_socket.reuse_address [*reuse_address]]]
     [Socket option to allow the socket to be bound to an address that is already in use. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.send_buffer_size [*send_buffer_size]]]
+ [[link boost_asio.reference.basic_socket.send_buffer_size [*send_buffer_size]]]
     [Socket option for the send buffer size of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.send_low_watermark [*send_low_watermark]]]
+ [[link boost_asio.reference.basic_socket.send_low_watermark [*send_low_watermark]]]
     [Socket option for the send low watermark. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.service_type [*service_type]]]
+ [[link boost_asio.reference.basic_socket.service_type [*service_type]]]
     [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.shutdown_type [*shutdown_type]]]
+ [[link boost_asio.reference.basic_socket.shutdown_type [*shutdown_type]]]
     [Different ways a socket may be shutdown. ]
   
   ]
@@ -19867,148 +20849,119 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_stream_socket.assign [*assign]]]
+ [[link boost_asio.reference.basic_socket.assign [*assign]]]
     [Assign an existing native socket to the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.async_connect [*async_connect]]]
+ [[link boost_asio.reference.basic_socket.async_connect [*async_connect]]]
     [Start an asynchronous connect. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.async_read_some [*async_read_some]]]
- [Start an asynchronous read. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.async_receive [*async_receive]]]
- [Start an asynchronous receive. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.async_send [*async_send]]]
- [Start an asynchronous send. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.async_write_some [*async_write_some]]]
- [Start an asynchronous write. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.at_mark [*at_mark]]]
+ [[link boost_asio.reference.basic_socket.at_mark [*at_mark]]]
     [Determine whether the socket is at the out-of-band data mark. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.available [*available]]]
+ [[link boost_asio.reference.basic_socket.available [*available]]]
     [Determine the number of bytes available for reading. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.basic_stream_socket [*basic_stream_socket]]]
- [Construct a basic_stream_socket without opening it. ]
+ [[link boost_asio.reference.basic_socket.basic_socket [*basic_socket]]]
+ [Construct a basic_socket without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.bind [*bind]]]
+ [[link boost_asio.reference.basic_socket.bind [*bind]]]
     [Bind the socket to the given local endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.cancel [*cancel]]]
+ [[link boost_asio.reference.basic_socket.cancel [*cancel]]]
     [Cancel all asynchronous operations associated with the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.close [*close]]]
+ [[link boost_asio.reference.basic_socket.close [*close]]]
     [Close the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.connect [*connect]]]
+ [[link boost_asio.reference.basic_socket.connect [*connect]]]
     [Connect the socket to the specified endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.get_io_service [*get_io_service]]]
+ [[link boost_asio.reference.basic_socket.get_io_service [*get_io_service]]]
     [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.get_option [*get_option]]]
+ [[link boost_asio.reference.basic_socket.get_option [*get_option]]]
     [Get an option from the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.io_control [*io_control]]]
+ [[link boost_asio.reference.basic_socket.io_control [*io_control]]]
     [Perform an IO control command on the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.io_service [*io_service]]]
+ [[link boost_asio.reference.basic_socket.io_service [*io_service]]]
     [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.is_open [*is_open]]]
+ [[link boost_asio.reference.basic_socket.is_open [*is_open]]]
     [Determine whether the socket is open. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.local_endpoint [*local_endpoint]]]
+ [[link boost_asio.reference.basic_socket.local_endpoint [*local_endpoint]]]
     [Get the local endpoint of the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.lowest_layer [*lowest_layer]]]
+ [[link boost_asio.reference.basic_socket.lowest_layer [*lowest_layer]]]
     [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.native [*native]]]
+ [[link boost_asio.reference.basic_socket.native [*native]]]
     [Get the native socket representation. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.open [*open]]]
+ [[link boost_asio.reference.basic_socket.open [*open]]]
     [Open the socket using the specified protocol. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.read_some [*read_some]]]
- [Read some data from the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.receive [*receive]]]
- [Receive some data on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.remote_endpoint [*remote_endpoint]]]
+ [[link boost_asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
     [Get the remote endpoint of the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.send [*send]]]
- [Send some data on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.set_option [*set_option]]]
+ [[link boost_asio.reference.basic_socket.set_option [*set_option]]]
     [Set an option on the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.shutdown [*shutdown]]]
+ [[link boost_asio.reference.basic_socket.shutdown [*shutdown]]]
     [Disable sends or receives on the socket. ]
   ]
   
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.basic_stream_socket.write_some [*write_some]]]
- [Write some data to the socket. ]
+ [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
+ [Protected destructor to prevent deletion through this type. ]
   ]
   
 ]
@@ -20018,22 +20971,22 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_stream_socket.max_connections [*max_connections]]]
+ [[link boost_asio.reference.basic_socket.max_connections [*max_connections]]]
     [The maximum length of the queue of pending incoming connections. ]
   ]
 
   [
- [[link boost_asio.reference.basic_stream_socket.message_do_not_route [*message_do_not_route]]]
+ [[link boost_asio.reference.basic_socket.message_do_not_route [*message_do_not_route]]]
     [Specify that the data should not be subject to routing. ]
   ]
 
   [
- [[link boost_asio.reference.basic_stream_socket.message_out_of_band [*message_out_of_band]]]
+ [[link boost_asio.reference.basic_socket.message_out_of_band [*message_out_of_band]]]
     [Process out-of-band data. ]
   ]
 
   [
- [[link boost_asio.reference.basic_stream_socket.message_peek [*message_peek]]]
+ [[link boost_asio.reference.basic_socket.message_peek [*message_peek]]]
     [Peek at incoming data without removing it from the input queue. ]
   ]
 
@@ -20044,51 +20997,41 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_stream_socket.implementation [*implementation]]]
+ [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
     [The underlying implementation of the I/O object. ]
   ]
 
   [
- [[link boost_asio.reference.basic_stream_socket.service [*service]]]
+ [[link boost_asio.reference.basic_socket.service [*service]]]
     [The service associated with the I/O object. ]
   ]
 
 ]
 
-The basic_stream_socket class template provides asynchronous and blocking stream-oriented socket functionality.
+The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[*Shared] [*objects:] Unsafe.
 
 
-[section:assign basic_stream_socket::assign]
 
-Assign an existing native socket to the socket.
 
- void ``[link boost_asio.reference.basic_stream_socket.assign.overload1 assign]``(
- const protocol_type & protocol,
- const native_type & native_socket);
+[endsect]
 
- boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.assign.overload2 assign]``(
- const protocol_type & protocol,
- const native_type & native_socket,
- boost::system::error_code & ec);
 
 
-[section:overload1 basic_stream_socket::assign (1 of 2 overloads)]
+[section:max_connections basic_socket_streambuf::max_connections]
 
 
-['Inherited from basic_socket.]
+['Inherited from socket_base.]
 
-Assign an existing native socket to the socket.
+[indexterm2 max_connections..basic_socket_streambuf] The maximum length of the queue of pending incoming connections.
 
- void assign(
- const protocol_type & protocol,
- const native_type & native_socket);
+ static const int max_connections = implementation_defined;
 
 
 
@@ -20096,82 +21039,60 @@
 
 
 
-[section:overload2 basic_stream_socket::assign (2 of 2 overloads)]
+[section:message_do_not_route basic_socket_streambuf::message_do_not_route]
 
 
-['Inherited from basic_socket.]
+['Inherited from socket_base.]
 
-Assign an existing native socket to the socket.
+[indexterm2 message_do_not_route..basic_socket_streambuf] Specify that the data should not be subject to routing.
 
- boost::system::error_code assign(
- const protocol_type & protocol,
- const native_type & native_socket,
- boost::system::error_code & ec);
+ static const int message_do_not_route = implementation_defined;
 
 
 
 [endsect]
 
 
-[endsect]
 
+[section:message_flags basic_socket_streambuf::message_flags]
 
-[section:async_connect basic_stream_socket::async_connect]
 
+['Inherited from socket_base.]
 
-['Inherited from basic_socket.]
+[indexterm2 message_flags..basic_socket_streambuf] Bitmask type for flags that can be passed to send and receive operations.
 
-Start an asynchronous connect.
+ typedef int message_flags;
 
- void async_connect(
- const endpoint_type & peer_endpoint,
- ConnectHandler handler);
 
 
-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 returned to the closed state.
+[endsect]
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[peer_endpoint][The remote endpoint to which the socket will be connected. Copies will be made of the endpoint object as required.]]
+[section:message_out_of_band basic_socket_streambuf::message_out_of_band]
 
-[[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:
-``
- void handler(
- const boost::system::error_code& error // Result of operation
- );
 
-``
-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().]]
+['Inherited from socket_base.]
 
-]
+[indexterm2 message_out_of_band..basic_socket_streambuf] Process out-of-band data.
 
-[heading Example]
-
+ static const int message_out_of_band = implementation_defined;
 
 
- void connect_handler(const boost::system::error_code& error)
- {
- if (!error)
- {
- // Connect succeeded.
- }
- }
 
- ...
+[endsect]
+
 
- 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);
 
+[section:message_peek basic_socket_streambuf::message_peek]
+
+
+['Inherited from socket_base.]
 
+[indexterm2 message_peek..basic_socket_streambuf] Peek at incoming data without removing it from the input queue.
 
+ static const int message_peek = implementation_defined;
 
 
 
@@ -20179,151 +21100,94 @@
 
 
 
-[section:async_read_some basic_stream_socket::async_read_some]
+[section:native basic_socket_streambuf::native]
 
-Start an asynchronous read.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
- const MutableBufferSequence & buffers,
- ReadHandler handler);
+['Inherited from basic_socket.]
 
+[indexterm2 native..basic_socket_streambuf] Get the native socket representation.
 
-This function is used to asynchronously read data from the stream socket. The function call always returns immediately.
+ native_type native();
 
 
-[heading Parameters]
-
+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.
 
-[variablelist
-
-[[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.]]
 
-[[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:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes read.
- );
+[endsect]
 
-``
-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().]]
 
-]
 
-[heading Remarks]
-
-The read operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
+[section:native_type basic_socket_streambuf::native_type]
 
-[heading Example]
-
-To read into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
 
- socket.async_read_some(boost::asio::buffer(data, size), handler);
+['Inherited from basic_socket.]
 
+[indexterm2 native_type..basic_socket_streambuf] The native representation of a socket.
+
+ typedef StreamSocketService::native_type native_type;
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
 [endsect]
 
 
-[section:async_receive basic_stream_socket::async_receive]
 
-Start an asynchronous receive.
+[section:non_blocking_io basic_socket_streambuf::non_blocking_io]
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_stream_socket.async_receive.overload1 async_receive]``(
- const MutableBufferSequence & buffers,
- ReadHandler handler);
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void ``[link boost_asio.reference.basic_stream_socket.async_receive.overload2 async_receive]``(
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
- ReadHandler handler);
+['Inherited from socket_base.]
 
+[indexterm2 non_blocking_io..basic_socket_streambuf] IO control command to set the blocking mode of the socket.
 
-[section:overload1 basic_stream_socket::async_receive (1 of 2 overloads)]
+ typedef implementation_defined non_blocking_io;
 
-Start an asynchronous receive.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
- const MutableBufferSequence & buffers,
- ReadHandler handler);
 
+Implements the FIONBIO IO control command.
 
-This function is used to asynchronously receive data from the stream socket. The function call always returns immediately.
 
+[heading Example]
+
 
-[heading Parameters]
-
 
-[variablelist
-
-[[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.]]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::non_blocking_io command(true);
+ socket.io_control(command);
 
-[[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:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes received.
- );
 
-``
-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().]]
 
-]
 
-[heading Remarks]
-
-The receive operation may not receive all of the requested number of bytes. Consider using the
-[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is received before the asynchronous operation completes.
 
-[heading Example]
-
-To receive into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
 
- socket.async_receive(boost::asio::buffer(data, size), handler);
+[endsect]
 
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on receiving into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+[section:open basic_socket_streambuf::open]
 
+[indexterm2 open..basic_socket_streambuf] Open the socket using the specified protocol.
 
+ void ``[link boost_asio.reference.basic_socket_streambuf.open.overload1 open]``(
+ const protocol_type & protocol = protocol_type());
 
-[endsect]
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.open.overload2 open]``(
+ const protocol_type & protocol,
+ boost::system::error_code & ec);
 
 
+[section:overload1 basic_socket_streambuf::open (1 of 2 overloads)]
 
-[section:overload2 basic_stream_socket::async_receive (2 of 2 overloads)]
 
-Start an asynchronous receive.
+['Inherited from basic_socket.]
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
- ReadHandler handler);
+Open the socket using the specified protocol.
+
+ void open(
+ const protocol_type & protocol = protocol_type());
 
 
-This function is used to asynchronously receive data from the stream socket. The function call always returns immediately.
+This function opens the socket so that it will use the specified protocol.
 
 
 [heading Parameters]
@@ -20331,78 +21195,48 @@
 
 [variablelist
   
-[[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.]]
+[[protocol][An object specifying protocol parameters to be used.]]
 
-[[flags][Flags specifying how the receive call is to be made.]]
+]
 
-[[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:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes received.
- );
+[heading Exceptions]
+
 
-``
-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().]]
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
-[heading Remarks]
-
-The receive operation may not receive all of the requested number of bytes. Consider using the
-[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is received before the asynchronous operation completes.
-
 [heading Example]
   
-To receive into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
 
- socket.async_receive(boost::asio::buffer(data, size), 0, handler);
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ socket.open(boost::asio::ip::tcp::v4());
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on receiving into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
-[endsect]
 
 
 [endsect]
 
-[section:async_send basic_stream_socket::async_send]
-
-Start an asynchronous send.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_stream_socket.async_send.overload1 async_send]``(
- const ConstBufferSequence & buffers,
- WriteHandler handler);
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void ``[link boost_asio.reference.basic_stream_socket.async_send.overload2 async_send]``(
- const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
- WriteHandler handler);
+[section:overload2 basic_socket_streambuf::open (2 of 2 overloads)]
 
 
-[section:overload1 basic_stream_socket::async_send (1 of 2 overloads)]
+['Inherited from basic_socket.]
 
-Start an asynchronous send.
+Open the socket using the specified protocol.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
- const ConstBufferSequence & buffers,
- WriteHandler handler);
+ boost::system::error_code open(
+ const protocol_type & protocol,
+ boost::system::error_code & ec);
 
 
-This function is used to asynchronously send data on the stream socket. The function call always returns immediately.
+This function opens the socket so that it will use the specified protocol.
 
 
 [heading Parameters]
@@ -20410,288 +21244,214 @@
 
 [variablelist
   
-[[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.]]
-
-[[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:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes sent.
- );
+[[protocol][An object specifying which protocol is to be used.]]
 
-``
-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().]]
+[[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Remarks]
-
-The send operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
-
 [heading Example]
   
-To send a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
 
- socket.async_send(boost::asio::buffer(data, size), handler);
-
-
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on sending multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
+ 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.
+ }
 
 
-[endsect]
 
 
 
-[section:overload2 basic_stream_socket::async_send (2 of 2 overloads)]
 
-Start an asynchronous send.
+[endsect]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
- const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
- WriteHandler handler);
 
+[endsect]
 
-This function is used to asynchronously send data on the stream socket. The function call always returns immediately.
 
+[section:overflow basic_socket_streambuf::overflow]
 
-[heading Parameters]
-
+[indexterm2 overflow..basic_socket_streambuf]
 
-[variablelist
-
-[[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.]]
+ int_type overflow(
+ int_type c);
 
-[[flags][Flags specifying how the send call is to be made.]]
 
-[[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:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes sent.
- );
 
-``
-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().]]
+[endsect]
 
-]
 
-[heading Remarks]
-
-The send operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
 
-[heading Example]
-
-To send a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
+[section:protocol_type basic_socket_streambuf::protocol_type]
 
- socket.async_send(boost::asio::buffer(data, size), 0, handler);
 
+['Inherited from basic_socket.]
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on sending multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+[indexterm2 protocol_type..basic_socket_streambuf] The protocol type.
 
+ typedef Protocol protocol_type;
 
 
-[endsect]
 
 
 [endsect]
 
 
-[section:async_write_some basic_stream_socket::async_write_some]
-
-Start an asynchronous write.
-
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
- const ConstBufferSequence & buffers,
- WriteHandler handler);
 
+[section:receive_buffer_size basic_socket_streambuf::receive_buffer_size]
 
-This function is used to asynchronously write data to the stream socket. The function call always returns immediately.
 
+['Inherited from socket_base.]
 
-[heading Parameters]
-
+[indexterm2 receive_buffer_size..basic_socket_streambuf] Socket option for the receive buffer size of a socket.
 
-[variablelist
-
-[[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.]]
+ typedef implementation_defined receive_buffer_size;
 
-[[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:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes written.
- );
 
-``
-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().]]
 
-]
+Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
 
-[heading Remarks]
-
-The write operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
 
-[heading Example]
+[heading Examples]
   
-To write a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
-
- socket.async_write_some(boost::asio::buffer(data, size), handler);
-
-
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
-
-
-
-[endsect]
-
-
-[section:at_mark basic_stream_socket::at_mark]
+Setting the option:
 
-Determine whether the socket is at the out-of-band data mark.
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option(8192);
+ socket.set_option(option);
 
- bool ``[link boost_asio.reference.basic_stream_socket.at_mark.overload1 at_mark]``() const;
 
- bool ``[link boost_asio.reference.basic_stream_socket.at_mark.overload2 at_mark]``(
- boost::system::error_code & ec) const;
 
 
-[section:overload1 basic_stream_socket::at_mark (1 of 2 overloads)]
+Getting the current option value:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
 
-['Inherited from basic_socket.]
 
-Determine whether the socket is at the out-of-band data mark.
 
- bool at_mark() const;
 
 
-This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
 
+[endsect]
 
-[heading Return Value]
-
-A bool indicating whether the socket is at the out-of-band data mark.
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+[section:receive_low_watermark basic_socket_streambuf::receive_low_watermark]
 
-]
 
+['Inherited from socket_base.]
 
+[indexterm2 receive_low_watermark..basic_socket_streambuf] Socket option for the receive low watermark.
 
-[endsect]
+ typedef implementation_defined receive_low_watermark;
 
 
 
-[section:overload2 basic_stream_socket::at_mark (2 of 2 overloads)]
+Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
 
 
-['Inherited from basic_socket.]
+[heading Examples]
+
+Setting the option:
 
-Determine whether the socket is at the out-of-band data mark.
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_low_watermark option(1024);
+ socket.set_option(option);
 
- bool at_mark(
- boost::system::error_code & ec) const;
 
 
-This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
 
+Getting the current option value:
 
-[heading Parameters]
-
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_low_watermark option;
+ socket.get_option(option);
+ int size = option.value();
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
 
-[heading Return Value]
-
-A bool indicating whether the socket is at the out-of-band data mark.
 
 
 
 [endsect]
 
 
-[endsect]
-
-[section:available basic_stream_socket::available]
+[section:remote_endpoint basic_socket_streambuf::remote_endpoint]
 
-Determine the number of bytes available for reading.
+[indexterm2 remote_endpoint..basic_socket_streambuf] Get the remote endpoint of the socket.
 
- std::size_t ``[link boost_asio.reference.basic_stream_socket.available.overload1 available]``() const;
+ endpoint_type ``[link boost_asio.reference.basic_socket_streambuf.remote_endpoint.overload1 remote_endpoint]``() const;
 
- std::size_t ``[link boost_asio.reference.basic_stream_socket.available.overload2 available]``(
+ endpoint_type ``[link boost_asio.reference.basic_socket_streambuf.remote_endpoint.overload2 remote_endpoint]``(
       boost::system::error_code & ec) const;
 
 
-[section:overload1 basic_stream_socket::available (1 of 2 overloads)]
+[section:overload1 basic_socket_streambuf::remote_endpoint (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Determine the number of bytes available for reading.
+Get the remote endpoint of the socket.
 
- std::size_t available() const;
+ endpoint_type remote_endpoint() const;
 
 
-This function is used to determine the number of bytes that may be read without blocking.
+This function is used to obtain the remote endpoint of the socket.
 
 
 [heading Return Value]
       
-The number of bytes that may be read without blocking, or 0 if an error occurs.
+An object that represents the remote endpoint of the socket.
 
 [heading Exceptions]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure. ]]
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
+[heading Example]
+
+
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
+
+
+
+
 
 
 [endsect]
 
 
 
-[section:overload2 basic_stream_socket::available (2 of 2 overloads)]
+[section:overload2 basic_socket_streambuf::remote_endpoint (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Determine the number of bytes available for reading.
+Get the remote endpoint of the socket.
 
- std::size_t available(
+ endpoint_type remote_endpoint(
       boost::system::error_code & ec) const;
 
 
-This function is used to determine the number of bytes that may be read without blocking.
+This function is used to obtain the remote endpoint of the socket.
 
 
 [heading Parameters]
@@ -20705,55 +21465,68 @@
 
 [heading Return Value]
       
-The number of bytes that may be read without blocking, or 0 if an error occurs.
+An object that represents the remote endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
 
+[heading Example]
+
 
 
-[endsect]
+ 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.
+ }
 
 
-[endsect]
 
-[section:basic_stream_socket basic_stream_socket::basic_stream_socket]
 
-Construct a basic_stream_socket without opening it.
 
- ``[link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload1 basic_stream_socket]``(
- boost::asio::io_service & io_service);
 
- ``[link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload2 basic_stream_socket]``(
- boost::asio::io_service & io_service,
- const protocol_type & protocol);
+[endsect]
 
- ``[link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload3 basic_stream_socket]``(
- boost::asio::io_service & io_service,
- const endpoint_type & endpoint);
 
- ``[link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload4 basic_stream_socket]``(
- boost::asio::io_service & io_service,
- const protocol_type & protocol,
- const native_type & native_socket);
+[endsect]
 
 
-[section:overload1 basic_stream_socket::basic_stream_socket (1 of 4 overloads)]
+[section:reuse_address basic_socket_streambuf::reuse_address]
 
-Construct a basic_stream_socket without opening it.
 
- basic_stream_socket(
- boost::asio::io_service & io_service);
+['Inherited from socket_base.]
 
+[indexterm2 reuse_address..basic_socket_streambuf] Socket option to allow the socket to be bound to an address that is already in use.
 
-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.
+ typedef implementation_defined reuse_address;
 
 
-[heading Parameters]
-
 
-[variablelist
+Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
+
+
+[heading Examples]
   
-[[io_service][The io\_service object that the stream socket will use to dispatch handlers for any asynchronous operations performed on the socket. ]]
+Setting the option:
+
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::reuse_address option(true);
+ acceptor.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::reuse_address option;
+ acceptor.get_option(option);
+ bool is_set = option.value();
+
+
 
-]
 
 
 
@@ -20761,37 +21534,42 @@
 
 
 
-[section:overload2 basic_stream_socket::basic_stream_socket (2 of 4 overloads)]
+[section:send_buffer_size basic_socket_streambuf::send_buffer_size]
 
-Construct and open a basic_stream_socket.
 
- basic_stream_socket(
- boost::asio::io_service & io_service,
- const protocol_type & protocol);
+['Inherited from socket_base.]
 
+[indexterm2 send_buffer_size..basic_socket_streambuf] Socket option for the send buffer size of a 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.
+ typedef implementation_defined send_buffer_size;
 
 
-[heading Parameters]
-
 
-[variablelist
+Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
+
+
+[heading Examples]
   
-[[io_service][The io\_service object that the stream socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
+Setting the option:
 
-[[protocol][An object specifying protocol parameters to be used.]]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_buffer_size option(8192);
+ socket.set_option(option);
 
-]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
+
+
+
 
 
 
@@ -20799,37 +21577,42 @@
 
 
 
-[section:overload3 basic_stream_socket::basic_stream_socket (3 of 4 overloads)]
+[section:send_low_watermark basic_socket_streambuf::send_low_watermark]
 
-Construct a basic_stream_socket, opening it and binding it to the given local endpoint.
 
- basic_stream_socket(
- boost::asio::io_service & io_service,
- const endpoint_type & endpoint);
+['Inherited from socket_base.]
 
+[indexterm2 send_low_watermark..basic_socket_streambuf] Socket option for the send low watermark.
 
-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.
+ typedef implementation_defined send_low_watermark;
 
 
-[heading Parameters]
-
 
-[variablelist
+Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
+
+
+[heading Examples]
   
-[[io_service][The io\_service object that the stream socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
+Setting the option:
 
-[[endpoint][An endpoint on the local machine to which the stream socket will be bound.]]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option(1024);
+ socket.set_option(option);
 
-]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option;
+ socket.get_option(option);
+ int size = option.value();
+
+
+
 
 
 
@@ -20837,72 +21620,60 @@
 
 
 
-[section:overload4 basic_stream_socket::basic_stream_socket (4 of 4 overloads)]
+[section:service basic_socket_streambuf::service]
 
-Construct a basic_stream_socket on an existing native socket.
 
- basic_stream_socket(
- boost::asio::io_service & io_service,
- const protocol_type & protocol,
- const native_type & native_socket);
+['Inherited from basic_io_object.]
 
+[indexterm2 service..basic_socket_streambuf] The service associated with the I/O object.
 
-This constructor creates a stream socket object to hold an existing native socket.
+ service_type & service;
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[io_service][The io\_service object that the stream socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
+[endsect]
 
-[[protocol][An object specifying protocol parameters to be used.]]
 
-[[native_socket][The new underlying socket implementation.]]
 
-]
+[section:service_type basic_socket_streambuf::service_type]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+['Inherited from basic_io_object.]
 
-]
+[indexterm2 service_type..basic_socket_streambuf] The type of the service that will be used to provide I/O operations.
 
+ typedef StreamSocketService service_type;
 
 
-[endsect]
 
 
 [endsect]
 
-[section:bind basic_stream_socket::bind]
 
-Bind the socket to the given local endpoint.
+[section:set_option basic_socket_streambuf::set_option]
 
- void ``[link boost_asio.reference.basic_stream_socket.bind.overload1 bind]``(
- const endpoint_type & endpoint);
+[indexterm2 set_option..basic_socket_streambuf] Set an option on the socket.
 
- boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.bind.overload2 bind]``(
- const endpoint_type & endpoint,
+ void ``[link boost_asio.reference.basic_socket_streambuf.set_option.overload1 set_option]``(
+ const SettableSocketOption & option);
+
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.set_option.overload2 set_option]``(
+ const SettableSocketOption & option,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_stream_socket::bind (1 of 2 overloads)]
+[section:overload1 basic_socket_streambuf::set_option (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Bind the socket to the given local endpoint.
+Set an option on the socket.
 
- void bind(
- const endpoint_type & endpoint);
+ void set_option(
+ const SettableSocketOption & option);
 
 
-This function binds the socket to the specified endpoint on the local machine.
+This function is used to set an option on the socket.
 
 
 [heading Parameters]
@@ -20910,7 +21681,7 @@
 
 [variablelist
   
-[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
+[[option][The new option value to be set on the socket.]]
 
 ]
 
@@ -20925,12 +21696,12 @@
 
 [heading Example]
   
-
+Setting the IPPROTO\_TCP/TCP\_NODELAY option:
 
    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));
+ ...
+ boost::asio::ip::tcp::no_delay option(true);
+ socket.set_option(option);
 
 
 
@@ -20941,19 +21712,19 @@
 
 
 
-[section:overload2 basic_stream_socket::bind (2 of 2 overloads)]
+[section:overload2 basic_socket_streambuf::set_option (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Bind the socket to the given local endpoint.
+Set an option on the socket.
 
- boost::system::error_code bind(
- const endpoint_type & endpoint,
+ boost::system::error_code set_option(
+ const SettableSocketOption & option,
       boost::system::error_code & ec);
 
 
-This function binds the socket to the specified endpoint on the local machine.
+This function is used to set an option on the socket.
 
 
 [heading Parameters]
@@ -20961,7 +21732,7 @@
 
 [variablelist
   
-[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
+[[option][The new option value to be set on the socket.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -20969,13 +21740,13 @@
 
 [heading Example]
   
-
+Setting the IPPROTO\_TCP/TCP\_NODELAY option:
 
    boost::asio::ip::tcp::socket socket(io_service);
- socket.open(boost::asio::ip::tcp::v4());
+ ...
+ boost::asio::ip::tcp::no_delay option(true);
    boost::system::error_code ec;
- socket.bind(boost::asio::ip::tcp::endpoint(
- boost::asio::ip::tcp::v4(), 12345), ec);
+ socket.set_option(option, ec);
    if (ec)
    {
      // An error occurred.
@@ -20992,72 +21763,70 @@
 [endsect]
 
 
-[section:broadcast basic_stream_socket::broadcast]
-
-
-['Inherited from socket_base.]
-
-Socket option to permit sending of broadcast messages.
-
- typedef implementation_defined broadcast;
-
-
-
-Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
+[section:setbuf basic_socket_streambuf::setbuf]
 
+[indexterm2 setbuf..basic_socket_streambuf]
 
-[heading Examples]
-
-Setting the option:
+ std::streambuf * setbuf(
+ char_type * s,
+ std::streamsize n);
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::broadcast option(true);
- socket.set_option(option);
 
 
+[endsect]
 
 
-Getting the current option value:
+[section:shutdown basic_socket_streambuf::shutdown]
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::broadcast option;
- socket.get_option(option);
- bool is_set = option.value();
+[indexterm2 shutdown..basic_socket_streambuf] Disable sends or receives on the socket.
 
+ void ``[link boost_asio.reference.basic_socket_streambuf.shutdown.overload1 shutdown]``(
+ shutdown_type what);
 
+ boost::system::error_code ``[link boost_asio.reference.basic_socket_streambuf.shutdown.overload2 shutdown]``(
+ shutdown_type what,
+ boost::system::error_code & ec);
 
 
+[section:overload1 basic_socket_streambuf::shutdown (1 of 2 overloads)]
 
 
-[endsect]
+['Inherited from basic_socket.]
 
+Disable sends or receives on the socket.
 
+ void shutdown(
+ shutdown_type what);
 
-[section:bytes_readable basic_stream_socket::bytes_readable]
 
+This function is used to disable send operations, receive operations, or both.
 
-['Inherited from socket_base.]
 
-IO control command to get the amount of data that can be read without blocking.
+[heading Parameters]
+
 
- typedef implementation_defined bytes_readable;
+[variablelist
+
+[[what][Determines what types of operation will no longer be allowed.]]
 
+]
 
+[heading Exceptions]
+
 
-Implements the FIONREAD IO control command.
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
 [heading Example]
   
+Shutting down the send side of the socket:
 
-
- boost::asio::ip::tcp::socket socket(io_service);
+ 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();
+ socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send);
 
 
 
@@ -21067,503 +21836,753 @@
 [endsect]
 
 
-[section:cancel basic_stream_socket::cancel]
-
-Cancel all asynchronous operations associated with the socket.
-
- void ``[link boost_asio.reference.basic_stream_socket.cancel.overload1 cancel]``();
-
- boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.cancel.overload2 cancel]``(
- boost::system::error_code & ec);
-
 
-[section:overload1 basic_stream_socket::cancel (1 of 2 overloads)]
+[section:overload2 basic_socket_streambuf::shutdown (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Cancel all asynchronous operations associated with the socket.
+Disable sends or receives on the socket.
 
- void cancel();
+ boost::system::error_code shutdown(
+ shutdown_type what,
+ boost::system::error_code & ec);
 
 
-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.
+This function is used to disable send operations, receive operations, or both.
 
 
-[heading Exceptions]
+[heading Parameters]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure.]]
-
-]
+[[what][Determines what types of operation will no longer be allowed.]]
 
-[heading Remarks]
-
-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:
+[[ec][Set to indicate what error occurred, if any.]]
 
-* It will only cancel asynchronous operations that were initiated in the current thread.
+]
 
-* 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.
+[heading Example]
+
+Shutting down the send side of the socket:
 
-For portable cancellation, consider using one of the following alternatives:
+ 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.
+ }
 
 
-* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
 
-* 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.
 
 
 [endsect]
 
 
+[endsect]
 
-[section:overload2 basic_stream_socket::cancel (2 of 2 overloads)]
 
+[section:shutdown_type basic_socket_streambuf::shutdown_type]
 
-['Inherited from basic_socket.]
 
-Cancel all asynchronous operations associated with the socket.
+['Inherited from socket_base.]
 
- boost::system::error_code cancel(
- boost::system::error_code & ec);
+[indexterm2 shutdown_type..basic_socket_streambuf] Different ways a socket may be shutdown.
 
+ enum shutdown_type
 
-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.
+[heading Values]
+[variablelist
 
+ [
+ [shutdown_receive]
+ [Shutdown the receive side of the socket. ]
+ ]
 
-[heading Parameters]
-
+ [
+ [shutdown_send]
+ [Shutdown the send side of the socket. ]
+ ]
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
+ [
+ [shutdown_both]
+ [Shutdown both send and receive on the socket. ]
+ ]
 
 ]
 
-[heading Remarks]
-
-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:
-
-* It will only cancel asynchronous operations that were initiated in the current thread.
 
-* 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:
+[endsect]
 
 
-* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
 
-* Use the close() function to simultaneously cancel the outstanding operations and close the socket.
+[section:sync basic_socket_streambuf::sync]
 
-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.
+[indexterm2 sync..basic_socket_streambuf]
 
+ int sync();
 
-[endsect]
 
 
 [endsect]
 
-[section:close basic_stream_socket::close]
-
-Close the socket.
 
- void ``[link boost_asio.reference.basic_stream_socket.close.overload1 close]``();
 
- boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.close.overload2 close]``(
- boost::system::error_code & ec);
+[section:underflow basic_socket_streambuf::underflow]
 
+[indexterm2 underflow..basic_socket_streambuf]
 
-[section:overload1 basic_stream_socket::close (1 of 2 overloads)]
+ int_type underflow();
 
 
-['Inherited from basic_socket.]
 
-Close the socket.
+[endsect]
 
- void close();
 
 
-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.
+[section:_basic_socket_streambuf basic_socket_streambuf::~basic_socket_streambuf]
 
+[indexterm2 ~basic_socket_streambuf..basic_socket_streambuf] Destructor flushes buffered data.
 
-[heading Exceptions]
-
+ virtual ~basic_socket_streambuf();
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
 
-[heading Remarks]
-
-For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
+[endsect]
 
 
 
 [endsect]
 
+[section:basic_stream_socket basic_stream_socket]
 
+Provides stream-oriented socket functionality.
 
-[section:overload2 basic_stream_socket::close (2 of 2 overloads)]
-
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.StreamSocketService StreamSocketService]`` = stream_socket_service<Protocol>>
+ class basic_stream_socket :
+ public basic_socket< Protocol, StreamSocketService >
 
-['Inherited from basic_socket.]
 
-Close the socket.
+[heading Types]
+[table
+ [[Name][Description]]
 
- boost::system::error_code close(
- boost::system::error_code & ec);
+ [
 
+ [[link boost_asio.reference.basic_stream_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
 
-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.
+ [
 
+ [[link boost_asio.reference.basic_stream_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
 
-[heading Parameters]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.basic_stream_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
   
-[[ec][Set to indicate what error occurred, if any.]]
+ ]
 
-]
+ [
 
-[heading Example]
+ [[link boost_asio.reference.basic_stream_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
   
+ ]
 
+ [
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::system::error_code ec;
- socket.close(ec);
- if (ec)
- {
- // An error occurred.
- }
-
+ [[link boost_asio.reference.basic_stream_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_stream_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
 
-[heading Remarks]
-
-For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
+ [
 
+ [[link boost_asio.reference.basic_stream_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.basic_stream_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.basic_stream_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
 
-[section:connect basic_stream_socket::connect]
+ [
 
-Connect the socket to the specified endpoint.
+ [[link boost_asio.reference.basic_stream_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
 
- void ``[link boost_asio.reference.basic_stream_socket.connect.overload1 connect]``(
- const endpoint_type & peer_endpoint);
+ [
 
- boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.connect.overload2 connect]``(
- const endpoint_type & peer_endpoint,
- boost::system::error_code & ec);
+ [[link boost_asio.reference.basic_stream_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
 
+ [
 
-[section:overload1 basic_stream_socket::connect (1 of 2 overloads)]
+ [[link boost_asio.reference.basic_stream_socket.native_type [*native_type]]]
+ [The native representation of a socket. ]
+
+ ]
 
+ [
 
-['Inherited from basic_socket.]
+ [[link boost_asio.reference.basic_stream_socket.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
 
-Connect the socket to the specified endpoint.
+ [
 
- void connect(
- const endpoint_type & peer_endpoint);
+ [[link boost_asio.reference.basic_stream_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
 
+ [
 
-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.
+ [[link boost_asio.reference.basic_stream_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+ [
 
+ [[link boost_asio.reference.basic_stream_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
 
-[heading Parameters]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.basic_stream_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
   
-[[peer_endpoint][The remote endpoint to which the socket will be connected.]]
+ ]
 
-]
-
-[heading Exceptions]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.basic_stream_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
   
-[[boost::system::system_error][Thrown on failure.]]
+ ]
 
-]
+ [
 
-[heading Example]
+ [[link boost_asio.reference.basic_stream_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
   
+ ]
 
+ [
 
- 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);
-
-
-
-
-
-
-[endsect]
-
-
-
-[section:overload2 basic_stream_socket::connect (2 of 2 overloads)]
-
+ [[link boost_asio.reference.basic_stream_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
 
-['Inherited from basic_socket.]
+ [
 
-Connect the socket to the specified endpoint.
+ [[link boost_asio.reference.basic_stream_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
 
- boost::system::error_code connect(
- const endpoint_type & peer_endpoint,
- boost::system::error_code & ec);
+]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-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.
+ [
+ [[link boost_asio.reference.basic_stream_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_send [*async_send]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.basic_stream_socket [*basic_stream_socket]]]
+ [Construct a basic_stream_socket without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.native [*native]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.read_some [*read_some]]]
+ [Read some data from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.receive [*receive]]]
+ [Receive some data on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.send [*send]]]
+ [Send some data on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.write_some [*write_some]]]
+ [Write some data to the socket. ]
+ ]
+
+]
 
-The socket is automatically opened if it is not already open. If the connect fails, and the socket was automatically opened, the socket is returned to the closed state.
+[heading Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.basic_stream_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
 
-[heading Parameters]
-
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
 
-[variablelist
-
-[[peer_endpoint][The remote endpoint to which the socket will be connected.]]
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
 
-[[ec][Set to indicate what error occurred, if any.]]
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
 
 ]
 
-[heading Example]
-
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.basic_stream_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
 
- 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.
- }
+ [
+ [[link boost_asio.reference.basic_stream_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
 
+]
 
+The basic_stream_socket class template provides asynchronous and blocking stream-oriented socket functionality.
 
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
+[*Shared] [*objects:] Unsafe.
 
-[endsect]
 
+[section:assign basic_stream_socket::assign]
 
-[endsect]
+[indexterm2 assign..basic_stream_socket] Assign an existing native socket to the socket.
 
+ void ``[link boost_asio.reference.basic_stream_socket.assign.overload1 assign]``(
+ const protocol_type & protocol,
+ const native_type & native_socket);
 
-[section:debug basic_stream_socket::debug]
+ boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.assign.overload2 assign]``(
+ const protocol_type & protocol,
+ const native_type & native_socket,
+ boost::system::error_code & ec);
 
 
-['Inherited from socket_base.]
+[section:overload1 basic_stream_socket::assign (1 of 2 overloads)]
 
-Socket option to enable socket-level debugging.
 
- typedef implementation_defined debug;
+['Inherited from basic_socket.]
 
+Assign an existing native socket to the socket.
 
+ void assign(
+ const protocol_type & protocol,
+ const native_type & native_socket);
 
-Implements the SOL\_SOCKET/SO\_DEBUG socket option.
 
 
-[heading Examples]
-
-Setting the option:
+[endsect]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::debug option(true);
- socket.set_option(option);
 
 
+[section:overload2 basic_stream_socket::assign (2 of 2 overloads)]
 
 
-Getting the current option value:
+['Inherited from basic_socket.]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::debug option;
- socket.get_option(option);
- bool is_set = option.value();
+Assign an existing native socket to the socket.
 
+ boost::system::error_code assign(
+ const protocol_type & protocol,
+ const native_type & native_socket,
+ boost::system::error_code & ec);
 
 
 
+[endsect]
 
 
 [endsect]
 
 
+[section:async_connect basic_stream_socket::async_connect]
 
-[section:do_not_route basic_stream_socket::do_not_route]
 
+['Inherited from basic_socket.]
 
-['Inherited from socket_base.]
+[indexterm2 async_connect..basic_stream_socket] Start an asynchronous connect.
 
-Socket option to prevent routing, use local interfaces only.
+ void async_connect(
+ const endpoint_type & peer_endpoint,
+ ConnectHandler handler);
 
- typedef implementation_defined do_not_route;
 
+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.
 
-Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
+[[peer_endpoint][The remote endpoint to which the socket will be connected. Copies will be made of the endpoint object as required.]]
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::do_not_route option(true);
- socket.set_option(option);
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error // Result of operation
+ );
+``
+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().]]
 
+]
 
+[heading Example]
+
 
 
-Getting the current option value:
+ void connect_handler(const boost::system::error_code& error)
+ {
+ if (!error)
+ {
+ // Connect succeeded.
+ }
+ }
 
- 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();
-
 
+ 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);
 
 
 
 
-[endsect]
 
 
+[endsect]
 
-[section:enable_connection_aborted basic_stream_socket::enable_connection_aborted]
 
 
-['Inherited from socket_base.]
+[section:async_read_some basic_stream_socket::async_read_some]
 
-Socket option to report aborted connections on accept.
+[indexterm2 async_read_some..basic_stream_socket] Start an asynchronous read.
 
- typedef implementation_defined enable_connection_aborted;
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
 
 
+This function is used to asynchronously read data from the stream socket. The function call always returns immediately.
 
-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.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
-
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::enable_connection_aborted option(true);
- acceptor.set_option(option);
-
+[[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.]]
 
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes read.
+ );
+``
+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().]]
 
+]
 
-Getting the current option value:
+[heading Remarks]
+
+The read operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
 
- 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();
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
+ socket.async_read_some(boost::asio::buffer(data, size), handler);
 
 
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
 [endsect]
 
 
+[section:async_receive basic_stream_socket::async_receive]
 
-[section:endpoint_type basic_stream_socket::endpoint_type]
-
-The endpoint type.
-
- typedef Protocol::endpoint endpoint_type;
-
+[indexterm2 async_receive..basic_stream_socket] Start an asynchronous receive.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void ``[link boost_asio.reference.basic_stream_socket.async_receive.overload1 async_receive]``(
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void ``[link boost_asio.reference.basic_stream_socket.async_receive.overload2 async_receive]``(
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
+ ReadHandler handler);
 
-[endsect]
 
+[section:overload1 basic_stream_socket::async_receive (1 of 2 overloads)]
 
+Start an asynchronous receive.
 
-[section:get_io_service basic_stream_socket::get_io_service]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_receive(
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
 
 
-['Inherited from basic_io_object.]
+This function is used to asynchronously receive data from the stream socket. The function call always returns immediately.
 
-Get the io_service associated with the object.
 
- boost::asio::io_service & get_io_service();
+[heading Parameters]
+
 
+[variablelist
+
+[[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.]]
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes received.
+ );
+``
+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().]]
 
+]
 
-[heading Return Value]
+[heading Remarks]
       
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
-
-
+The receive operation may not receive all of the requested number of bytes. Consider using the
+[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is received before the asynchronous operation completes.
 
-[endsect]
+[heading Example]
+
+To receive into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
+ socket.async_receive(boost::asio::buffer(data, size), handler);
 
-[section:get_option basic_stream_socket::get_option]
 
-Get an option from the socket.
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on receiving into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
- void ``[link boost_asio.reference.basic_stream_socket.get_option.overload1 get_option]``(
- GettableSocketOption & option) const;
 
- boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.get_option.overload2 get_option]``(
- GettableSocketOption & option,
- boost::system::error_code & ec) const;
 
+[endsect]
 
-[section:overload1 basic_stream_socket::get_option (1 of 2 overloads)]
 
 
-['Inherited from basic_socket.]
+[section:overload2 basic_stream_socket::async_receive (2 of 2 overloads)]
 
-Get an option from the socket.
+Start an asynchronous receive.
 
- void get_option(
- GettableSocketOption & option) const;
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_receive(
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
+ ReadHandler handler);
 
 
-This function is used to get the current value of an option on the socket.
+This function is used to asynchronously receive data from the stream socket. The function call always returns immediately.
 
 
 [heading Parameters]
@@ -21571,51 +22590,77 @@
 
 [variablelist
   
-[[option][The option value to be obtained from the socket.]]
-
-]
+[[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.]]
 
-[heading Exceptions]
-
+[[flags][Flags specifying how the receive call is to be made.]]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes received.
+ );
+``
+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().]]
 
 ]
 
+[heading Remarks]
+
+The receive operation may not receive all of the requested number of bytes. Consider using the
+[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is received before the asynchronous operation completes.
+
 [heading Example]
   
-Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
+To receive into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
- 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();
+ socket.async_receive(boost::asio::buffer(data, size), 0, handler);
 
 
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on receiving into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
+[endsect]
+
 
 [endsect]
 
+[section:async_send basic_stream_socket::async_send]
 
+[indexterm2 async_send..basic_stream_socket] Start an asynchronous send.
 
-[section:overload2 basic_stream_socket::get_option (2 of 2 overloads)]
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void ``[link boost_asio.reference.basic_stream_socket.async_send.overload1 async_send]``(
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void ``[link boost_asio.reference.basic_stream_socket.async_send.overload2 async_send]``(
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ WriteHandler handler);
 
 
-['Inherited from basic_socket.]
+[section:overload1 basic_stream_socket::async_send (1 of 2 overloads)]
 
-Get an option from the socket.
+Start an asynchronous send.
 
- boost::system::error_code get_option(
- GettableSocketOption & option,
- boost::system::error_code & ec) const;
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_send(
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
 
 
-This function is used to get the current value of an option on the socket.
+This function is used to asynchronously send data on the stream socket. The function call always returns immediately.
 
 
 [heading Parameters]
@@ -21623,124 +22668,266 @@
 
 [variablelist
   
-[[option][The option value to be obtained from the socket.]]
+[[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.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes sent.
+ );
+``
+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().]]
 
 ]
 
+[heading Remarks]
+
+The send operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
+
 [heading Example]
   
-Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
-
- 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();
+To send a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
+ socket.async_send(boost::asio::buffer(data, size), handler);
 
 
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on sending multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
 [endsect]
 
 
-[endsect]
 
+[section:overload2 basic_stream_socket::async_send (2 of 2 overloads)]
 
-[section:implementation basic_stream_socket::implementation]
+Start an asynchronous send.
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_send(
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ WriteHandler handler);
 
-['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+This function is used to asynchronously send data on the stream socket. The function call always returns immediately.
 
- implementation_type implementation;
+
+[heading Parameters]
+
+
+[variablelist
+
+[[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.]]
+
+[[flags][Flags specifying how the send call is to be made.]]
+
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes sent.
+ );
+``
+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().]]
+
+]
+
+[heading Remarks]
+
+The send operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
+
+[heading Example]
+
+To send a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ socket.async_send(boost::asio::buffer(data, size), 0, handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on sending multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:implementation_type basic_stream_socket::implementation_type]
 
+[section:async_write_some basic_stream_socket::async_write_some]
 
-['Inherited from basic_io_object.]
+[indexterm2 async_write_some..basic_stream_socket] Start an asynchronous write.
 
-The underlying implementation type of I/O object.
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
 
- typedef service_type::implementation_type implementation_type;
+
+This function is used to asynchronously write data to the stream socket. The function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[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.]]
+
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes written.
+ );
+``
+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().]]
+
+]
+
+[heading Remarks]
+
+The write operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ socket.async_write_some(boost::asio::buffer(data, size), handler);
 
 
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
 
 
 [endsect]
 
 
-[section:io_control basic_stream_socket::io_control]
+[section:at_mark basic_stream_socket::at_mark]
 
-Perform an IO control command on the socket.
+[indexterm2 at_mark..basic_stream_socket] Determine whether the socket is at the out-of-band data mark.
 
- void ``[link boost_asio.reference.basic_stream_socket.io_control.overload1 io_control]``(
- IoControlCommand & command);
+ bool ``[link boost_asio.reference.basic_stream_socket.at_mark.overload1 at_mark]``() const;
 
- boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.io_control.overload2 io_control]``(
- IoControlCommand & command,
- boost::system::error_code & ec);
+ bool ``[link boost_asio.reference.basic_stream_socket.at_mark.overload2 at_mark]``(
+ boost::system::error_code & ec) const;
 
 
-[section:overload1 basic_stream_socket::io_control (1 of 2 overloads)]
+[section:overload1 basic_stream_socket::at_mark (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Perform an IO control command on the socket.
+Determine whether the socket is at the out-of-band data mark.
 
- void io_control(
- IoControlCommand & command);
+ bool at_mark() const;
 
 
-This function is used to execute an IO control command on the socket.
+This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
 
 
-[heading Parameters]
+[heading Return Value]
+
+A bool indicating whether the socket is at the out-of-band data mark.
+
+[heading Exceptions]
     
 
 [variablelist
   
-[[command][The IO control command to be performed on the socket.]]
+[[boost::system::system_error][Thrown on failure. ]]
 
 ]
 
-[heading Exceptions]
+
+
+[endsect]
+
+
+
+[section:overload2 basic_stream_socket::at_mark (2 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Determine whether the socket is at the out-of-band data mark.
+
+ bool at_mark(
+ boost::system::error_code & ec) const;
+
+
+This function is used to check whether the socket input is currently positioned at the out-of-band data mark.
+
+
+[heading Parameters]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure.]]
+[[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Example]
-
-Getting the number of bytes ready to read:
+[heading Return Value]
+
+A bool indicating whether the socket is at the out-of-band data mark.
 
- 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();
 
 
+[endsect]
+
+
+[endsect]
+
+[section:available basic_stream_socket::available]
+
+[indexterm2 available..basic_stream_socket] Determine the number of bytes available for reading.
+
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.available.overload1 available]``() const;
+
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.available.overload2 available]``(
+ boost::system::error_code & ec) const;
+
+
+[section:overload1 basic_stream_socket::available (1 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Determine the number of bytes available for reading.
+
+ std::size_t available() const;
+
+
+This function is used to determine the number of bytes that may be read without blocking.
+
+
+[heading Return Value]
+
+The number of bytes that may be read without blocking, or 0 if an error occurs.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -21748,19 +22935,18 @@
 
 
 
-[section:overload2 basic_stream_socket::io_control (2 of 2 overloads)]
+[section:overload2 basic_stream_socket::available (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Perform an IO control command on the socket.
+Determine the number of bytes available for reading.
 
- boost::system::error_code io_control(
- IoControlCommand & command,
- boost::system::error_code & ec);
+ std::size_t available(
+ boost::system::error_code & ec) const;
 
 
-This function is used to execute an IO control command on the socket.
+This function is used to determine the number of bytes that may be read without blocking.
 
 
 [heading Parameters]
@@ -21768,54 +22954,61 @@
 
 [variablelist
   
-[[command][The IO control command to be performed on the socket.]]
-
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Example]
-
-Getting the number of bytes ready to read:
+[heading Return Value]
+
+The number of bytes that may be read without blocking, or 0 if an error occurs.
 
- 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();
 
 
+[endsect]
 
 
+[endsect]
 
+[section:basic_stream_socket basic_stream_socket::basic_stream_socket]
 
-[endsect]
+[indexterm2 basic_stream_socket..basic_stream_socket] Construct a basic_stream_socket without opening it.
 
+ ``[link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload1 basic_stream_socket]``(
+ boost::asio::io_service & io_service);
 
-[endsect]
+ ``[link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload2 basic_stream_socket]``(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol);
 
+ ``[link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload3 basic_stream_socket]``(
+ boost::asio::io_service & io_service,
+ const endpoint_type & endpoint);
 
-[section:io_service basic_stream_socket::io_service]
+ ``[link boost_asio.reference.basic_stream_socket.basic_stream_socket.overload4 basic_stream_socket]``(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol,
+ const native_type & native_socket);
 
 
-['Inherited from basic_io_object.]
+[section:overload1 basic_stream_socket::basic_stream_socket (1 of 4 overloads)]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+Construct a basic_stream_socket without opening it.
 
- boost::asio::io_service & io_service();
+ basic_stream_socket(
+ boost::asio::io_service & io_service);
 
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+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.
 
 
-[heading Return Value]
-
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the stream socket will use to dispatch handlers for any asynchronous operations performed on the socket. ]]
+
+]
 
 
 
@@ -21823,133 +23016,158 @@
 
 
 
-[section:is_open basic_stream_socket::is_open]
+[section:overload2 basic_stream_socket::basic_stream_socket (2 of 4 overloads)]
 
+Construct and open a basic_stream_socket.
 
-['Inherited from basic_socket.]
+ basic_stream_socket(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol);
 
-Determine whether the socket is open.
 
- bool is_open() const;
+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.
 
 
+[heading Parameters]
+
 
-[endsect]
+[variablelist
+
+[[io_service][The io\_service object that the stream socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
 
+[[protocol][An object specifying protocol parameters to be used.]]
 
+]
 
-[section:keep_alive basic_stream_socket::keep_alive]
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
-['Inherited from socket_base.]
+]
 
-Socket option to send keep-alives.
 
- typedef implementation_defined keep_alive;
 
+[endsect]
 
 
-Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
 
+[section:overload3 basic_stream_socket::basic_stream_socket (3 of 4 overloads)]
 
-[heading Examples]
-
-Setting the option:
+Construct a basic_stream_socket, opening it and binding it to the given local endpoint.
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::keep_alive option(true);
- socket.set_option(option);
+ basic_stream_socket(
+ boost::asio::io_service & io_service,
+ const endpoint_type & 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.
 
 
-Getting the current option value:
+[heading Parameters]
+
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::keep_alive option;
- socket.get_option(option);
- bool is_set = option.value();
+[variablelist
+
+[[io_service][The io\_service object that the stream socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
 
+[[endpoint][An endpoint on the local machine to which the stream socket will be bound.]]
 
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
-[endsect]
 
 
+[endsect]
 
-[section:linger basic_stream_socket::linger]
 
 
-['Inherited from socket_base.]
+[section:overload4 basic_stream_socket::basic_stream_socket (4 of 4 overloads)]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
+Construct a basic_stream_socket on an existing native socket.
 
- typedef implementation_defined linger;
+ basic_stream_socket(
+ boost::asio::io_service & io_service,
+ const protocol_type & protocol,
+ const native_type & native_socket);
 
 
+This constructor creates a stream socket object to hold an existing native socket.
 
-Implements the SOL\_SOCKET/SO\_LINGER socket option.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::linger option(true, 30);
- socket.set_option(option);
+[[io_service][The io\_service object that the stream socket will use to dispatch handlers for any asynchronous operations performed on the socket.]]
 
+[[protocol][An object specifying protocol parameters to be used.]]
 
+[[native_socket][The new underlying socket implementation.]]
 
+]
 
-Getting the current option value:
+[heading Exceptions]
+
 
- 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();
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
+[endsect]
 
 
 [endsect]
 
+[section:bind basic_stream_socket::bind]
 
-[section:local_endpoint basic_stream_socket::local_endpoint]
-
-Get the local endpoint of the socket.
+[indexterm2 bind..basic_stream_socket] Bind the socket to the given local endpoint.
 
- endpoint_type ``[link boost_asio.reference.basic_stream_socket.local_endpoint.overload1 local_endpoint]``() const;
+ void ``[link boost_asio.reference.basic_stream_socket.bind.overload1 bind]``(
+ const endpoint_type & endpoint);
 
- endpoint_type ``[link boost_asio.reference.basic_stream_socket.local_endpoint.overload2 local_endpoint]``(
- boost::system::error_code & ec) const;
+ boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.bind.overload2 bind]``(
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
 
 
-[section:overload1 basic_stream_socket::local_endpoint (1 of 2 overloads)]
+[section:overload1 basic_stream_socket::bind (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Get the local endpoint of the socket.
+Bind the socket to the given local endpoint.
 
- endpoint_type local_endpoint() const;
+ void bind(
+ const endpoint_type & endpoint);
 
 
-This function is used to obtain the locally bound endpoint of the socket.
+This function binds the socket to the specified endpoint on the local machine.
 
 
-[heading Return Value]
-
-An object that represents the local endpoint of the socket.
+[heading Parameters]
+
+
+[variablelist
+
+[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
+
+]
 
 [heading Exceptions]
     
@@ -21965,8 +23183,9 @@
 
 
    boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
+ socket.open(boost::asio::ip::tcp::v4());
+ socket.bind(boost::asio::ip::tcp::endpoint(
+ boost::asio::ip::tcp::v4(), 12345));
 
 
 
@@ -21977,18 +23196,19 @@
 
 
 
-[section:overload2 basic_stream_socket::local_endpoint (2 of 2 overloads)]
+[section:overload2 basic_stream_socket::bind (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Get the local endpoint of the socket.
+Bind the socket to the given local endpoint.
 
- endpoint_type local_endpoint(
- boost::system::error_code & ec) const;
+ boost::system::error_code bind(
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
 
 
-This function is used to obtain the locally bound endpoint of the socket.
+This function binds the socket to the specified endpoint on the local machine.
 
 
 [heading Parameters]
@@ -21996,22 +23216,21 @@
 
 [variablelist
   
+[[endpoint][An endpoint on the local machine to which the socket will be bound.]]
+
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Return Value]
-
-An object that represents the local endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
-
 [heading Example]
   
 
 
    boost::asio::ip::tcp::socket socket(io_service);
- ...
+ socket.open(boost::asio::ip::tcp::v4());
    boost::system::error_code ec;
- boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint(ec);
+ socket.bind(boost::asio::ip::tcp::endpoint(
+ boost::asio::ip::tcp::v4(), 12345), ec);
    if (ec)
    {
      // An error occurred.
@@ -22028,533 +23247,299 @@
 [endsect]
 
 
-[section:lowest_layer basic_stream_socket::lowest_layer]
-
+[section:broadcast basic_stream_socket::broadcast]
 
-['Inherited from basic_socket.]
 
-Get a reference to the lowest layer.
+['Inherited from socket_base.]
 
- lowest_layer_type & lowest_layer();
+[indexterm2 broadcast..basic_stream_socket] Socket option to permit sending of broadcast messages.
 
+ typedef implementation_defined broadcast;
 
-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.
 
 
-[heading Return Value]
-
-A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
 
 
+[heading Examples]
+
+Setting the option:
 
-[endsect]
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::broadcast option(true);
+ socket.set_option(option);
 
 
 
-[section:lowest_layer_type basic_stream_socket::lowest_layer_type]
 
+Getting the current option value:
 
-['Inherited from basic_socket.]
-
-A basic_socket is always the lowest layer.
-
- typedef basic_socket< Protocol, StreamSocketService > lowest_layer_type;
-
-
-[heading Types]
-[table
- [[Name][Description]]
-
- [
-
- [[link boost_asio.reference.basic_socket.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::broadcast option;
+ socket.get_option(option);
+ bool is_set = option.value();
 
- [
 
- [[link boost_asio.reference.basic_socket.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_socket.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
 
- [
+[section:bytes_readable basic_stream_socket::bytes_readable]
 
- [[link boost_asio.reference.basic_socket.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
 
- [
+['Inherited from socket_base.]
 
- [[link boost_asio.reference.basic_socket.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
-
- ]
+[indexterm2 bytes_readable..basic_stream_socket] IO control command to get the amount of data that can be read without blocking.
 
- [
+ typedef implementation_defined bytes_readable;
 
- [[link boost_asio.reference.basic_socket.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket.lowest_layer_type [*lowest_layer_type]]]
- [A basic_socket is always the lowest layer. ]
-
- ]
+Implements the FIONREAD IO control command.
 
- [
 
- [[link boost_asio.reference.basic_socket.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
+[heading Example]
   
- ]
-
- [
 
- [[link boost_asio.reference.basic_socket.native_type [*native_type]]]
- [The native representation of a socket. ]
-
- ]
 
- [
+ 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();
 
- [[link boost_asio.reference.basic_socket.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.basic_socket.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
-
- ]
 
- [
+[section:cancel basic_stream_socket::cancel]
 
- [[link boost_asio.reference.basic_socket.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
-
- ]
+[indexterm2 cancel..basic_stream_socket] Cancel all asynchronous operations associated with the socket.
 
- [
+ void ``[link boost_asio.reference.basic_stream_socket.cancel.overload1 cancel]``();
 
- [[link boost_asio.reference.basic_socket.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
-
- ]
+ boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.cancel.overload2 cancel]``(
+ boost::system::error_code & ec);
 
- [
 
- [[link boost_asio.reference.basic_socket.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
-
- ]
+[section:overload1 basic_stream_socket::cancel (1 of 2 overloads)]
 
- [
 
- [[link boost_asio.reference.basic_socket.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
+['Inherited from basic_socket.]
 
- [
+Cancel all asynchronous operations associated with the socket.
 
- [[link boost_asio.reference.basic_socket.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
-
- ]
+ void cancel();
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+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.
 
- [
- [[link boost_asio.reference.basic_socket.assign [*assign]]]
- [Assign an existing native socket to the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.available [*available]]]
- [Determine the number of bytes available for reading. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.basic_socket [*basic_socket]]]
- [Construct a basic_socket without opening it. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.bind [*bind]]]
- [Bind the socket to the given local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.close [*close]]]
- [Close the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.connect [*connect]]]
- [Connect the socket to the specified endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.get_option [*get_option]]]
- [Get an option from the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.is_open [*is_open]]]
- [Determine whether the socket is open. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.local_endpoint [*local_endpoint]]]
- [Get the local endpoint of the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.native [*native]]]
- [Get the native socket representation. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.open [*open]]]
- [Open the socket using the specified protocol. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint of the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.set_option [*set_option]]]
- [Set an option on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
- ]
-
-]
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
+[heading Exceptions]
+
 
- [
- [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
- [Protected destructor to prevent deletion through this type. ]
- ]
+[variablelist
   
-]
-
-[heading Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_socket.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
- ]
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
-[heading Protected Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket.service [*service]]]
- [The service associated with the I/O object. ]
- ]
+[heading Remarks]
+
+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:
 
-]
+* It will only cancel asynchronous operations that were initiated in the current thread.
 
-The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
+* 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:
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
 
+* 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.
 
 
 [endsect]
 
 
 
-[section:max_connections basic_stream_socket::max_connections]
-
-
-['Inherited from socket_base.]
-
-The maximum length of the queue of pending incoming connections.
-
- static const int max_connections = implementation_defined;
-
-
-
-[endsect]
-
+[section:overload2 basic_stream_socket::cancel (2 of 2 overloads)]
 
 
-[section:message_do_not_route basic_stream_socket::message_do_not_route]
+['Inherited from basic_socket.]
 
+Cancel all asynchronous operations associated with the socket.
 
-['Inherited from socket_base.]
+ boost::system::error_code cancel(
+ boost::system::error_code & ec);
 
-Specify that the data should not be subject to routing.
 
- static const int message_do_not_route = implementation_defined;
+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.
 
 
+[heading Parameters]
+
 
-[endsect]
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
+[heading Remarks]
+
+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:
 
-[section:message_flags basic_stream_socket::message_flags]
+* It will only cancel asynchronous operations that were initiated in the current thread.
 
+* 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.
 
-['Inherited from socket_base.]
+For portable cancellation, consider using one of the following alternatives:
 
-Bitmask type for flags that can be passed to send and receive operations.
 
- typedef int message_flags;
+* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.
 
+* 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.
 
 
 [endsect]
 
 
-
-[section:message_out_of_band basic_stream_socket::message_out_of_band]
-
-
-['Inherited from socket_base.]
-
-Process out-of-band data.
-
- static const int message_out_of_band = implementation_defined;
-
-
-
 [endsect]
 
+[section:close basic_stream_socket::close]
 
+[indexterm2 close..basic_stream_socket] Close the socket.
 
-[section:message_peek basic_stream_socket::message_peek]
-
-
-['Inherited from socket_base.]
-
-Peek at incoming data without removing it from the input queue.
-
- static const int message_peek = implementation_defined;
-
-
-
-[endsect]
+ void ``[link boost_asio.reference.basic_stream_socket.close.overload1 close]``();
 
+ boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.close.overload2 close]``(
+ boost::system::error_code & ec);
 
 
-[section:native basic_stream_socket::native]
+[section:overload1 basic_stream_socket::close (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Get the native socket representation.
-
- native_type native();
+Close the socket.
 
+ void close();
 
-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.
 
+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.
 
-[endsect]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
-[section:native_type basic_stream_socket::native_type]
+]
 
-The native representation of a socket.
+[heading Remarks]
+
+For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
 
- typedef StreamSocketService::native_type native_type;
 
 
+[endsect]
 
 
-[endsect]
 
+[section:overload2 basic_stream_socket::close (2 of 2 overloads)]
 
 
-[section:non_blocking_io basic_stream_socket::non_blocking_io]
+['Inherited from basic_socket.]
 
+Close the socket.
 
-['Inherited from socket_base.]
+ boost::system::error_code close(
+ boost::system::error_code & ec);
 
-IO control command to set the blocking mode of the socket.
 
- typedef implementation_defined non_blocking_io;
+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.
 
 
+[heading Parameters]
+
 
-Implements the FIONBIO IO control command.
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
 [heading Example]
   
 
 
- boost::asio::ip::tcp::socket socket(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::non_blocking_io command(true);
- socket.io_control(command);
+ boost::system::error_code ec;
+ socket.close(ec);
+ if (ec)
+ {
+ // An error occurred.
+ }
 
 
 
 
+[heading Remarks]
+
+For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
+
 
 
 [endsect]
 
 
-[section:open basic_stream_socket::open]
+[endsect]
 
-Open the socket using the specified protocol.
+[section:connect basic_stream_socket::connect]
 
- void ``[link boost_asio.reference.basic_stream_socket.open.overload1 open]``(
- const protocol_type & protocol = protocol_type());
+[indexterm2 connect..basic_stream_socket] Connect the socket to the specified endpoint.
 
- boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.open.overload2 open]``(
- const protocol_type & protocol,
+ void ``[link boost_asio.reference.basic_stream_socket.connect.overload1 connect]``(
+ const endpoint_type & peer_endpoint);
+
+ boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.connect.overload2 connect]``(
+ const endpoint_type & peer_endpoint,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_stream_socket::open (1 of 2 overloads)]
+[section:overload1 basic_stream_socket::connect (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Open the socket using the specified protocol.
+Connect the socket to the specified endpoint.
 
- void open(
- const protocol_type & protocol = protocol_type());
+ void connect(
+ const endpoint_type & peer_endpoint);
 
 
-This function opens the socket so that it will use the specified protocol.
+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.
 
 
 [heading Parameters]
@@ -22562,7 +23547,7 @@
 
 [variablelist
   
-[[protocol][An object specifying protocol parameters to be used.]]
+[[peer_endpoint][The remote endpoint to which the socket will be connected.]]
 
 ]
 
@@ -22580,7 +23565,9 @@
 
 
    boost::asio::ip::tcp::socket socket(io_service);
- socket.open(boost::asio::ip::tcp::v4());
+ boost::asio::ip::tcp::endpoint endpoint(
+ boost::asio::ip::address::from_string("1.2.3.4"), 12345);
+ socket.connect(endpoint);
 
 
 
@@ -22591,19 +23578,21 @@
 
 
 
-[section:overload2 basic_stream_socket::open (2 of 2 overloads)]
+[section:overload2 basic_stream_socket::connect (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Open the socket using the specified protocol.
+Connect the socket to the specified endpoint.
 
- boost::system::error_code open(
- const protocol_type & protocol,
+ boost::system::error_code connect(
+ const endpoint_type & peer_endpoint,
       boost::system::error_code & ec);
 
 
-This function opens the socket so that it will use the specified protocol.
+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.
 
 
 [heading Parameters]
@@ -22611,7 +23600,7 @@
 
 [variablelist
   
-[[protocol][An object specifying which protocol is to be used.]]
+[[peer_endpoint][The remote endpoint to which the socket will be connected.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -22622,8 +23611,10 @@
 
 
    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.open(boost::asio::ip::tcp::v4(), ec);
+ socket.connect(endpoint, ec);
    if (ec)
    {
      // An error occurred.
@@ -22640,84 +23631,85 @@
 [endsect]
 
 
-[section:protocol_type basic_stream_socket::protocol_type]
+[section:debug basic_stream_socket::debug]
 
-The protocol type.
 
- typedef Protocol protocol_type;
+['Inherited from socket_base.]
 
+[indexterm2 debug..basic_stream_socket] Socket option to enable socket-level debugging.
 
+ typedef implementation_defined debug;
 
 
-[endsect]
 
+Implements the SOL\_SOCKET/SO\_DEBUG socket option.
 
-[section:read_some basic_stream_socket::read_some]
 
-Read some data from the socket.
+[heading Examples]
+
+Setting the option:
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.basic_stream_socket.read_some.overload1 read_some]``(
- const MutableBufferSequence & buffers);
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::debug option(true);
+ socket.set_option(option);
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.basic_stream_socket.read_some.overload2 read_some]``(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
 
 
-[section:overload1 basic_stream_socket::read_some (1 of 2 overloads)]
 
-Read some data from the socket.
+Getting the current option value:
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers);
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::debug option;
+ socket.get_option(option);
+ bool is_set = option.value();
 
 
-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.
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[buffers][One or more buffers into which the data will be read.]]
 
-]
+[endsect]
 
-[heading Return Value]
-
-The number of bytes read.
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+[section:do_not_route basic_stream_socket::do_not_route]
 
-]
 
-[heading Remarks]
-
-The read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+['Inherited from socket_base.]
 
-[heading Example]
+[indexterm2 do_not_route..basic_stream_socket] Socket option to prevent routing, use local interfaces only.
+
+ typedef implementation_defined do_not_route;
+
+
+
+Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
+
+
+[heading Examples]
   
-To read into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
+Setting the option:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::do_not_route option(true);
+ socket.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ 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();
 
- socket.read_some(boost::asio::buffer(data, size));
 
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -22725,81 +23717,108 @@
 
 
 
-[section:overload2 basic_stream_socket::read_some (2 of 2 overloads)]
+[section:enable_connection_aborted basic_stream_socket::enable_connection_aborted]
 
-Read some data from the socket.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+['Inherited from socket_base.]
 
+[indexterm2 enable_connection_aborted..basic_stream_socket] Socket option to report aborted connections on accept.
 
-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.
+ typedef implementation_defined enable_connection_aborted;
 
 
-[heading Parameters]
-
 
-[variablelist
+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.
+
+
+[heading Examples]
   
-[[buffers][One or more buffers into which the data will be read.]]
+Setting the option:
 
-[[ec][Set to indicate what error occurred, if any.]]
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::enable_connection_aborted option(true);
+ acceptor.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ 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();
 
-]
 
-[heading Return Value]
-
-The number of bytes read. Returns 0 if an error occurred.
 
-[heading Remarks]
-
-The read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
 
 
 [endsect]
 
 
+
+[section:endpoint_type basic_stream_socket::endpoint_type]
+
+[indexterm2 endpoint_type..basic_stream_socket] The endpoint type.
+
+ typedef Protocol::endpoint endpoint_type;
+
+
+
+
 [endsect]
 
-[section:receive basic_stream_socket::receive]
 
-Receive some data on the socket.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.basic_stream_socket.receive.overload1 receive]``(
- const MutableBufferSequence & buffers);
+[section:get_io_service basic_stream_socket::get_io_service]
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.basic_stream_socket.receive.overload2 receive]``(
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags);
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.basic_stream_socket.receive.overload3 receive]``(
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
- boost::system::error_code & ec);
+['Inherited from basic_io_object.]
 
+[indexterm2 get_io_service..basic_stream_socket] Get the io_service associated with the object.
 
-[section:overload1 basic_stream_socket::receive (1 of 3 overloads)]
+ boost::asio::io_service & get_io_service();
 
-Receive some data on the socket.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t receive(
- const MutableBufferSequence & buffers);
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
 
-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.
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[section:get_option basic_stream_socket::get_option]
+
+[indexterm2 get_option..basic_stream_socket] Get an option from the socket.
+
+ void ``[link boost_asio.reference.basic_stream_socket.get_option.overload1 get_option]``(
+ GettableSocketOption & option) const;
+
+ boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.get_option.overload2 get_option]``(
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
+
+
+[section:overload1 basic_stream_socket::get_option (1 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Get an option from the socket.
+
+ void get_option(
+ GettableSocketOption & option) const;
+
+
+This function is used to get the current value of an option on the socket.
 
 
 [heading Parameters]
@@ -22807,38 +23826,31 @@
 
 [variablelist
   
-[[buffers][One or more buffers into which the data will be received.]]
+[[option][The option value to be obtained from the socket.]]
 
 ]
 
-[heading Return Value]
-
-The number of bytes received.
-
 [heading Exceptions]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
-[heading Remarks]
-
-The receive operation may not receive all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
-
 [heading Example]
   
-To receive into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
+Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
+
+ 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();
 
- socket.receive(boost::asio::buffer(data, size));
 
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on receiving into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -22846,18 +23858,19 @@
 
 
 
-[section:overload2 basic_stream_socket::receive (2 of 3 overloads)]
+[section:overload2 basic_stream_socket::get_option (2 of 2 overloads)]
 
-Receive some data on the socket.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t receive(
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags);
+['Inherited from basic_socket.]
 
+Get an option from the socket.
+
+ boost::system::error_code get_option(
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
 
-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.
+
+This function is used to get the current value of an option on the socket.
 
 
 [heading Parameters]
@@ -22865,40 +23878,124 @@
 
 [variablelist
   
-[[buffers][One or more buffers into which the data will be received.]]
+[[option][The option value to be obtained from the socket.]]
 
-[[flags][Flags specifying how the receive call is to be made.]]
+[[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Return Value]
-
-The number of bytes received.
+[heading Example]
+
+Getting the value of the SOL\_SOCKET/SO\_KEEPALIVE option:
 
-[heading Exceptions]
+ 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();
+
+
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:implementation basic_stream_socket::implementation]
+
+
+['Inherited from basic_io_object.]
+
+[indexterm2 implementation..basic_stream_socket] The underlying implementation of the I/O object.
+
+ implementation_type implementation;
+
+
+
+[endsect]
+
+
+
+[section:implementation_type basic_stream_socket::implementation_type]
+
+
+['Inherited from basic_io_object.]
+
+[indexterm2 implementation_type..basic_stream_socket] The underlying implementation type of I/O object.
+
+ typedef service_type::implementation_type implementation_type;
+
+
+
+
+[endsect]
+
+
+[section:io_control basic_stream_socket::io_control]
+
+[indexterm2 io_control..basic_stream_socket] Perform an IO control command on the socket.
+
+ void ``[link boost_asio.reference.basic_stream_socket.io_control.overload1 io_control]``(
+ IoControlCommand & command);
+
+ boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.io_control.overload2 io_control]``(
+ IoControlCommand & command,
+ boost::system::error_code & ec);
+
+
+[section:overload1 basic_stream_socket::io_control (1 of 2 overloads)]
+
+
+['Inherited from basic_socket.]
+
+Perform an IO control command on the socket.
+
+ void io_control(
+ IoControlCommand & command);
+
+
+This function is used to execute an IO control command on the socket.
+
+
+[heading Parameters]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+[[command][The IO control command to be performed on the socket.]]
 
 ]
 
-[heading Remarks]
-
-The receive operation may not receive all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
 
 [heading Example]
   
-To receive into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
+Getting the number of bytes ready to read:
+
+ 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();
 
- socket.receive(boost::asio::buffer(data, size), 0);
 
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on receiving into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -22906,19 +24003,19 @@
 
 
 
-[section:overload3 basic_stream_socket::receive (3 of 3 overloads)]
+[section:overload2 basic_stream_socket::io_control (2 of 2 overloads)]
 
-Receive some data on a connected socket.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t receive(
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
+['Inherited from basic_socket.]
+
+Perform an IO control command on the socket.
+
+ boost::system::error_code io_control(
+ IoControlCommand & command,
       boost::system::error_code & ec);
 
 
-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.
+This function is used to execute an IO control command on the socket.
 
 
 [heading Parameters]
@@ -22926,43 +24023,88 @@
 
 [variablelist
   
-[[buffers][One or more buffers into which the data will be received.]]
-
-[[flags][Flags specifying how the receive call is to be made.]]
+[[command][The IO control command to be performed on the socket.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Return Value]
-
-The number of bytes received. Returns 0 if an error occurred.
+[heading Example]
+
+Getting the number of bytes ready to read:
 
-[heading Remarks]
+ 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();
+
+
+
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:io_service basic_stream_socket::io_service]
+
+
+['Inherited from basic_io_object.]
+
+[indexterm2 io_service..basic_stream_socket] (Deprecated: use get_io_service().) Get the io_service associated with the object.
+
+ boost::asio::io_service & io_service();
+
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
       
-The receive operation may not receive all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
 [endsect]
 
 
+
+[section:is_open basic_stream_socket::is_open]
+
+
+['Inherited from basic_socket.]
+
+[indexterm2 is_open..basic_stream_socket] Determine whether the socket is open.
+
+ bool is_open() const;
+
+
+
 [endsect]
 
 
-[section:receive_buffer_size basic_stream_socket::receive_buffer_size]
+
+[section:keep_alive basic_stream_socket::keep_alive]
 
 
 ['Inherited from socket_base.]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 keep_alive..basic_stream_socket] Socket option to send keep-alives.
 
- typedef implementation_defined receive_buffer_size;
+ typedef implementation_defined keep_alive;
 
 
 
-Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
+Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
 
 
 [heading Examples]
@@ -22971,7 +24113,7 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::receive_buffer_size option(8192);
+ boost::asio::socket_base::keep_alive option(true);
    socket.set_option(option);
 
 
@@ -22981,9 +24123,9 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::receive_buffer_size option;
+ boost::asio::socket_base::keep_alive option;
    socket.get_option(option);
- int size = option.value();
+ bool is_set = option.value();
 
 
 
@@ -22994,18 +24136,18 @@
 
 
 
-[section:receive_low_watermark basic_stream_socket::receive_low_watermark]
+[section:linger basic_stream_socket::linger]
 
 
 ['Inherited from socket_base.]
 
-Socket option for the receive low watermark.
+[indexterm2 linger..basic_stream_socket] Socket option to specify whether the socket lingers on close if unsent data is present.
 
- typedef implementation_defined receive_low_watermark;
+ typedef implementation_defined linger;
 
 
 
-Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
+Implements the SOL\_SOCKET/SO\_LINGER socket option.
 
 
 [heading Examples]
@@ -23014,7 +24156,7 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::receive_low_watermark option(1024);
+ boost::asio::socket_base::linger option(true, 30);
    socket.set_option(option);
 
 
@@ -23024,9 +24166,10 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::socket_base::receive_low_watermark option;
+ boost::asio::socket_base::linger option;
    socket.get_option(option);
- int size = option.value();
+ bool is_set = option.enabled();
+ unsigned short timeout = option.timeout();
 
 
 
@@ -23036,32 +24179,32 @@
 [endsect]
 
 
-[section:remote_endpoint basic_stream_socket::remote_endpoint]
+[section:local_endpoint basic_stream_socket::local_endpoint]
 
-Get the remote endpoint of the socket.
+[indexterm2 local_endpoint..basic_stream_socket] Get the local endpoint of the socket.
 
- endpoint_type ``[link boost_asio.reference.basic_stream_socket.remote_endpoint.overload1 remote_endpoint]``() const;
+ endpoint_type ``[link boost_asio.reference.basic_stream_socket.local_endpoint.overload1 local_endpoint]``() const;
 
- endpoint_type ``[link boost_asio.reference.basic_stream_socket.remote_endpoint.overload2 remote_endpoint]``(
+ endpoint_type ``[link boost_asio.reference.basic_stream_socket.local_endpoint.overload2 local_endpoint]``(
       boost::system::error_code & ec) const;
 
 
-[section:overload1 basic_stream_socket::remote_endpoint (1 of 2 overloads)]
+[section:overload1 basic_stream_socket::local_endpoint (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Get the remote endpoint of the socket.
+Get the local endpoint of the socket.
 
- endpoint_type remote_endpoint() const;
+ endpoint_type local_endpoint() const;
 
 
-This function is used to obtain the remote endpoint of the socket.
+This function is used to obtain the locally bound endpoint of the socket.
 
 
 [heading Return Value]
       
-An object that represents the remote endpoint of the socket.
+An object that represents the local endpoint of the socket.
 
 [heading Exceptions]
     
@@ -23078,7 +24221,7 @@
 
    boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
+ boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
 
 
 
@@ -23089,18 +24232,18 @@
 
 
 
-[section:overload2 basic_stream_socket::remote_endpoint (2 of 2 overloads)]
+[section:overload2 basic_stream_socket::local_endpoint (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Get the remote endpoint of the socket.
+Get the local endpoint of the socket.
 
- endpoint_type remote_endpoint(
+ endpoint_type local_endpoint(
       boost::system::error_code & ec) const;
 
 
-This function is used to obtain the remote endpoint of the socket.
+This function is used to obtain the locally bound endpoint of the socket.
 
 
 [heading Parameters]
@@ -23114,7 +24257,7 @@
 
 [heading Return Value]
       
-An object that represents the remote endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
+An object that represents the local endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
 
 [heading Example]
   
@@ -23123,7 +24266,7 @@
    boost::asio::ip::tcp::socket socket(io_service);
    ...
    boost::system::error_code ec;
- boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(ec);
+ boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint(ec);
    if (ec)
    {
      // An error occurred.
@@ -23140,269 +24283,426 @@
 [endsect]
 
 
-[section:reuse_address basic_stream_socket::reuse_address]
+[section:lowest_layer basic_stream_socket::lowest_layer]
 
 
-['Inherited from socket_base.]
+['Inherited from basic_socket.]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+[indexterm2 lowest_layer..basic_stream_socket] Get a reference to the lowest layer.
 
- typedef implementation_defined reuse_address;
+ lowest_layer_type & 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.
 
-Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
 
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::reuse_address option(true);
- acceptor.set_option(option);
 
+[endsect]
 
 
 
-Getting the current option value:
+[section:lowest_layer_type basic_stream_socket::lowest_layer_type]
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::reuse_address option;
- acceptor.get_option(option);
- bool is_set = option.value();
 
+['Inherited from basic_socket.]
 
+[indexterm2 lowest_layer_type..basic_stream_socket] A basic_socket is always the lowest layer.
 
+ typedef basic_socket< Protocol, StreamSocketService > lowest_layer_type;
 
 
+[heading Types]
+[table
+ [[Name][Description]]
 
-[endsect]
+ [
 
+ [[link boost_asio.reference.basic_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
 
-[section:send basic_stream_socket::send]
+ [
 
-Send some data on the socket.
+ [[link boost_asio.reference.basic_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.basic_stream_socket.send.overload1 send]``(
- const ConstBufferSequence & buffers);
+ [
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.basic_stream_socket.send.overload2 send]``(
- const ConstBufferSequence & buffers,
- socket_base::message_flags flags);
+ [[link boost_asio.reference.basic_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.basic_stream_socket.send.overload3 send]``(
- const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
- boost::system::error_code & ec);
+ [
 
+ [[link boost_asio.reference.basic_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
 
-[section:overload1 basic_stream_socket::send (1 of 3 overloads)]
+ [
 
-Send some data on the socket.
+ [[link boost_asio.reference.basic_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t send(
- const ConstBufferSequence & buffers);
+ [
 
+ [[link boost_asio.reference.basic_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
 
-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.
+ [
 
+ [[link boost_asio.reference.basic_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
 
-[heading Parameters]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.basic_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
   
-[[buffers][One or more data buffers to be sent on the socket.]]
+ ]
 
-]
+ [
 
-[heading Return Value]
-
-The number of bytes sent.
+ [[link boost_asio.reference.basic_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
 
-[heading Exceptions]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.basic_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
   
-[[boost::system::system_error][Thrown on failure.]]
+ ]
 
-]
+ [
 
-[heading Remarks]
-
-The send operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+ [[link boost_asio.reference.basic_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
 
-[heading Example]
+ [
+
+ [[link boost_asio.reference.basic_socket.native_type [*native_type]]]
+ [The native representation of a socket. ]
   
-To send a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
+ ]
 
- socket.send(boost::asio::buffer(data, size));
+ [
 
+ [[link boost_asio.reference.basic_socket.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on sending multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+ [
 
+ [[link boost_asio.reference.basic_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.basic_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.basic_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
 
-[section:overload2 basic_stream_socket::send (2 of 3 overloads)]
+ [
 
-Send some data on the socket.
+ [[link boost_asio.reference.basic_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t send(
- const ConstBufferSequence & buffers,
- socket_base::message_flags flags);
+ [
 
+ [[link boost_asio.reference.basic_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a 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.
+ [
 
+ [[link boost_asio.reference.basic_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
 
-[heading Parameters]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.basic_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
-[[buffers][One or more data buffers to be sent on the socket.]]
+ ]
 
-[[flags][Flags specifying how the send call is to be made.]]
+ [
 
-]
+ [[link boost_asio.reference.basic_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
 
-[heading Return Value]
-
-The number of bytes sent.
+]
 
-[heading Exceptions]
-
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[variablelist
+ [
+ [[link boost_asio.reference.basic_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.basic_socket [*basic_socket]]]
+ [Construct a basic_socket without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.native [*native]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
   
-[[boost::system::system_error][Thrown on failure.]]
-
 ]
 
-[heading Remarks]
-
-The send operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
-[heading Example]
+ [
+ [[link boost_asio.reference.basic_socket._basic_socket [*~basic_socket]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
   
-To send a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
+]
 
- socket.send(boost::asio::buffer(data, size), 0);
+[heading Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.basic_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on sending multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+ [
+ [[link boost_asio.reference.basic_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
 
+ [
+ [[link boost_asio.reference.basic_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
 
+ [
+ [[link boost_asio.reference.basic_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
 
-[endsect]
+]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.basic_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
 
-[section:overload3 basic_stream_socket::send (3 of 3 overloads)]
+ [
+ [[link boost_asio.reference.basic_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
 
-Send some data on the socket.
+]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t send(
- const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
- boost::system::error_code & ec);
+The basic_socket class template provides functionality that is common to both stream-oriented and datagram-oriented sockets.
 
 
-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.
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
+[*Shared] [*objects:] Unsafe.
 
-[heading Parameters]
-
 
-[variablelist
-
-[[buffers][One or more data buffers to be sent on the socket.]]
 
-[[flags][Flags specifying how the send call is to be made.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[endsect]
 
-]
 
-[heading Return Value]
-
-The number of bytes sent. Returns 0 if an error occurred.
 
-[heading Remarks]
-
-The send operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+[section:max_connections basic_stream_socket::max_connections]
 
 
+['Inherited from socket_base.]
+
+[indexterm2 max_connections..basic_stream_socket] The maximum length of the queue of pending incoming connections.
+
+ static const int max_connections = implementation_defined;
 
-[endsect]
 
 
 [endsect]
 
 
-[section:send_buffer_size basic_stream_socket::send_buffer_size]
+
+[section:message_do_not_route basic_stream_socket::message_do_not_route]
 
 
 ['Inherited from socket_base.]
 
-Socket option for the send buffer size of a socket.
+[indexterm2 message_do_not_route..basic_stream_socket] Specify that the data should not be subject to routing.
 
- typedef implementation_defined send_buffer_size;
+ static const int message_do_not_route = implementation_defined;
 
 
 
-Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
+[endsect]
 
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_buffer_size option(8192);
- socket.set_option(option);
+[section:message_flags basic_stream_socket::message_flags]
 
 
+['Inherited from socket_base.]
+
+[indexterm2 message_flags..basic_stream_socket] Bitmask type for flags that can be passed to send and receive operations.
+
+ typedef int message_flags;
 
 
-Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_buffer_size option;
- socket.get_option(option);
- int size = option.value();
 
+[endsect]
+
+
+
+[section:message_out_of_band basic_stream_socket::message_out_of_band]
+
+
+['Inherited from socket_base.]
 
+[indexterm2 message_out_of_band..basic_stream_socket] Process out-of-band data.
 
+ static const int message_out_of_band = implementation_defined;
 
 
 
@@ -23410,72 +24710,75 @@
 
 
 
-[section:send_low_watermark basic_stream_socket::send_low_watermark]
+[section:message_peek basic_stream_socket::message_peek]
 
 
 ['Inherited from socket_base.]
 
-Socket option for the send low watermark.
+[indexterm2 message_peek..basic_stream_socket] Peek at incoming data without removing it from the input queue.
 
- typedef implementation_defined send_low_watermark;
+ static const int message_peek = implementation_defined;
 
 
 
-Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
+[endsect]
 
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_low_watermark option(1024);
- socket.set_option(option);
+[section:native basic_stream_socket::native]
 
 
+['Inherited from basic_socket.]
 
+[indexterm2 native..basic_stream_socket] Get the native socket representation.
 
-Getting the current option value:
+ native_type native();
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_low_watermark option;
- socket.get_option(option);
- int size = option.value();
 
+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.
 
 
+[endsect]
 
 
 
-[endsect]
+[section:native_type basic_stream_socket::native_type]
 
+[indexterm2 native_type..basic_stream_socket] The native representation of a socket.
 
+ typedef StreamSocketService::native_type native_type;
 
-[section:service basic_stream_socket::service]
 
 
-['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[endsect]
 
- service_type & service;
 
 
+[section:non_blocking_io basic_stream_socket::non_blocking_io]
 
-[endsect]
 
+['Inherited from socket_base.]
 
+[indexterm2 non_blocking_io..basic_stream_socket] IO control command to set the blocking mode of the socket.
 
-[section:service_type basic_stream_socket::service_type]
+ typedef implementation_defined non_blocking_io;
 
 
-['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+Implements the FIONBIO IO control command.
+
+
+[heading Example]
+
+
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::non_blocking_io command(true);
+ socket.io_control(command);
+
 
- typedef StreamSocketService service_type;
 
 
 
@@ -23483,30 +24786,30 @@
 [endsect]
 
 
-[section:set_option basic_stream_socket::set_option]
+[section:open basic_stream_socket::open]
 
-Set an option on the socket.
+[indexterm2 open..basic_stream_socket] Open the socket using the specified protocol.
 
- void ``[link boost_asio.reference.basic_stream_socket.set_option.overload1 set_option]``(
- const SettableSocketOption & option);
+ void ``[link boost_asio.reference.basic_stream_socket.open.overload1 open]``(
+ const protocol_type & protocol = protocol_type());
 
- boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.set_option.overload2 set_option]``(
- const SettableSocketOption & option,
+ boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.open.overload2 open]``(
+ const protocol_type & protocol,
       boost::system::error_code & ec);
 
 
-[section:overload1 basic_stream_socket::set_option (1 of 2 overloads)]
+[section:overload1 basic_stream_socket::open (1 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Set an option on the socket.
+Open the socket using the specified protocol.
 
- void set_option(
- const SettableSocketOption & option);
+ void open(
+ const protocol_type & protocol = protocol_type());
 
 
-This function is used to set an option on the socket.
+This function opens the socket so that it will use the specified protocol.
 
 
 [heading Parameters]
@@ -23514,7 +24817,7 @@
 
 [variablelist
   
-[[option][The new option value to be set on the socket.]]
+[[protocol][An object specifying protocol parameters to be used.]]
 
 ]
 
@@ -23529,12 +24832,10 @@
 
 [heading Example]
   
-Setting the IPPROTO\_TCP/TCP\_NODELAY option:
+
 
    boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::ip::tcp::no_delay option(true);
- socket.set_option(option);
+ socket.open(boost::asio::ip::tcp::v4());
 
 
 
@@ -23545,19 +24846,19 @@
 
 
 
-[section:overload2 basic_stream_socket::set_option (2 of 2 overloads)]
+[section:overload2 basic_stream_socket::open (2 of 2 overloads)]
 
 
 ['Inherited from basic_socket.]
 
-Set an option on the socket.
+Open the socket using the specified protocol.
 
- boost::system::error_code set_option(
- const SettableSocketOption & option,
+ boost::system::error_code open(
+ const protocol_type & protocol,
       boost::system::error_code & ec);
 
 
-This function is used to set an option on the socket.
+This function opens the socket so that it will use the specified protocol.
 
 
 [heading Parameters]
@@ -23565,7 +24866,7 @@
 
 [variablelist
   
-[[option][The new option value to be set on the socket.]]
+[[protocol][An object specifying which protocol is to be used.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -23573,13 +24874,11 @@
 
 [heading Example]
   
-Setting the IPPROTO\_TCP/TCP\_NODELAY option:
+
 
    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);
+ socket.open(boost::asio::ip::tcp::v4(), ec);
    if (ec)
    {
      // An error occurred.
@@ -23595,60 +24894,85 @@
 
 [endsect]
 
-[section:shutdown basic_stream_socket::shutdown]
 
-Disable sends or receives on the socket.
+[section:protocol_type basic_stream_socket::protocol_type]
 
- void ``[link boost_asio.reference.basic_stream_socket.shutdown.overload1 shutdown]``(
- shutdown_type what);
+[indexterm2 protocol_type..basic_stream_socket] The protocol type.
 
- boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.shutdown.overload2 shutdown]``(
- shutdown_type what,
- boost::system::error_code & ec);
+ typedef Protocol protocol_type;
 
 
-[section:overload1 basic_stream_socket::shutdown (1 of 2 overloads)]
 
 
-['Inherited from basic_socket.]
+[endsect]
 
-Disable sends or receives on the socket.
 
- void shutdown(
- shutdown_type what);
+[section:read_some basic_stream_socket::read_some]
 
+[indexterm2 read_some..basic_stream_socket] Read some data from the socket.
 
-This function is used to disable send operations, receive operations, or both.
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.read_some.overload1 read_some]``(
+ const MutableBufferSequence & buffers);
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.read_some.overload2 read_some]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-[heading Parameters]
-
 
-[variablelist
-
-[[what][Determines what types of operation will no longer be allowed.]]
+[section:overload1 basic_stream_socket::read_some (1 of 2 overloads)]
+
+Read some data from the socket.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more buffers into which the data will be read.]]
 
 ]
 
+[heading Return Value]
+
+The number of bytes read.
+
 [heading Exceptions]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure.]]
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
 
 ]
 
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+
 [heading Example]
   
-Shutting down the send side of the socket:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send);
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
+ socket.read_some(boost::asio::buffer(data, size));
 
 
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -23656,19 +24980,18 @@
 
 
 
-[section:overload2 basic_stream_socket::shutdown (2 of 2 overloads)]
-
-
-['Inherited from basic_socket.]
+[section:overload2 basic_stream_socket::read_some (2 of 2 overloads)]
 
-Disable sends or receives on the socket.
+Read some data from the socket.
 
- boost::system::error_code shutdown(
- shutdown_type what,
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
-This function is used to disable send operations, receive operations, or both.
+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.
 
 
 [heading Parameters]
@@ -23676,97 +24999,120 @@
 
 [variablelist
   
-[[what][Determines what types of operation will no longer be allowed.]]
+[[buffers][One or more buffers into which the data will be read.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
-[heading Example]
-
-Shutting down the send side of the socket:
-
- 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.
- }
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
 
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
 
 
+[endsect]
 
 
 [endsect]
 
+[section:receive basic_stream_socket::receive]
 
-[endsect]
+[indexterm2 receive..basic_stream_socket] Receive some data on the socket.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.receive.overload1 receive]``(
+ const MutableBufferSequence & buffers);
 
-[section:shutdown_type basic_stream_socket::shutdown_type]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.receive.overload2 receive]``(
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags);
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.receive.overload3 receive]``(
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
+ boost::system::error_code & ec);
 
 
-['Inherited from socket_base.]
+[section:overload1 basic_stream_socket::receive (1 of 3 overloads)]
 
-Different ways a socket may be shutdown.
+Receive some data on the socket.
 
- enum shutdown_type
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t receive(
+ const MutableBufferSequence & buffers);
+
+
+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.
+
+
+[heading Parameters]
+
 
-[heading Values]
 [variablelist
+
+[[buffers][One or more buffers into which the data will be received.]]
 
- [
- [shutdown_receive]
- [Shutdown the receive side of the socket. ]
- ]
+]
 
- [
- [shutdown_send]
- [Shutdown the send side of the socket. ]
- ]
+[heading Return Value]
+
+The number of bytes received.
 
- [
- [shutdown_both]
- [Shutdown both send and receive on the socket. ]
- ]
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
 
 ]
 
+[heading Remarks]
+
+The receive operation may not receive all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
+[heading Example]
+
+To receive into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
-[endsect]
+ socket.receive(boost::asio::buffer(data, size));
 
 
-[section:write_some basic_stream_socket::write_some]
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on receiving into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
-Write some data to the socket.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.basic_stream_socket.write_some.overload1 write_some]``(
- const ConstBufferSequence & buffers);
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.basic_stream_socket.write_some.overload2 write_some]``(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+[endsect]
 
 
-[section:overload1 basic_stream_socket::write_some (1 of 2 overloads)]
 
-Write some data to the socket.
+[section:overload2 basic_stream_socket::receive (2 of 3 overloads)]
+
+Receive some data on the socket.
 
   template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers);
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t receive(
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags);
 
 
-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.
+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.
 
 
 [heading Parameters]
@@ -23774,13 +25120,15 @@
 
 [variablelist
   
-[[buffers][One or more data buffers to be written to the socket.]]
+[[buffers][One or more buffers into which the data will be received.]]
+
+[[flags][Flags specifying how the receive call is to be made.]]
 
 ]
 
 [heading Return Value]
       
-The number of bytes written.
+The number of bytes received.
 
 [heading Exceptions]
     
@@ -23793,19 +25141,19 @@
 
 [heading Remarks]
       
-The write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+The receive operation may not receive all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
 [heading Example]
   
-To write a single data buffer use the
+To receive into a single data buffer use the
 [link boost_asio.reference.buffer buffer] function as follows:
 
- socket.write_some(boost::asio::buffer(data, size));
+ socket.receive(boost::asio::buffer(data, size), 0);
 
 
 See the
-[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+[link boost_asio.reference.buffer buffer] documentation for information on receiving into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -23813,18 +25161,19 @@
 
 
 
-[section:overload2 basic_stream_socket::write_some (2 of 2 overloads)]
+[section:overload3 basic_stream_socket::receive (3 of 3 overloads)]
 
-Write some data to the socket.
+Receive some data on a connected socket.
 
   template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t receive(
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
       boost::system::error_code & ec);
 
 
-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.
+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.
 
 
 [heading Parameters]
@@ -23832,7 +25181,9 @@
 
 [variablelist
   
-[[buffers][One or more data buffers to be written to the socket.]]
+[[buffers][One or more buffers into which the data will be received.]]
+
+[[flags][Flags specifying how the receive call is to be made.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -23840,12 +25191,12 @@
 
 [heading Return Value]
       
-The number of bytes written. Returns 0 if an error occurred.
+The number of bytes received. Returns 0 if an error occurred.
 
 [heading Remarks]
       
-The write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+The receive operation may not receive all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
 
 
@@ -23855,108 +25206,42 @@
 [endsect]
 
 
-[endsect]
+[section:receive_buffer_size basic_stream_socket::receive_buffer_size]
 
-[section:basic_streambuf basic_streambuf]
 
-Automatically resizable buffer class based on std::streambuf.
+['Inherited from socket_base.]
 
- template<
- typename Allocator = std::allocator<char>>
- class basic_streambuf :
- noncopyable
+[indexterm2 receive_buffer_size..basic_stream_socket] Socket option for the receive buffer size of a socket.
 
+ typedef implementation_defined receive_buffer_size;
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
 
- [[link boost_asio.reference.basic_streambuf.const_buffers_type [*const_buffers_type]]]
- [The type used to represent the get area as a list of buffers. ]
-
- ]
+Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
 
- [
 
- [[link boost_asio.reference.basic_streambuf.mutable_buffers_type [*mutable_buffers_type]]]
- [The type used to represent the put area as a list of buffers. ]
+[heading Examples]
   
- ]
+Setting the option:
 
-]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option(8192);
+ socket.set_option(option);
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.basic_streambuf.basic_streambuf [*basic_streambuf]]]
- [Construct a buffer with a specified maximum size. ]
- ]
-
- [
- [[link boost_asio.reference.basic_streambuf.commit [*commit]]]
- [Move the start of the put area by the specified number of characters. ]
- ]
-
- [
- [[link boost_asio.reference.basic_streambuf.consume [*consume]]]
- [Move the start of the get area by the specified number of characters. ]
- ]
-
- [
- [[link boost_asio.reference.basic_streambuf.data [*data]]]
- [Get a list of buffers that represents the get area. ]
- ]
-
- [
- [[link boost_asio.reference.basic_streambuf.max_size [*max_size]]]
- [Return the maximum size of the buffer. ]
- ]
-
- [
- [[link boost_asio.reference.basic_streambuf.prepare [*prepare]]]
- [Get a list of buffers that represents the put area, with the given size. ]
- ]
-
- [
- [[link boost_asio.reference.basic_streambuf.size [*size]]]
- [Return the size of the get area in characters. ]
- ]
-
-]
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.basic_streambuf.overflow [*overflow]]]
- []
- ]
-
- [
- [[link boost_asio.reference.basic_streambuf.reserve [*reserve]]]
- []
- ]
-
- [
- [[link boost_asio.reference.basic_streambuf.underflow [*underflow]]]
- []
- ]
-
-]
+Getting the current option value:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
 
-[section:basic_streambuf basic_streambuf::basic_streambuf]
 
-Construct a buffer with a specified maximum size.
 
- basic_streambuf(
- std::size_t max_size = (std::numeric_limits< std::size_t >::max)(),
- const Allocator & allocator = Allocator());
 
 
 
@@ -23964,328 +25249,327 @@
 
 
 
-[section:commit basic_streambuf::commit]
-
-Move the start of the put area by the specified number of characters.
+[section:receive_low_watermark basic_stream_socket::receive_low_watermark]
 
- void commit(
- std::size_t n);
 
+['Inherited from socket_base.]
 
+[indexterm2 receive_low_watermark..basic_stream_socket] Socket option for the receive low watermark.
 
-[endsect]
+ typedef implementation_defined receive_low_watermark;
 
 
 
-[section:const_buffers_type basic_streambuf::const_buffers_type]
+Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
 
-The type used to represent the get area as a list of buffers.
 
- typedef implementation_defined const_buffers_type;
+[heading Examples]
+
+Setting the option:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_low_watermark option(1024);
+ socket.set_option(option);
 
 
 
-[endsect]
 
+Getting the current option value:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_low_watermark option;
+ socket.get_option(option);
+ int size = option.value();
 
-[section:consume basic_streambuf::consume]
 
-Move the start of the get area by the specified number of characters.
 
- void consume(
- std::size_t n);
 
 
 
 [endsect]
 
 
+[section:remote_endpoint basic_stream_socket::remote_endpoint]
 
-[section:data basic_streambuf::data]
-
-Get a list of buffers that represents the get area.
+[indexterm2 remote_endpoint..basic_stream_socket] Get the remote endpoint of the socket.
 
- const_buffers_type data() const;
+ endpoint_type ``[link boost_asio.reference.basic_stream_socket.remote_endpoint.overload1 remote_endpoint]``() const;
 
+ endpoint_type ``[link boost_asio.reference.basic_stream_socket.remote_endpoint.overload2 remote_endpoint]``(
+ boost::system::error_code & ec) const;
 
 
-[endsect]
+[section:overload1 basic_stream_socket::remote_endpoint (1 of 2 overloads)]
 
 
+['Inherited from basic_socket.]
 
-[section:max_size basic_streambuf::max_size]
+Get the remote endpoint of the socket.
 
-Return the maximum size of the buffer.
+ endpoint_type remote_endpoint() const;
 
- std::size_t max_size() const;
 
+This function is used to obtain the remote endpoint of the socket.
 
 
-[endsect]
+[heading Return Value]
+
+An object that represents the remote endpoint of the socket.
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
-[section:mutable_buffers_type basic_streambuf::mutable_buffers_type]
+]
 
-The type used to represent the put area as a list of buffers.
+[heading Example]
+
 
- typedef implementation_defined mutable_buffers_type;
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
 
 
 
-[endsect]
 
 
 
-[section:overflow basic_streambuf::overflow]
+[endsect]
 
 
 
- int_type overflow(
- int_type c);
+[section:overload2 basic_stream_socket::remote_endpoint (2 of 2 overloads)]
 
 
+['Inherited from basic_socket.]
 
-[endsect]
+Get the remote endpoint of the socket.
 
+ endpoint_type remote_endpoint(
+ boost::system::error_code & ec) const;
 
 
-[section:prepare basic_streambuf::prepare]
+This function is used to obtain the remote endpoint of the socket.
 
-Get a list of buffers that represents the put area, with the given size.
 
- mutable_buffers_type prepare(
- std::size_t size);
+[heading Parameters]
+
 
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
-[endsect]
+[heading Return Value]
+
+An object that represents the remote endpoint of the socket. Returns a default-constructed endpoint object if an error occurred.
 
+[heading Example]
+
 
 
-[section:reserve basic_streambuf::reserve]
+ 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.
+ }
 
 
 
- void reserve(
- std::size_t n);
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:size basic_streambuf::size]
 
-Return the size of the get area in characters.
+[section:reuse_address basic_stream_socket::reuse_address]
 
- std::size_t size() const;
 
+['Inherited from socket_base.]
 
+[indexterm2 reuse_address..basic_stream_socket] Socket option to allow the socket to be bound to an address that is already in use.
 
-[endsect]
+ typedef implementation_defined reuse_address;
 
 
 
-[section:underflow basic_streambuf::underflow]
+Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
 
 
+[heading Examples]
+
+Setting the option:
 
- int_type underflow();
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::reuse_address option(true);
+ acceptor.set_option(option);
 
 
 
-[endsect]
 
+Getting the current option value:
 
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::reuse_address option;
+ acceptor.get_option(option);
+ bool is_set = option.value();
 
-[endsect]
 
-[section:buffer buffer]
 
-Create a new modifiable buffer from an existing buffer.
 
- mutable_buffers_1 ``[link boost_asio.reference.buffer.overload1 buffer]``(
- const mutable_buffer & b);
 
- mutable_buffers_1 ``[link boost_asio.reference.buffer.overload2 buffer]``(
- const mutable_buffer & b,
- std::size_t max_size_in_bytes);
 
- const_buffers_1 ``[link boost_asio.reference.buffer.overload3 buffer]``(
- const const_buffer & b);
+[endsect]
 
- const_buffers_1 ``[link boost_asio.reference.buffer.overload4 buffer]``(
- const const_buffer & b,
- std::size_t max_size_in_bytes);
 
- mutable_buffers_1 ``[link boost_asio.reference.buffer.overload5 buffer]``(
- void * data,
- std::size_t size_in_bytes);
+[section:send basic_stream_socket::send]
 
- const_buffers_1 ``[link boost_asio.reference.buffer.overload6 buffer]``(
- const void * data,
- std::size_t size_in_bytes);
+[indexterm2 send..basic_stream_socket] Send some data on the socket.
 
   template<
- typename PodType,
- std::size_t N>
- mutable_buffers_1 ``[link boost_asio.reference.buffer.overload7 buffer]``(
- PodType & data);
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.send.overload1 send]``(
+ const ConstBufferSequence & buffers);
 
   template<
- typename PodType,
- std::size_t N>
- mutable_buffers_1 ``[link boost_asio.reference.buffer.overload8 buffer]``(
- PodType & data,
- std::size_t max_size_in_bytes);
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.send.overload2 send]``(
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags);
 
   template<
- typename PodType,
- std::size_t N>
- const_buffers_1 ``[link boost_asio.reference.buffer.overload9 buffer]``(
- const PodType & data);
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.send.overload3 send]``(
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ boost::system::error_code & ec);
 
- template<
- typename PodType,
- std::size_t N>
- const_buffers_1 ``[link boost_asio.reference.buffer.overload10 buffer]``(
- const PodType & data,
- std::size_t max_size_in_bytes);
 
- template<
- typename PodType,
- std::size_t N>
- mutable_buffers_1 ``[link boost_asio.reference.buffer.overload11 buffer]``(
- boost::array< PodType, N > & data);
+[section:overload1 basic_stream_socket::send (1 of 3 overloads)]
 
- template<
- typename PodType,
- std::size_t N>
- mutable_buffers_1 ``[link boost_asio.reference.buffer.overload12 buffer]``(
- boost::array< PodType, N > & data,
- std::size_t max_size_in_bytes);
+Send some data on the socket.
 
   template<
- typename PodType,
- std::size_t N>
- const_buffers_1 ``[link boost_asio.reference.buffer.overload13 buffer]``(
- boost::array< const PodType, N > & data);
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t send(
+ const ConstBufferSequence & buffers);
 
- template<
- typename PodType,
- std::size_t N>
- const_buffers_1 ``[link boost_asio.reference.buffer.overload14 buffer]``(
- boost::array< const PodType, N > & data,
- std::size_t max_size_in_bytes);
 
- template<
- typename PodType,
- std::size_t N>
- const_buffers_1 ``[link boost_asio.reference.buffer.overload15 buffer]``(
- const boost::array< PodType, N > & data);
+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.
 
- template<
- typename PodType,
- std::size_t N>
- const_buffers_1 ``[link boost_asio.reference.buffer.overload16 buffer]``(
- const boost::array< PodType, N > & data,
- std::size_t max_size_in_bytes);
 
- template<
- typename PodType,
- typename Allocator>
- mutable_buffers_1 ``[link boost_asio.reference.buffer.overload17 buffer]``(
- std::vector< PodType, Allocator > & data);
+[heading Parameters]
+
 
- template<
- typename PodType,
- typename Allocator>
- mutable_buffers_1 ``[link boost_asio.reference.buffer.overload18 buffer]``(
- std::vector< PodType, Allocator > & data,
- std::size_t max_size_in_bytes);
+[variablelist
+
+[[buffers][One or more data buffers to be sent on the socket.]]
 
- template<
- typename PodType,
- typename Allocator>
- const_buffers_1 ``[link boost_asio.reference.buffer.overload19 buffer]``(
- const std::vector< PodType, Allocator > & data);
+]
 
- template<
- typename PodType,
- typename Allocator>
- const_buffers_1 ``[link boost_asio.reference.buffer.overload20 buffer]``(
- const std::vector< PodType, Allocator > & data,
- std::size_t max_size_in_bytes);
+[heading Return Value]
+
+The number of bytes sent.
 
- const_buffers_1 ``[link boost_asio.reference.buffer.overload21 buffer]``(
- const std::string & data);
+[heading Exceptions]
+
 
- const_buffers_1 ``[link boost_asio.reference.buffer.overload22 buffer]``(
- const std::string & data,
- std::size_t max_size_in_bytes);
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
-The simplest use case involves reading or writing a single buffer of a specified size:
+]
 
+[heading Remarks]
+
+The send operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
+[heading Example]
+
+To send a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
- sock.write(boost::asio::buffer(data, size));
+ socket.send(boost::asio::buffer(data, size));
 
 
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on sending multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
-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:
+[endsect]
 
 
 
- char d1[128];
- size_t bytes_transferred = sock.read(boost::asio::buffer(d1));
+[section:overload2 basic_stream_socket::send (2 of 3 overloads)]
 
- std::vector<char> d2(128);
- bytes_transferred = sock.read(boost::asio::buffer(d2));
+Send some data on the socket.
 
- boost::array<char, 128> d3;
- bytes_transferred = sock.read(boost::asio::buffer(d3));
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t send(
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags);
 
 
+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.
 
 
-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:
+[heading Parameters]
+
 
+[variablelist
+
+[[buffers][One or more data buffers to be sent on the socket.]]
 
+[[flags][Flags specifying how the send call is to be made.]]
 
- 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.read(bufs1);
+[heading Return Value]
+
+The number of bytes sent.
 
- 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.write(bufs2);
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
+[heading Remarks]
+
+The send operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
+[heading Example]
+
+To send a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
-[section:overload1 buffer (1 of 22 overloads)]
+ socket.send(boost::asio::buffer(data, size), 0);
 
-Create a new modifiable buffer from an existing buffer.
 
- mutable_buffers_1 buffer(
- const mutable_buffer & b);
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on sending multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -24293,68 +25577,87 @@
 
 
 
-[section:overload2 buffer (2 of 22 overloads)]
+[section:overload3 basic_stream_socket::send (3 of 3 overloads)]
 
-Create a new modifiable buffer from an existing buffer.
+Send some data on the socket.
 
- mutable_buffers_1 buffer(
- const mutable_buffer & b,
- std::size_t max_size_in_bytes);
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t send(
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ boost::system::error_code & ec);
 
 
+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.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[buffers][One or more data buffers to be sent on the socket.]]
 
-[section:overload3 buffer (3 of 22 overloads)]
+[[flags][Flags specifying how the send call is to be made.]]
 
-Create a new non-modifiable buffer from an existing buffer.
+[[ec][Set to indicate what error occurred, if any.]]
 
- const_buffers_1 buffer(
- const const_buffer & b);
+]
+
+[heading Return Value]
+
+The number of bytes sent. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The send operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:overload4 buffer (4 of 22 overloads)]
 
-Create a new non-modifiable buffer from an existing buffer.
+[section:send_buffer_size basic_stream_socket::send_buffer_size]
 
- const_buffers_1 buffer(
- const const_buffer & b,
- std::size_t max_size_in_bytes);
 
+['Inherited from socket_base.]
 
+[indexterm2 send_buffer_size..basic_stream_socket] Socket option for the send buffer size of a socket.
 
-[endsect]
+ typedef implementation_defined send_buffer_size;
 
 
 
-[section:overload5 buffer (5 of 22 overloads)]
+Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
 
-Create a new modifiable buffer that represents the given memory range.
 
- mutable_buffers_1 buffer(
- void * data,
- std::size_t size_in_bytes);
+[heading Examples]
+
+Setting the option:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_buffer_size option(8192);
+ socket.set_option(option);
 
 
-[endsect]
 
 
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
 
-[section:overload6 buffer (6 of 22 overloads)]
 
-Create a new non-modifiable buffer that represents the given memory range.
 
- const_buffers_1 buffer(
- const void * data,
- std::size_t size_in_bytes);
 
 
 
@@ -24362,48 +25665,42 @@
 
 
 
-[section:overload7 buffer (7 of 22 overloads)]
+[section:send_low_watermark basic_stream_socket::send_low_watermark]
 
-Create a new modifiable buffer that represents the given POD array.
 
- template<
- typename PodType,
- std::size_t N>
- mutable_buffers_1 buffer(
- PodType & data);
+['Inherited from socket_base.]
 
+[indexterm2 send_low_watermark..basic_stream_socket] Socket option for the send low watermark.
 
+ typedef implementation_defined send_low_watermark;
 
-[endsect]
 
 
+Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
 
-[section:overload8 buffer (8 of 22 overloads)]
 
-Create a new modifiable buffer that represents the given POD array.
+[heading Examples]
+
+Setting the option:
 
- template<
- typename PodType,
- std::size_t N>
- mutable_buffers_1 buffer(
- PodType & data,
- std::size_t max_size_in_bytes);
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option(1024);
+ socket.set_option(option);
 
 
 
-[endsect]
 
+Getting the current option value:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option;
+ socket.get_option(option);
+ int size = option.value();
 
-[section:overload9 buffer (9 of 22 overloads)]
 
-Create a new non-modifiable buffer that represents the given POD array.
 
- template<
- typename PodType,
- std::size_t N>
- const_buffers_1 buffer(
- const PodType & data);
 
 
 
@@ -24411,205 +25708,202 @@
 
 
 
-[section:overload10 buffer (10 of 22 overloads)]
+[section:service basic_stream_socket::service]
 
-Create a new non-modifiable buffer that represents the given POD array.
 
- template<
- typename PodType,
- std::size_t N>
- const_buffers_1 buffer(
- const PodType & data,
- std::size_t max_size_in_bytes);
+['Inherited from basic_io_object.]
 
+[indexterm2 service..basic_stream_socket] The service associated with the I/O object.
 
+ service_type & service;
 
-[endsect]
 
 
+[endsect]
 
-[section:overload11 buffer (11 of 22 overloads)]
 
-Create a new modifiable buffer that represents the given POD array.
 
- template<
- typename PodType,
- std::size_t N>
- mutable_buffers_1 buffer(
- boost::array< PodType, N > & data);
+[section:service_type basic_stream_socket::service_type]
 
 
+['Inherited from basic_io_object.]
 
-[endsect]
+[indexterm2 service_type..basic_stream_socket] The type of the service that will be used to provide I/O operations.
 
+ typedef StreamSocketService service_type;
 
 
-[section:overload12 buffer (12 of 22 overloads)]
 
-Create a new modifiable buffer that represents the given POD array.
 
- template<
- typename PodType,
- std::size_t N>
- mutable_buffers_1 buffer(
- boost::array< PodType, N > & data,
- std::size_t max_size_in_bytes);
+[endsect]
 
 
+[section:set_option basic_stream_socket::set_option]
 
-[endsect]
+[indexterm2 set_option..basic_stream_socket] Set an option on the socket.
 
+ void ``[link boost_asio.reference.basic_stream_socket.set_option.overload1 set_option]``(
+ const SettableSocketOption & option);
 
+ boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.set_option.overload2 set_option]``(
+ const SettableSocketOption & option,
+ boost::system::error_code & ec);
 
-[section:overload13 buffer (13 of 22 overloads)]
 
-Create a new non-modifiable buffer that represents the given POD array.
+[section:overload1 basic_stream_socket::set_option (1 of 2 overloads)]
 
- template<
- typename PodType,
- std::size_t N>
- const_buffers_1 buffer(
- boost::array< const PodType, N > & data);
 
+['Inherited from basic_socket.]
 
+Set an option on the socket.
 
-[endsect]
+ void set_option(
+ const SettableSocketOption & option);
 
 
+This function is used to set an option on the socket.
 
-[section:overload14 buffer (14 of 22 overloads)]
 
-Create a new non-modifiable buffer that represents the given POD array.
+[heading Parameters]
+
 
- template<
- typename PodType,
- std::size_t N>
- const_buffers_1 buffer(
- boost::array< const PodType, N > & data,
- std::size_t max_size_in_bytes);
+[variablelist
+
+[[option][The new option value to be set on the socket.]]
 
+]
 
+[heading Exceptions]
+
 
-[endsect]
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
+[heading Example]
+
+Setting the IPPROTO\_TCP/TCP\_NODELAY option:
 
-[section:overload15 buffer (15 of 22 overloads)]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::ip::tcp::no_delay option(true);
+ socket.set_option(option);
 
-Create a new non-modifiable buffer that represents the given POD array.
 
- template<
- typename PodType,
- std::size_t N>
- const_buffers_1 buffer(
- const boost::array< PodType, N > & data);
 
 
 
-[endsect]
 
+[endsect]
 
 
-[section:overload16 buffer (16 of 22 overloads)]
 
-Create a new non-modifiable buffer that represents the given POD array.
+[section:overload2 basic_stream_socket::set_option (2 of 2 overloads)]
 
- template<
- typename PodType,
- std::size_t N>
- const_buffers_1 buffer(
- const boost::array< PodType, N > & data,
- std::size_t max_size_in_bytes);
 
+['Inherited from basic_socket.]
 
+Set an option on the socket.
 
-[endsect]
+ boost::system::error_code set_option(
+ const SettableSocketOption & option,
+ boost::system::error_code & ec);
 
 
+This function is used to set an option on the socket.
 
-[section:overload17 buffer (17 of 22 overloads)]
 
-Create a new modifiable buffer that represents the given POD vector.
+[heading Parameters]
+
 
- template<
- typename PodType,
- typename Allocator>
- mutable_buffers_1 buffer(
- std::vector< PodType, Allocator > & data);
+[variablelist
+
+[[option][The new option value to be set on the socket.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
-[heading Remarks]
-
-The buffer is invalidated by any vector operation that would also invalidate iterators.
+[heading Example]
+
+Setting the IPPROTO\_TCP/TCP\_NODELAY option:
 
+ 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.
+ }
 
 
-[endsect]
 
 
 
-[section:overload18 buffer (18 of 22 overloads)]
 
-Create a new modifiable buffer that represents the given POD vector.
+[endsect]
 
- template<
- typename PodType,
- typename Allocator>
- mutable_buffers_1 buffer(
- std::vector< PodType, Allocator > & data,
- std::size_t max_size_in_bytes);
 
+[endsect]
 
+[section:shutdown basic_stream_socket::shutdown]
 
-[heading Remarks]
-
-The buffer is invalidated by any vector operation that would also invalidate iterators.
+[indexterm2 shutdown..basic_stream_socket] Disable sends or receives on the socket.
 
+ void ``[link boost_asio.reference.basic_stream_socket.shutdown.overload1 shutdown]``(
+ shutdown_type what);
 
+ boost::system::error_code ``[link boost_asio.reference.basic_stream_socket.shutdown.overload2 shutdown]``(
+ shutdown_type what,
+ boost::system::error_code & ec);
 
-[endsect]
 
+[section:overload1 basic_stream_socket::shutdown (1 of 2 overloads)]
 
 
-[section:overload19 buffer (19 of 22 overloads)]
+['Inherited from basic_socket.]
 
-Create a new non-modifiable buffer that represents the given POD vector.
+Disable sends or receives on the socket.
 
- template<
- typename PodType,
- typename Allocator>
- const_buffers_1 buffer(
- const std::vector< PodType, Allocator > & data);
+ void shutdown(
+ shutdown_type what);
 
 
+This function is used to disable send operations, receive operations, or both.
 
-[heading Remarks]
-
-The buffer is invalidated by any vector operation that would also invalidate iterators.
 
+[heading Parameters]
+
 
+[variablelist
+
+[[what][Determines what types of operation will no longer be allowed.]]
 
-[endsect]
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
-[section:overload20 buffer (20 of 22 overloads)]
+]
 
-Create a new non-modifiable buffer that represents the given POD vector.
+[heading Example]
+
+Shutting down the send side of the socket:
 
- template<
- typename PodType,
- typename Allocator>
- const_buffers_1 buffer(
- const std::vector< PodType, Allocator > & data,
- std::size_t max_size_in_bytes);
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send);
 
 
 
-[heading Remarks]
-
-The buffer is invalidated by any vector operation that would also invalidate iterators.
 
 
 
@@ -24617,38 +25911,47 @@
 
 
 
-[section:overload21 buffer (21 of 22 overloads)]
+[section:overload2 basic_stream_socket::shutdown (2 of 2 overloads)]
 
-Create a new non-modifiable buffer that represents the given string.
 
- const_buffers_1 buffer(
- const std::string & data);
+['Inherited from basic_socket.]
 
+Disable sends or receives on the socket.
 
+ boost::system::error_code shutdown(
+ shutdown_type what,
+ boost::system::error_code & ec);
 
-[heading Remarks]
-
-The buffer is invalidated by any non-const operation called on the given string object.
 
+This function is used to disable send operations, receive operations, or both.
 
 
-[endsect]
+[heading Parameters]
+
 
+[variablelist
+
+[[what][Determines what types of operation will no longer be allowed.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
-[section:overload22 buffer (22 of 22 overloads)]
+]
 
-Create a new non-modifiable buffer that represents the given string.
+[heading Example]
+
+Shutting down the send side of the socket:
 
- const_buffers_1 buffer(
- const std::string & data,
- std::size_t max_size_in_bytes);
+ 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.
+ }
 
 
 
-[heading Remarks]
-
-The buffer is invalidated by any non-const operation called on the given string object.
 
 
 
@@ -24657,142 +25960,271 @@
 
 [endsect]
 
-[section:buffered_read_stream buffered_read_stream]
 
-Adds buffering to the read-related operations of a stream.
+[section:shutdown_type basic_stream_socket::shutdown_type]
 
- template<
- typename Stream>
- class buffered_read_stream :
- noncopyable
 
+['Inherited from socket_base.]
 
-[heading Types]
-[table
- [[Name][Description]]
+[indexterm2 shutdown_type..basic_stream_socket] Different ways a socket may be shutdown.
 
- [
+ enum shutdown_type
 
- [[link boost_asio.reference.buffered_read_stream.lowest_layer_type [*lowest_layer_type]]]
- [The type of the lowest layer. ]
-
+[heading Values]
+[variablelist
+
+ [
+ [shutdown_receive]
+ [Shutdown the receive side of the socket. ]
   ]
 
   [
+ [shutdown_send]
+ [Shutdown the send side of the socket. ]
+ ]
 
- [[link boost_asio.reference.buffered_read_stream.next_layer_type [*next_layer_type]]]
- [The type of the next layer. ]
-
+ [
+ [shutdown_both]
+ [Shutdown both send and receive on the socket. ]
   ]
 
 ]
 
-[heading Member Functions]
+
+
+[endsect]
+
+
+[section:write_some basic_stream_socket::write_some]
+
+[indexterm2 write_some..basic_stream_socket] Write some data to the socket.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.write_some.overload1 write_some]``(
+ const ConstBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.basic_stream_socket.write_some.overload2 write_some]``(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+[section:overload1 basic_stream_socket::write_some (1 of 2 overloads)]
+
+Write some data to the socket.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more data buffers to be written to the socket.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes written.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+
+]
+
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ socket.write_some(boost::asio::buffer(data, size));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:overload2 basic_stream_socket::write_some (2 of 2 overloads)]
+
+Write some data to the socket.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more data buffers to be written to the socket.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes written. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[endsect]
+
+[section:basic_streambuf basic_streambuf]
+
+Automatically resizable buffer class based on std::streambuf.
+
+ template<
+ typename Allocator = std::allocator<char>>
+ class basic_streambuf :
+ noncopyable
+
+
+[heading Types]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.buffered_read_stream.async_fill [*async_fill]]]
- [Start an asynchronous fill. ]
- ]
+
+ [[link boost_asio.reference.basic_streambuf.const_buffers_type [*const_buffers_type]]]
+ [The type used to represent the get area as a list of buffers. ]
   
- [
- [[link boost_asio.reference.buffered_read_stream.async_read_some [*async_read_some]]]
- [Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation. ]
   ]
-
+
   [
- [[link boost_asio.reference.buffered_read_stream.async_write_some [*async_write_some]]]
- [Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation. ]
- ]
+
+ [[link boost_asio.reference.basic_streambuf.mutable_buffers_type [*mutable_buffers_type]]]
+ [The type used to represent the put area as a list of buffers. ]
   
- [
- [[link boost_asio.reference.buffered_read_stream.buffered_read_stream [*buffered_read_stream]]]
- [Construct, passing the specified argument to initialise the next layer. ]
   ]
-
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.buffered_read_stream.close [*close]]]
- [Close the stream. ]
+ [[link boost_asio.reference.basic_streambuf.basic_streambuf [*basic_streambuf]]]
+ [Construct a buffer with a specified maximum size. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_read_stream.fill [*fill]]]
- [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. ]
+ [[link boost_asio.reference.basic_streambuf.commit [*commit]]]
+ [Move the start of the put area by the specified number of characters. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_read_stream.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
+ [[link boost_asio.reference.basic_streambuf.consume [*consume]]]
+ [Move the start of the get area by the specified number of characters. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_read_stream.in_avail [*in_avail]]]
- [Determine the amount of data that may be read without blocking. ]
+ [[link boost_asio.reference.basic_streambuf.data [*data]]]
+ [Get a list of buffers that represents the get area. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_read_stream.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ [[link boost_asio.reference.basic_streambuf.max_size [*max_size]]]
+ [Return the maximum size of the buffer. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_read_stream.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
+ [[link boost_asio.reference.basic_streambuf.prepare [*prepare]]]
+ [Get a list of buffers that represents the put area, with the given size. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_read_stream.next_layer [*next_layer]]]
- [Get a reference to the next layer. ]
+ [[link boost_asio.reference.basic_streambuf.size [*size]]]
+ [Return the size of the get area in characters. ]
   ]
   
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.buffered_read_stream.peek [*peek]]]
- [Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure. ]
+ [[link boost_asio.reference.basic_streambuf.overflow [*overflow]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.buffered_read_stream.read_some [*read_some]]]
- [Read some data from the stream. Returns the number of bytes read. Throws an exception on failure. ]
+ [[link boost_asio.reference.basic_streambuf.reserve [*reserve]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.buffered_read_stream.write_some [*write_some]]]
- [Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure. ]
+ [[link boost_asio.reference.basic_streambuf.underflow [*underflow]]]
+ []
   ]
   
 ]
 
-[heading Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.buffered_read_stream.default_buffer_size [*default_buffer_size]]]
- [The default buffer size. ]
- ]
+[section:basic_streambuf basic_streambuf::basic_streambuf]
 
-]
+[indexterm2 basic_streambuf..basic_streambuf] Construct a buffer with a specified maximum size.
 
-The buffered_read_stream class template can be used to add buffering to the synchronous and asynchronous read operations of a stream.
+ basic_streambuf(
+ std::size_t max_size = (std::numeric_limits< std::size_t >::max)(),
+ const Allocator & allocator = Allocator());
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[endsect]
 
 
 
-[section:async_fill buffered_read_stream::async_fill]
+[section:commit basic_streambuf::commit]
 
-Start an asynchronous fill.
+[indexterm2 commit..basic_streambuf] Move the start of the put area by the specified number of characters.
 
- template<
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_fill(
- ReadHandler handler);
+ void commit(
+ std::size_t n);
 
 
 
@@ -24800,16 +26232,12 @@
 
 
 
-[section:async_read_some buffered_read_stream::async_read_some]
+[section:const_buffers_type basic_streambuf::const_buffers_type]
 
-Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation.
+[indexterm2 const_buffers_type..basic_streambuf] The type used to represent the get area as a list of buffers.
+
+ typedef implementation_defined const_buffers_type;
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
- const MutableBufferSequence & buffers,
- ReadHandler handler);
 
 
 
@@ -24817,85 +26245,62 @@
 
 
 
-[section:async_write_some buffered_read_stream::async_write_some]
+[section:consume basic_streambuf::consume]
 
-Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
+[indexterm2 consume..basic_streambuf] Move the start of the get area by the specified number of characters.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
- const ConstBufferSequence & buffers,
- WriteHandler handler);
+ void consume(
+ std::size_t n);
 
 
 
 [endsect]
 
 
-[section:buffered_read_stream buffered_read_stream::buffered_read_stream]
 
-Construct, passing the specified argument to initialise the next layer.
+[section:data basic_streambuf::data]
 
- template<
- typename Arg>
- ``[link boost_asio.reference.buffered_read_stream.buffered_read_stream.overload1 buffered_read_stream]``(
- Arg & a);
+[indexterm2 data..basic_streambuf] Get a list of buffers that represents the get area.
 
- template<
- typename Arg>
- ``[link boost_asio.reference.buffered_read_stream.buffered_read_stream.overload2 buffered_read_stream]``(
- Arg & a,
- std::size_t buffer_size);
+ const_buffers_type data() const;
 
 
-[section:overload1 buffered_read_stream::buffered_read_stream (1 of 2 overloads)]
 
-Construct, passing the specified argument to initialise the next layer.
+[endsect]
 
- template<
- typename Arg>
- buffered_read_stream(
- Arg & a);
 
 
+[section:max_size basic_streambuf::max_size]
 
-[endsect]
+[indexterm2 max_size..basic_streambuf] Return the maximum size of the buffer.
 
+ std::size_t max_size() const;
 
 
-[section:overload2 buffered_read_stream::buffered_read_stream (2 of 2 overloads)]
 
-Construct, passing the specified argument to initialise the next layer.
+[endsect]
 
- template<
- typename Arg>
- buffered_read_stream(
- Arg & a,
- std::size_t buffer_size);
 
 
+[section:mutable_buffers_type basic_streambuf::mutable_buffers_type]
 
-[endsect]
+[indexterm2 mutable_buffers_type..basic_streambuf] The type used to represent the put area as a list of buffers.
 
+ typedef implementation_defined mutable_buffers_type;
 
-[endsect]
 
-[section:close buffered_read_stream::close]
 
-Close the stream.
 
- void ``[link boost_asio.reference.buffered_read_stream.close.overload1 close]``();
+[endsect]
 
- boost::system::error_code ``[link boost_asio.reference.buffered_read_stream.close.overload2 close]``(
- boost::system::error_code & ec);
 
 
-[section:overload1 buffered_read_stream::close (1 of 2 overloads)]
+[section:overflow basic_streambuf::overflow]
 
-Close the stream.
+[indexterm2 overflow..basic_streambuf]
 
- void close();
+ int_type overflow(
+ int_type c);
 
 
 
@@ -24903,47 +26308,49 @@
 
 
 
-[section:overload2 buffered_read_stream::close (2 of 2 overloads)]
+[section:prepare basic_streambuf::prepare]
 
-Close the stream.
+[indexterm2 prepare..basic_streambuf] Get a list of buffers that represents the put area, with the given size.
 
- boost::system::error_code close(
- boost::system::error_code & ec);
+ mutable_buffers_type prepare(
+ std::size_t size);
 
 
 
 [endsect]
 
 
-[endsect]
-
 
-[section:default_buffer_size buffered_read_stream::default_buffer_size]
+[section:reserve basic_streambuf::reserve]
 
-The default buffer size.
+[indexterm2 reserve..basic_streambuf]
 
- static const std::size_t default_buffer_size = implementation_defined;
+ void reserve(
+ std::size_t n);
 
 
 
 [endsect]
 
 
-[section:fill buffered_read_stream::fill]
 
-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.
+[section:size basic_streambuf::size]
 
- std::size_t ``[link boost_asio.reference.buffered_read_stream.fill.overload1 fill]``();
+[indexterm2 size..basic_streambuf] Return the size of the get area in characters.
 
- std::size_t ``[link boost_asio.reference.buffered_read_stream.fill.overload2 fill]``(
- boost::system::error_code & ec);
+ std::size_t size() const;
 
 
-[section:overload1 buffered_read_stream::fill (1 of 2 overloads)]
 
-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.
+[endsect]
 
- std::size_t fill();
+
+
+[section:underflow basic_streambuf::underflow]
+
+[indexterm2 underflow..basic_streambuf]
+
+ int_type underflow();
 
 
 
@@ -24951,250 +26358,320 @@
 
 
 
-[section:overload2 buffered_read_stream::fill (2 of 2 overloads)]
+[endsect]
 
-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.
+[section:buffer buffer]
 
- std::size_t fill(
- boost::system::error_code & ec);
+[indexterm1 buffer] 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.
+
+ mutable_buffers_1 ``[link boost_asio.reference.buffer.overload1 buffer]``(
+ const mutable_buffer & b);
 
+ mutable_buffers_1 ``[link boost_asio.reference.buffer.overload2 buffer]``(
+ const mutable_buffer & b,
+ std::size_t max_size_in_bytes);
 
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload3 buffer]``(
+ const const_buffer & b);
 
-[endsect]
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload4 buffer]``(
+ const const_buffer & b,
+ std::size_t max_size_in_bytes);
 
+ mutable_buffers_1 ``[link boost_asio.reference.buffer.overload5 buffer]``(
+ void * data,
+ std::size_t size_in_bytes);
 
-[endsect]
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload6 buffer]``(
+ const void * data,
+ std::size_t size_in_bytes);
 
+ template<
+ typename PodType,
+ std::size_t N>
+ mutable_buffers_1 ``[link boost_asio.reference.buffer.overload7 buffer]``(
+ PodType & data);
 
-[section:get_io_service buffered_read_stream::get_io_service]
+ template<
+ typename PodType,
+ std::size_t N>
+ mutable_buffers_1 ``[link boost_asio.reference.buffer.overload8 buffer]``(
+ PodType & data,
+ std::size_t max_size_in_bytes);
 
-Get the io_service associated with the object.
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload9 buffer]``(
+ const PodType & data);
 
- boost::asio::io_service & get_io_service();
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload10 buffer]``(
+ const PodType & data,
+ std::size_t max_size_in_bytes);
 
+ template<
+ typename PodType,
+ std::size_t N>
+ mutable_buffers_1 ``[link boost_asio.reference.buffer.overload11 buffer]``(
+ boost::array< PodType, N > & data);
 
+ template<
+ typename PodType,
+ std::size_t N>
+ mutable_buffers_1 ``[link boost_asio.reference.buffer.overload12 buffer]``(
+ boost::array< PodType, N > & data,
+ std::size_t max_size_in_bytes);
 
-[endsect]
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload13 buffer]``(
+ boost::array< const PodType, N > & data);
 
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload14 buffer]``(
+ boost::array< const PodType, N > & data,
+ std::size_t max_size_in_bytes);
 
-[section:in_avail buffered_read_stream::in_avail]
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload15 buffer]``(
+ const boost::array< PodType, N > & data);
 
-Determine the amount of data that may be read without blocking.
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload16 buffer]``(
+ const boost::array< PodType, N > & data,
+ std::size_t max_size_in_bytes);
 
- std::size_t ``[link boost_asio.reference.buffered_read_stream.in_avail.overload1 in_avail]``();
+ template<
+ typename PodType,
+ typename Allocator>
+ mutable_buffers_1 ``[link boost_asio.reference.buffer.overload17 buffer]``(
+ std::vector< PodType, Allocator > & data);
 
- std::size_t ``[link boost_asio.reference.buffered_read_stream.in_avail.overload2 in_avail]``(
- boost::system::error_code & ec);
+ template<
+ typename PodType,
+ typename Allocator>
+ mutable_buffers_1 ``[link boost_asio.reference.buffer.overload18 buffer]``(
+ std::vector< PodType, Allocator > & data,
+ std::size_t max_size_in_bytes);
 
+ template<
+ typename PodType,
+ typename Allocator>
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload19 buffer]``(
+ const std::vector< PodType, Allocator > & data);
 
-[section:overload1 buffered_read_stream::in_avail (1 of 2 overloads)]
+ template<
+ typename PodType,
+ typename Allocator>
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload20 buffer]``(
+ const std::vector< PodType, Allocator > & data,
+ std::size_t max_size_in_bytes);
 
-Determine the amount of data that may be read without blocking.
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload21 buffer]``(
+ const std::string & data);
 
- std::size_t in_avail();
+ const_buffers_1 ``[link boost_asio.reference.buffer.overload22 buffer]``(
+ const std::string & data,
+ std::size_t max_size_in_bytes);
 
+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 `{void*, size_t}` specifies a mutable (modifiable) region of memory. Similarly, a tuple of the form `{const void*, size_t}` 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:
 
-[endsect]
 
 
+ sock.send(boost::asio::buffer(data, size));
 
-[section:overload2 buffered_read_stream::in_avail (2 of 2 overloads)]
 
-Determine the amount of data that may be read without blocking.
 
- std::size_t in_avail(
- boost::system::error_code & ec);
 
+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:
 
-[endsect]
 
 
-[endsect]
+ 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));
 
-[section:io_service buffered_read_stream::io_service]
+ boost::array<char, 128> d3;
+ bytes_transferred = sock.receive(boost::asio::buffer(d3));
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
 
- boost::asio::io_service & io_service();
 
 
+In all three cases above, the buffers created are exactly 128 bytes long. Note that a vector is [*never] automatically resized when creating or using a buffer. The buffer size is determined using the vector's `size()` member function, and not its capacity.
 
-[endsect]
 
+[heading Accessing Buffer Contents]
+
 
 
-[section:lowest_layer buffered_read_stream::lowest_layer]
+The contents of a buffer may be accessed using the boost::asio::buffer\_size and boost::asio::buffer\_cast functions:
 
-Get a reference to the lowest layer.
 
- lowest_layer_type & lowest_layer();
 
+ 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);
 
-[endsect]
 
 
 
-[section:lowest_layer_type buffered_read_stream::lowest_layer_type]
+The boost::asio::buffer\_cast function permits violations of type safety, so uses of it in application code should be carefully considered.
 
-The type of the lowest layer.
 
- typedef next_layer_type::lowest_layer_type lowest_layer_type;
+[heading 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)
 
-[endsect]
+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).
 
 
+[heading Buffer Arithmetic]
+
 
-[section:next_layer buffered_read_stream::next_layer]
 
-Get a reference to the next layer.
+Buffer objects may be manipulated using simple arithmetic in a safe way which helps prevent buffer overruns. Consider an array initialised as follows:
 
- next_layer_type & next_layer();
 
 
+ boost::array<char, 6> a = { 'a', 'b', 'c', 'd', 'e' };
 
-[endsect]
 
 
 
-[section:next_layer_type buffered_read_stream::next_layer_type]
+A buffer object `b1` created using:
 
-The type of the next layer.
 
- typedef boost::remove_reference< Stream >::type next_layer_type;
 
+ b1 = boost::asio::buffer(a);
 
 
 
-[endsect]
 
+represents the entire array, `{ 'a', 'b', 'c', 'd', 'e' }`. An optional second argument to the boost::asio::buffer function may be used to limit the size, in bytes, of the buffer:
 
-[section:peek buffered_read_stream::peek]
 
-Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_read_stream.peek.overload1 peek]``(
- const MutableBufferSequence & buffers);
+ b2 = boost::asio::buffer(a, 3);
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_read_stream.peek.overload2 peek]``(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
 
 
-[section:overload1 buffered_read_stream::peek (1 of 2 overloads)]
 
-Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
+such that `b2` represents the data `{ 'a', 'b', 'c' }`. 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.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t peek(
- const MutableBufferSequence & buffers);
+An offset may be applied to an existing buffer to create a new one:
 
 
 
-[endsect]
+ b3 = b1 + 2;
 
 
 
-[section:overload2 buffered_read_stream::peek (2 of 2 overloads)]
 
-Peek at the incoming data on the stream. Returns the number of bytes read, or 0 if an error occurred.
+where `b3` will set to represent `{ 'c', 'd', 'e' }`. If the offset exceeds the size of the existing buffer, the newly created buffer will be empty.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t peek(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+Both an offset and size may be specified to create a buffer that corresponds to a specific range of bytes within an existing buffer:
 
 
 
-[endsect]
+ b4 = boost::asio::buffer(b1 + 1, 3);
 
 
-[endsect]
 
-[section:read_some buffered_read_stream::read_some]
 
-Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
+so that `b4` will refer to the bytes `{ 'b', 'c', 'd' }`.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_read_stream.read_some.overload1 read_some]``(
- const MutableBufferSequence & buffers);
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_read_stream.read_some.overload2 read_some]``(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+[heading Buffers and Scatter-Gather I/O]
+
 
 
-[section:overload1 buffered_read_stream::read_some (1 of 2 overloads)]
+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:
 
-Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers);
 
+ 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);
 
-[endsect]
+ 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);
 
 
 
-[section:overload2 buffered_read_stream::read_some (2 of 2 overloads)]
 
-Read some data from the stream. Returns the number of bytes read or 0 if an error occurred.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+[section:overload1 buffer (1 of 22 overloads)]
+
+Create a new modifiable buffer from an existing buffer.
+
+ mutable_buffers_1 buffer(
+ const mutable_buffer & b);
 
 
 
-[endsect]
+[heading Return Value]
+
+`mutable_buffers_1(b)`.
+
 
 
 [endsect]
 
-[section:write_some buffered_read_stream::write_some]
 
-Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_read_stream.write_some.overload1 write_some]``(
- const ConstBufferSequence & buffers);
+[section:overload2 buffer (2 of 22 overloads)]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_read_stream.write_some.overload2 write_some]``(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+Create a new modifiable buffer from an existing buffer.
 
+ mutable_buffers_1 buffer(
+ const mutable_buffer & b,
+ std::size_t max_size_in_bytes);
+
+
+
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
+
+ mutable_buffers_1(
+ buffer_cast<void*>(b),
+ min(buffer_size(b), max_size_in_bytes));
 
-[section:overload1 buffered_read_stream::write_some (1 of 2 overloads)]
 
-Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers);
 
 
 
@@ -25202,161 +26679,65 @@
 
 
 
-[section:overload2 buffered_read_stream::write_some (2 of 2 overloads)]
+[section:overload3 buffer (3 of 22 overloads)]
 
-Write the given data to the stream. Returns the number of bytes written, or 0 if an error occurred.
+Create a new non-modifiable buffer from an existing buffer.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+ const_buffers_1 buffer(
+ const const_buffer & b);
 
 
 
-[endsect]
+[heading Return Value]
+
+`const_buffers_1(b)`.
+
 
 
 [endsect]
 
 
-[endsect]
 
-[section:buffered_stream buffered_stream]
+[section:overload4 buffer (4 of 22 overloads)]
 
-Adds buffering to the read- and write-related operations of a stream.
+Create a new non-modifiable buffer from an existing buffer.
 
- template<
- typename Stream>
- class buffered_stream :
- noncopyable
+ const_buffers_1 buffer(
+ const const_buffer & b,
+ std::size_t max_size_in_bytes);
 
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
 
- [[link boost_asio.reference.buffered_stream.lowest_layer_type [*lowest_layer_type]]]
- [The type of the lowest layer. ]
-
- ]
+ const_buffers_1(
+ buffer_cast<const void*>(b),
+ min(buffer_size(b), max_size_in_bytes));
 
- [
 
- [[link boost_asio.reference.buffered_stream.next_layer_type [*next_layer_type]]]
- [The type of the next layer. ]
-
- ]
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.buffered_stream.async_fill [*async_fill]]]
- [Start an asynchronous fill. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.async_flush [*async_flush]]]
- [Start an asynchronous flush. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.async_read_some [*async_read_some]]]
- [Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.async_write_some [*async_write_some]]]
- [Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.buffered_stream [*buffered_stream]]]
- [Construct, passing the specified argument to initialise the next layer. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.close [*close]]]
- [Close the stream. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.fill [*fill]]]
- [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. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.flush [*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. Throws an exception on failure. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.in_avail [*in_avail]]]
- [Determine the amount of data that may be read without blocking. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.next_layer [*next_layer]]]
- [Get a reference to the next layer. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.peek [*peek]]]
- [Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.read_some [*read_some]]]
- [Read some data from the stream. Returns the number of bytes read. Throws an exception on failure. ]
- ]
-
- [
- [[link boost_asio.reference.buffered_stream.write_some [*write_some]]]
- [Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure. ]
- ]
-
-]
 
-The buffered_stream class template can be used to add buffering to the synchronous and asynchronous read and write operations of a stream.
+[endsect]
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[section:overload5 buffer (5 of 22 overloads)]
 
+Create a new modifiable buffer that represents the given memory range.
 
+ mutable_buffers_1 buffer(
+ void * data,
+ std::size_t size_in_bytes);
 
-[section:async_fill buffered_stream::async_fill]
 
-Start an asynchronous fill.
 
- template<
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_fill(
- ReadHandler handler);
+[heading Return Value]
+
+`mutable_buffers_1(data, size_in_bytes)`.
 
 
 
@@ -25364,14 +26745,19 @@
 
 
 
-[section:async_flush buffered_stream::async_flush]
+[section:overload6 buffer (6 of 22 overloads)]
 
-Start an asynchronous flush.
+Create a new non-modifiable buffer that represents the given memory range.
 
- template<
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_flush(
- WriteHandler handler);
+ const_buffers_1 buffer(
+ const void * data,
+ std::size_t size_in_bytes);
+
+
+
+[heading Return Value]
+
+`const_buffers_1(data, size_in_bytes)`.
 
 
 
@@ -25379,64 +26765,58 @@
 
 
 
-[section:async_read_some buffered_stream::async_read_some]
+[section:overload7 buffer (7 of 22 overloads)]
 
-Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation.
+Create a new modifiable buffer that represents the given POD array.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
- const MutableBufferSequence & buffers,
- ReadHandler handler);
-
+ typename PodType,
+ std::size_t N>
+ mutable_buffers_1 buffer(
+ PodType & data);
 
 
-[endsect]
 
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
 
+ mutable_buffers_1(
+ static_cast<void*>(data),
+ N * sizeof(PodType));
 
-[section:async_write_some buffered_stream::async_write_some]
 
-Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
- const ConstBufferSequence & buffers,
- WriteHandler handler);
 
 
 
 [endsect]
 
 
-[section:buffered_stream buffered_stream::buffered_stream]
 
-Construct, passing the specified argument to initialise the next layer.
+[section:overload8 buffer (8 of 22 overloads)]
 
- template<
- typename Arg>
- ``[link boost_asio.reference.buffered_stream.buffered_stream.overload1 buffered_stream]``(
- Arg & a);
+Create a new modifiable buffer that represents the given POD array.
 
   template<
- typename Arg>
- ``[link boost_asio.reference.buffered_stream.buffered_stream.overload2 buffered_stream]``(
- Arg & a,
- std::size_t read_buffer_size,
- std::size_t write_buffer_size);
+ typename PodType,
+ std::size_t N>
+ mutable_buffers_1 buffer(
+ PodType & data,
+ std::size_t max_size_in_bytes);
 
 
-[section:overload1 buffered_stream::buffered_stream (1 of 2 overloads)]
 
-Construct, passing the specified argument to initialise the next layer.
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
+
+ mutable_buffers_1(
+ static_cast<void*>(data),
+ min(N * sizeof(PodType), max_size_in_bytes));
+
+
 
- template<
- typename Arg>
- buffered_stream(
- Arg & a);
 
 
 
@@ -25444,198 +26824,235 @@
 
 
 
-[section:overload2 buffered_stream::buffered_stream (2 of 2 overloads)]
+[section:overload9 buffer (9 of 22 overloads)]
 
-Construct, passing the specified argument to initialise the next layer.
+Create a new non-modifiable buffer that represents the given POD array.
 
   template<
- typename Arg>
- buffered_stream(
- Arg & a,
- std::size_t read_buffer_size,
- std::size_t write_buffer_size);
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 buffer(
+ const PodType & data);
 
 
 
-[endsect]
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
 
+ const_buffers_1(
+ static_cast<const void*>(data),
+ N * sizeof(PodType));
 
-[endsect]
 
-[section:close buffered_stream::close]
 
-Close the stream.
 
- void ``[link boost_asio.reference.buffered_stream.close.overload1 close]``();
 
- boost::system::error_code ``[link boost_asio.reference.buffered_stream.close.overload2 close]``(
- boost::system::error_code & ec);
 
+[endsect]
 
-[section:overload1 buffered_stream::close (1 of 2 overloads)]
 
-Close the stream.
 
- void close();
+[section:overload10 buffer (10 of 22 overloads)]
 
+Create a new non-modifiable buffer that represents the given POD array.
 
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 buffer(
+ const PodType & data,
+ std::size_t max_size_in_bytes);
 
-[endsect]
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ static_cast<const void*>(data),
+ min(N * sizeof(PodType), max_size_in_bytes));
 
-[section:overload2 buffered_stream::close (2 of 2 overloads)]
 
-Close the stream.
 
- boost::system::error_code close(
- boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
-[endsect]
 
-[section:fill buffered_stream::fill]
+[section:overload11 buffer (11 of 22 overloads)]
 
-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.
+Create a new modifiable buffer that represents the given POD array.
 
- std::size_t ``[link boost_asio.reference.buffered_stream.fill.overload1 fill]``();
+ template<
+ typename PodType,
+ std::size_t N>
+ mutable_buffers_1 buffer(
+ boost::array< PodType, N > & data);
 
- std::size_t ``[link boost_asio.reference.buffered_stream.fill.overload2 fill]``(
- boost::system::error_code & ec);
 
 
-[section:overload1 buffered_stream::fill (1 of 2 overloads)]
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
 
-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.
+ mutable_buffers_1(
+ data.data(),
+ data.size() * sizeof(PodType));
 
- std::size_t fill();
 
 
 
-[endsect]
 
 
+[endsect]
 
-[section:overload2 buffered_stream::fill (2 of 2 overloads)]
 
-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);
+[section:overload12 buffer (12 of 22 overloads)]
 
+Create a new modifiable buffer that represents the given POD array.
 
+ template<
+ typename PodType,
+ std::size_t N>
+ mutable_buffers_1 buffer(
+ boost::array< PodType, N > & data,
+ std::size_t max_size_in_bytes);
 
-[endsect]
 
 
-[endsect]
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
 
-[section:flush buffered_stream::flush]
+ mutable_buffers_1(
+ data.data(),
+ min(data.size() * sizeof(PodType), max_size_in_bytes));
 
-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 ``[link boost_asio.reference.buffered_stream.flush.overload1 flush]``();
 
- std::size_t ``[link boost_asio.reference.buffered_stream.flush.overload2 flush]``(
- boost::system::error_code & ec);
 
 
-[section:overload1 buffered_stream::flush (1 of 2 overloads)]
 
-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.
+[endsect]
 
- std::size_t flush();
 
 
+[section:overload13 buffer (13 of 22 overloads)]
 
-[endsect]
+Create a new non-modifiable buffer that represents the given POD array.
 
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 buffer(
+ boost::array< const PodType, N > & data);
 
 
-[section:overload2 buffered_stream::flush (2 of 2 overloads)]
 
-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.
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ data.data(),
+ data.size() * sizeof(PodType));
 
- std::size_t flush(
- boost::system::error_code & ec);
 
 
 
-[endsect]
 
 
 [endsect]
 
 
-[section:get_io_service buffered_stream::get_io_service]
 
-Get the io_service associated with the object.
+[section:overload14 buffer (14 of 22 overloads)]
 
- boost::asio::io_service & get_io_service();
+Create a new non-modifiable buffer that represents the given POD array.
 
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 buffer(
+ boost::array< const PodType, N > & data,
+ std::size_t max_size_in_bytes);
 
 
-[endsect]
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
 
-[section:in_avail buffered_stream::in_avail]
+ const_buffers_1(
+ data.data(),
+ min(data.size() * sizeof(PodType), max_size_in_bytes));
 
-Determine the amount of data that may be read without blocking.
 
- std::size_t ``[link boost_asio.reference.buffered_stream.in_avail.overload1 in_avail]``();
 
- std::size_t ``[link boost_asio.reference.buffered_stream.in_avail.overload2 in_avail]``(
- boost::system::error_code & ec);
 
 
-[section:overload1 buffered_stream::in_avail (1 of 2 overloads)]
 
-Determine the amount of data that may be read without blocking.
+[endsect]
 
- std::size_t in_avail();
 
 
+[section:overload15 buffer (15 of 22 overloads)]
 
-[endsect]
+Create a new non-modifiable buffer that represents the given POD array.
 
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 buffer(
+ const boost::array< PodType, N > & data);
 
 
-[section:overload2 buffered_stream::in_avail (2 of 2 overloads)]
 
-Determine the amount of data that may be read without blocking.
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
+
+ const_buffers_1(
+ data.data(),
+ data.size() * sizeof(PodType));
 
- std::size_t in_avail(
- boost::system::error_code & ec);
 
 
 
-[endsect]
 
 
 [endsect]
 
 
-[section:io_service buffered_stream::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[section:overload16 buffer (16 of 22 overloads)]
 
- boost::asio::io_service & io_service();
+Create a new non-modifiable buffer that represents the given POD array.
 
+ template<
+ typename PodType,
+ std::size_t N>
+ const_buffers_1 buffer(
+ const boost::array< PodType, N > & data,
+ std::size_t max_size_in_bytes);
 
 
-[endsect]
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
 
+ const_buffers_1(
+ data.data(),
+ min(data.size() * sizeof(PodType), max_size_in_bytes));
 
-[section:lowest_layer buffered_stream::lowest_layer]
 
-Get a reference to the lowest layer.
 
- lowest_layer_type & lowest_layer();
 
 
 
@@ -25643,24 +27060,32 @@
 
 
 
-[section:lowest_layer_type buffered_stream::lowest_layer_type]
-
-The type of the lowest layer.
+[section:overload17 buffer (17 of 22 overloads)]
 
- typedef next_layer_type::lowest_layer_type lowest_layer_type;
+Create a new modifiable buffer that represents the given POD vector.
 
+ template<
+ typename PodType,
+ typename Allocator>
+ mutable_buffers_1 buffer(
+ std::vector< PodType, Allocator > & data);
 
 
 
-[endsect]
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
 
+ mutable_buffers_1(
+ data.size() ? &data[0] : 0,
+ data.size() * sizeof(PodType));
 
 
-[section:next_layer buffered_stream::next_layer]
 
-Get a reference to the next layer.
 
- next_layer_type & next_layer();
+[heading Remarks]
+
+The buffer is invalidated by any vector operation that would also invalidate iterators.
 
 
 
@@ -25668,158 +27093,155 @@
 
 
 
-[section:next_layer_type buffered_stream::next_layer_type]
+[section:overload18 buffer (18 of 22 overloads)]
 
-The type of the next layer.
+Create a new modifiable buffer that represents the given POD vector.
 
- typedef boost::remove_reference< Stream >::type next_layer_type;
+ template<
+ typename PodType,
+ typename Allocator>
+ mutable_buffers_1 buffer(
+ std::vector< PodType, Allocator > & data,
+ std::size_t max_size_in_bytes);
 
 
 
+[heading Return Value]
+
+A mutable_buffers_1 value equivalent to:
 
-[endsect]
+ mutable_buffers_1(
+ data.size() ? &data[0] : 0,
+ min(data.size() * sizeof(PodType), max_size_in_bytes));
 
 
-[section:peek buffered_stream::peek]
 
-Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_stream.peek.overload1 peek]``(
- const MutableBufferSequence & buffers);
+[heading Remarks]
+
+The buffer is invalidated by any vector operation that would also invalidate iterators.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_stream.peek.overload2 peek]``(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
 
 
-[section:overload1 buffered_stream::peek (1 of 2 overloads)]
+[endsect]
 
-Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
+
+
+[section:overload19 buffer (19 of 22 overloads)]
+
+Create a new non-modifiable buffer that represents the given POD vector.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t peek(
- const MutableBufferSequence & buffers);
+ typename PodType,
+ typename Allocator>
+ const_buffers_1 buffer(
+ const std::vector< PodType, Allocator > & data);
 
 
 
-[endsect]
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
 
+ const_buffers_1(
+ data.size() ? &data[0] : 0,
+ data.size() * sizeof(PodType));
 
 
-[section:overload2 buffered_stream::peek (2 of 2 overloads)]
 
-Peek at the incoming data on the stream. Returns the number of bytes read, or 0 if an error occurred.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t peek(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+[heading Remarks]
+
+The buffer is invalidated by any vector operation that would also invalidate iterators.
 
 
 
 [endsect]
 
 
-[endsect]
 
-[section:read_some buffered_stream::read_some]
+[section:overload20 buffer (20 of 22 overloads)]
 
-Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
+Create a new non-modifiable buffer that represents the given POD vector.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_stream.read_some.overload1 read_some]``(
- const MutableBufferSequence & buffers);
+ typename PodType,
+ typename Allocator>
+ const_buffers_1 buffer(
+ const std::vector< PodType, Allocator > & data,
+ std::size_t max_size_in_bytes);
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_stream.read_some.overload2 read_some]``(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
 
 
-[section:overload1 buffered_stream::read_some (1 of 2 overloads)]
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
 
-Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
+ const_buffers_1(
+ data.size() ? &data[0] : 0,
+ min(data.size() * sizeof(PodType), max_size_in_bytes));
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers);
 
 
 
-[endsect]
+[heading Remarks]
+
+The buffer is invalidated by any vector operation that would also invalidate iterators.
 
 
 
-[section:overload2 buffered_stream::read_some (2 of 2 overloads)]
+[endsect]
 
-Read some data from the stream. Returns the number of bytes read or 0 if an error occurred.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
 
+[section:overload21 buffer (21 of 22 overloads)]
 
+Create a new non-modifiable buffer that represents the given string.
 
-[endsect]
+ const_buffers_1 buffer(
+ const std::string & data);
 
 
-[endsect]
 
-[section:write_some buffered_stream::write_some]
+[heading Return Value]
+
+`const_buffers_1(data.data(), data.size())`.
 
-Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
+[heading Remarks]
+
+The buffer is invalidated by any non-const operation called on the given string object.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_stream.write_some.overload1 write_some]``(
- const ConstBufferSequence & buffers);
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_stream.write_some.overload2 write_some]``(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
 
+[endsect]
 
-[section:overload1 buffered_stream::write_some (1 of 2 overloads)]
 
-Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers);
+[section:overload22 buffer (22 of 22 overloads)]
 
+Create a new non-modifiable buffer that represents the given string.
 
+ const_buffers_1 buffer(
+ const std::string & data,
+ std::size_t max_size_in_bytes);
 
-[endsect]
 
 
+[heading Return Value]
+
+A const_buffers_1 value equivalent to:
 
-[section:overload2 buffered_stream::write_some (2 of 2 overloads)]
+ const_buffers_1(
+ data.data(),
+ min(data.size(), max_size_in_bytes));
 
-Write the given data to the stream. Returns the number of bytes written, or 0 if an error occurred.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
 
 
+[heading Remarks]
+
+The buffer is invalidated by any non-const operation called on the given string object.
 
-[endsect]
 
 
 [endsect]
@@ -25827,13 +27249,13 @@
 
 [endsect]
 
-[section:buffered_write_stream buffered_write_stream]
+[section:buffered_read_stream buffered_read_stream]
 
-Adds buffering to the write-related operations of a stream.
+Adds buffering to the read-related operations of a stream.
 
   template<
       typename Stream>
- class buffered_write_stream :
+ class buffered_read_stream :
     noncopyable
 
 
@@ -25843,14 +27265,14 @@
 
   [
 
- [[link boost_asio.reference.buffered_write_stream.lowest_layer_type [*lowest_layer_type]]]
+ [[link boost_asio.reference.buffered_read_stream.lowest_layer_type [*lowest_layer_type]]]
     [The type of the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.buffered_write_stream.next_layer_type [*next_layer_type]]]
+ [[link boost_asio.reference.buffered_read_stream.next_layer_type [*next_layer_type]]]
     [The type of the next layer. ]
   
   ]
@@ -25862,72 +27284,72 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.buffered_write_stream.async_flush [*async_flush]]]
- [Start an asynchronous flush. ]
+ [[link boost_asio.reference.buffered_read_stream.async_fill [*async_fill]]]
+ [Start an asynchronous fill. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.async_read_some [*async_read_some]]]
+ [[link boost_asio.reference.buffered_read_stream.async_read_some [*async_read_some]]]
     [Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.async_write_some [*async_write_some]]]
+ [[link boost_asio.reference.buffered_read_stream.async_write_some [*async_write_some]]]
     [Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.buffered_write_stream [*buffered_write_stream]]]
+ [[link boost_asio.reference.buffered_read_stream.buffered_read_stream [*buffered_read_stream]]]
     [Construct, passing the specified argument to initialise the next layer. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.close [*close]]]
+ [[link boost_asio.reference.buffered_read_stream.close [*close]]]
     [Close the stream. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.flush [*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. Throws an exception on failure. ]
+ [[link boost_asio.reference.buffered_read_stream.fill [*fill]]]
+ [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. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.get_io_service [*get_io_service]]]
+ [[link boost_asio.reference.buffered_read_stream.get_io_service [*get_io_service]]]
     [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.in_avail [*in_avail]]]
+ [[link boost_asio.reference.buffered_read_stream.in_avail [*in_avail]]]
     [Determine the amount of data that may be read without blocking. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.io_service [*io_service]]]
+ [[link boost_asio.reference.buffered_read_stream.io_service [*io_service]]]
     [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.lowest_layer [*lowest_layer]]]
+ [[link boost_asio.reference.buffered_read_stream.lowest_layer [*lowest_layer]]]
     [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.next_layer [*next_layer]]]
+ [[link boost_asio.reference.buffered_read_stream.next_layer [*next_layer]]]
     [Get a reference to the next layer. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.peek [*peek]]]
+ [[link boost_asio.reference.buffered_read_stream.peek [*peek]]]
     [Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.read_some [*read_some]]]
+ [[link boost_asio.reference.buffered_read_stream.read_some [*read_some]]]
     [Read some data from the stream. Returns the number of bytes read. Throws an exception on failure. ]
   ]
   
   [
- [[link boost_asio.reference.buffered_write_stream.write_some [*write_some]]]
+ [[link boost_asio.reference.buffered_read_stream.write_some [*write_some]]]
     [Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure. ]
   ]
   
@@ -25938,13 +27360,13 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.buffered_write_stream.default_buffer_size [*default_buffer_size]]]
+ [[link boost_asio.reference.buffered_read_stream.default_buffer_size [*default_buffer_size]]]
     [The default buffer size. ]
   ]
 
 ]
 
-The buffered_write_stream class template can be used to add buffering to the synchronous and asynchronous write 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.
 
 
 [heading Thread Safety]
@@ -25955,14 +27377,14 @@
 
 
 
-[section:async_flush buffered_write_stream::async_flush]
+[section:async_fill buffered_read_stream::async_fill]
 
-Start an asynchronous flush.
+[indexterm2 async_fill..buffered_read_stream] Start an asynchronous fill.
 
   template<
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_flush(
- WriteHandler handler);
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_fill(
+ ReadHandler handler);
 
 
 
@@ -25970,9 +27392,9 @@
 
 
 
-[section:async_read_some buffered_write_stream::async_read_some]
+[section:async_read_some buffered_read_stream::async_read_some]
 
-Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation.
+[indexterm2 async_read_some..buffered_read_stream] 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 ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -25987,9 +27409,9 @@
 
 
 
-[section:async_write_some buffered_write_stream::async_write_some]
+[section:async_write_some buffered_read_stream::async_write_some]
 
-Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
+[indexterm2 async_write_some..buffered_read_stream] Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -26003,29 +27425,29 @@
 [endsect]
 
 
-[section:buffered_write_stream buffered_write_stream::buffered_write_stream]
+[section:buffered_read_stream buffered_read_stream::buffered_read_stream]
 
-Construct, passing the specified argument to initialise the next layer.
+[indexterm2 buffered_read_stream..buffered_read_stream] Construct, passing the specified argument to initialise the next layer.
 
   template<
       typename Arg>
- ``[link boost_asio.reference.buffered_write_stream.buffered_write_stream.overload1 buffered_write_stream]``(
+ ``[link boost_asio.reference.buffered_read_stream.buffered_read_stream.overload1 buffered_read_stream]``(
       Arg & a);
 
   template<
       typename Arg>
- ``[link boost_asio.reference.buffered_write_stream.buffered_write_stream.overload2 buffered_write_stream]``(
+ ``[link boost_asio.reference.buffered_read_stream.buffered_read_stream.overload2 buffered_read_stream]``(
       Arg & a,
       std::size_t buffer_size);
 
 
-[section:overload1 buffered_write_stream::buffered_write_stream (1 of 2 overloads)]
+[section:overload1 buffered_read_stream::buffered_read_stream (1 of 2 overloads)]
 
 Construct, passing the specified argument to initialise the next layer.
 
   template<
       typename Arg>
- buffered_write_stream(
+ buffered_read_stream(
       Arg & a);
 
 
@@ -26034,13 +27456,13 @@
 
 
 
-[section:overload2 buffered_write_stream::buffered_write_stream (2 of 2 overloads)]
+[section:overload2 buffered_read_stream::buffered_read_stream (2 of 2 overloads)]
 
 Construct, passing the specified argument to initialise the next layer.
 
   template<
       typename Arg>
- buffered_write_stream(
+ buffered_read_stream(
       Arg & a,
       std::size_t buffer_size);
 
@@ -26051,17 +27473,17 @@
 
 [endsect]
 
-[section:close buffered_write_stream::close]
+[section:close buffered_read_stream::close]
 
-Close the stream.
+[indexterm2 close..buffered_read_stream] Close the stream.
 
- void ``[link boost_asio.reference.buffered_write_stream.close.overload1 close]``();
+ void ``[link boost_asio.reference.buffered_read_stream.close.overload1 close]``();
 
- boost::system::error_code ``[link boost_asio.reference.buffered_write_stream.close.overload2 close]``(
+ boost::system::error_code ``[link boost_asio.reference.buffered_read_stream.close.overload2 close]``(
       boost::system::error_code & ec);
 
 
-[section:overload1 buffered_write_stream::close (1 of 2 overloads)]
+[section:overload1 buffered_read_stream::close (1 of 2 overloads)]
 
 Close the stream.
 
@@ -26073,7 +27495,7 @@
 
 
 
-[section:overload2 buffered_write_stream::close (2 of 2 overloads)]
+[section:overload2 buffered_read_stream::close (2 of 2 overloads)]
 
 Close the stream.
 
@@ -26088,9 +27510,9 @@
 [endsect]
 
 
-[section:default_buffer_size buffered_write_stream::default_buffer_size]
+[section:default_buffer_size buffered_read_stream::default_buffer_size]
 
-The default buffer size.
+[indexterm2 default_buffer_size..buffered_read_stream] The default buffer size.
 
   static const std::size_t default_buffer_size = implementation_defined;
 
@@ -26099,21 +27521,21 @@
 [endsect]
 
 
-[section:flush buffered_write_stream::flush]
+[section:fill buffered_read_stream::fill]
 
-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.
+[indexterm2 fill..buffered_read_stream] 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 ``[link boost_asio.reference.buffered_write_stream.flush.overload1 flush]``();
+ std::size_t ``[link boost_asio.reference.buffered_read_stream.fill.overload1 fill]``();
 
- std::size_t ``[link boost_asio.reference.buffered_write_stream.flush.overload2 flush]``(
+ std::size_t ``[link boost_asio.reference.buffered_read_stream.fill.overload2 fill]``(
       boost::system::error_code & ec);
 
 
-[section:overload1 buffered_write_stream::flush (1 of 2 overloads)]
+[section:overload1 buffered_read_stream::fill (1 of 2 overloads)]
 
-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.
+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 flush();
+ std::size_t fill();
 
 
 
@@ -26121,11 +27543,11 @@
 
 
 
-[section:overload2 buffered_write_stream::flush (2 of 2 overloads)]
+[section:overload2 buffered_read_stream::fill (2 of 2 overloads)]
 
-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.
+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 flush(
+ std::size_t fill(
       boost::system::error_code & ec);
 
 
@@ -26136,9 +27558,9 @@
 [endsect]
 
 
-[section:get_io_service buffered_write_stream::get_io_service]
+[section:get_io_service buffered_read_stream::get_io_service]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..buffered_read_stream] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -26147,17 +27569,17 @@
 [endsect]
 
 
-[section:in_avail buffered_write_stream::in_avail]
+[section:in_avail buffered_read_stream::in_avail]
 
-Determine the amount of data that may be read without blocking.
+[indexterm2 in_avail..buffered_read_stream] Determine the amount of data that may be read without blocking.
 
- std::size_t ``[link boost_asio.reference.buffered_write_stream.in_avail.overload1 in_avail]``();
+ std::size_t ``[link boost_asio.reference.buffered_read_stream.in_avail.overload1 in_avail]``();
 
- std::size_t ``[link boost_asio.reference.buffered_write_stream.in_avail.overload2 in_avail]``(
+ std::size_t ``[link boost_asio.reference.buffered_read_stream.in_avail.overload2 in_avail]``(
       boost::system::error_code & ec);
 
 
-[section:overload1 buffered_write_stream::in_avail (1 of 2 overloads)]
+[section:overload1 buffered_read_stream::in_avail (1 of 2 overloads)]
 
 Determine the amount of data that may be read without blocking.
 
@@ -26169,7 +27591,7 @@
 
 
 
-[section:overload2 buffered_write_stream::in_avail (2 of 2 overloads)]
+[section:overload2 buffered_read_stream::in_avail (2 of 2 overloads)]
 
 Determine the amount of data that may be read without blocking.
 
@@ -26184,9 +27606,9 @@
 [endsect]
 
 
-[section:io_service buffered_write_stream::io_service]
+[section:io_service buffered_read_stream::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..buffered_read_stream] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -26196,9 +27618,9 @@
 
 
 
-[section:lowest_layer buffered_write_stream::lowest_layer]
+[section:lowest_layer buffered_read_stream::lowest_layer]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..buffered_read_stream] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -26208,9 +27630,9 @@
 
 
 
-[section:lowest_layer_type buffered_write_stream::lowest_layer_type]
+[section:lowest_layer_type buffered_read_stream::lowest_layer_type]
 
-The type of the lowest layer.
+[indexterm2 lowest_layer_type..buffered_read_stream] The type of the lowest layer.
 
   typedef next_layer_type::lowest_layer_type lowest_layer_type;
 
@@ -26221,9 +27643,9 @@
 
 
 
-[section:next_layer buffered_write_stream::next_layer]
+[section:next_layer buffered_read_stream::next_layer]
 
-Get a reference to the next layer.
+[indexterm2 next_layer..buffered_read_stream] Get a reference to the next layer.
 
   next_layer_type & next_layer();
 
@@ -26233,9 +27655,9 @@
 
 
 
-[section:next_layer_type buffered_write_stream::next_layer_type]
+[section:next_layer_type buffered_read_stream::next_layer_type]
 
-The type of the next layer.
+[indexterm2 next_layer_type..buffered_read_stream] The type of the next layer.
 
   typedef boost::remove_reference< Stream >::type next_layer_type;
 
@@ -26245,23 +27667,23 @@
 [endsect]
 
 
-[section:peek buffered_write_stream::peek]
+[section:peek buffered_read_stream::peek]
 
-Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
+[indexterm2 peek..buffered_read_stream] Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_write_stream.peek.overload1 peek]``(
+ std::size_t ``[link boost_asio.reference.buffered_read_stream.peek.overload1 peek]``(
       const MutableBufferSequence & buffers);
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_write_stream.peek.overload2 peek]``(
+ std::size_t ``[link boost_asio.reference.buffered_read_stream.peek.overload2 peek]``(
       const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
-[section:overload1 buffered_write_stream::peek (1 of 2 overloads)]
+[section:overload1 buffered_read_stream::peek (1 of 2 overloads)]
 
 Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
 
@@ -26276,7 +27698,7 @@
 
 
 
-[section:overload2 buffered_write_stream::peek (2 of 2 overloads)]
+[section:overload2 buffered_read_stream::peek (2 of 2 overloads)]
 
 Peek at the incoming data on the stream. Returns the number of bytes read, or 0 if an error occurred.
 
@@ -26293,23 +27715,23 @@
 
 [endsect]
 
-[section:read_some buffered_write_stream::read_some]
+[section:read_some buffered_read_stream::read_some]
 
-Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
+[indexterm2 read_some..buffered_read_stream] Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_write_stream.read_some.overload1 read_some]``(
+ std::size_t ``[link boost_asio.reference.buffered_read_stream.read_some.overload1 read_some]``(
       const MutableBufferSequence & buffers);
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_write_stream.read_some.overload2 read_some]``(
+ std::size_t ``[link boost_asio.reference.buffered_read_stream.read_some.overload2 read_some]``(
       const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
-[section:overload1 buffered_write_stream::read_some (1 of 2 overloads)]
+[section:overload1 buffered_read_stream::read_some (1 of 2 overloads)]
 
 Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
 
@@ -26324,7 +27746,7 @@
 
 
 
-[section:overload2 buffered_write_stream::read_some (2 of 2 overloads)]
+[section:overload2 buffered_read_stream::read_some (2 of 2 overloads)]
 
 Read some data from the stream. Returns the number of bytes read or 0 if an error occurred.
 
@@ -26341,23 +27763,23 @@
 
 [endsect]
 
-[section:write_some buffered_write_stream::write_some]
+[section:write_some buffered_read_stream::write_some]
 
-Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
+[indexterm2 write_some..buffered_read_stream] Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_write_stream.write_some.overload1 write_some]``(
+ std::size_t ``[link boost_asio.reference.buffered_read_stream.write_some.overload1 write_some]``(
       const ConstBufferSequence & buffers);
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.buffered_write_stream.write_some.overload2 write_some]``(
+ std::size_t ``[link boost_asio.reference.buffered_read_stream.write_some.overload2 write_some]``(
       const ConstBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
-[section:overload1 buffered_write_stream::write_some (1 of 2 overloads)]
+[section:overload1 buffered_read_stream::write_some (1 of 2 overloads)]
 
 Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
@@ -26372,9 +27794,9 @@
 
 
 
-[section:overload2 buffered_write_stream::write_some (2 of 2 overloads)]
+[section:overload2 buffered_read_stream::write_some (2 of 2 overloads)]
 
-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.
+Write the given data to the stream. Returns the number of bytes written, or 0 if an error occurred.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -26392,56 +27814,141 @@
 
 [endsect]
 
-[section:const_buffer const_buffer]
+[section:buffered_stream buffered_stream]
 
-Holds a buffer that cannot be modified.
+Adds buffering to the read- and write-related operations of a stream.
 
- class const_buffer
+ template<
+ typename Stream>
+ class buffered_stream :
+ noncopyable
 
 
-[heading Member Functions]
+[heading Types]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.const_buffer.const_buffer [*const_buffer]]]
- [Construct an empty buffer. ]
+
+ [[link boost_asio.reference.buffered_stream.lowest_layer_type [*lowest_layer_type]]]
+ [The type of the lowest layer. ]
+
   ]
+
+ [
+
+ [[link boost_asio.reference.buffered_stream.next_layer_type [*next_layer_type]]]
+ [The type of the next layer. ]
   
+ ]
+
 ]
 
-[heading Related Functions]
+[heading Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.const_buffer.buffer_cast [*buffer_cast]]]
- [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ [[link boost_asio.reference.buffered_stream.async_fill [*async_fill]]]
+ [Start an asynchronous fill. ]
   ]
   
   [
- [[link boost_asio.reference.const_buffer.buffer_size [*buffer_size]]]
- [Get the number of bytes in a non-modifiable buffer. ]
+ [[link boost_asio.reference.buffered_stream.async_flush [*async_flush]]]
+ [Start an asynchronous flush. ]
   ]
   
   [
- [[link boost_asio.reference.const_buffer.operator_plus_ [*operator+]]]
- [Create a new non-modifiable buffer that is offset from the start of another. ]
+ [[link boost_asio.reference.buffered_stream.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.buffered_stream [*buffered_stream]]]
+ [Construct, passing the specified argument to initialise the next layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.close [*close]]]
+ [Close the stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.fill [*fill]]]
+ [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. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.flush [*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. Throws an exception on failure. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.in_avail [*in_avail]]]
+ [Determine the amount of data that may be read without blocking. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.next_layer [*next_layer]]]
+ [Get a reference to the next layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.peek [*peek]]]
+ [Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.read_some [*read_some]]]
+ [Read some data from the stream. Returns the number of bytes read. Throws an exception on failure. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffered_stream.write_some [*write_some]]]
+ [Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure. ]
   ]
   
 ]
 
-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.
+The buffered_stream class template can be used to add buffering to the synchronous and asynchronous read and write operations of a stream.
 
 
-[section:buffer_cast const_buffer::buffer_cast]
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
 
-Cast a non-modifiable buffer to a specified pointer to POD type.
+
+[section:async_fill buffered_stream::async_fill]
+
+[indexterm2 async_fill..buffered_stream] Start an asynchronous fill.
 
   template<
- typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
- PointerToPodType buffer_cast(
- const const_buffer & b);
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_fill(
+ ReadHandler handler);
 
 
 
@@ -26449,51 +27956,79 @@
 
 
 
-[section:buffer_size const_buffer::buffer_size]
+[section:async_flush buffered_stream::async_flush]
 
-Get the number of bytes in a non-modifiable buffer.
+[indexterm2 async_flush..buffered_stream] Start an asynchronous flush.
 
- std::size_t buffer_size(
- const const_buffer & b);
+ template<
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_flush(
+ WriteHandler handler);
 
 
 
 [endsect]
 
 
-[section:const_buffer const_buffer::const_buffer]
 
-Construct an empty buffer.
+[section:async_read_some buffered_stream::async_read_some]
 
- ``[link boost_asio.reference.const_buffer.const_buffer.overload1 const_buffer]``();
+[indexterm2 async_read_some..buffered_stream] Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation.
 
- ``[link boost_asio.reference.const_buffer.const_buffer.overload2 const_buffer]``(
- const void * data,
- std::size_t size);
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
 
- ``[link boost_asio.reference.const_buffer.const_buffer.overload3 const_buffer]``(
- const mutable_buffer & b);
 
 
-[section:overload1 const_buffer::const_buffer (1 of 3 overloads)]
+[endsect]
 
-Construct an empty buffer.
 
- const_buffer();
+
+[section:async_write_some buffered_stream::async_write_some]
+
+[indexterm2 async_write_some..buffered_stream] Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
 
 
 
 [endsect]
 
 
+[section:buffered_stream buffered_stream::buffered_stream]
 
-[section:overload2 const_buffer::const_buffer (2 of 3 overloads)]
+[indexterm2 buffered_stream..buffered_stream] Construct, passing the specified argument to initialise the next layer.
 
-Construct a buffer to represent a given memory range.
+ template<
+ typename Arg>
+ ``[link boost_asio.reference.buffered_stream.buffered_stream.overload1 buffered_stream]``(
+ Arg & a);
 
- const_buffer(
- const void * data,
- std::size_t size);
+ template<
+ typename Arg>
+ ``[link boost_asio.reference.buffered_stream.buffered_stream.overload2 buffered_stream]``(
+ Arg & a,
+ std::size_t read_buffer_size,
+ std::size_t write_buffer_size);
+
+
+[section:overload1 buffered_stream::buffered_stream (1 of 2 overloads)]
+
+Construct, passing the specified argument to initialise the next layer.
+
+ template<
+ typename Arg>
+ buffered_stream(
+ Arg & a);
 
 
 
@@ -26501,12 +28036,16 @@
 
 
 
-[section:overload3 const_buffer::const_buffer (3 of 3 overloads)]
+[section:overload2 buffered_stream::buffered_stream (2 of 2 overloads)]
 
-Construct a non-modifiable buffer from a modifiable one.
+Construct, passing the specified argument to initialise the next layer.
 
- const_buffer(
- const mutable_buffer & b);
+ template<
+ typename Arg>
+ buffered_stream(
+ Arg & a,
+ std::size_t read_buffer_size,
+ std::size_t write_buffer_size);
 
 
 
@@ -26515,26 +28054,21 @@
 
 [endsect]
 
-[section:operator_plus_ const_buffer::operator+]
+[section:close buffered_stream::close]
 
-Create a new non-modifiable buffer that is offset from the start of another.
+[indexterm2 close..buffered_stream] Close the stream.
 
- const_buffer ``[link boost_asio.reference.const_buffer.operator_plus_.overload1 operator+]``(
- const const_buffer & b,
- std::size_t start);
+ void ``[link boost_asio.reference.buffered_stream.close.overload1 close]``();
 
- const_buffer ``[link boost_asio.reference.const_buffer.operator_plus_.overload2 operator+]``(
- std::size_t start,
- const const_buffer & b);
+ boost::system::error_code ``[link boost_asio.reference.buffered_stream.close.overload2 close]``(
+ boost::system::error_code & ec);
 
 
-[section:overload1 const_buffer::operator+ (1 of 2 overloads)]
+[section:overload1 buffered_stream::close (1 of 2 overloads)]
 
-Create a new non-modifiable buffer that is offset from the start of another.
+Close the stream.
 
- const_buffer operator+(
- const const_buffer & b,
- std::size_t start);
+ void close();
 
 
 
@@ -26542,13 +28076,12 @@
 
 
 
-[section:overload2 const_buffer::operator+ (2 of 2 overloads)]
+[section:overload2 buffered_stream::close (2 of 2 overloads)]
 
-Create a new non-modifiable buffer that is offset from the start of another.
+Close the stream.
 
- const_buffer operator+(
- std::size_t start,
- const const_buffer & b);
+ boost::system::error_code close(
+ boost::system::error_code & ec);
 
 
 
@@ -26557,85 +28090,57 @@
 
 [endsect]
 
+[section:fill buffered_stream::fill]
 
-[endsect]
+[indexterm2 fill..buffered_stream] 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.
 
-[section:const_buffers_1 const_buffers_1]
+ std::size_t ``[link boost_asio.reference.buffered_stream.fill.overload1 fill]``();
 
-Adapts a single non-modifiable buffer so that it meets the requirements of the ConstBufferSequence concept.
+ std::size_t ``[link boost_asio.reference.buffered_stream.fill.overload2 fill]``(
+ boost::system::error_code & ec);
 
- class const_buffers_1 :
- public const_buffer
 
+[section:overload1 buffered_stream::fill (1 of 2 overloads)]
 
-[heading Types]
-[table
- [[Name][Description]]
+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();
 
- [[link boost_asio.reference.const_buffers_1.const_iterator [*const_iterator]]]
- [A random-access iterator type that may be used to read elements. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.const_buffers_1.value_type [*value_type]]]
- [The type for each element in the list of buffers. ]
-
- ]
+[endsect]
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.const_buffers_1.begin [*begin]]]
- [Get a random-access iterator to the first element. ]
- ]
-
- [
- [[link boost_asio.reference.const_buffers_1.const_buffers_1 [*const_buffers_1]]]
- [Construct to represent a single non-modifiable buffer. ]
- ]
-
- [
- [[link boost_asio.reference.const_buffers_1.end [*end]]]
- [Get a random-access iterator for one past the last element. ]
- ]
-
-]
+[section:overload2 buffered_stream::fill (2 of 2 overloads)]
 
-[heading Related Functions]
-[table
- [[Name][Description]]
+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.
 
- [
- [[link boost_asio.reference.const_buffers_1.buffer_cast [*buffer_cast]]]
- [Cast a non-modifiable buffer to a specified pointer to POD type. ]
- ]
-
- [
- [[link boost_asio.reference.const_buffers_1.buffer_size [*buffer_size]]]
- [Get the number of bytes in a non-modifiable buffer. ]
- ]
-
- [
- [[link boost_asio.reference.const_buffers_1.operator_plus_ [*operator+]]]
- [Create a new non-modifiable buffer that is offset from the start of another. ]
- ]
-
-]
+ std::size_t fill(
+ boost::system::error_code & ec);
 
 
-[section:begin const_buffers_1::begin]
 
-Get a random-access iterator to the first element.
+[endsect]
+
 
- const_iterator begin() const;
+[endsect]
+
+[section:flush buffered_stream::flush]
+
+[indexterm2 flush..buffered_stream] 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 ``[link boost_asio.reference.buffered_stream.flush.overload1 flush]``();
+
+ std::size_t ``[link boost_asio.reference.buffered_stream.flush.overload2 flush]``(
+ boost::system::error_code & ec);
+
+
+[section:overload1 buffered_stream::flush (1 of 2 overloads)]
+
+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();
 
 
 
@@ -26643,33 +28148,47 @@
 
 
 
-[section:buffer_cast const_buffers_1::buffer_cast]
+[section:overload2 buffered_stream::flush (2 of 2 overloads)]
 
+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.
 
-['Inherited from const_buffer.]
+ std::size_t flush(
+ boost::system::error_code & ec);
 
-Cast a non-modifiable buffer to a specified pointer to POD type.
 
- template<
- typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
- PointerToPodType buffer_cast(
- const const_buffer & b);
 
+[endsect]
 
 
 [endsect]
 
 
+[section:get_io_service buffered_stream::get_io_service]
 
-[section:buffer_size const_buffers_1::buffer_size]
+[indexterm2 get_io_service..buffered_stream] Get the io_service associated with the object.
 
+ boost::asio::io_service & get_io_service();
 
-['Inherited from const_buffer.]
 
-Get the number of bytes in a non-modifiable buffer.
 
- std::size_t buffer_size(
- const const_buffer & b);
+[endsect]
+
+
+[section:in_avail buffered_stream::in_avail]
+
+[indexterm2 in_avail..buffered_stream] Determine the amount of data that may be read without blocking.
+
+ std::size_t ``[link boost_asio.reference.buffered_stream.in_avail.overload1 in_avail]``();
+
+ std::size_t ``[link boost_asio.reference.buffered_stream.in_avail.overload2 in_avail]``(
+ boost::system::error_code & ec);
+
+
+[section:overload1 buffered_stream::in_avail (1 of 2 overloads)]
+
+Determine the amount of data that may be read without blocking.
+
+ std::size_t in_avail();
 
 
 
@@ -26677,25 +28196,26 @@
 
 
 
-[section:const_buffers_1 const_buffers_1::const_buffers_1]
+[section:overload2 buffered_stream::in_avail (2 of 2 overloads)]
 
-Construct to represent a single non-modifiable buffer.
+Determine the amount of data that may be read without blocking.
 
- const_buffers_1(
- const const_buffer & b);
+ std::size_t in_avail(
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:const_iterator const_buffers_1::const_iterator]
 
-A random-access iterator type that may be used to read elements.
+[section:io_service buffered_stream::io_service]
 
- typedef const const_buffer * const_iterator;
+[indexterm2 io_service..buffered_stream] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
+ boost::asio::io_service & io_service();
 
 
 
@@ -26703,40 +28223,36 @@
 
 
 
-[section:end const_buffers_1::end]
+[section:lowest_layer buffered_stream::lowest_layer]
 
-Get a random-access iterator for one past the last element.
+[indexterm2 lowest_layer..buffered_stream] Get a reference to the lowest layer.
 
- const_iterator end() const;
+ lowest_layer_type & lowest_layer();
 
 
 
 [endsect]
 
 
-[section:operator_plus_ const_buffers_1::operator+]
 
-Create a new non-modifiable buffer that is offset from the start of another.
+[section:lowest_layer_type buffered_stream::lowest_layer_type]
 
- const_buffer ``[link boost_asio.reference.const_buffers_1.operator_plus_.overload1 operator+]``(
- const const_buffer & b,
- std::size_t start);
+[indexterm2 lowest_layer_type..buffered_stream] The type of the lowest layer.
 
- const_buffer ``[link boost_asio.reference.const_buffers_1.operator_plus_.overload2 operator+]``(
- std::size_t start,
- const const_buffer & b);
+ typedef next_layer_type::lowest_layer_type lowest_layer_type;
 
 
-[section:overload1 const_buffers_1::operator+ (1 of 2 overloads)]
 
 
-['Inherited from const_buffer.]
+[endsect]
 
-Create a new non-modifiable buffer that is offset from the start of another.
 
- const_buffer operator+(
- const const_buffer & b,
- std::size_t start);
+
+[section:next_layer buffered_stream::next_layer]
+
+[indexterm2 next_layer..buffered_stream] Get a reference to the next layer.
+
+ next_layer_type & next_layer();
 
 
 
@@ -26744,65 +28260,90 @@
 
 
 
-[section:overload2 const_buffers_1::operator+ (2 of 2 overloads)]
+[section:next_layer_type buffered_stream::next_layer_type]
 
+[indexterm2 next_layer_type..buffered_stream] The type of the next layer.
 
-['Inherited from const_buffer.]
+ typedef boost::remove_reference< Stream >::type next_layer_type;
 
-Create a new non-modifiable buffer that is offset from the start of another.
 
- const_buffer operator+(
- std::size_t start,
- const const_buffer & b);
+
+
+[endsect]
+
+
+[section:peek buffered_stream::peek]
+
+[indexterm2 peek..buffered_stream] Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_stream.peek.overload1 peek]``(
+ const MutableBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_stream.peek.overload2 peek]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+[section:overload1 buffered_stream::peek (1 of 2 overloads)]
+
+Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t peek(
+ const MutableBufferSequence & buffers);
 
 
 
 [endsect]
 
 
+
+[section:overload2 buffered_stream::peek (2 of 2 overloads)]
+
+Peek at the incoming data on the stream. Returns the number of bytes read, or 0 if an error occurred.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t peek(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+
 [endsect]
 
 
-[section:value_type const_buffers_1::value_type]
+[endsect]
 
-The type for each element in the list of buffers.
+[section:read_some buffered_stream::read_some]
 
- typedef const_buffer value_type;
+[indexterm2 read_some..buffered_stream] Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_stream.read_some.overload1 read_some]``(
+ const MutableBufferSequence & buffers);
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_stream.read_some.overload2 read_some]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
- [
- [[link boost_asio.reference.const_buffer.const_buffer [*const_buffer]]]
- [Construct an empty buffer. ]
- ]
-
-]
 
-[heading Related Functions]
-[table
- [[Name][Description]]
+[section:overload1 buffered_stream::read_some (1 of 2 overloads)]
 
- [
- [[link boost_asio.reference.const_buffer.buffer_cast [*buffer_cast]]]
- [Cast a non-modifiable buffer to a specified pointer to POD type. ]
- ]
-
- [
- [[link boost_asio.reference.const_buffer.buffer_size [*buffer_size]]]
- [Get the number of bytes in a non-modifiable buffer. ]
- ]
-
- [
- [[link boost_asio.reference.const_buffer.operator_plus_ [*operator+]]]
- [Create a new non-modifiable buffer that is offset from the start of another. ]
- ]
-
-]
+Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
 
-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.
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers);
 
 
 
@@ -26810,47 +28351,99 @@
 
 
 
+[section:overload2 buffered_stream::read_some (2 of 2 overloads)]
+
+Read some data from the stream. Returns the number of bytes read or 0 if an error occurred.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+
 [endsect]
 
-[section:datagram_socket_service datagram_socket_service]
 
-Default service implementation for a datagram socket.
+[endsect]
+
+[section:write_some buffered_stream::write_some]
+
+[indexterm2 write_some..buffered_stream] Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
   template<
- typename ``[link boost_asio.reference.Protocol Protocol]``>
- class datagram_socket_service :
- public io_service::service
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_stream.write_some.overload1 write_some]``(
+ const ConstBufferSequence & buffers);
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_stream.write_some.overload2 write_some]``(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
+[section:overload1 buffered_stream::write_some (1 of 2 overloads)]
 
- [[link boost_asio.reference.datagram_socket_service.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
+Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
- [
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers);
+
+
+
+[endsect]
+
+
+
+[section:overload2 buffered_stream::write_some (2 of 2 overloads)]
+
+Write the given data to the stream. Returns the number of bytes written, or 0 if an error occurred.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+[endsect]
 
- [[link boost_asio.reference.datagram_socket_service.implementation_type [*implementation_type]]]
- [The type of a datagram socket. ]
-
- ]
+
+[endsect]
+
+[section:buffered_write_stream buffered_write_stream]
+
+Adds buffering to the write-related operations of a stream.
+
+ template<
+ typename Stream>
+ class buffered_write_stream :
+ noncopyable
+
+
+[heading Types]
+[table
+ [[Name][Description]]
 
   [
 
- [[link boost_asio.reference.datagram_socket_service.native_type [*native_type]]]
- [The native socket type. ]
+ [[link boost_asio.reference.buffered_write_stream.lowest_layer_type [*lowest_layer_type]]]
+ [The type of the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.datagram_socket_service.protocol_type [*protocol_type]]]
- [The protocol type. ]
+ [[link boost_asio.reference.buffered_write_stream.next_layer_type [*next_layer_type]]]
+ [The type of the next layer. ]
   
   ]
 
@@ -26861,158 +28454,73 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.datagram_socket_service.assign [*assign]]]
- [Assign an existing native socket to a datagram socket. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.async_receive [*async_receive]]]
- [Start an asynchronous receive. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.async_receive_from [*async_receive_from]]]
- [Start an asynchronous receive that will get the endpoint of the sender. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.async_send [*async_send]]]
- [Start an asynchronous send. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.async_send_to [*async_send_to]]]
- [Start an asynchronous send. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.available [*available]]]
- [Determine the number of bytes available for reading. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.bind [*bind]]]
- []
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.close [*close]]]
- [Close a datagram socket implementation. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.connect [*connect]]]
- [Connect the datagram socket to the specified endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.construct [*construct]]]
- [Construct a new datagram socket implementation. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.datagram_socket_service [*datagram_socket_service]]]
- [Construct a new datagram socket service for the specified io_service. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.destroy [*destroy]]]
- [Destroy a datagram socket implementation. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.get_option [*get_option]]]
- [Get a socket option. ]
- ]
-
- [
- [[link boost_asio.reference.datagram_socket_service.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
+ [[link boost_asio.reference.buffered_write_stream.async_flush [*async_flush]]]
+ [Start an asynchronous flush. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.buffered_write_stream.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. The buffer into which the data will be read must be valid for the lifetime of the asynchronous operation. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.is_open [*is_open]]]
- [Determine whether the socket is open. ]
+ [[link boost_asio.reference.buffered_write_stream.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.local_endpoint [*local_endpoint]]]
- [Get the local endpoint. ]
+ [[link boost_asio.reference.buffered_write_stream.buffered_write_stream [*buffered_write_stream]]]
+ [Construct, passing the specified argument to initialise the next layer. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.native [*native]]]
- [Get the native socket implementation. ]
+ [[link boost_asio.reference.buffered_write_stream.close [*close]]]
+ [Close the stream. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.open [*open]]]
- []
+ [[link boost_asio.reference.buffered_write_stream.flush [*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. Throws an exception on failure. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.receive [*receive]]]
- [Receive some data from the peer. ]
+ [[link boost_asio.reference.buffered_write_stream.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.receive_from [*receive_from]]]
- [Receive a datagram with the endpoint of the sender. ]
+ [[link boost_asio.reference.buffered_write_stream.in_avail [*in_avail]]]
+ [Determine the amount of data that may be read without blocking. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint. ]
+ [[link boost_asio.reference.buffered_write_stream.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.send [*send]]]
- [Send the given data to the peer. ]
+ [[link boost_asio.reference.buffered_write_stream.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.send_to [*send_to]]]
- [Send a datagram to the specified endpoint. ]
+ [[link boost_asio.reference.buffered_write_stream.next_layer [*next_layer]]]
+ [Get a reference to the next layer. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.set_option [*set_option]]]
- [Set a socket option. ]
+ [[link boost_asio.reference.buffered_write_stream.peek [*peek]]]
+ [Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
+ [[link boost_asio.reference.buffered_write_stream.read_some [*read_some]]]
+ [Read some data from the stream. Returns the number of bytes read. Throws an exception on failure. ]
   ]
   
   [
- [[link boost_asio.reference.datagram_socket_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
+ [[link boost_asio.reference.buffered_write_stream.write_some [*write_some]]]
+ [Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure. ]
   ]
   
 ]
@@ -27022,39 +28530,31 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.datagram_socket_service.id [*id]]]
- [The unique service identifier. ]
+ [[link boost_asio.reference.buffered_write_stream.default_buffer_size [*default_buffer_size]]]
+ [The default buffer size. ]
   ]
 
 ]
 
-
-[section:assign datagram_socket_service::assign]
-
-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);
+The buffered_write_stream class template can be used to add buffering to the synchronous and asynchronous write operations of a stream.
 
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
-[endsect]
+[*Shared] [*objects:] Unsafe.
 
 
 
-[section:async_connect datagram_socket_service::async_connect]
+[section:async_flush buffered_write_stream::async_flush]
 
-Start an asynchronous connect.
+[indexterm2 async_flush..buffered_write_stream] Start an asynchronous flush.
 
   template<
- typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
- implementation_type & impl,
- const endpoint_type & peer_endpoint,
- ConnectHandler handler);
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_flush(
+ WriteHandler handler);
 
 
 
@@ -27062,17 +28562,15 @@
 
 
 
-[section:async_receive datagram_socket_service::async_receive]
+[section:async_read_some buffered_write_stream::async_read_some]
 
-Start an asynchronous receive.
+[indexterm2 async_read_some..buffered_write_stream] 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 ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
- implementation_type & impl,
+ void async_read_some(
       const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
       ReadHandler handler);
 
 
@@ -27081,58 +28579,46 @@
 
 
 
-[section:async_receive_from datagram_socket_service::async_receive_from]
+[section:async_write_some buffered_write_stream::async_write_some]
 
-Start an asynchronous receive that will get the endpoint of the sender.
+[indexterm2 async_write_some..buffered_write_stream] Start an asynchronous write. The data being written must be valid for the lifetime of the asynchronous operation.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive_from(
- implementation_type & impl,
- const MutableBufferSequence & buffers,
- endpoint_type & sender_endpoint,
- socket_base::message_flags flags,
- ReadHandler handler);
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
 
 
 
 [endsect]
 
 
+[section:buffered_write_stream buffered_write_stream::buffered_write_stream]
 
-[section:async_send datagram_socket_service::async_send]
+[indexterm2 buffered_write_stream..buffered_write_stream] Construct, passing the specified argument to initialise the next layer.
 
-Start an asynchronous send.
+ template<
+ typename Arg>
+ ``[link boost_asio.reference.buffered_write_stream.buffered_write_stream.overload1 buffered_write_stream]``(
+ Arg & a);
 
   template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
- implementation_type & impl,
- const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
- WriteHandler handler);
-
-
-
-[endsect]
-
+ typename Arg>
+ ``[link boost_asio.reference.buffered_write_stream.buffered_write_stream.overload2 buffered_write_stream]``(
+ Arg & a,
+ std::size_t buffer_size);
 
 
-[section:async_send_to datagram_socket_service::async_send_to]
+[section:overload1 buffered_write_stream::buffered_write_stream (1 of 2 overloads)]
 
-Start an asynchronous send.
+Construct, passing the specified argument to initialise the next layer.
 
   template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send_to(
- implementation_type & impl,
- const ConstBufferSequence & buffers,
- const endpoint_type & destination,
- socket_base::message_flags flags,
- WriteHandler handler);
+ typename Arg>
+ buffered_write_stream(
+ Arg & a);
 
 
 
@@ -27140,56 +28626,38 @@
 
 
 
-[section:at_mark datagram_socket_service::at_mark]
+[section:overload2 buffered_write_stream::buffered_write_stream (2 of 2 overloads)]
 
-Determine whether the socket is at the out-of-band data mark.
+Construct, passing the specified argument to initialise the next layer.
 
- bool at_mark(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
+ template<
+ typename Arg>
+ buffered_write_stream(
+ Arg & a,
+ std::size_t buffer_size);
 
 
 
 [endsect]
 
 
-
-[section:available datagram_socket_service::available]
-
-Determine the number of bytes available for reading.
-
- std::size_t available(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
-
-
-
 [endsect]
 
+[section:close buffered_write_stream::close]
 
+[indexterm2 close..buffered_write_stream] Close the stream.
 
-[section:bind datagram_socket_service::bind]
-
-
+ void ``[link boost_asio.reference.buffered_write_stream.close.overload1 close]``();
 
- boost::system::error_code bind(
- implementation_type & impl,
- const endpoint_type & endpoint,
+ boost::system::error_code ``[link boost_asio.reference.buffered_write_stream.close.overload2 close]``(
       boost::system::error_code & ec);
 
 
+[section:overload1 buffered_write_stream::close (1 of 2 overloads)]
 
-[endsect]
-
-
-
-[section:cancel datagram_socket_service::cancel]
-
-Cancel all asynchronous operations associated with the socket.
+Close the stream.
 
- boost::system::error_code cancel(
- implementation_type & impl,
- boost::system::error_code & ec);
+ void close();
 
 
 
@@ -27197,12 +28665,11 @@
 
 
 
-[section:close datagram_socket_service::close]
+[section:overload2 buffered_write_stream::close (2 of 2 overloads)]
 
-Close a datagram socket implementation.
+Close the stream.
 
   boost::system::error_code close(
- implementation_type & impl,
       boost::system::error_code & ec);
 
 
@@ -27210,41 +28677,35 @@
 [endsect]
 
 
-
-[section:connect datagram_socket_service::connect]
-
-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);
+[endsect]
 
 
+[section:default_buffer_size buffered_write_stream::default_buffer_size]
 
-[endsect]
+[indexterm2 default_buffer_size..buffered_write_stream] The default buffer size.
 
+ static const std::size_t default_buffer_size = implementation_defined;
 
 
-[section:construct datagram_socket_service::construct]
 
-Construct a new datagram socket implementation.
+[endsect]
 
- void construct(
- implementation_type & impl);
 
+[section:flush buffered_write_stream::flush]
 
+[indexterm2 flush..buffered_write_stream] 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.
 
-[endsect]
+ std::size_t ``[link boost_asio.reference.buffered_write_stream.flush.overload1 flush]``();
 
+ std::size_t ``[link boost_asio.reference.buffered_write_stream.flush.overload2 flush]``(
+ boost::system::error_code & ec);
 
 
-[section:datagram_socket_service datagram_socket_service::datagram_socket_service]
+[section:overload1 buffered_write_stream::flush (1 of 2 overloads)]
 
-Construct a new datagram socket service for the specified io_service.
+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.
 
- datagram_socket_service(
- boost::asio::io_service & io_service);
+ std::size_t flush();
 
 
 
@@ -27252,57 +28713,47 @@
 
 
 
-[section:destroy datagram_socket_service::destroy]
+[section:overload2 buffered_write_stream::flush (2 of 2 overloads)]
 
-Destroy a datagram socket implementation.
+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.
 
- void destroy(
- implementation_type & impl);
+ std::size_t flush(
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:endpoint_type datagram_socket_service::endpoint_type]
 
-The endpoint type.
+[section:get_io_service buffered_write_stream::get_io_service]
 
- typedef Protocol::endpoint endpoint_type;
+[indexterm2 get_io_service..buffered_write_stream] Get the io_service associated with the object.
 
+ boost::asio::io_service & get_io_service();
 
 
 
 [endsect]
 
 
+[section:in_avail buffered_write_stream::in_avail]
 
-[section:get_io_service datagram_socket_service::get_io_service]
-
-
-['Inherited from io_service.]
-
-Get the io_service object that owns the service.
-
- boost::asio::io_service & get_io_service();
-
-
+[indexterm2 in_avail..buffered_write_stream] Determine the amount of data that may be read without blocking.
 
-[endsect]
+ std::size_t ``[link boost_asio.reference.buffered_write_stream.in_avail.overload1 in_avail]``();
 
+ std::size_t ``[link boost_asio.reference.buffered_write_stream.in_avail.overload2 in_avail]``(
+ boost::system::error_code & ec);
 
 
-[section:get_option datagram_socket_service::get_option]
+[section:overload1 buffered_write_stream::in_avail (1 of 2 overloads)]
 
-Get a socket option.
+Determine the amount of data that may be read without blocking.
 
- template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- boost::system::error_code get_option(
- const implementation_type & impl,
- GettableSocketOption & option,
- boost::system::error_code & ec) const;
+ std::size_t in_avail();
 
 
 
@@ -27310,24 +28761,26 @@
 
 
 
-[section:id datagram_socket_service::id]
+[section:overload2 buffered_write_stream::in_avail (2 of 2 overloads)]
 
-The unique service identifier.
+Determine the amount of data that may be read without blocking.
 
- static boost::asio::io_service::id id;
+ std::size_t in_avail(
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:implementation_type datagram_socket_service::implementation_type]
 
-The type of a datagram socket.
+[section:io_service buffered_write_stream::io_service]
 
- typedef implementation_defined implementation_type;
+[indexterm2 io_service..buffered_write_stream] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
+ boost::asio::io_service & io_service();
 
 
 
@@ -27335,16 +28788,11 @@
 
 
 
-[section:io_control datagram_socket_service::io_control]
+[section:lowest_layer buffered_write_stream::lowest_layer]
 
-Perform an IO control command on the socket.
+[indexterm2 lowest_layer..buffered_write_stream] Get a reference to the lowest layer.
 
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code io_control(
- implementation_type & impl,
- IoControlCommand & command,
- boost::system::error_code & ec);
+ lowest_layer_type & lowest_layer();
 
 
 
@@ -27352,14 +28800,12 @@
 
 
 
-[section:io_service datagram_socket_service::io_service]
-
+[section:lowest_layer_type buffered_write_stream::lowest_layer_type]
 
-['Inherited from io_service.]
+[indexterm2 lowest_layer_type..buffered_write_stream] The type of the lowest layer.
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+ typedef next_layer_type::lowest_layer_type lowest_layer_type;
 
- boost::asio::io_service & io_service();
 
 
 
@@ -27367,12 +28813,11 @@
 
 
 
-[section:is_open datagram_socket_service::is_open]
+[section:next_layer buffered_write_stream::next_layer]
 
-Determine whether the socket is open.
+[indexterm2 next_layer..buffered_write_stream] Get a reference to the next layer.
 
- bool is_open(
- const implementation_type & impl) const;
+ next_layer_type & next_layer();
 
 
 
@@ -27380,67 +28825,90 @@
 
 
 
-[section:local_endpoint datagram_socket_service::local_endpoint]
-
-Get the local endpoint.
+[section:next_layer_type buffered_write_stream::next_layer_type]
 
- endpoint_type local_endpoint(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
+[indexterm2 next_layer_type..buffered_write_stream] The type of the next layer.
 
+ typedef boost::remove_reference< Stream >::type next_layer_type;
 
 
-[endsect]
 
 
+[endsect]
 
-[section:native datagram_socket_service::native]
 
-Get the native socket implementation.
+[section:peek buffered_write_stream::peek]
 
- native_type native(
- implementation_type & impl);
+[indexterm2 peek..buffered_write_stream] Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_write_stream.peek.overload1 peek]``(
+ const MutableBufferSequence & buffers);
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_write_stream.peek.overload2 peek]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-[endsect]
 
+[section:overload1 buffered_write_stream::peek (1 of 2 overloads)]
 
+Peek at the incoming data on the stream. Returns the number of bytes read. Throws an exception on failure.
 
-[section:native_type datagram_socket_service::native_type]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t peek(
+ const MutableBufferSequence & buffers);
 
-The native socket type.
 
- typedef implementation_defined native_type;
 
+[endsect]
 
 
 
-[endsect]
+[section:overload2 buffered_write_stream::peek (2 of 2 overloads)]
 
+Peek at the incoming data on the stream. Returns the number of bytes read, or 0 if an error occurred.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t peek(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-[section:open datagram_socket_service::open]
 
 
+[endsect]
 
- boost::system::error_code open(
- implementation_type & impl,
- const protocol_type & protocol,
- boost::system::error_code & ec);
 
+[endsect]
 
+[section:read_some buffered_write_stream::read_some]
 
-[endsect]
+[indexterm2 read_some..buffered_write_stream] Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_write_stream.read_some.overload1 read_some]``(
+ const MutableBufferSequence & buffers);
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_write_stream.read_some.overload2 read_some]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-[section:protocol_type datagram_socket_service::protocol_type]
 
-The protocol type.
+[section:overload1 buffered_write_stream::read_some (1 of 2 overloads)]
 
- typedef Protocol protocol_type;
+Read some data from the stream. Returns the number of bytes read. Throws an exception on failure.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers);
 
 
 
@@ -27448,16 +28916,14 @@
 
 
 
-[section:receive datagram_socket_service::receive]
+[section:overload2 buffered_write_stream::read_some (2 of 2 overloads)]
 
-Receive some data from the peer.
+Read some data from the stream. Returns the number of bytes read or 0 if an error occurred.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t receive(
- implementation_type & impl,
+ std::size_t read_some(
       const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
       boost::system::error_code & ec);
 
 
@@ -27465,33 +28931,32 @@
 [endsect]
 
 
+[endsect]
 
-[section:receive_from datagram_socket_service::receive_from]
+[section:write_some buffered_write_stream::write_some]
 
-Receive a datagram with the endpoint of the sender.
+[indexterm2 write_some..buffered_write_stream] Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence 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);
-
-
-
-[endsect]
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_write_stream.write_some.overload1 write_some]``(
+ const ConstBufferSequence & buffers);
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.buffered_write_stream.write_some.overload2 write_some]``(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
-[section:remote_endpoint datagram_socket_service::remote_endpoint]
+[section:overload1 buffered_write_stream::write_some (1 of 2 overloads)]
 
-Get the remote endpoint.
+Write the given data to the stream. Returns the number of bytes written. Throws an exception on failure.
 
- endpoint_type remote_endpoint(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers);
 
 
 
@@ -27499,16 +28964,14 @@
 
 
 
-[section:send datagram_socket_service::send]
+[section:overload2 buffered_write_stream::write_some (2 of 2 overloads)]
 
-Send the given data to the peer.
+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 ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t send(
- implementation_type & impl,
+ std::size_t write_some(
       const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
       boost::system::error_code & ec);
 
 
@@ -27516,19 +28979,20 @@
 [endsect]
 
 
+[endsect]
+
+
+[endsect]
 
-[section:send_to datagram_socket_service::send_to]
 
-Send a datagram to the specified endpoint.
+[section:buffers_begin buffers_begin]
+
+[indexterm1 buffers_begin] Construct an iterator representing the beginning of the buffers' data.
 
   template<
- typename ``[link boost_asio.reference.ConstBufferSequence 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);
+ typename BufferSequence>
+ buffers_iterator< BufferSequence > buffers_begin(
+ const BufferSequence & buffers);
 
 
 
@@ -27536,295 +29000,283 @@
 
 
 
-[section:set_option datagram_socket_service::set_option]
+[section:buffers_end buffers_end]
 
-Set a socket option.
+[indexterm1 buffers_end] Construct an iterator representing the end of the buffers' data.
 
   template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- boost::system::error_code set_option(
- implementation_type & impl,
- const SettableSocketOption & option,
- boost::system::error_code & ec);
+ typename BufferSequence>
+ buffers_iterator< BufferSequence > buffers_end(
+ const BufferSequence & buffers);
 
 
 
 [endsect]
 
 
+[section:buffers_iterator buffers_iterator]
 
-[section:shutdown datagram_socket_service::shutdown]
+A random access iterator over the bytes in a buffer sequence.
 
-Disable sends or receives on the socket.
+ template<
+ typename BufferSequence,
+ typename ByteType = char>
+ class buffers_iterator
 
- boost::system::error_code shutdown(
- implementation_type & impl,
- socket_base::shutdown_type what,
- boost::system::error_code & ec);
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.begin [*begin]]]
+ [Construct an iterator representing the beginning of the buffers' data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.buffers_iterator [*buffers_iterator]]]
+ [Default constructor. Creates an iterator in an undefined state. ]
+ ]
+
+ [
+ [[link boost_asio.reference.buffers_iterator.end [*end]]]
+ [Construct an iterator representing the end of the buffers' data. ]
+ ]
+
+]
 
 
-[endsect]
+[section:begin buffers_iterator::begin]
 
+[indexterm2 begin..buffers_iterator] Construct an iterator representing the beginning of the buffers' data.
 
+ static buffers_iterator begin(
+ const BufferSequence & buffers);
 
-[section:shutdown_service datagram_socket_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
 
- void shutdown_service();
+[endsect]
 
 
 
-[endsect]
+[section:buffers_iterator buffers_iterator::buffers_iterator]
 
+[indexterm2 buffers_iterator..buffers_iterator] Default constructor. Creates an iterator in an undefined state.
 
+ buffers_iterator();
 
-[endsect]
 
 
-[section:deadline_timer deadline_timer]
+[endsect]
 
-Typedef for the typical usage of timer.
 
- typedef basic_deadline_timer< boost::posix_time::ptime > deadline_timer;
 
+[section:end buffers_iterator::end]
 
-[heading Types]
-[table
- [[Name][Description]]
+[indexterm2 end..buffers_iterator] Construct an iterator representing the end of the buffers' data.
 
- [
+ static buffers_iterator end(
+ const BufferSequence & buffers);
 
- [[link boost_asio.reference.basic_deadline_timer.duration_type [*duration_type]]]
- [The duration type. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_deadline_timer.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_deadline_timer.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.basic_deadline_timer.time_type [*time_type]]]
- [The time type. ]
-
- ]
+[section:const_buffer const_buffer]
 
- [
+Holds a buffer that cannot be modified.
 
- [[link boost_asio.reference.basic_deadline_timer.traits_type [*traits_type]]]
- [The time traits type. ]
-
- ]
+ class const_buffer
 
-]
 
 [heading Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_deadline_timer.async_wait [*async_wait]]]
- [Start an asynchronous wait on the timer. ]
- ]
-
- [
- [[link boost_asio.reference.basic_deadline_timer.basic_deadline_timer [*basic_deadline_timer]]]
- [Constructor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_deadline_timer.cancel [*cancel]]]
- [Cancel any asynchronous operations that are waiting on the timer. ]
- ]
-
- [
- [[link boost_asio.reference.basic_deadline_timer.expires_at [*expires_at]]]
- [Get the timer's expiry time as an absolute time. ]
- ]
-
- [
- [[link boost_asio.reference.basic_deadline_timer.expires_from_now [*expires_from_now]]]
- [Get the timer's expiry time relative to now. ]
+ [[link boost_asio.reference.const_buffer.const_buffer [*const_buffer]]]
+ [Construct an empty buffer. ]
   ]
   
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.basic_deadline_timer.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
+ [[link boost_asio.reference.const_buffer.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
   ]
   
   [
- [[link boost_asio.reference.basic_deadline_timer.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ [[link boost_asio.reference.const_buffer.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
   ]
   
   [
- [[link boost_asio.reference.basic_deadline_timer.wait [*wait]]]
- [Perform a blocking wait on the timer. ]
+ [[link boost_asio.reference.const_buffer.operator_plus_ [*operator+]]]
+ [Create a new non-modifiable buffer that is offset from the start of another. ]
   ]
   
 ]
 
-[heading Protected Data Members]
-[table
- [[Name][Description]]
+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.
 
- [
- [[link boost_asio.reference.basic_deadline_timer.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
 
- [
- [[link boost_asio.reference.basic_deadline_timer.service [*service]]]
- [The service associated with the I/O object. ]
- ]
+[section:buffer_cast const_buffer::buffer_cast]
 
-]
+[indexterm2 buffer_cast..const_buffer] Cast a non-modifiable buffer to a specified pointer to POD type.
 
-The basic_deadline_timer class template provides the ability to perform a blocking or asynchronous wait for a timer to expire.
+ template<
+ typename PointerToPodType>
+ PointerToPodType buffer_cast(
+ const const_buffer & b);
 
-Most applications will use the boost::asio::deadline\_timer typedef.
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+[endsect]
 
-[*Shared] [*objects:] Unsafe.
 
-[heading Examples]
-
-Performing a blocking wait:
 
- // Construct a timer without setting an expiry time.
- boost::asio::deadline_timer timer(io_service);
+[section:buffer_size const_buffer::buffer_size]
 
- // Set an expiry time relative to now.
- timer.expires_from_now(boost::posix_time::seconds(5));
+[indexterm2 buffer_size..const_buffer] Get the number of bytes in a non-modifiable buffer.
 
- // Wait for the timer to expire.
- timer.wait();
+ std::size_t buffer_size(
+ const const_buffer & b);
 
 
 
+[endsect]
 
-Performing an asynchronous wait:
 
- void handler(const boost::system::error_code& error)
- {
- if (!error)
- {
- // Timer expired.
- }
- }
+[section:const_buffer const_buffer::const_buffer]
 
- ...
+[indexterm2 const_buffer..const_buffer] Construct an empty buffer.
 
- // 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"));
+ ``[link boost_asio.reference.const_buffer.const_buffer.overload1 const_buffer]``();
 
- // Start an asynchronous wait.
- timer.async_wait(handler);
+ ``[link boost_asio.reference.const_buffer.const_buffer.overload2 const_buffer]``(
+ const void * data,
+ std::size_t size);
 
+ ``[link boost_asio.reference.const_buffer.const_buffer.overload3 const_buffer]``(
+ const mutable_buffer & b);
 
 
+[section:overload1 const_buffer::const_buffer (1 of 3 overloads)]
 
-[heading Changing an active deadline_timer's expiry time]
-
+Construct an empty buffer.
 
+ const_buffer();
 
-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:
 
 
+[endsect]
 
- 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.
- }
- }
 
+[section:overload2 const_buffer::const_buffer (2 of 3 overloads)]
 
+Construct a buffer to represent a given memory range.
 
+ const_buffer(
+ const void * data,
+ std::size_t size);
 
 
-* 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.
 
-* If a wait handler is cancelled, the boost::system::error_code passed to it contains the value boost::asio::error::operation_aborted.
+[endsect]
 
 
 
+[section:overload3 const_buffer::const_buffer (3 of 3 overloads)]
 
-[endsect]
+Construct a non-modifiable buffer from a modifiable one.
 
+ const_buffer(
+ const mutable_buffer & b);
 
-[section:deadline_timer_service deadline_timer_service]
 
-Default service implementation for a timer.
 
- template<
- typename ``[link boost_asio.reference.TimeType TimeType]``,
- typename ``[link boost_asio.reference.TimeTraits TimeTraits]`` = boost::asio::time_traits<TimeType>>
- class deadline_timer_service :
- public io_service::service
+[endsect]
 
 
-[heading Types]
-[table
- [[Name][Description]]
+[endsect]
 
- [
+[section:operator_plus_ const_buffer::operator+]
 
- [[link boost_asio.reference.deadline_timer_service.duration_type [*duration_type]]]
- [The duration type. ]
-
- ]
+[indexterm2 operator+..const_buffer] Create a new non-modifiable buffer that is offset from the start of another.
 
- [
+ const_buffer ``[link boost_asio.reference.const_buffer.operator_plus_.overload1 operator+]``(
+ const const_buffer & b,
+ std::size_t start);
 
- [[link boost_asio.reference.deadline_timer_service.implementation_type [*implementation_type]]]
- [The implementation type of the deadline timer. ]
-
- ]
+ const_buffer ``[link boost_asio.reference.const_buffer.operator_plus_.overload2 operator+]``(
+ std::size_t start,
+ const const_buffer & b);
+
+
+[section:overload1 const_buffer::operator+ (1 of 2 overloads)]
+
+Create a new non-modifiable buffer that is offset from the start of another.
+
+ const_buffer operator+(
+ const const_buffer & b,
+ std::size_t start);
+
+
+
+[endsect]
+
+
+
+[section:overload2 const_buffer::operator+ (2 of 2 overloads)]
+
+Create a new non-modifiable buffer that is offset from the start of another.
+
+ const_buffer operator+(
+ std::size_t start,
+ const const_buffer & b);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[endsect]
+
+[section:const_buffers_1 const_buffers_1]
+
+Adapts a single non-modifiable buffer so that it meets the requirements of the ConstBufferSequence concept.
+
+ class const_buffers_1 :
+ public const_buffer
+
+
+[heading Types]
+[table
+ [[Name][Description]]
 
   [
 
- [[link boost_asio.reference.deadline_timer_service.time_type [*time_type]]]
- [The time type. ]
+ [[link boost_asio.reference.const_buffers_1.const_iterator [*const_iterator]]]
+ [A random-access iterator type that may be used to read elements. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.deadline_timer_service.traits_type [*traits_type]]]
- [The time traits type. ]
+ [[link boost_asio.reference.const_buffers_1.value_type [*value_type]]]
+ [The type for each element in the list of buffers. ]
   
   ]
 
@@ -27835,97 +29287,49 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.deadline_timer_service.async_wait [*async_wait]]]
- []
- ]
-
- [
- [[link boost_asio.reference.deadline_timer_service.cancel [*cancel]]]
- [Cancel any asynchronous wait operations associated with the timer. ]
- ]
-
- [
- [[link boost_asio.reference.deadline_timer_service.construct [*construct]]]
- [Construct a new timer implementation. ]
- ]
-
- [
- [[link boost_asio.reference.deadline_timer_service.deadline_timer_service [*deadline_timer_service]]]
- [Construct a new timer service for the specified io_service. ]
- ]
-
- [
- [[link boost_asio.reference.deadline_timer_service.destroy [*destroy]]]
- [Destroy a timer implementation. ]
- ]
-
- [
- [[link boost_asio.reference.deadline_timer_service.expires_at [*expires_at]]]
- [Get the expiry time for the timer as an absolute time. ]
+ [[link boost_asio.reference.const_buffers_1.begin [*begin]]]
+ [Get a random-access iterator to the first element. ]
   ]
   
   [
- [[link boost_asio.reference.deadline_timer_service.expires_from_now [*expires_from_now]]]
- [Get the expiry time for the timer relative to now. ]
+ [[link boost_asio.reference.const_buffers_1.const_buffers_1 [*const_buffers_1]]]
+ [Construct to represent a given memory range. ]
   ]
   
   [
- [[link boost_asio.reference.deadline_timer_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.const_buffers_1.end [*end]]]
+ [Get a random-access iterator for one past the last element. ]
   ]
   
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.deadline_timer_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.const_buffers_1.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
   ]
   
   [
- [[link boost_asio.reference.deadline_timer_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
+ [[link boost_asio.reference.const_buffers_1.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
   ]
   
   [
- [[link boost_asio.reference.deadline_timer_service.wait [*wait]]]
- []
+ [[link boost_asio.reference.const_buffers_1.operator_plus_ [*operator+]]]
+ [Create a new non-modifiable buffer that is offset from the start of another. ]
   ]
   
 ]
 
-[heading Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.deadline_timer_service.id [*id]]]
- [The unique service identifier. ]
- ]
-
-]
-
-
-[section:async_wait deadline_timer_service::async_wait]
-
-
-
- template<
- typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
- void async_wait(
- implementation_type & impl,
- WaitHandler handler);
-
-
-
-[endsect]
-
-
 
-[section:cancel deadline_timer_service::cancel]
+[section:begin const_buffers_1::begin]
 
-Cancel any asynchronous wait operations associated with the timer.
+[indexterm2 begin..const_buffers_1] Get a random-access iterator to the first element.
 
- std::size_t cancel(
- implementation_type & impl,
- boost::system::error_code & ec);
+ const_iterator begin() const;
 
 
 
@@ -27933,25 +29337,17 @@
 
 
 
-[section:construct deadline_timer_service::construct]
-
-Construct a new timer implementation.
-
- void construct(
- implementation_type & impl);
-
-
-
-[endsect]
-
+[section:buffer_cast const_buffers_1::buffer_cast]
 
 
-[section:deadline_timer_service deadline_timer_service::deadline_timer_service]
+['Inherited from const_buffer.]
 
-Construct a new timer service for the specified io_service.
+[indexterm2 buffer_cast..const_buffers_1] Cast a non-modifiable buffer to a specified pointer to POD type.
 
- deadline_timer_service(
- boost::asio::io_service & io_service);
+ template<
+ typename PointerToPodType>
+ PointerToPodType buffer_cast(
+ const const_buffer & b);
 
 
 
@@ -27959,50 +29355,40 @@
 
 
 
-[section:destroy deadline_timer_service::destroy]
-
-Destroy a timer implementation.
-
- void destroy(
- implementation_type & impl);
-
-
-
-[endsect]
-
-
+[section:buffer_size const_buffers_1::buffer_size]
 
-[section:duration_type deadline_timer_service::duration_type]
 
-The duration type.
+['Inherited from const_buffer.]
 
- typedef traits_type::duration_type duration_type;
+[indexterm2 buffer_size..const_buffers_1] Get the number of bytes in a non-modifiable buffer.
 
+ std::size_t buffer_size(
+ const const_buffer & b);
 
 
 
 [endsect]
 
 
-[section:expires_at deadline_timer_service::expires_at]
+[section:const_buffers_1 const_buffers_1::const_buffers_1]
 
-Get the expiry time for the timer as an absolute time.
+[indexterm2 const_buffers_1..const_buffers_1] Construct to represent a given memory range.
 
- time_type ``[link boost_asio.reference.deadline_timer_service.expires_at.overload1 expires_at]``(
- const implementation_type & impl) const;
+ ``[link boost_asio.reference.const_buffers_1.const_buffers_1.overload1 const_buffers_1]``(
+ const void * data,
+ std::size_t size);
 
- std::size_t ``[link boost_asio.reference.deadline_timer_service.expires_at.overload2 expires_at]``(
- implementation_type & impl,
- const time_type & expiry_time,
- boost::system::error_code & ec);
+ ``[link boost_asio.reference.const_buffers_1.const_buffers_1.overload2 const_buffers_1]``(
+ const const_buffer & b);
 
 
-[section:overload1 deadline_timer_service::expires_at (1 of 2 overloads)]
+[section:overload1 const_buffers_1::const_buffers_1 (1 of 2 overloads)]
 
-Get the expiry time for the timer as an absolute time.
+Construct to represent a given memory range.
 
- time_type expires_at(
- const implementation_type & impl) const;
+ const_buffers_1(
+ const void * data,
+ std::size_t size);
 
 
 
@@ -28010,98 +29396,68 @@
 
 
 
-[section:overload2 deadline_timer_service::expires_at (2 of 2 overloads)]
-
-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);
+[section:overload2 const_buffers_1::const_buffers_1 (2 of 2 overloads)]
 
+Construct to represent a single non-modifiable buffer.
 
+ const_buffers_1(
+ const const_buffer & b);
 
-[endsect]
 
 
 [endsect]
 
-[section:expires_from_now deadline_timer_service::expires_from_now]
-
-Get the expiry time for the timer relative to now.
-
- duration_type ``[link boost_asio.reference.deadline_timer_service.expires_from_now.overload1 expires_from_now]``(
- const implementation_type & impl) const;
-
- std::size_t ``[link boost_asio.reference.deadline_timer_service.expires_from_now.overload2 expires_from_now]``(
- implementation_type & impl,
- const duration_type & expiry_time,
- boost::system::error_code & ec);
-
-
-[section:overload1 deadline_timer_service::expires_from_now (1 of 2 overloads)]
-
-Get the expiry time for the timer relative to now.
-
- duration_type expires_from_now(
- const implementation_type & impl) const;
-
-
 
 [endsect]
 
 
+[section:const_iterator const_buffers_1::const_iterator]
 
-[section:overload2 deadline_timer_service::expires_from_now (2 of 2 overloads)]
-
-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);
+[indexterm2 const_iterator..const_buffers_1] A random-access iterator type that may be used to read elements.
 
+ typedef const const_buffer * const_iterator;
 
 
-[endsect]
 
 
 [endsect]
 
 
-[section:get_io_service deadline_timer_service::get_io_service]
-
 
-['Inherited from io_service.]
+[section:end const_buffers_1::end]
 
-Get the io_service object that owns the service.
+[indexterm2 end..const_buffers_1] Get a random-access iterator for one past the last element.
 
- boost::asio::io_service & get_io_service();
+ const_iterator end() const;
 
 
 
 [endsect]
 
 
+[section:operator_plus_ const_buffers_1::operator+]
 
-[section:id deadline_timer_service::id]
-
-The unique service identifier.
-
- static boost::asio::io_service::id id;
-
+[indexterm2 operator+..const_buffers_1] Create a new non-modifiable buffer that is offset from the start of another.
 
+ const_buffer ``[link boost_asio.reference.const_buffers_1.operator_plus_.overload1 operator+]``(
+ const const_buffer & b,
+ std::size_t start);
 
-[endsect]
+ const_buffer ``[link boost_asio.reference.const_buffers_1.operator_plus_.overload2 operator+]``(
+ std::size_t start,
+ const const_buffer & b);
 
 
+[section:overload1 const_buffers_1::operator+ (1 of 2 overloads)]
 
-[section:implementation_type deadline_timer_service::implementation_type]
 
-The implementation type of the deadline timer.
+['Inherited from const_buffer.]
 
- typedef implementation_defined implementation_type;
+Create a new non-modifiable buffer that is offset from the start of another.
 
+ const_buffer operator+(
+ const const_buffer & b,
+ std::size_t start);
 
 
 
@@ -28109,66 +29465,65 @@
 
 
 
-[section:io_service deadline_timer_service::io_service]
-
-
-['Inherited from io_service.]
-
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
-
- boost::asio::io_service & io_service();
-
-
-
-[endsect]
-
+[section:overload2 const_buffers_1::operator+ (2 of 2 overloads)]
 
 
-[section:shutdown_service deadline_timer_service::shutdown_service]
+['Inherited from const_buffer.]
 
-Destroy all user-defined handler objects owned by the service.
+Create a new non-modifiable buffer that is offset from the start of another.
 
- void shutdown_service();
+ const_buffer operator+(
+ std::size_t start,
+ const const_buffer & b);
 
 
 
 [endsect]
 
 
-
-[section:time_type deadline_timer_service::time_type]
-
-The time type.
-
- typedef traits_type::time_type time_type;
-
-
-
-
 [endsect]
 
 
+[section:value_type const_buffers_1::value_type]
 
-[section:traits_type deadline_timer_service::traits_type]
-
-The time traits type.
-
- typedef TimeTraits traits_type;
-
-
-
+[indexterm2 value_type..const_buffers_1] The type for each element in the list of buffers.
 
-[endsect]
+ typedef const_buffer value_type;
 
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[section:wait deadline_timer_service::wait]
+ [
+ [[link boost_asio.reference.const_buffer.const_buffer [*const_buffer]]]
+ [Construct an empty buffer. ]
+ ]
+
+]
 
+[heading Related Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.const_buffer.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.const_buffer.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.const_buffer.operator_plus_ [*operator+]]]
+ [Create a new non-modifiable buffer that is offset from the start of another. ]
+ ]
+
+]
 
- void wait(
- implementation_type & impl,
- boost::system::error_code & ec);
+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.
 
 
 
@@ -28178,269 +29533,307 @@
 
 [endsect]
 
+[section:datagram_socket_service datagram_socket_service]
 
-[section:error__addrinfo_category error::addrinfo_category]
-
-
-
- static const boost::system::error_category & addrinfo_category = boost::asio::error::get_addrinfo_category();
-
-
-
-[endsect]
+Default service implementation for a datagram socket.
 
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ class datagram_socket_service :
+ public io_service::service
 
 
-[section:error__addrinfo_errors error::addrinfo_errors]
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
+ [[link boost_asio.reference.datagram_socket_service.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
 
- enum addrinfo_errors
+ [
 
-[heading Values]
-[variablelist
+ [[link boost_asio.reference.datagram_socket_service.implementation_type [*implementation_type]]]
+ [The type of a datagram socket. ]
+
+ ]
 
   [
- [service_not_found]
- [The service is not supported for the given socket type. ]
+
+ [[link boost_asio.reference.datagram_socket_service.native_type [*native_type]]]
+ [The native socket type. ]
+
   ]
 
   [
- [socket_type_not_supported]
- [The socket type is not supported. ]
+
+ [[link boost_asio.reference.datagram_socket_service.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
   ]
 
 ]
 
-
-
-[endsect]
-
-
-
-[section:error__basic_errors error::basic_errors]
-
-
-
- enum basic_errors
-
-[heading Values]
-[variablelist
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
   [
- [access_denied]
- [Permission denied. ]
+ [[link boost_asio.reference.datagram_socket_service.assign [*assign]]]
+ [Assign an existing native socket to a datagram socket. ]
   ]
-
+
   [
- [address_family_not_supported]
- [Address family not supported by protocol. ]
+ [[link boost_asio.reference.datagram_socket_service.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
   ]
-
+
   [
- [address_in_use]
- [Address already in use. ]
+ [[link boost_asio.reference.datagram_socket_service.async_receive [*async_receive]]]
+ [Start an asynchronous receive. ]
   ]
-
+
   [
- [already_connected]
- [Transport endpoint is already connected. ]
+ [[link boost_asio.reference.datagram_socket_service.async_receive_from [*async_receive_from]]]
+ [Start an asynchronous receive that will get the endpoint of the sender. ]
   ]
-
+
   [
- [already_started]
- [Operation already in progress. ]
+ [[link boost_asio.reference.datagram_socket_service.async_send [*async_send]]]
+ [Start an asynchronous send. ]
   ]
-
+
   [
- [broken_pipe]
- [Broken pipe. ]
+ [[link boost_asio.reference.datagram_socket_service.async_send_to [*async_send_to]]]
+ [Start an asynchronous send. ]
   ]
-
+
   [
- [connection_aborted]
- [A connection has been aborted. ]
+ [[link boost_asio.reference.datagram_socket_service.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
   ]
-
+
   [
- [connection_refused]
- [Connection refused. ]
+ [[link boost_asio.reference.datagram_socket_service.available [*available]]]
+ [Determine the number of bytes available for reading. ]
   ]
-
+
   [
- [connection_reset]
- [Connection reset by peer. ]
+ [[link boost_asio.reference.datagram_socket_service.bind [*bind]]]
+ []
   ]
-
+
   [
- [bad_descriptor]
- [Bad file descriptor. ]
+ [[link boost_asio.reference.datagram_socket_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
   ]
-
+
   [
- [fault]
- [Bad address. ]
+ [[link boost_asio.reference.datagram_socket_service.close [*close]]]
+ [Close a datagram socket implementation. ]
   ]
-
+
   [
- [host_unreachable]
- [No route to host. ]
+ [[link boost_asio.reference.datagram_socket_service.connect [*connect]]]
+ [Connect the datagram socket to the specified endpoint. ]
   ]
-
+
   [
- [in_progress]
- [Operation now in progress. ]
+ [[link boost_asio.reference.datagram_socket_service.construct [*construct]]]
+ [Construct a new datagram socket implementation. ]
   ]
-
+
   [
- [interrupted]
- [Interrupted system call. ]
+ [[link boost_asio.reference.datagram_socket_service.datagram_socket_service [*datagram_socket_service]]]
+ [Construct a new datagram socket service for the specified io_service. ]
   ]
-
+
   [
- [invalid_argument]
- [Invalid argument. ]
+ [[link boost_asio.reference.datagram_socket_service.destroy [*destroy]]]
+ [Destroy a datagram socket implementation. ]
   ]
-
+
   [
- [message_size]
- [Message too long. ]
+ [[link boost_asio.reference.datagram_socket_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
   ]
-
+
   [
- [name_too_long]
- [The name was too long. ]
+ [[link boost_asio.reference.datagram_socket_service.get_option [*get_option]]]
+ [Get a socket option. ]
   ]
-
+
   [
- [network_down]
- [Network is down. ]
+ [[link boost_asio.reference.datagram_socket_service.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
   ]
-
+
   [
- [network_reset]
- [Network dropped connection on reset. ]
+ [[link boost_asio.reference.datagram_socket_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
   ]
-
+
   [
- [network_unreachable]
- [Network is unreachable. ]
+ [[link boost_asio.reference.datagram_socket_service.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
   ]
-
+
   [
- [no_descriptors]
- [Too many open files. ]
+ [[link boost_asio.reference.datagram_socket_service.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint. ]
   ]
-
+
   [
- [no_buffer_space]
- [No buffer space available. ]
+ [[link boost_asio.reference.datagram_socket_service.native [*native]]]
+ [Get the native socket implementation. ]
   ]
-
+
   [
- [no_memory]
- [Cannot allocate memory. ]
+ [[link boost_asio.reference.datagram_socket_service.open [*open]]]
+ []
   ]
-
+
   [
- [no_permission]
- [Operation not permitted. ]
+ [[link boost_asio.reference.datagram_socket_service.receive [*receive]]]
+ [Receive some data from the peer. ]
   ]
-
+
   [
- [no_protocol_option]
- [Protocol not available. ]
+ [[link boost_asio.reference.datagram_socket_service.receive_from [*receive_from]]]
+ [Receive a datagram with the endpoint of the sender. ]
   ]
-
+
   [
- [not_connected]
- [Transport endpoint is not connected. ]
+ [[link boost_asio.reference.datagram_socket_service.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint. ]
   ]
-
+
   [
- [not_socket]
- [Socket operation on non-socket. ]
+ [[link boost_asio.reference.datagram_socket_service.send [*send]]]
+ [Send the given data to the peer. ]
   ]
-
+
   [
- [operation_aborted]
- [Operation cancelled. ]
+ [[link boost_asio.reference.datagram_socket_service.send_to [*send_to]]]
+ [Send a datagram to the specified endpoint. ]
   ]
-
+
   [
- [operation_not_supported]
- [Operation not supported. ]
+ [[link boost_asio.reference.datagram_socket_service.set_option [*set_option]]]
+ [Set a socket option. ]
   ]
-
+
   [
- [shut_down]
- [Cannot send after transport endpoint shutdown. ]
+ [[link boost_asio.reference.datagram_socket_service.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
   ]
-
+
   [
- [timed_out]
- [Connection timed out. ]
+ [[link boost_asio.reference.datagram_socket_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
   ]
+
+]
 
- [
- [try_again]
- [Resource temporarily unavailable. ]
- ]
+[heading Data Members]
+[table
+ [[Name][Description]]
 
   [
- [would_block]
- [The socket is marked non-blocking and the requested operation would block. ]
+ [[link boost_asio.reference.datagram_socket_service.id [*id]]]
+ [The unique service identifier. ]
   ]
 
 ]
 
 
+[section:assign datagram_socket_service::assign]
 
-[endsect]
+[indexterm2 assign..datagram_socket_service] 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);
 
 
-[section:error__get_addrinfo_category error::get_addrinfo_category]
 
+[endsect]
 
 
- const boost::system::error_category & get_addrinfo_category();
 
+[section:async_connect datagram_socket_service::async_connect]
 
+[indexterm2 async_connect..datagram_socket_service] Start an asynchronous connect.
 
-[endsect]
+ template<
+ typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
+ void async_connect(
+ implementation_type & impl,
+ const endpoint_type & peer_endpoint,
+ ConnectHandler handler);
 
 
 
-[section:error__get_misc_category error::get_misc_category]
+[endsect]
 
 
 
- const boost::system::error_category & get_misc_category();
+[section:async_receive datagram_socket_service::async_receive]
 
+[indexterm2 async_receive..datagram_socket_service] Start an asynchronous receive.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_receive(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
+ ReadHandler handler);
 
-[endsect]
 
 
+[endsect]
 
-[section:error__get_netdb_category error::get_netdb_category]
 
 
+[section:async_receive_from datagram_socket_service::async_receive_from]
 
- const boost::system::error_category & get_netdb_category();
+[indexterm2 async_receive_from..datagram_socket_service] Start an asynchronous receive that will get the endpoint of the sender.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_receive_from(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ endpoint_type & sender_endpoint,
+ socket_base::message_flags flags,
+ ReadHandler handler);
 
 
-[endsect]
 
+[endsect]
 
 
-[section:error__get_ssl_category error::get_ssl_category]
 
+[section:async_send datagram_socket_service::async_send]
 
+[indexterm2 async_send..datagram_socket_service] Start an asynchronous send.
 
- const boost::system::error_category & get_ssl_category();
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_send(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ WriteHandler handler);
 
 
 
@@ -28448,43 +29841,47 @@
 
 
 
-[section:error__get_system_category error::get_system_category]
-
+[section:async_send_to datagram_socket_service::async_send_to]
 
+[indexterm2 async_send_to..datagram_socket_service] Start an asynchronous send.
 
- const boost::system::error_category & get_system_category();
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_send_to(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ const endpoint_type & destination,
+ socket_base::message_flags flags,
+ WriteHandler handler);
 
 
 
 [endsect]
 
 
-[section:error__make_error_code error::make_error_code]
-
 
+[section:at_mark datagram_socket_service::at_mark]
 
- boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload1 make_error_code]``(
- basic_errors e);
+[indexterm2 at_mark..datagram_socket_service] Determine whether the socket is at the out-of-band data mark.
 
- boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload2 make_error_code]``(
- netdb_errors e);
+ bool at_mark(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
- boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload3 make_error_code]``(
- addrinfo_errors e);
 
- boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload4 make_error_code]``(
- misc_errors e);
 
- boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload5 make_error_code]``(
- ssl_errors e);
+[endsect]
 
 
-[section:overload1 error::make_error_code (1 of 5 overloads)]
 
+[section:available datagram_socket_service::available]
 
+[indexterm2 available..datagram_socket_service] Determine the number of bytes available for reading.
 
- boost::system::error_code make_error_code(
- basic_errors e);
+ std::size_t available(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
 
 
@@ -28492,12 +29889,14 @@
 
 
 
-[section:overload2 error::make_error_code (2 of 5 overloads)]
-
+[section:bind datagram_socket_service::bind]
 
+[indexterm2 bind..datagram_socket_service]
 
- boost::system::error_code make_error_code(
- netdb_errors e);
+ boost::system::error_code bind(
+ implementation_type & impl,
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
 
 
 
@@ -28505,12 +29904,13 @@
 
 
 
-[section:overload3 error::make_error_code (3 of 5 overloads)]
-
+[section:cancel datagram_socket_service::cancel]
 
+[indexterm2 cancel..datagram_socket_service] Cancel all asynchronous operations associated with the socket.
 
- boost::system::error_code make_error_code(
- addrinfo_errors e);
+ boost::system::error_code cancel(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
 
 
@@ -28518,12 +29918,13 @@
 
 
 
-[section:overload4 error::make_error_code (4 of 5 overloads)]
-
+[section:close datagram_socket_service::close]
 
+[indexterm2 close..datagram_socket_service] Close a datagram socket implementation.
 
- boost::system::error_code make_error_code(
- misc_errors e);
+ boost::system::error_code close(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
 
 
@@ -28531,26 +29932,27 @@
 
 
 
-[section:overload5 error::make_error_code (5 of 5 overloads)]
-
-
-
- boost::system::error_code make_error_code(
- ssl_errors e);
+[section:connect datagram_socket_service::connect]
 
+[indexterm2 connect..datagram_socket_service] 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);
 
-[endsect]
 
 
 [endsect]
 
 
-[section:error__misc_category error::misc_category]
 
+[section:construct datagram_socket_service::construct]
 
+[indexterm2 construct..datagram_socket_service] Construct a new datagram socket implementation.
 
- static const boost::system::error_category & misc_category = boost::asio::error::get_misc_category();
+ void construct(
+ implementation_type & impl);
 
 
 
@@ -28558,36 +29960,25 @@
 
 
 
-[section:error__misc_errors error::misc_errors]
+[section:datagram_socket_service datagram_socket_service::datagram_socket_service]
 
+[indexterm2 datagram_socket_service..datagram_socket_service] Construct a new datagram socket service for the specified io_service.
 
+ datagram_socket_service(
+ boost::asio::io_service & io_service);
 
- enum misc_errors
 
-[heading Values]
-[variablelist
 
- [
- [already_open]
- [Already open. ]
- ]
+[endsect]
 
- [
- [eof]
- [End of file or stream. ]
- ]
 
- [
- [not_found]
- [Element not found. ]
- ]
 
- [
- [fd_set_failure]
- [The descriptor cannot fit into the select system call's fd_set. ]
- ]
+[section:destroy datagram_socket_service::destroy]
 
-]
+[indexterm2 destroy..datagram_socket_service] Destroy a datagram socket implementation.
+
+ void destroy(
+ implementation_type & impl);
 
 
 
@@ -28595,11 +29986,12 @@
 
 
 
-[section:error__netdb_category error::netdb_category]
+[section:endpoint_type datagram_socket_service::endpoint_type]
 
+[indexterm2 endpoint_type..datagram_socket_service] The endpoint type.
 
+ typedef Protocol::endpoint endpoint_type;
 
- static const boost::system::error_category & netdb_category = boost::asio::error::get_netdb_category();
 
 
 
@@ -28607,48 +29999,43 @@
 
 
 
-[section:error__netdb_errors error::netdb_errors]
+[section:get_io_service datagram_socket_service::get_io_service]
 
 
+['Inherited from io_service.]
 
- enum netdb_errors
+[indexterm2 get_io_service..datagram_socket_service] Get the io_service object that owns the service.
 
-[heading Values]
-[variablelist
+ boost::asio::io_service & get_io_service();
 
- [
- [host_not_found]
- [Host not found (authoritative). ]
- ]
 
- [
- [host_not_found_try_again]
- [Host not found (non-authoritative). ]
- ]
 
- [
- [no_data]
- [The query is valid but does not have associated address data. ]
- ]
+[endsect]
 
- [
- [no_recovery]
- [A non-recoverable error occurred. ]
- ]
 
-]
 
+[section:get_option datagram_socket_service::get_option]
+
+[indexterm2 get_option..datagram_socket_service] Get a socket option.
 
+ template<
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ boost::system::error_code get_option(
+ const implementation_type & impl,
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
 
-[endsect]
 
 
+[endsect]
 
-[section:error__ssl_category error::ssl_category]
 
 
+[section:id datagram_socket_service::id]
 
- static const boost::system::error_category & ssl_category = boost::asio::error::get_ssl_category();
+[indexterm2 id..datagram_socket_service] The unique service identifier.
+
+ static boost::asio::io_service::id id;
 
 
 
@@ -28656,11 +30043,12 @@
 
 
 
-[section:error__ssl_errors error::ssl_errors]
+[section:implementation_type datagram_socket_service::implementation_type]
 
+[indexterm2 implementation_type..datagram_socket_service] The type of a datagram socket.
 
+ typedef implementation_defined implementation_type;
 
- enum ssl_errors
 
 
 
@@ -28668,11 +30056,16 @@
 
 
 
-[section:error__system_category error::system_category]
-
+[section:io_control datagram_socket_service::io_control]
 
+[indexterm2 io_control..datagram_socket_service] Perform an IO control command on the socket.
 
- static const boost::system::error_category & system_category = boost::asio::error::get_system_category();
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ implementation_type & impl,
+ IoControlCommand & command,
+ boost::system::error_code & ec);
 
 
 
@@ -28680,285 +30073,164 @@
 
 
 
-[section:has_service has_service]
+[section:io_service datagram_socket_service::io_service]
 
 
+['Inherited from io_service.]
 
- template<
- typename ``[link boost_asio.reference.Service Service]``>
- bool has_service(
- io_service & ios);
+[indexterm2 io_service..datagram_socket_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
+ boost::asio::io_service & io_service();
 
-This function is used to determine whether the io_service contains a service object corresponding to the given service type.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[ios][The io\_service object that owns the service.]]
 
-]
 
-[heading Return Value]
-
-A boolean indicating whether the io_service contains the service.
+[section:is_open datagram_socket_service::is_open]
 
+[indexterm2 is_open..datagram_socket_service] Determine whether the socket is open.
 
+ bool is_open(
+ const implementation_type & impl) const;
 
-[endsect]
 
 
-[section:invalid_service_owner invalid_service_owner]
+[endsect]
 
-Exception thrown when trying to add a service object to an io_service where the service has a different owner.
 
- class invalid_service_owner
 
+[section:local_endpoint datagram_socket_service::local_endpoint]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[indexterm2 local_endpoint..datagram_socket_service] Get the local endpoint.
 
- [
- [[link boost_asio.reference.invalid_service_owner.invalid_service_owner [*invalid_service_owner]]]
- []
- ]
-
-]
+ endpoint_type local_endpoint(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
 
-[section:invalid_service_owner invalid_service_owner::invalid_service_owner]
 
+[endsect]
 
 
- invalid_service_owner();
 
+[section:native datagram_socket_service::native]
 
+[indexterm2 native..datagram_socket_service] Get the native socket implementation.
 
-[endsect]
+ native_type native(
+ implementation_type & impl);
 
 
 
 [endsect]
 
-[section:io_service io_service]
-
-Provides core I/O functionality.
 
- class io_service :
- noncopyable
 
+[section:native_type datagram_socket_service::native_type]
 
-[heading Types]
-[table
- [[Name][Description]]
+[indexterm2 native_type..datagram_socket_service] The native socket type.
 
- [
+ typedef implementation_defined native_type;
 
- [[link boost_asio.reference.io_service__id [*id]]]
- [Class used to uniquely identify a service. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.io_service__service [*service]]]
- [Base class for all io_service services. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.io_service__strand [*strand]]]
- [Provides serialised handler execution. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.io_service__work [*work]]]
- [Class to inform the io_service when it has work to do. ]
-
- ]
+[section:open datagram_socket_service::open]
 
-]
+[indexterm2 open..datagram_socket_service]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+ boost::system::error_code open(
+ implementation_type & impl,
+ const protocol_type & protocol,
+ boost::system::error_code & ec);
 
- [
- [[link boost_asio.reference.io_service.dispatch [*dispatch]]]
- [Request the io_service to invoke the given handler. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.io_service [*io_service]]]
- [Constructor. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.poll [*poll]]]
- [Run the io_service's event processing loop to execute ready handlers. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.poll_one [*poll_one]]]
- [Run the io_service's event processing loop to execute one ready handler. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.post [*post]]]
- [Request the io_service to invoke the given handler and return immediately. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.reset [*reset]]]
- [Reset the io_service in preparation for a subsequent run() invocation. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.run [*run]]]
- [Run the io_service's event processing loop. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.run_one [*run_one]]]
- [Run the io_service's event processing loop to execute at most one handler. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.stop [*stop]]]
- [Stop the io_service's event processing loop. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.wrap [*wrap]]]
- [Create a new handler that automatically dispatches the wrapped handler on the io_service. ]
- ]
-
- [
- [[link boost_asio.reference.io_service._io_service [*~io_service]]]
- [Destructor. ]
- ]
-
-]
 
-[heading Friends]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.io_service.add_service [*add_service]]]
- [Add a service object to the io_service. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.has_service [*has_service]]]
- [Determine if an io_service contains a specified service type. ]
- ]
-
- [
- [[link boost_asio.reference.io_service.use_service [*use_service]]]
- [Obtain the service object corresponding to the given type. ]
- ]
-
-]
+[endsect]
 
-The io_service class provides the core I/O functionality for users of the asynchronous I/O objects, including:
 
 
-* boost::asio::ip::tcp::socket
+[section:protocol_type datagram_socket_service::protocol_type]
 
-* boost::asio::ip::tcp::acceptor
+[indexterm2 protocol_type..datagram_socket_service] The protocol type.
 
-* boost::asio::ip::udp::socket
+ typedef Protocol protocol_type;
 
-* boost::asio::deadline_timer.
 
-The io_service class also includes facilities intended for developers of custom asynchronous services.
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+[endsect]
 
-[*Shared] [*objects:] Safe, with the exception that calling reset() while there are unfinished run() calls results in undefined behaviour.
 
-[heading Effect of exceptions thrown from handlers]
-
 
+[section:receive datagram_socket_service::receive]
 
-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.
+[indexterm2 receive..datagram_socket_service] Receive some data from the peer.
 
-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 [*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.
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t receive(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
+ boost::system::error_code & ec);
 
-For example:
 
 
+[endsect]
 
- boost::asio::io_service io_service;
- ...
- for (;;)
- {
- try
- {
- io_service.run();
- break; // run() exited normally
- }
- catch (my_exception& e)
- {
- // Deal with exception as appropriate.
- }
- }
 
 
+[section:receive_from datagram_socket_service::receive_from]
 
+[indexterm2 receive_from..datagram_socket_service] Receive a datagram with the endpoint of the sender.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence 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);
 
-[section:add_service io_service::add_service]
 
-Add a service object to the io_service.
 
- template<
- typename ``[link boost_asio.reference.Service Service]``>
- friend void add_service(
- io_service & ios,
- Service * svc);
+[endsect]
 
 
-This function is used to add a service to the io_service.
 
+[section:remote_endpoint datagram_socket_service::remote_endpoint]
 
-[heading Parameters]
-
+[indexterm2 remote_endpoint..datagram_socket_service] Get the remote endpoint.
 
-[variablelist
-
-[[ios][The io\_service object that owns the service.]]
+ endpoint_type remote_endpoint(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
-[[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:
-``
- delete static_cast<io_service::service*>(svc)
 
-``
-]]
 
-]
+[endsect]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::asio::service_already_exists][Thrown if a service of the given type is already present in the io\_service.]]
 
-[[boost::asio::invalid_service_owner][Thrown if the service's owning io\_service is not the io\_service object specified by the ios parameter. ]]
+[section:send datagram_socket_service::send]
 
-]
+[indexterm2 send..datagram_socket_service] Send the given data to the peer.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t send(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ boost::system::error_code & ec);
 
 
 
@@ -28966,34 +30238,35 @@
 
 
 
-[section:dispatch io_service::dispatch]
+[section:send_to datagram_socket_service::send_to]
 
-Request the io_service to invoke the given handler.
+[indexterm2 send_to..datagram_socket_service] Send a datagram to the specified endpoint.
 
   template<
- typename ``[link boost_asio.reference.CompletionHandler CompletionHandler]``>
- void dispatch(
- CompletionHandler handler);
+ typename ``[link boost_asio.reference.ConstBufferSequence 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);
 
 
-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.
+[endsect]
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[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:
-``
- void handler();
+[section:set_option datagram_socket_service::set_option]
 
-``
-]]
+[indexterm2 set_option..datagram_socket_service] Set a socket option.
 
-]
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ boost::system::error_code set_option(
+ implementation_type & impl,
+ const SettableSocketOption & option,
+ boost::system::error_code & ec);
 
 
 
@@ -29001,313 +30274,456 @@
 
 
 
-[section:has_service io_service::has_service]
+[section:shutdown datagram_socket_service::shutdown]
 
-Determine if an io_service contains a specified service type.
+[indexterm2 shutdown..datagram_socket_service] Disable sends or receives on the socket.
 
- template<
- typename ``[link boost_asio.reference.Service Service]``>
- friend bool has_service(
- io_service & ios);
+ boost::system::error_code shutdown(
+ implementation_type & impl,
+ socket_base::shutdown_type what,
+ boost::system::error_code & ec);
 
 
-This function is used to determine whether the io_service contains a service object corresponding to the given service type.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[ios][The io\_service object that owns the service.]]
 
-]
+[section:shutdown_service datagram_socket_service::shutdown_service]
 
-[heading Return Value]
-
-A boolean indicating whether the io_service contains the service.
+[indexterm2 shutdown_service..datagram_socket_service] Destroy all user-defined handler objects owned by the service.
+
+ void shutdown_service();
 
 
 
 [endsect]
 
 
-[section:io_service io_service::io_service]
 
-Constructor.
+[endsect]
 
- ``[link boost_asio.reference.io_service.io_service.overload1 io_service]``();
 
- ``[link boost_asio.reference.io_service.io_service.overload2 io_service]``(
- std::size_t concurrency_hint);
+[section:deadline_timer deadline_timer]
 
+[indexterm1 deadline_timer] Typedef for the typical usage of timer.
 
-[section:overload1 io_service::io_service (1 of 2 overloads)]
+ typedef basic_deadline_timer< boost::posix_time::ptime > deadline_timer;
 
-Constructor.
 
- io_service();
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
+ [[link boost_asio.reference.basic_deadline_timer.duration_type [*duration_type]]]
+ [The duration type. ]
+
+ ]
 
-[endsect]
+ [
 
+ [[link boost_asio.reference.basic_deadline_timer.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
 
+ [
 
-[section:overload2 io_service::io_service (2 of 2 overloads)]
+ [[link boost_asio.reference.basic_deadline_timer.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
 
-Constructor.
+ [
 
- io_service(
- std::size_t concurrency_hint);
+ [[link boost_asio.reference.basic_deadline_timer.time_type [*time_type]]]
+ [The time type. ]
+
+ ]
 
+ [
 
-Construct with a hint about the required level of concurrency.
+ [[link boost_asio.reference.basic_deadline_timer.traits_type [*traits_type]]]
+ [The time traits type. ]
+
+ ]
 
+]
 
-[heading Parameters]
-
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[variablelist
+ [
+ [[link boost_asio.reference.basic_deadline_timer.async_wait [*async_wait]]]
+ [Start an asynchronous wait on the timer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.basic_deadline_timer [*basic_deadline_timer]]]
+ [Constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.cancel [*cancel]]]
+ [Cancel any asynchronous operations that are waiting on the timer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.expires_at [*expires_at]]]
+ [Get the timer's expiry time as an absolute time. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.expires_from_now [*expires_from_now]]]
+ [Get the timer's expiry time relative to now. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_deadline_timer.wait [*wait]]]
+ [Perform a blocking wait on the timer. ]
+ ]
   
-[[concurrency_hint][A suggestion to the implementation on how many threads it should allow to run simultaneously. ]]
-
 ]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.basic_deadline_timer.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
 
-[endsect]
+ [
+ [[link boost_asio.reference.basic_deadline_timer.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
 
+]
 
-[endsect]
+The basic_deadline_timer class template provides the ability to perform a blocking or asynchronous wait for a timer to expire.
 
-[section:poll io_service::poll]
+Most applications will use the boost::asio::deadline\_timer typedef.
 
-Run the io_service's event processing loop to execute ready handlers.
 
- std::size_t ``[link boost_asio.reference.io_service.poll.overload1 poll]``();
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
- std::size_t ``[link boost_asio.reference.io_service.poll.overload2 poll]``(
- boost::system::error_code & ec);
+[*Shared] [*objects:] Unsafe.
 
+[heading Examples]
+
+Performing a blocking wait:
 
-[section:overload1 io_service::poll (1 of 2 overloads)]
+ // Construct a timer without setting an expiry time.
+ boost::asio::deadline_timer timer(io_service);
 
-Run the io_service's event processing loop to execute ready handlers.
+ // Set an expiry time relative to now.
+ timer.expires_from_now(boost::posix_time::seconds(5));
 
- std::size_t poll();
+ // Wait for the timer to expire.
+ timer.wait();
 
 
-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.
 
 
-[heading Return Value]
-
-The number of handlers that were executed.
+Performing an asynchronous wait:
 
-[heading Exceptions]
-
+ void handler(const boost::system::error_code& error)
+ {
+ if (!error)
+ {
+ // Timer expired.
+ }
+ }
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+ ...
 
-]
+ // 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);
 
 
-[endsect]
 
 
+[heading Changing an active deadline_timer's expiry time]
+
 
-[section:overload2 io_service::poll (2 of 2 overloads)]
 
-Run the io_service's event processing loop to execute ready handlers.
+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:
 
- std::size_t poll(
- boost::system::error_code & ec);
 
 
-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.
+ 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.
+ }
+ }
 
-[heading Parameters]
-
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
 
-[heading Return Value]
-
-The number of handlers that were executed.
 
+* 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.
+
+* If a wait handler is cancelled, the boost::system::error_code passed to it contains the value boost::asio::error::operation_aborted.
 
 
-[endsect]
 
 
 [endsect]
 
-[section:poll_one io_service::poll_one]
 
-Run the io_service's event processing loop to execute one ready handler.
+[section:deadline_timer_service deadline_timer_service]
 
- std::size_t ``[link boost_asio.reference.io_service.poll_one.overload1 poll_one]``();
+Default service implementation for a timer.
 
- std::size_t ``[link boost_asio.reference.io_service.poll_one.overload2 poll_one]``(
- boost::system::error_code & ec);
+ template<
+ typename TimeType,
+ typename ``[link boost_asio.reference.TimeTraits TimeTraits]`` = boost::asio::time_traits<TimeType>>
+ class deadline_timer_service :
+ public io_service::service
 
 
-[section:overload1 io_service::poll_one (1 of 2 overloads)]
+[heading Types]
+[table
+ [[Name][Description]]
 
-Run the io_service's event processing loop to execute one ready handler.
+ [
 
- std::size_t poll_one();
+ [[link boost_asio.reference.deadline_timer_service.duration_type [*duration_type]]]
+ [The duration type. ]
+
+ ]
 
+ [
 
-The poll\_one() function runs at most one handler that is ready to run, without blocking.
+ [[link boost_asio.reference.deadline_timer_service.implementation_type [*implementation_type]]]
+ [The implementation type of the deadline timer. ]
+
+ ]
 
+ [
 
-[heading Return Value]
-
-The number of handlers that were executed.
+ [[link boost_asio.reference.deadline_timer_service.time_type [*time_type]]]
+ [The time type. ]
+
+ ]
 
-[heading Exceptions]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.deadline_timer_service.traits_type [*traits_type]]]
+ [The time traits type. ]
   
-[[boost::system::system_error][Thrown on failure. ]]
+ ]
 
 ]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.deadline_timer_service.async_wait [*async_wait]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.deadline_timer_service.cancel [*cancel]]]
+ [Cancel any asynchronous wait operations associated with the timer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.deadline_timer_service.construct [*construct]]]
+ [Construct a new timer implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.deadline_timer_service.deadline_timer_service [*deadline_timer_service]]]
+ [Construct a new timer service for the specified io_service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.deadline_timer_service.destroy [*destroy]]]
+ [Destroy a timer implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.deadline_timer_service.expires_at [*expires_at]]]
+ [Get the expiry time for the timer as an absolute time. ]
+ ]
+
+ [
+ [[link boost_asio.reference.deadline_timer_service.expires_from_now [*expires_from_now]]]
+ [Get the expiry time for the timer relative to now. ]
+ ]
+
+ [
+ [[link boost_asio.reference.deadline_timer_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.deadline_timer_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.deadline_timer_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.deadline_timer_service.wait [*wait]]]
+ []
+ ]
+
+]
 
-[endsect]
+[heading Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.deadline_timer_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
 
+]
 
-[section:overload2 io_service::poll_one (2 of 2 overloads)]
 
-Run the io_service's event processing loop to execute one ready handler.
+[section:async_wait deadline_timer_service::async_wait]
 
- std::size_t poll_one(
- boost::system::error_code & ec);
+[indexterm2 async_wait..deadline_timer_service]
 
+ template<
+ typename ``[link boost_asio.reference.WaitHandler WaitHandler]``>
+ void async_wait(
+ implementation_type & impl,
+ WaitHandler handler);
 
-The poll\_one() function runs at most one handler that is ready to run, without blocking.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
 
-[heading Return Value]
-
-The number of handlers that were executed.
+[section:cancel deadline_timer_service::cancel]
 
+[indexterm2 cancel..deadline_timer_service] Cancel any asynchronous wait operations associated with the timer.
 
+ std::size_t cancel(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
-[endsect]
 
 
 [endsect]
 
 
-[section:post io_service::post]
-
-Request the io_service to invoke the given handler and return immediately.
 
- template<
- typename ``[link boost_asio.reference.CompletionHandler CompletionHandler]``>
- void post(
- CompletionHandler handler);
+[section:construct deadline_timer_service::construct]
 
+[indexterm2 construct..deadline_timer_service] Construct a new timer implementation.
 
-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.
+ void construct(
+ implementation_type & impl);
 
-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.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[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:
-``
- void handler();
 
-``
-]]
 
-]
+[section:deadline_timer_service deadline_timer_service::deadline_timer_service]
 
+[indexterm2 deadline_timer_service..deadline_timer_service] Construct a new timer service for the specified io_service.
 
+ deadline_timer_service(
+ boost::asio::io_service & io_service);
 
-[endsect]
 
 
+[endsect]
 
-[section:reset io_service::reset]
 
-Reset the io_service in preparation for a subsequent run() invocation.
 
- void reset();
+[section:destroy deadline_timer_service::destroy]
 
+[indexterm2 destroy..deadline_timer_service] Destroy a timer implementation.
 
-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.
+ void destroy(
+ implementation_type & impl);
 
-This function must not be called while there are any unfinished calls to the run(), run\_one(), poll() or poll\_one() functions.
 
 
 [endsect]
 
 
-[section:run io_service::run]
-
-Run the io_service's event processing loop.
 
- std::size_t ``[link boost_asio.reference.io_service.run.overload1 run]``();
+[section:duration_type deadline_timer_service::duration_type]
 
- std::size_t ``[link boost_asio.reference.io_service.run.overload2 run]``(
- boost::system::error_code & ec);
+[indexterm2 duration_type..deadline_timer_service] The duration type.
 
+ typedef traits_type::duration_type duration_type;
 
-[section:overload1 io_service::run (1 of 2 overloads)]
 
-Run the io_service's event processing loop.
 
- std::size_t run();
 
+[endsect]
 
-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.
+[section:expires_at deadline_timer_service::expires_at]
 
-The run() function may be safely called again once it has completed only after a call to reset().
+[indexterm2 expires_at..deadline_timer_service] Get the expiry time for the timer as an absolute time.
 
+ time_type ``[link boost_asio.reference.deadline_timer_service.expires_at.overload1 expires_at]``(
+ const implementation_type & impl) const;
 
-[heading Return Value]
-
-The number of handlers that were executed.
+ std::size_t ``[link boost_asio.reference.deadline_timer_service.expires_at.overload2 expires_at]``(
+ implementation_type & impl,
+ const time_type & expiry_time,
+ boost::system::error_code & ec);
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+[section:overload1 deadline_timer_service::expires_at (1 of 2 overloads)]
 
-]
+Get the expiry time for the timer as an absolute time.
+
+ time_type expires_at(
+ const implementation_type & impl) const;
 
 
 
@@ -29315,73 +30731,73 @@
 
 
 
-[section:overload2 io_service::run (2 of 2 overloads)]
+[section:overload2 deadline_timer_service::expires_at (2 of 2 overloads)]
 
-Run the io_service's event processing loop.
+Set the expiry time for the timer as an absolute time.
 
- std::size_t run(
+ std::size_t expires_at(
+ implementation_type & impl,
+ const time_type & expiry_time,
       boost::system::error_code & ec);
 
 
-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.
+[endsect]
 
-The run() function may be safely called again once it has completed only after a call to reset().
 
+[endsect]
 
-[heading Parameters]
-
+[section:expires_from_now deadline_timer_service::expires_from_now]
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
+[indexterm2 expires_from_now..deadline_timer_service] Get the expiry time for the timer relative to now.
 
-]
+ duration_type ``[link boost_asio.reference.deadline_timer_service.expires_from_now.overload1 expires_from_now]``(
+ const implementation_type & impl) const;
 
-[heading Return Value]
-
-The number of handlers that were executed.
+ std::size_t ``[link boost_asio.reference.deadline_timer_service.expires_from_now.overload2 expires_from_now]``(
+ implementation_type & impl,
+ const duration_type & expiry_time,
+ boost::system::error_code & ec);
 
 
+[section:overload1 deadline_timer_service::expires_from_now (1 of 2 overloads)]
+
+Get the expiry time for the timer relative to now.
+
+ duration_type expires_from_now(
+ const implementation_type & impl) const;
 
-[endsect]
 
 
 [endsect]
 
-[section:run_one io_service::run_one]
 
-Run the io_service's event processing loop to execute at most one handler.
 
- std::size_t ``[link boost_asio.reference.io_service.run_one.overload1 run_one]``();
+[section:overload2 deadline_timer_service::expires_from_now (2 of 2 overloads)]
 
- std::size_t ``[link boost_asio.reference.io_service.run_one.overload2 run_one]``(
+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);
 
 
-[section:overload1 io_service::run_one (1 of 2 overloads)]
 
-Run the io_service's event processing loop to execute at most one handler.
+[endsect]
 
- std::size_t run_one();
 
+[endsect]
 
-The run\_one() function blocks until one handler has been dispatched, or until the io_service has been stopped.
 
+[section:get_io_service deadline_timer_service::get_io_service]
 
-[heading Return Value]
-
-The number of handlers that were executed.
 
-[heading Exceptions]
-
+['Inherited from io_service.]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+[indexterm2 get_io_service..deadline_timer_service] Get the io_service object that owns the service.
 
-]
+ boost::asio::io_service & get_io_service();
 
 
 
@@ -29389,134 +30805,106 @@
 
 
 
-[section:overload2 io_service::run_one (2 of 2 overloads)]
+[section:id deadline_timer_service::id]
 
-Run the io_service's event processing loop to execute at most one handler.
+[indexterm2 id..deadline_timer_service] The unique service identifier.
 
- std::size_t run_one(
- boost::system::error_code & ec);
+ static boost::asio::io_service::id id;
 
 
-The run\_one() function blocks until one handler has been dispatched, or until the io_service has been stopped.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
+[section:implementation_type deadline_timer_service::implementation_type]
 
-[heading Return Value]
-
-The number of handlers that were executed.
+[indexterm2 implementation_type..deadline_timer_service] The implementation type of the deadline timer.
 
+ typedef implementation_defined implementation_type;
 
 
-[endsect]
 
 
 [endsect]
 
 
-[section:stop io_service::stop]
 
-Stop the io_service's event processing loop.
+[section:io_service deadline_timer_service::io_service]
+
 
- void stop();
+['Inherited from io_service.]
 
+[indexterm2 io_service..deadline_timer_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
+
+ boost::asio::io_service & io_service();
 
-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.
 
 
 [endsect]
 
 
 
-[section:use_service io_service::use_service]
+[section:shutdown_service deadline_timer_service::shutdown_service]
 
-Obtain the service object corresponding to the given type.
+[indexterm2 shutdown_service..deadline_timer_service] Destroy all user-defined handler objects owned by the service.
 
- template<
- typename ``[link boost_asio.reference.Service Service]``>
- friend Service & use_service(
- io_service & ios);
+ void shutdown_service();
 
 
-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.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[ios][The io\_service object that owns the service.]]
 
-]
+[section:time_type deadline_timer_service::time_type]
 
-[heading Return Value]
-
-The service interface implementing the specified service type. Ownership of the service interface is not transferred to the caller.
+[indexterm2 time_type..deadline_timer_service] The time type.
 
+ typedef traits_type::time_type time_type;
 
 
-[endsect]
 
 
+[endsect]
 
-[section:wrap io_service::wrap]
 
-Create a new handler that automatically dispatches the wrapped handler on the io_service.
 
- template<
- typename ``[link boost_asio.reference.Handler Handler]``>
- unspecified wrap(
- Handler handler);
+[section:traits_type deadline_timer_service::traits_type]
 
+[indexterm2 traits_type..deadline_timer_service] The time traits type.
 
-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.
+ typedef TimeTraits traits_type;
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[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:
-``
- void handler(A1 a1, ... An an);
 
-``
-]]
+[endsect]
 
-]
 
-[heading Return Value]
-
-A function object that, when invoked, passes the wrapped handler to the io\_service's dispatch function. Given a function object with the signature:
 
- R f(A1 a1, ... An an);
+[section:wait deadline_timer_service::wait]
 
+[indexterm2 wait..deadline_timer_service]
 
-If this function object is passed to the wrap function like so:
+ void wait(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
- io_service.wrap(f);
 
 
-then the return value is a function object with the signature
+[endsect]
 
- void g(A1 a1, ... An an);
 
 
-that, when invoked, executes code equivalent to:
+[endsect]
 
- io_service.dispatch(boost::bind(f, a1, ... an));
 
+[section:error__addrinfo_category error::addrinfo_category]
 
+[indexterm1 error::addrinfo_category]
 
+ static const boost::system::error_category & addrinfo_category = boost::asio::error::get_addrinfo_category();
 
 
 
@@ -29524,112 +30912,208 @@
 
 
 
-[section:_io_service io_service::~io_service]
+[section:error__addrinfo_errors error::addrinfo_errors]
 
-Destructor.
+[indexterm1 error::addrinfo_errors]
 
- ~io_service();
+ enum addrinfo_errors
+
+[heading Values]
+[variablelist
 
+ [
+ [service_not_found]
+ [The service is not supported for the given socket type. ]
+ ]
 
+ [
+ [socket_type_not_supported]
+ [The socket type is not supported. ]
+ ]
 
-[endsect]
+]
 
 
 
 [endsect]
 
-[section:io_service__id io_service::id]
 
-Class used to uniquely identify a service.
 
- class id :
- noncopyable
+[section:error__basic_errors error::basic_errors]
 
+[indexterm1 error::basic_errors]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+ enum basic_errors
+
+[heading Values]
+[variablelist
 
   [
- [[link boost_asio.reference.io_service__id.id [*id]]]
- [Constructor. ]
+ [access_denied]
+ [Permission denied. ]
   ]
-
-]
 
+ [
+ [address_family_not_supported]
+ [Address family not supported by protocol. ]
+ ]
 
-[section:id io_service::id::id]
+ [
+ [address_in_use]
+ [Address already in use. ]
+ ]
 
-Constructor.
+ [
+ [already_connected]
+ [Transport endpoint is already connected. ]
+ ]
 
- id();
+ [
+ [already_started]
+ [Operation already in progress. ]
+ ]
 
+ [
+ [broken_pipe]
+ [Broken pipe. ]
+ ]
 
+ [
+ [connection_aborted]
+ [A connection has been aborted. ]
+ ]
 
-[endsect]
+ [
+ [connection_refused]
+ [Connection refused. ]
+ ]
 
+ [
+ [connection_reset]
+ [Connection reset by peer. ]
+ ]
 
+ [
+ [bad_descriptor]
+ [Bad file descriptor. ]
+ ]
 
-[endsect]
+ [
+ [fault]
+ [Bad address. ]
+ ]
 
-[section:io_service__service io_service::service]
+ [
+ [host_unreachable]
+ [No route to host. ]
+ ]
 
-Base class for all io_service services.
+ [
+ [in_progress]
+ [Operation now in progress. ]
+ ]
 
- class service :
- noncopyable
+ [
+ [interrupted]
+ [Interrupted system call. ]
+ ]
 
+ [
+ [invalid_argument]
+ [Invalid argument. ]
+ ]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+ [
+ [message_size]
+ [Message too long. ]
+ ]
 
   [
- [[link boost_asio.reference.io_service__service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
+ [name_too_long]
+ [The name was too long. ]
   ]
-
+
   [
- [[link boost_asio.reference.io_service__service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ [network_down]
+ [Network is down. ]
   ]
-
-]
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
+ [
+ [network_reset]
+ [Network dropped connection on reset. ]
+ ]
 
   [
- [[link boost_asio.reference.io_service__service.service [*service]]]
- [Constructor. ]
+ [network_unreachable]
+ [Network is unreachable. ]
   ]
-
+
   [
- [[link boost_asio.reference.io_service__service._service [*~service]]]
- [Destructor. ]
+ [no_descriptors]
+ [Too many open files. ]
+ ]
+
+ [
+ [no_buffer_space]
+ [No buffer space available. ]
   ]
-
-]
 
+ [
+ [no_memory]
+ [Cannot allocate memory. ]
+ ]
 
-[section:get_io_service io_service::service::get_io_service]
+ [
+ [no_permission]
+ [Operation not permitted. ]
+ ]
 
-Get the io_service object that owns the service.
+ [
+ [no_protocol_option]
+ [Protocol not available. ]
+ ]
 
- boost::asio::io_service & get_io_service();
+ [
+ [not_connected]
+ [Transport endpoint is not connected. ]
+ ]
 
+ [
+ [not_socket]
+ [Socket operation on non-socket. ]
+ ]
 
+ [
+ [operation_aborted]
+ [Operation cancelled. ]
+ ]
 
-[endsect]
+ [
+ [operation_not_supported]
+ [Operation not supported. ]
+ ]
 
+ [
+ [shut_down]
+ [Cannot send after transport endpoint shutdown. ]
+ ]
 
+ [
+ [timed_out]
+ [Connection timed out. ]
+ ]
 
-[section:io_service io_service::service::io_service]
+ [
+ [try_again]
+ [Resource temporarily unavailable. ]
+ ]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+ [
+ [would_block]
+ [The socket is marked non-blocking and the requested operation would block. ]
+ ]
 
- boost::asio::io_service & io_service();
+]
 
 
 
@@ -29637,23 +31121,23 @@
 
 
 
-[section:service io_service::service::service]
+[section:error__get_addrinfo_category error::get_addrinfo_category]
 
-Constructor.
+[indexterm1 error::get_addrinfo_category]
 
- service(
- boost::asio::io_service & owner);
+ const boost::system::error_category & get_addrinfo_category();
 
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[owner][The io\_service object that owns the service. ]]
 
-]
+
+[section:error__get_misc_category error::get_misc_category]
+
+[indexterm1 error::get_misc_category]
+
+ const boost::system::error_category & get_misc_category();
 
 
 
@@ -29661,11 +31145,11 @@
 
 
 
-[section:_service io_service::service::~service]
+[section:error__get_netdb_category error::get_netdb_category]
 
-Destructor.
+[indexterm1 error::get_netdb_category]
 
- virtual ~service();
+ const boost::system::error_category & get_netdb_category();
 
 
 
@@ -29673,97 +31157,55 @@
 
 
 
-[endsect]
+[section:error__get_ssl_category error::get_ssl_category]
 
-[section:io_service__strand io_service::strand]
+[indexterm1 error::get_ssl_category]
 
-Provides serialised handler execution.
+ const boost::system::error_category & get_ssl_category();
 
- class strand
 
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[endsect]
 
- [
- [[link boost_asio.reference.io_service__strand.dispatch [*dispatch]]]
- [Request the strand to invoke the given handler. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.get_io_service [*get_io_service]]]
- [Get the io_service associated with the strand. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the strand. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.post [*post]]]
- [Request the strand to invoke the given handler and return immediately. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.strand [*strand]]]
- [Constructor. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.wrap [*wrap]]]
- [Create a new handler that automatically dispatches the wrapped handler on the strand. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand._strand [*~strand]]]
- [Destructor. ]
- ]
-
-]
 
-The io_service::strand class provides the ability to post and dispatch handlers with the guarantee that none of those handlers will execute concurrently.
 
+[section:error__get_system_category error::get_system_category]
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+[indexterm1 error::get_system_category]
 
-[*Shared] [*objects:] Safe.
+ const boost::system::error_category & get_system_category();
 
 
 
-[section:dispatch io_service::strand::dispatch]
+[endsect]
 
-Request the strand to invoke the given handler.
 
- template<
- typename ``[link boost_asio.reference.Handler Handler]``>
- void dispatch(
- Handler handler);
+[section:error__make_error_code error::make_error_code]
+
+[indexterm1 error::make_error_code]
+
+ boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload1 make_error_code]``(
+ basic_errors e);
 
+ boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload2 make_error_code]``(
+ netdb_errors e);
 
-This function is used to ask the strand to execute the given handler.
+ boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload3 make_error_code]``(
+ addrinfo_errors e);
 
-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.
+ boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload4 make_error_code]``(
+ misc_errors e);
 
-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.
+ boost::system::error_code ``[link boost_asio.reference.error__make_error_code.overload5 make_error_code]``(
+ ssl_errors e);
 
 
-[heading Parameters]
-
+[section:overload1 error::make_error_code (1 of 5 overloads)]
 
-[variablelist
-
-[[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:
-``
- void handler();
 
-``
-]]
 
-]
+ boost::system::error_code make_error_code(
+ basic_errors e);
 
 
 
@@ -29771,157 +31213,151 @@
 
 
 
-[section:get_io_service io_service::strand::get_io_service]
+[section:overload2 error::make_error_code (2 of 5 overloads)]
 
-Get the io_service associated with the strand.
 
- boost::asio::io_service & get_io_service();
 
+ boost::system::error_code make_error_code(
+ netdb_errors e);
 
-This function may be used to obtain the io_service object that the strand uses to dispatch handlers for asynchronous operations.
 
 
-[heading Return Value]
-
-A reference to the io_service object that the strand will use to dispatch handlers. Ownership is not transferred to the caller.
+[endsect]
 
 
 
-[endsect]
+[section:overload3 error::make_error_code (3 of 5 overloads)]
 
 
 
-[section:io_service io_service::strand::io_service]
+ boost::system::error_code make_error_code(
+ addrinfo_errors e);
 
-(Deprecated: use get_io_service().) Get the io_service associated with the strand.
 
- boost::asio::io_service & io_service();
 
+[endsect]
 
-This function may be used to obtain the io_service object that the strand uses to dispatch handlers for asynchronous operations.
 
 
-[heading Return Value]
-
-A reference to the io_service object that the strand will use to dispatch handlers. Ownership is not transferred to the caller.
+[section:overload4 error::make_error_code (4 of 5 overloads)]
 
 
 
-[endsect]
+ boost::system::error_code make_error_code(
+ misc_errors e);
 
 
 
-[section:post io_service::strand::post]
+[endsect]
 
-Request the strand to invoke the given handler and return immediately.
 
- template<
- typename ``[link boost_asio.reference.Handler Handler]``>
- void post(
- Handler handler);
 
+[section:overload5 error::make_error_code (5 of 5 overloads)]
 
-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.
 
+ boost::system::error_code make_error_code(
+ ssl_errors e);
 
-[heading Parameters]
-
 
-[variablelist
-
-[[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:
-``
- void handler();
-
-``
-]]
-
-]
 
+[endsect]
 
 
 [endsect]
 
 
+[section:error__misc_category error::misc_category]
 
-[section:strand io_service::strand::strand]
+[indexterm1 error::misc_category]
 
-Constructor.
+ static const boost::system::error_category & misc_category = boost::asio::error::get_misc_category();
 
- strand(
- boost::asio::io_service & io_service);
 
 
-Constructs the strand.
+[endsect]
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[io_service][The io\_service object that the strand will use to dispatch handlers that are ready to be run. ]]
+[section:error__misc_errors error::misc_errors]
 
-]
+[indexterm1 error::misc_errors]
 
+ enum misc_errors
 
+[heading Values]
+[variablelist
 
-[endsect]
+ [
+ [already_open]
+ [Already open. ]
+ ]
 
+ [
+ [eof]
+ [End of file or stream. ]
+ ]
 
+ [
+ [not_found]
+ [Element not found. ]
+ ]
 
-[section:wrap io_service::strand::wrap]
+ [
+ [fd_set_failure]
+ [The descriptor cannot fit into the select system call's fd_set. ]
+ ]
 
-Create a new handler that automatically dispatches the wrapped handler on the strand.
+]
 
- template<
- typename ``[link boost_asio.reference.Handler Handler]``>
- unspecified wrap(
- Handler handler);
 
 
-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.
+[endsect]
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[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:
-``
- void handler(A1 a1, ... An an);
+[section:error__netdb_category error::netdb_category]
 
-``
-]]
+[indexterm1 error::netdb_category]
 
-]
+ static const boost::system::error_category & netdb_category = boost::asio::error::get_netdb_category();
 
-[heading Return Value]
-
-A function object that, when invoked, passes the wrapped handler to the strand's dispatch function. Given a function object with the signature:
 
- R f(A1 a1, ... An an);
 
+[endsect]
 
-If this function object is passed to the wrap function like so:
 
- strand.wrap(f);
 
+[section:error__netdb_errors error::netdb_errors]
 
-then the return value is a function object with the signature
+[indexterm1 error::netdb_errors]
 
- void g(A1 a1, ... An an);
+ enum netdb_errors
 
+[heading Values]
+[variablelist
 
-that, when invoked, executes code equivalent to:
+ [
+ [host_not_found]
+ [Host not found (authoritative). ]
+ ]
 
- strand.dispatch(boost::bind(f, a1, ... an));
+ [
+ [host_not_found_try_again]
+ [Host not found (non-authoritative). ]
+ ]
 
+ [
+ [no_data]
+ [The query is valid but does not have associated address data. ]
+ ]
 
+ [
+ [no_recovery]
+ [A non-recoverable error occurred. ]
+ ]
 
+]
 
 
 
@@ -29929,67 +31365,35 @@
 
 
 
-[section:_strand io_service::strand::~strand]
-
-Destructor.
-
- ~strand();
+[section:error__ssl_category error::ssl_category]
 
+[indexterm1 error::ssl_category]
 
-Destroys a strand.
+ static const boost::system::error_category & ssl_category = boost::asio::error::get_ssl_category();
 
-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.
 
 
 [endsect]
 
 
 
-[endsect]
-
-[section:io_service__work io_service::work]
-
-Class to inform the io_service when it has work to do.
+[section:error__ssl_errors error::ssl_errors]
 
- class work
+[indexterm1 error::ssl_errors]
 
+ enum ssl_errors
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.io_service__work.get_io_service [*get_io_service]]]
- [Get the io_service associated with the work. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__work.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the work. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__work.work [*work]]]
- [Constructor notifies the io_service that work is starting. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__work._work [*~work]]]
- [Destructor notifies the io_service that the work is complete. ]
- ]
-
-]
 
-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.
+[endsect]
 
-The work class is copy-constructible so that it may be used as a data member in a handler class. It is not assignable.
 
 
-[section:get_io_service io_service::work::get_io_service]
+[section:error__system_category error::system_category]
 
-Get the io_service associated with the work.
+[indexterm1 error::system_category]
 
- boost::asio::io_service & get_io_service();
+ static const boost::system::error_category & system_category = boost::asio::error::get_system_category();
 
 
 
@@ -29997,265 +31401,316 @@
 
 
 
-[section:io_service io_service::work::io_service]
-
-(Deprecated: use get_io_service().) Get the io_service associated with the work.
+[section:has_service has_service]
 
- boost::asio::io_service & io_service();
+[indexterm1 has_service]
 
+ template<
+ typename ``[link boost_asio.reference.Service Service]``>
+ bool has_service(
+ io_service & ios);
 
 
-[endsect]
+This function is used to determine whether the io_service contains a service object corresponding to the given service type.
 
 
-[section:work io_service::work::work]
+[heading Parameters]
+
 
-Constructor notifies the io_service that work is starting.
+[variablelist
+
+[[ios][The io\_service object that owns the service.]]
 
- ``[link boost_asio.reference.io_service__work.work.overload1 work]``(
- boost::asio::io_service & io_service);
+]
 
- ``[link boost_asio.reference.io_service__work.work.overload2 work]``(
- const work & other);
+[heading Return Value]
+
+A boolean indicating whether the io_service contains the service.
 
 
-[section:overload1 io_service::work::work (1 of 2 overloads)]
 
-Constructor notifies the io_service that work is starting.
+[endsect]
 
- work(
- boost::asio::io_service & io_service);
 
+[section:invalid_service_owner invalid_service_owner]
 
-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.
+Exception thrown when trying to add a service object to an io_service where the service has a different owner.
 
+ class invalid_service_owner
 
-[endsect]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.invalid_service_owner.invalid_service_owner [*invalid_service_owner]]]
+ []
+ ]
+
+]
 
-[section:overload2 io_service::work::work (2 of 2 overloads)]
 
-Copy constructor notifies the io_service that work is starting.
+[section:invalid_service_owner invalid_service_owner::invalid_service_owner]
 
- work(
- const work & other);
+[indexterm2 invalid_service_owner..invalid_service_owner]
 
+ invalid_service_owner();
 
-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.
 
 
 [endsect]
 
 
-[endsect]
 
+[endsect]
 
-[section:_work io_service::work::~work]
+[section:io_service io_service]
 
-Destructor notifies the io_service that the work is complete.
+Provides core I/O functionality.
 
- ~work();
+ class io_service :
+ noncopyable
 
 
-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.
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.io_service__id [*id]]]
+ [Class used to uniquely identify a service. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.io_service__service [*service]]]
+ [Base class for all io_service services. ]
+
+ ]
 
-[endsect]
+ [
 
-[section:ip__address ip::address]
+ [[link boost_asio.reference.io_service__strand [*strand]]]
+ [Provides serialised handler execution. ]
+
+ ]
 
-Implements version-independent IP addresses.
+ [
 
- class address
+ [[link boost_asio.reference.io_service__work [*work]]]
+ [Class to inform the io_service when it has work to do. ]
+
+ ]
 
+]
 
 [heading Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__address.address [*address]]]
- [Default constructor. ]
+ [[link boost_asio.reference.io_service.dispatch [*dispatch]]]
+ [Request the io_service to invoke the given handler. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address.from_string [*from_string]]]
- [Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation. ]
+ [[link boost_asio.reference.io_service.io_service [*io_service]]]
+ [Constructor. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address.is_v4 [*is_v4]]]
- [Get whether the address is an IP version 4 address. ]
+ [[link boost_asio.reference.io_service.poll [*poll]]]
+ [Run the io_service's event processing loop to execute ready handlers. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address.is_v6 [*is_v6]]]
- [Get whether the address is an IP version 6 address. ]
+ [[link boost_asio.reference.io_service.poll_one [*poll_one]]]
+ [Run the io_service's event processing loop to execute one ready handler. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address.operator_eq_ [*operator=]]]
- [Assign from another address. ]
+ [[link boost_asio.reference.io_service.post [*post]]]
+ [Request the io_service to invoke the given handler and return immediately. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address.to_string [*to_string]]]
- [Get the address as a string in dotted decimal format. ]
+ [[link boost_asio.reference.io_service.reset [*reset]]]
+ [Reset the io_service in preparation for a subsequent run() invocation. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address.to_v4 [*to_v4]]]
- [Get the address as an IP version 4 address. ]
+ [[link boost_asio.reference.io_service.run [*run]]]
+ [Run the io_service's event processing loop. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address.to_v6 [*to_v6]]]
- [Get the address as an IP version 6 address. ]
+ [[link boost_asio.reference.io_service.run_one [*run_one]]]
+ [Run the io_service's event processing loop to execute at most one handler. ]
   ]
   
-]
-
-[heading Friends]
-[table
- [[Name][Description]]
-
   [
- [[link boost_asio.reference.ip__address.operator_not__eq_ [*operator!=]]]
- [Compare two addresses for inequality. ]
+ [[link boost_asio.reference.io_service.stop [*stop]]]
+ [Stop the io_service's event processing loop. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address.operator_lt_ [*operator<]]]
- [Compare addresses for ordering. ]
+ [[link boost_asio.reference.io_service.wrap [*wrap]]]
+ [Create a new handler that automatically dispatches the wrapped handler on the io_service. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address.operator_eq__eq_ [*operator==]]]
- [Compare two addresses for equality. ]
+ [[link boost_asio.reference.io_service._io_service [*~io_service]]]
+ [Destructor. ]
   ]
   
 ]
 
-[heading Related Functions]
+[heading Friends]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__address.operator_lt__lt_ [*operator<<]]]
- [Output an address as a string. ]
+ [[link boost_asio.reference.io_service.add_service [*add_service]]]
+ [Add a service object to the io_service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service.has_service [*has_service]]]
+ [Determine if an io_service contains a specified service type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service.use_service [*use_service]]]
+ [Obtain the service object corresponding to the given type. ]
   ]
   
 ]
 
-The
-[link boost_asio.reference.ip__address ip::address] class provides the ability to use either IP version 4 or version 6 addresses.
+The io_service class provides the core I/O functionality for users of the asynchronous I/O objects, including:
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+* boost::asio::ip::tcp::socket
 
-[*Shared] [*objects:] Unsafe.
+* boost::asio::ip::tcp::acceptor
 
+* boost::asio::ip::udp::socket
 
-[section:address ip::address::address]
+* boost::asio::deadline_timer.
 
-Default constructor.
+The io_service class also includes facilities intended for developers of custom asynchronous services.
 
- ``[link boost_asio.reference.ip__address.address.overload1 address]``();
 
- ``[link boost_asio.reference.ip__address.address.overload2 address]``(
- const boost::asio::ip::address_v4 & ipv4_address);
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
- ``[link boost_asio.reference.ip__address.address.overload3 address]``(
- const boost::asio::ip::address_v6 & ipv6_address);
+[*Shared] [*objects:] Safe, with the exception that calling reset() while there are unfinished run() calls results in undefined behaviour.
 
- ``[link boost_asio.reference.ip__address.address.overload4 address]``(
- const address & other);
+[heading Effect of exceptions thrown from handlers]
+
 
 
-[section:overload1 ip::address::address (1 of 4 overloads)]
+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.
 
-Default constructor.
+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 [*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.
 
- address();
+For example:
 
 
 
-[endsect]
+ boost::asio::io_service io_service;
+ ...
+ for (;;)
+ {
+ try
+ {
+ io_service.run();
+ break; // run() exited normally
+ }
+ catch (my_exception& e)
+ {
+ // Deal with exception as appropriate.
+ }
+ }
 
 
 
-[section:overload2 ip::address::address (2 of 4 overloads)]
 
-Construct an address from an IPv4 address.
 
- address(
- const boost::asio::ip::address_v4 & ipv4_address);
+[heading 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
+[link boost_asio.reference.io_service__work io_service::work]:
 
-[endsect]
 
 
+ boost::asio::io_service io_service;
+ boost::asio::io_service::work work(io_service);
+ ...
 
-[section:overload3 ip::address::address (3 of 4 overloads)]
 
-Construct an address from an IPv6 address.
 
- address(
- const boost::asio::ip::address_v6 & ipv6_address);
 
+To effect a shutdown, the application will then need to call the io\_service's stop() member function. This will cause the io_servicerun() 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.
 
-[endsect]
 
 
+ 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.
 
-[section:overload4 ip::address::address (4 of 4 overloads)]
 
-Copy constructor.
 
- address(
- const address & other);
 
 
+[section:add_service io_service::add_service]
 
-[endsect]
+[indexterm2 add_service..io_service] Add a service object to the io_service.
 
+ template<
+ typename ``[link boost_asio.reference.Service Service]``>
+ friend void add_service(
+ io_service & ios,
+ Service * svc);
 
-[endsect]
 
-[section:from_string ip::address::from_string]
+This function is used to add a service to the io_service.
 
-Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
 
- static address ``[link boost_asio.reference.ip__address.from_string.overload1 from_string]``(
- const char * str);
+[heading Parameters]
+
 
- static address ``[link boost_asio.reference.ip__address.from_string.overload2 from_string]``(
- const char * str,
- boost::system::error_code & ec);
+[variablelist
+
+[[ios][The io\_service object that owns the service.]]
 
- static address ``[link boost_asio.reference.ip__address.from_string.overload3 from_string]``(
- const std::string & str);
+[[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:
+``
+ delete static_cast<io_service::service*>(svc)
+``
+]]
 
- static address ``[link boost_asio.reference.ip__address.from_string.overload4 from_string]``(
- const std::string & str,
- boost::system::error_code & ec);
+]
 
+[heading Exceptions]
+
 
-[section:overload1 ip::address::from_string (1 of 4 overloads)]
+[variablelist
+
+[[boost::asio::service_already_exists][Thrown if a service of the given type is already present in the io\_service.]]
 
-Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
+[[boost::asio::invalid_service_owner][Thrown if the service's owning io\_service is not the io\_service object specified by the ios parameter. ]]
 
- static address from_string(
- const char * str);
+]
 
 
 
@@ -30263,26 +31718,33 @@
 
 
 
-[section:overload2 ip::address::from_string (2 of 4 overloads)]
-
-Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
+[section:dispatch io_service::dispatch]
 
- static address from_string(
- const char * str,
- boost::system::error_code & ec);
+[indexterm2 dispatch..io_service] Request the io_service to invoke the given handler.
 
+ template<
+ typename ``[link boost_asio.reference.CompletionHandler CompletionHandler]``>
+ void dispatch(
+ CompletionHandler handler);
 
 
-[endsect]
+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.
 
 
-[section:overload3 ip::address::from_string (3 of 4 overloads)]
+[heading Parameters]
+
 
-Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
+[variablelist
+
+[[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:
+``
+ void handler();
+``
+]]
 
- static address from_string(
- const std::string & str);
+]
 
 
 
@@ -30290,39 +31752,52 @@
 
 
 
-[section:overload4 ip::address::from_string (4 of 4 overloads)]
+[section:has_service io_service::has_service]
 
-Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
+[indexterm2 has_service..io_service] Determine if an io_service contains a specified service type.
+
+ template<
+ typename ``[link boost_asio.reference.Service Service]``>
+ friend bool has_service(
+ io_service & ios);
 
- static address from_string(
- const std::string & str,
- boost::system::error_code & ec);
 
+This function is used to determine whether the io_service contains a service object corresponding to the given service type.
 
 
-[endsect]
+[heading Parameters]
+
 
+[variablelist
+
+[[ios][The io\_service object that owns the service.]]
 
-[endsect]
+]
+
+[heading Return Value]
+
+A boolean indicating whether the io_service contains the service.
 
 
-[section:is_v4 ip::address::is_v4]
 
-Get whether the address is an IP version 4 address.
+[endsect]
 
- bool is_v4() const;
 
+[section:io_service io_service::io_service]
 
+[indexterm2 io_service..io_service] Constructor.
 
-[endsect]
+ ``[link boost_asio.reference.io_service.io_service.overload1 io_service]``();
 
+ ``[link boost_asio.reference.io_service.io_service.overload2 io_service]``(
+ std::size_t concurrency_hint);
 
 
-[section:is_v6 ip::address::is_v6]
+[section:overload1 io_service::io_service (1 of 2 overloads)]
 
-Get whether the address is an IP version 6 address.
+Constructor.
 
- bool is_v6() const;
+ io_service();
 
 
 
@@ -30330,165 +31805,165 @@
 
 
 
-[section:operator_not__eq_ ip::address::operator!=]
+[section:overload2 io_service::io_service (2 of 2 overloads)]
 
-Compare two addresses for inequality.
+Constructor.
 
- friend bool operator!=(
- const address & a1,
- const address & a2);
+ io_service(
+ std::size_t concurrency_hint);
 
 
+Construct with a hint about the required level of concurrency.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[concurrency_hint][A suggestion to the implementation on how many threads it should allow to run simultaneously. ]]
 
-[section:operator_lt_ ip::address::operator<]
+]
 
-Compare addresses for ordering.
 
- friend bool operator<(
- const address & a1,
- const address & a2);
 
+[endsect]
 
 
 [endsect]
 
+[section:poll io_service::poll]
 
+[indexterm2 poll..io_service] Run the io_service's event processing loop to execute ready handlers.
 
-[section:operator_lt__lt_ ip::address::operator<<]
+ std::size_t ``[link boost_asio.reference.io_service.poll.overload1 poll]``();
 
-Output an address as a string.
+ std::size_t ``[link boost_asio.reference.io_service.poll.overload2 poll]``(
+ boost::system::error_code & ec);
 
- template<
- typename ``[link boost_asio.reference.Elem Elem]``,
- typename ``[link boost_asio.reference.Traits Traits]``>
- std::basic_ostream< Elem, Traits > & operator<<(
- std::basic_ostream< Elem, Traits > & os,
- const address & addr);
 
+[section:overload1 io_service::poll (1 of 2 overloads)]
 
-Used to output a human-readable string for a specified address.
+Run the io_service's event processing loop to execute ready handlers.
 
+ std::size_t poll();
 
-[heading Parameters]
-
 
-[variablelist
-
-[[os][The output stream to which the string will be written.]]
-
-[[addr][The address to be written.]]
+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.
 
-]
 
 [heading Return Value]
       
-The output stream.
-
-
-
-[endsect]
+The number of handlers that were executed.
 
+[heading Exceptions]
+
 
-[section:operator_eq_ ip::address::operator=]
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
-Assign from another address.
+]
 
- address & ``[link boost_asio.reference.ip__address.operator_eq_.overload1 operator=]``(
- const address & other);
 
- address & ``[link boost_asio.reference.ip__address.operator_eq_.overload2 operator=]``(
- const boost::asio::ip::address_v4 & ipv4_address);
 
- address & ``[link boost_asio.reference.ip__address.operator_eq_.overload3 operator=]``(
- const boost::asio::ip::address_v6 & ipv6_address);
+[endsect]
 
 
-[section:overload1 ip::address::operator= (1 of 3 overloads)]
 
-Assign from another address.
+[section:overload2 io_service::poll (2 of 2 overloads)]
 
- address & operator=(
- const address & other);
+Run the io_service's event processing loop to execute ready handlers.
 
+ std::size_t poll(
+ boost::system::error_code & ec);
 
 
-[endsect]
+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.
 
 
+[heading Parameters]
+
 
-[section:overload2 ip::address::operator= (2 of 3 overloads)]
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
 
-Assign from an IPv4 address.
+]
 
- address & operator=(
- const boost::asio::ip::address_v4 & ipv4_address);
+[heading Return Value]
+
+The number of handlers that were executed.
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:overload3 ip::address::operator= (3 of 3 overloads)]
-
-Assign from an IPv6 address.
-
- address & operator=(
- const boost::asio::ip::address_v6 & ipv6_address);
+[section:poll_one io_service::poll_one]
 
+[indexterm2 poll_one..io_service] Run the io_service's event processing loop to execute one ready handler.
 
+ std::size_t ``[link boost_asio.reference.io_service.poll_one.overload1 poll_one]``();
 
-[endsect]
+ std::size_t ``[link boost_asio.reference.io_service.poll_one.overload2 poll_one]``(
+ boost::system::error_code & ec);
 
 
-[endsect]
+[section:overload1 io_service::poll_one (1 of 2 overloads)]
 
+Run the io_service's event processing loop to execute one ready handler.
 
-[section:operator_eq__eq_ ip::address::operator==]
+ std::size_t poll_one();
 
-Compare two addresses for equality.
 
- friend bool operator==(
- const address & a1,
- const address & a2);
+The poll\_one() function runs at most one handler that is ready to run, without blocking.
 
 
+[heading Return Value]
+
+The number of handlers that were executed.
 
-[endsect]
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
-[section:to_string ip::address::to_string]
+]
 
-Get the address as a string in dotted decimal format.
 
- std::string ``[link boost_asio.reference.ip__address.to_string.overload1 to_string]``() const;
 
- std::string ``[link boost_asio.reference.ip__address.to_string.overload2 to_string]``(
- boost::system::error_code & ec) const;
+[endsect]
 
 
-[section:overload1 ip::address::to_string (1 of 2 overloads)]
 
-Get the address as a string in dotted decimal format.
+[section:overload2 io_service::poll_one (2 of 2 overloads)]
 
- std::string to_string() const;
+Run the io_service's event processing loop to execute one ready handler.
 
+ std::size_t poll_one(
+ boost::system::error_code & ec);
 
 
-[endsect]
+The poll\_one() function runs at most one handler that is ready to run, without blocking.
 
 
+[heading Parameters]
+
 
-[section:overload2 ip::address::to_string (2 of 2 overloads)]
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
 
-Get the address as a string in dotted decimal format.
+]
 
- std::string to_string(
- boost::system::error_code & ec) const;
+[heading Return Value]
+
+The number of handlers that were executed.
 
 
 
@@ -30498,207 +31973,95 @@
 [endsect]
 
 
-[section:to_v4 ip::address::to_v4]
-
-Get the address as an IP version 4 address.
-
- boost::asio::ip::address_v4 to_v4() const;
-
-
+[section:post io_service::post]
 
-[endsect]
+[indexterm2 post..io_service] Request the io_service to invoke the given handler and return immediately.
 
+ template<
+ typename ``[link boost_asio.reference.CompletionHandler CompletionHandler]``>
+ void post(
+ CompletionHandler handler);
 
 
-[section:to_v6 ip::address::to_v6]
+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.
 
-Get the address as an IP version 6 address.
+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.
 
- boost::asio::ip::address_v6 to_v6() const;
 
+[heading Parameters]
+
 
+[variablelist
+
+[[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:
+``
+ void handler();
+``
+]]
 
-[endsect]
+]
 
 
 
 [endsect]
 
-[section:ip__address_v4 ip::address_v4]
 
-Implements IP version 4 style addresses.
 
- class address_v4
+[section:reset io_service::reset]
 
+[indexterm2 reset..io_service] Reset the io_service in preparation for a subsequent run() invocation.
 
-[heading Types]
-[table
- [[Name][Description]]
+ void reset();
 
- [
 
- [[link boost_asio.reference.ip__address_v4.bytes_type [*bytes_type]]]
- [The type used to represent an address as an array of bytes. ]
-
- ]
+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.
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ip__address_v4.address_v4 [*address_v4]]]
- [Default constructor. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.any [*any]]]
- [Obtain an address object that represents any address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.broadcast [*broadcast]]]
- [Obtain an address object that represents the broadcast address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.from_string [*from_string]]]
- [Create an address from an IP address string in dotted decimal form. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.is_class_a [*is_class_a]]]
- [Determine whether the address is a class A address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.is_class_b [*is_class_b]]]
- [Determine whether the address is a class B address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.is_class_c [*is_class_c]]]
- [Determine whether the address is a class C address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.is_multicast [*is_multicast]]]
- [Determine whether the address is a multicast address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.loopback [*loopback]]]
- [Obtain an address object that represents the loopback address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.netmask [*netmask]]]
- [Obtain the netmask that corresponds to the address, based on its address class. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.operator_eq_ [*operator=]]]
- [Assign from another address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.to_bytes [*to_bytes]]]
- [Get the address in bytes. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.to_string [*to_string]]]
- [Get the address as a string in dotted decimal format. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.to_ulong [*to_ulong]]]
- [Get the address as an unsigned long in host byte order. ]
- ]
-
-]
+[endsect]
 
-[heading Friends]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ip__address_v4.operator_not__eq_ [*operator!=]]]
- [Compare two addresses for inequality. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.operator_lt_ [*operator<]]]
- [Compare addresses for ordering. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.operator_lt__eq_ [*operator<=]]]
- [Compare addresses for ordering. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.operator_eq__eq_ [*operator==]]]
- [Compare two addresses for equality. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.operator_gt_ [*operator>]]]
- [Compare addresses for ordering. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v4.operator_gt__eq_ [*operator>=]]]
- [Compare addresses for ordering. ]
- ]
-
-]
+[section:run io_service::run]
 
-[heading Related Functions]
-[table
- [[Name][Description]]
+[indexterm2 run..io_service] Run the io_service's event processing loop.
 
- [
- [[link boost_asio.reference.ip__address_v4.operator_lt__lt_ [*operator<<]]]
- [Output an address as a string. ]
- ]
-
-]
+ std::size_t ``[link boost_asio.reference.io_service.run.overload1 run]``();
 
-The
-[link boost_asio.reference.ip__address_v4 ip::address_v4] class provides the ability to use and manipulate IP version 4 addresses.
+ std::size_t ``[link boost_asio.reference.io_service.run.overload2 run]``(
+ boost::system::error_code & ec);
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+[section:overload1 io_service::run (1 of 2 overloads)]
 
-[*Shared] [*objects:] Unsafe.
+Run the io_service's event processing loop.
 
+ std::size_t run();
 
-[section:address_v4 ip::address_v4::address_v4]
 
-Default constructor.
+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.
 
- ``[link boost_asio.reference.ip__address_v4.address_v4.overload1 address_v4]``();
+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.
 
- ``[link boost_asio.reference.ip__address_v4.address_v4.overload2 address_v4]``(
- const bytes_type & bytes);
+The run() function may be safely called again once it has completed only after a call to reset().
 
- ``[link boost_asio.reference.ip__address_v4.address_v4.overload3 address_v4]``(
- unsigned long addr);
 
- ``[link boost_asio.reference.ip__address_v4.address_v4.overload4 address_v4]``(
- const address_v4 & other);
+[heading Return Value]
+
+The number of handlers that were executed.
 
+[heading Exceptions]
+
 
-[section:overload1 ip::address_v4::address_v4 (1 of 4 overloads)]
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
-Default constructor.
+]
 
- address_v4();
+[heading Remarks]
+
+The poll() function may also be used to dispatch ready handlers, but without blocking.
 
 
 
@@ -30706,88 +32069,107 @@
 
 
 
-[section:overload2 ip::address_v4::address_v4 (2 of 4 overloads)]
+[section:overload2 io_service::run (2 of 2 overloads)]
 
-Construct an address from raw bytes.
+Run the io_service's event processing loop.
 
- address_v4(
- const bytes_type & bytes);
+ std::size_t run(
+ boost::system::error_code & ec);
 
 
+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.
 
-[endsect]
+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().
 
 
-[section:overload3 ip::address_v4::address_v4 (3 of 4 overloads)]
+[heading Parameters]
+
 
-Construct an address from a unsigned long in host byte order.
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
 
- address_v4(
- unsigned long addr);
+]
 
+[heading Return Value]
+
+The number of handlers that were executed.
 
+[heading Remarks]
+
+The poll() function may also be used to dispatch ready handlers, but without blocking.
 
-[endsect]
 
 
+[endsect]
 
-[section:overload4 ip::address_v4::address_v4 (4 of 4 overloads)]
 
-Copy constructor.
+[endsect]
 
- address_v4(
- const address_v4 & other);
+[section:run_one io_service::run_one]
 
+[indexterm2 run_one..io_service] Run the io_service's event processing loop to execute at most one handler.
 
+ std::size_t ``[link boost_asio.reference.io_service.run_one.overload1 run_one]``();
 
-[endsect]
+ std::size_t ``[link boost_asio.reference.io_service.run_one.overload2 run_one]``(
+ boost::system::error_code & ec);
 
 
-[endsect]
+[section:overload1 io_service::run_one (1 of 2 overloads)]
 
+Run the io_service's event processing loop to execute at most one handler.
 
-[section:any ip::address_v4::any]
+ std::size_t run_one();
 
-Obtain an address object that represents any address.
 
- static address_v4 any();
+The run\_one() function blocks until one handler has been dispatched, or until the io_service has been stopped.
 
 
+[heading Return Value]
+
+The number of handlers that were executed.
 
-[endsect]
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
-[section:broadcast ip::address_v4::broadcast]
+]
 
-Obtain an address object that represents the broadcast address.
 
- static address_v4 ``[link boost_asio.reference.ip__address_v4.broadcast.overload1 broadcast]``();
 
- static address_v4 ``[link boost_asio.reference.ip__address_v4.broadcast.overload2 broadcast]``(
- const address_v4 & addr,
- const address_v4 & mask);
+[endsect]
 
 
-[section:overload1 ip::address_v4::broadcast (1 of 2 overloads)]
 
-Obtain an address object that represents the broadcast address.
+[section:overload2 io_service::run_one (2 of 2 overloads)]
 
- static address_v4 broadcast();
+Run the io_service's event processing loop to execute at most one handler.
 
+ std::size_t run_one(
+ boost::system::error_code & ec);
 
 
-[endsect]
+The run\_one() function blocks until one handler has been dispatched, or until the io_service has been stopped.
 
 
+[heading Parameters]
+
 
-[section:overload2 ip::address_v4::broadcast (2 of 2 overloads)]
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
 
-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);
+[heading Return Value]
+
+The number of handlers that were executed.
 
 
 
@@ -30797,146 +32179,202 @@
 [endsect]
 
 
-[section:bytes_type ip::address_v4::bytes_type]
+[section:stop io_service::stop]
 
-The type used to represent an address as an array of bytes.
+[indexterm2 stop..io_service] Stop the io_service's event processing loop.
 
- typedef boost::array< unsigned char, 4 > bytes_type;
+ void stop();
 
 
+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.
 
 
 [endsect]
 
 
-[section:from_string ip::address_v4::from_string]
-
-Create an address from an IP address string in dotted decimal form.
 
- static address_v4 ``[link boost_asio.reference.ip__address_v4.from_string.overload1 from_string]``(
- const char * str);
+[section:use_service io_service::use_service]
 
- static address_v4 ``[link boost_asio.reference.ip__address_v4.from_string.overload2 from_string]``(
- const char * str,
- boost::system::error_code & ec);
+[indexterm2 use_service..io_service] Obtain the service object corresponding to the given type.
 
- static address_v4 ``[link boost_asio.reference.ip__address_v4.from_string.overload3 from_string]``(
- const std::string & str);
+ template<
+ typename ``[link boost_asio.reference.Service Service]``>
+ friend Service & use_service(
+ io_service & ios);
 
- static address_v4 ``[link boost_asio.reference.ip__address_v4.from_string.overload4 from_string]``(
- const std::string & str,
- boost::system::error_code & ec);
 
+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.
 
-[section:overload1 ip::address_v4::from_string (1 of 4 overloads)]
 
-Create an address from an IP address string in dotted decimal form.
+[heading Parameters]
+
 
- static address_v4 from_string(
- const char * str);
+[variablelist
+
+[[ios][The io\_service object that owns the service.]]
 
+]
 
+[heading Return Value]
+
+The service interface implementing the specified service type. Ownership of the service interface is not transferred to the caller.
 
-[endsect]
 
 
+[endsect]
 
-[section:overload2 ip::address_v4::from_string (2 of 4 overloads)]
 
-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);
+[section:wrap io_service::wrap]
 
+[indexterm2 wrap..io_service] Create a new handler that automatically dispatches the wrapped handler on the io_service.
 
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ unspecified wrap(
+ Handler handler);
 
-[endsect]
 
+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.
 
 
-[section:overload3 ip::address_v4::from_string (3 of 4 overloads)]
+[heading Parameters]
+
 
-Create an address from an IP address string in dotted decimal form.
+[variablelist
+
+[[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:
+``
+ void handler(A1 a1, ... An an);
+``
+]]
 
- static address_v4 from_string(
- const std::string & str);
+]
 
+[heading Return Value]
+
+A function object that, when invoked, passes the wrapped handler to the io\_service's dispatch function. Given a function object with the signature:
 
+ R f(A1 a1, ... An an);
 
-[endsect]
 
+If this function object is passed to the wrap function like so:
 
+ io_service.wrap(f);
 
-[section:overload4 ip::address_v4::from_string (4 of 4 overloads)]
 
-Create an address from an IP address string in dotted decimal form.
+then the return value is a function object with the signature
 
- static address_v4 from_string(
- const std::string & str,
- boost::system::error_code & ec);
+ void g(A1 a1, ... An an);
 
 
+that, when invoked, executes code equivalent to:
 
-[endsect]
+ io_service.dispatch(boost::bind(f, a1, ... an));
 
 
-[endsect]
 
 
-[section:is_class_a ip::address_v4::is_class_a]
 
-Determine whether the address is a class A address.
 
- bool is_class_a() const;
+[endsect]
 
 
 
-[endsect]
+[section:_io_service io_service::~io_service]
 
+[indexterm2 ~io_service..io_service] Destructor.
 
+ ~io_service();
 
-[section:is_class_b ip::address_v4::is_class_b]
 
-Determine whether the address is a class B address.
 
- bool is_class_b() const;
+[endsect]
 
 
 
 [endsect]
 
+[section:io_service__id io_service::id]
 
+Class used to uniquely identify a service.
 
-[section:is_class_c ip::address_v4::is_class_c]
+ class id :
+ noncopyable
 
-Determine whether the address is a class C address.
 
- bool is_class_c() const;
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.io_service__id.id [*id]]]
+ [Constructor. ]
+ ]
+
+]
 
 
-[endsect]
+[section:id io_service::id::id]
 
+[indexterm2 id..io_service::id] Constructor.
 
+ id();
 
-[section:is_multicast ip::address_v4::is_multicast]
 
-Determine whether the address is a multicast address.
 
- bool is_multicast() const;
+[endsect]
 
 
 
 [endsect]
 
+[section:io_service__service io_service::service]
 
+Base class for all io_service services.
 
-[section:loopback ip::address_v4::loopback]
+ class service :
+ noncopyable
 
-Obtain an address object that represents the loopback address.
 
- static address_v4 loopback();
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.io_service__service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.io_service__service.service [*service]]]
+ [Constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__service._service [*~service]]]
+ [Destructor. ]
+ ]
+
+]
+
+
+[section:get_io_service io_service::service::get_io_service]
+
+[indexterm2 get_io_service..io_service::service] Get the io_service object that owns the service.
+
+ boost::asio::io_service & get_io_service();
 
 
 
@@ -30944,12 +32382,11 @@
 
 
 
-[section:netmask ip::address_v4::netmask]
+[section:io_service io_service::service::io_service]
 
-Obtain the netmask that corresponds to the address, based on its address class.
+[indexterm2 io_service..io_service::service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
- static address_v4 netmask(
- const address_v4 & addr);
+ boost::asio::io_service & io_service();
 
 
 
@@ -30957,13 +32394,23 @@
 
 
 
-[section:operator_not__eq_ ip::address_v4::operator!=]
+[section:service io_service::service::service]
 
-Compare two addresses for inequality.
+[indexterm2 service..io_service::service] Constructor.
 
- friend bool operator!=(
- const address_v4 & a1,
- const address_v4 & a2);
+ service(
+ boost::asio::io_service & owner);
+
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[owner][The io\_service object that owns the service. ]]
+
+]
 
 
 
@@ -30971,13 +32418,11 @@
 
 
 
-[section:operator_lt_ ip::address_v4::operator<]
+[section:_service io_service::service::~service]
 
-Compare addresses for ordering.
+[indexterm2 ~service..io_service::service] Destructor.
 
- friend bool operator<(
- const address_v4 & a1,
- const address_v4 & a2);
+ virtual ~service();
 
 
 
@@ -30985,19 +32430,82 @@
 
 
 
-[section:operator_lt__lt_ ip::address_v4::operator<<]
+[endsect]
+
+[section:io_service__strand io_service::strand]
+
+Provides serialised handler execution.
+
+ class strand
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.io_service__strand.dispatch [*dispatch]]]
+ [Request the strand to invoke the given handler. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the strand. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the strand. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.post [*post]]]
+ [Request the strand to invoke the given handler and return immediately. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.strand [*strand]]]
+ [Constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.wrap [*wrap]]]
+ [Create a new handler that automatically dispatches the wrapped handler on the strand. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand._strand [*~strand]]]
+ [Destructor. ]
+ ]
+
+]
+
+The io_service::strand class provides the ability to post and dispatch handlers with the guarantee that none of those handlers will execute concurrently.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Safe.
+
+
 
-Output an address as a string.
+[section:dispatch io_service::strand::dispatch]
+
+[indexterm2 dispatch..io_service::strand] Request the strand to invoke the given handler.
 
   template<
- typename ``[link boost_asio.reference.Elem Elem]``,
- typename ``[link boost_asio.reference.Traits Traits]``>
- std::basic_ostream< Elem, Traits > & operator<<(
- std::basic_ostream< Elem, Traits > & os,
- const address_v4 & addr);
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ void dispatch(
+ Handler handler);
 
 
-Used to output a human-readable string for a specified address.
+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.
 
 
 [heading Parameters]
@@ -31005,56 +32513,53 @@
 
 [variablelist
   
-[[os][The output stream to which the string will be written.]]
-
-[[addr][The address to be written.]]
+[[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:
+``
+ void handler();
+``
+]]
 
 ]
 
-[heading Return Value]
-
-The output stream.
-
 
 
 [endsect]
 
 
 
-[section:operator_lt__eq_ ip::address_v4::operator<=]
+[section:get_io_service io_service::strand::get_io_service]
 
-Compare addresses for ordering.
+[indexterm2 get_io_service..io_service::strand] Get the io_service associated with the strand.
 
- friend bool operator<=(
- const address_v4 & a1,
- const address_v4 & a2);
+ boost::asio::io_service & get_io_service();
 
 
+This function may be used to obtain the io_service object that the strand uses to dispatch handlers for asynchronous operations.
 
-[endsect]
 
+[heading Return Value]
+
+A reference to the io_service object that the strand will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
-[section:operator_eq_ ip::address_v4::operator=]
 
-Assign from another address.
+[endsect]
 
- address_v4 & operator=(
- const address_v4 & other);
 
 
+[section:io_service io_service::strand::io_service]
 
-[endsect]
+[indexterm2 io_service..io_service::strand] (Deprecated: use get_io_service().) Get the io_service associated with the strand.
 
+ boost::asio::io_service & io_service();
 
 
-[section:operator_eq__eq_ ip::address_v4::operator==]
+This function may be used to obtain the io_service object that the strand uses to dispatch handlers for asynchronous operations.
 
-Compare two addresses for equality.
 
- friend bool operator==(
- const address_v4 & a1,
- const address_v4 & a2);
+[heading Return Value]
+
+A reference to the io_service object that the strand will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -31062,27 +32567,33 @@
 
 
 
-[section:operator_gt_ ip::address_v4::operator>]
-
-Compare addresses for ordering.
+[section:post io_service::strand::post]
 
- friend bool operator>(
- const address_v4 & a1,
- const address_v4 & a2);
+[indexterm2 post..io_service::strand] Request the strand to invoke the given handler and return immediately.
 
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ void post(
+ Handler handler);
 
 
-[endsect]
+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.
 
 
-[section:operator_gt__eq_ ip::address_v4::operator>=]
+[heading Parameters]
+
 
-Compare addresses for ordering.
+[variablelist
+
+[[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:
+``
+ void handler();
+``
+]]
 
- friend bool operator>=(
- const address_v4 & a1,
- const address_v4 & a2);
+]
 
 
 
@@ -31090,315 +32601,203 @@
 
 
 
-[section:to_bytes ip::address_v4::to_bytes]
+[section:strand io_service::strand::strand]
 
-Get the address in bytes.
+[indexterm2 strand..io_service::strand] Constructor.
 
- bytes_type to_bytes() const;
+ strand(
+ boost::asio::io_service & io_service);
+
+
+Constructs the strand.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the strand will use to dispatch handlers that are ready to be run. ]]
+
+]
 
 
 
 [endsect]
 
 
-[section:to_string ip::address_v4::to_string]
 
-Get the address as a string in dotted decimal format.
+[section:wrap io_service::strand::wrap]
 
- std::string ``[link boost_asio.reference.ip__address_v4.to_string.overload1 to_string]``() const;
+[indexterm2 wrap..io_service::strand] Create a new handler that automatically dispatches the wrapped handler on the strand.
 
- std::string ``[link boost_asio.reference.ip__address_v4.to_string.overload2 to_string]``(
- boost::system::error_code & ec) const;
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ unspecified wrap(
+ Handler handler);
 
 
-[section:overload1 ip::address_v4::to_string (1 of 2 overloads)]
+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.
 
-Get the address as a string in dotted decimal format.
 
- std::string to_string() const;
+[heading Parameters]
+
 
+[variablelist
+
+[[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:
+``
+ void handler(A1 a1, ... An an);
+``
+]]
 
+]
 
-[endsect]
+[heading Return Value]
+
+A function object that, when invoked, passes the wrapped handler to the strand's dispatch function. Given a function object with the signature:
 
+ R f(A1 a1, ... An an);
 
 
-[section:overload2 ip::address_v4::to_string (2 of 2 overloads)]
+If this function object is passed to the wrap function like so:
 
-Get the address as a string in dotted decimal format.
+ strand.wrap(f);
+
+
+then the return value is a function object with the signature
+
+ void g(A1 a1, ... An an);
+
+
+that, when invoked, executes code equivalent to:
+
+ strand.dispatch(boost::bind(f, a1, ... an));
 
- std::string to_string(
- boost::system::error_code & ec) const;
 
 
 
-[endsect]
 
 
 [endsect]
 
 
-[section:to_ulong ip::address_v4::to_ulong]
 
-Get the address as an unsigned long in host byte order.
+[section:_strand io_service::strand::~strand]
 
- unsigned long to_ulong() const;
+[indexterm2 ~strand..io_service::strand] Destructor.
 
+ ~strand();
 
 
-[endsect]
+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.
 
 
 [endsect]
 
-[section:ip__address_v6 ip::address_v6]
-
-Implements IP version 6 style addresses.
 
- class address_v6
 
+[endsect]
 
-[heading Types]
-[table
- [[Name][Description]]
+[section:io_service__work io_service::work]
 
- [
+Class to inform the io_service when it has work to do.
 
- [[link boost_asio.reference.ip__address_v6.bytes_type [*bytes_type]]]
- [The type used to represent an address as an array of bytes. ]
-
- ]
+ class work
 
-]
 
 [heading Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__address_v6.address_v6 [*address_v6]]]
- [Default constructor. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.any [*any]]]
- [Obtain an address object that represents any address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.from_string [*from_string]]]
- [Create an address from an IP address string. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_link_local [*is_link_local]]]
- [Determine whether the address is link local. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_loopback [*is_loopback]]]
- [Determine whether the address is a loopback address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_multicast [*is_multicast]]]
- [Determine whether the address is a multicast address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_multicast_global [*is_multicast_global]]]
- [Determine whether the address is a global multicast address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_multicast_link_local [*is_multicast_link_local]]]
- [Determine whether the address is a link-local multicast address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_multicast_node_local [*is_multicast_node_local]]]
- [Determine whether the address is a node-local multicast address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_multicast_org_local [*is_multicast_org_local]]]
- [Determine whether the address is a org-local multicast address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_multicast_site_local [*is_multicast_site_local]]]
- [Determine whether the address is a site-local multicast address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_site_local [*is_site_local]]]
- [Determine whether the address is site local. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_unspecified [*is_unspecified]]]
- [Determine whether the address is unspecified. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_v4_compatible [*is_v4_compatible]]]
- [Determine whether the address is an IPv4-compatible address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.is_v4_mapped [*is_v4_mapped]]]
- [Determine whether the address is a mapped IPv4 address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.loopback [*loopback]]]
- [Obtain an address object that represents the loopback address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.operator_eq_ [*operator=]]]
- [Assign from another address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.scope_id [*scope_id]]]
- [The scope ID of the address. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.to_bytes [*to_bytes]]]
- [Get the address in bytes. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.to_string [*to_string]]]
- [Get the address as a string. ]
+ [[link boost_asio.reference.io_service__work.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the work. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address_v6.to_v4 [*to_v4]]]
- [Converts an IPv4-mapped or IPv4-compatible address to an IPv4 address. ]
+ [[link boost_asio.reference.io_service__work.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the work. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address_v6.v4_compatible [*v4_compatible]]]
- [Create an IPv4-compatible IPv6 address. ]
+ [[link boost_asio.reference.io_service__work.work [*work]]]
+ [Constructor notifies the io_service that work is starting. ]
   ]
   
   [
- [[link boost_asio.reference.ip__address_v6.v4_mapped [*v4_mapped]]]
- [Create an IPv4-mapped IPv6 address. ]
+ [[link boost_asio.reference.io_service__work._work [*~work]]]
+ [Destructor notifies the io_service that the work is complete. ]
   ]
   
 ]
 
-[heading Friends]
-[table
- [[Name][Description]]
+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.
 
- [
- [[link boost_asio.reference.ip__address_v6.operator_not__eq_ [*operator!=]]]
- [Compare two addresses for inequality. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.operator_lt_ [*operator<]]]
- [Compare addresses for ordering. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.operator_lt__eq_ [*operator<=]]]
- [Compare addresses for ordering. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.operator_eq__eq_ [*operator==]]]
- [Compare two addresses for equality. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.operator_gt_ [*operator>]]]
- [Compare addresses for ordering. ]
- ]
-
- [
- [[link boost_asio.reference.ip__address_v6.operator_gt__eq_ [*operator>=]]]
- [Compare addresses for ordering. ]
- ]
-
-]
+The work class is copy-constructible so that it may be used as a data member in a handler class. It is not assignable.
 
-[heading Related Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ip__address_v6.operator_lt__lt_ [*operator<<]]]
- [Output an address as a string. ]
- ]
-
-]
+[section:get_io_service io_service::work::get_io_service]
 
-The
-[link boost_asio.reference.ip__address_v6 ip::address_v6] class provides the ability to use and manipulate IP version 6 addresses.
+[indexterm2 get_io_service..io_service::work] Get the io_service associated with the work.
 
+ boost::asio::io_service & get_io_service();
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
 
+[endsect]
 
-[section:address_v6 ip::address_v6::address_v6]
 
-Default constructor.
 
- ``[link boost_asio.reference.ip__address_v6.address_v6.overload1 address_v6]``();
+[section:io_service io_service::work::io_service]
 
- ``[link boost_asio.reference.ip__address_v6.address_v6.overload2 address_v6]``(
- const bytes_type & bytes,
- unsigned long scope_id = 0);
+[indexterm2 io_service..io_service::work] (Deprecated: use get_io_service().) Get the io_service associated with the work.
 
- ``[link boost_asio.reference.ip__address_v6.address_v6.overload3 address_v6]``(
- const address_v6 & other);
+ boost::asio::io_service & io_service();
 
 
-[section:overload1 ip::address_v6::address_v6 (1 of 3 overloads)]
 
-Default constructor.
+[endsect]
 
- address_v6();
 
+[section:work io_service::work::work]
+
+[indexterm2 work..io_service::work] Constructor notifies the io_service that work is starting.
 
+ ``[link boost_asio.reference.io_service__work.work.overload1 work]``(
+ boost::asio::io_service & io_service);
 
-[endsect]
+ ``[link boost_asio.reference.io_service__work.work.overload2 work]``(
+ const work & other);
 
 
+[section:overload1 io_service::work::work (1 of 2 overloads)]
 
-[section:overload2 ip::address_v6::address_v6 (2 of 3 overloads)]
+Constructor notifies the io_service that work is starting.
 
-Construct an address from raw bytes and scope ID.
+ work(
+ boost::asio::io_service & io_service);
 
- address_v6(
- const bytes_type & bytes,
- unsigned long scope_id = 0);
 
+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.
 
 
 [endsect]
 
 
 
-[section:overload3 ip::address_v6::address_v6 (3 of 3 overloads)]
+[section:overload2 io_service::work::work (2 of 2 overloads)]
 
-Copy constructor.
+Copy constructor notifies the io_service that work is starting.
 
- address_v6(
- const address_v6 & other);
+ work(
+ const work & other);
 
 
+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.
+
 
 [endsect]
 
@@ -31406,110 +32805,139 @@
 [endsect]
 
 
-[section:any ip::address_v6::any]
+[section:_work io_service::work::~work]
 
-Obtain an address object that represents any address.
+[indexterm2 ~work..io_service::work] Destructor notifies the io_service that the work is complete.
 
- static address_v6 any();
+ ~work();
 
 
+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.
+
 
 [endsect]
 
 
 
-[section:bytes_type ip::address_v6::bytes_type]
-
-The type used to represent an address as an array of bytes.
-
- typedef boost::array< unsigned char, 16 > bytes_type;
-
-
-
-
-[endsect]
-
-
-[section:from_string ip::address_v6::from_string]
-
-Create an address from an IP address string.
-
- static address_v6 ``[link boost_asio.reference.ip__address_v6.from_string.overload1 from_string]``(
- const char * str);
-
- static address_v6 ``[link boost_asio.reference.ip__address_v6.from_string.overload2 from_string]``(
- const char * str,
- boost::system::error_code & ec);
-
- static address_v6 ``[link boost_asio.reference.ip__address_v6.from_string.overload3 from_string]``(
- const std::string & str);
-
- static address_v6 ``[link boost_asio.reference.ip__address_v6.from_string.overload4 from_string]``(
- const std::string & str,
- boost::system::error_code & ec);
-
-
-[section:overload1 ip::address_v6::from_string (1 of 4 overloads)]
-
-Create an address from an IP address string.
-
- static address_v6 from_string(
- const char * str);
-
-
-
-[endsect]
-
-
-
-[section:overload2 ip::address_v6::from_string (2 of 4 overloads)]
-
-Create an address from an IP address string.
-
- static address_v6 from_string(
- const char * str,
- boost::system::error_code & ec);
+[endsect]
 
+[section:ip__address ip::address]
 
+Implements version-independent IP addresses.
 
-[endsect]
+ class address
 
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[section:overload3 ip::address_v6::from_string (3 of 4 overloads)]
+ [
+ [[link boost_asio.reference.ip__address.address [*address]]]
+ [Default constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address.from_string [*from_string]]]
+ [Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address.is_v4 [*is_v4]]]
+ [Get whether the address is an IP version 4 address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address.is_v6 [*is_v6]]]
+ [Get whether the address is an IP version 6 address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address.operator_eq_ [*operator=]]]
+ [Assign from another address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address.to_string [*to_string]]]
+ [Get the address as a string in dotted decimal format. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address.to_v4 [*to_v4]]]
+ [Get the address as an IP version 4 address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address.to_v6 [*to_v6]]]
+ [Get the address as an IP version 6 address. ]
+ ]
+
+]
 
-Create an address from an IP address string.
+[heading Friends]
+[table
+ [[Name][Description]]
 
- static address_v6 from_string(
- const std::string & str);
+ [
+ [[link boost_asio.reference.ip__address.operator_not__eq_ [*operator!=]]]
+ [Compare two addresses for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address.operator_lt_ [*operator<]]]
+ [Compare addresses for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address.operator_eq__eq_ [*operator==]]]
+ [Compare two addresses for equality. ]
+ ]
+
+]
 
+[heading Related Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.ip__address.operator_lt__lt_ [*operator<<]]]
+ [Output an address as a string. ]
+ ]
+
+]
 
-[endsect]
+The
+[link boost_asio.reference.ip__address ip::address] class provides the ability to use either IP version 4 or version 6 addresses.
 
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
-[section:overload4 ip::address_v6::from_string (4 of 4 overloads)]
+[*Shared] [*objects:] Unsafe.
 
-Create an address from an IP address string.
 
- static address_v6 from_string(
- const std::string & str,
- boost::system::error_code & ec);
+[section:address ip::address::address]
 
+[indexterm2 address..ip::address] Default constructor.
 
+ ``[link boost_asio.reference.ip__address.address.overload1 address]``();
 
-[endsect]
+ ``[link boost_asio.reference.ip__address.address.overload2 address]``(
+ const boost::asio::ip::address_v4 & ipv4_address);
 
+ ``[link boost_asio.reference.ip__address.address.overload3 address]``(
+ const boost::asio::ip::address_v6 & ipv6_address);
 
-[endsect]
+ ``[link boost_asio.reference.ip__address.address.overload4 address]``(
+ const address & other);
 
 
-[section:is_link_local ip::address_v6::is_link_local]
+[section:overload1 ip::address::address (1 of 4 overloads)]
 
-Determine whether the address is link local.
+Default constructor.
 
- bool is_link_local() const;
+ address();
 
 
 
@@ -31517,11 +32945,12 @@
 
 
 
-[section:is_loopback ip::address_v6::is_loopback]
+[section:overload2 ip::address::address (2 of 4 overloads)]
 
-Determine whether the address is a loopback address.
+Construct an address from an IPv4 address.
 
- bool is_loopback() const;
+ address(
+ const boost::asio::ip::address_v4 & ipv4_address);
 
 
 
@@ -31529,11 +32958,12 @@
 
 
 
-[section:is_multicast ip::address_v6::is_multicast]
+[section:overload3 ip::address::address (3 of 4 overloads)]
 
-Determine whether the address is a multicast address.
+Construct an address from an IPv6 address.
 
- bool is_multicast() const;
+ address(
+ const boost::asio::ip::address_v6 & ipv6_address);
 
 
 
@@ -31541,47 +32971,45 @@
 
 
 
-[section:is_multicast_global ip::address_v6::is_multicast_global]
+[section:overload4 ip::address::address (4 of 4 overloads)]
 
-Determine whether the address is a global multicast address.
+Copy constructor.
 
- bool is_multicast_global() const;
+ address(
+ const address & other);
 
 
 
 [endsect]
 
 
-
-[section:is_multicast_link_local ip::address_v6::is_multicast_link_local]
-
-Determine whether the address is a link-local multicast address.
-
- bool is_multicast_link_local() const;
-
-
-
 [endsect]
 
+[section:from_string ip::address::from_string]
 
+[indexterm2 from_string..ip::address] Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
 
-[section:is_multicast_node_local ip::address_v6::is_multicast_node_local]
-
-Determine whether the address is a node-local multicast address.
-
- bool is_multicast_node_local() const;
-
+ static address ``[link boost_asio.reference.ip__address.from_string.overload1 from_string]``(
+ const char * str);
 
+ static address ``[link boost_asio.reference.ip__address.from_string.overload2 from_string]``(
+ const char * str,
+ boost::system::error_code & ec);
 
-[endsect]
+ static address ``[link boost_asio.reference.ip__address.from_string.overload3 from_string]``(
+ const std::string & str);
 
+ static address ``[link boost_asio.reference.ip__address.from_string.overload4 from_string]``(
+ const std::string & str,
+ boost::system::error_code & ec);
 
 
-[section:is_multicast_org_local ip::address_v6::is_multicast_org_local]
+[section:overload1 ip::address::from_string (1 of 4 overloads)]
 
-Determine whether the address is a org-local multicast address.
+Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
 
- bool is_multicast_org_local() const;
+ static address from_string(
+ const char * str);
 
 
 
@@ -31589,11 +33017,13 @@
 
 
 
-[section:is_multicast_site_local ip::address_v6::is_multicast_site_local]
+[section:overload2 ip::address::from_string (2 of 4 overloads)]
 
-Determine whether the address is a site-local multicast address.
+Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
 
- bool is_multicast_site_local() const;
+ static address from_string(
+ const char * str,
+ boost::system::error_code & ec);
 
 
 
@@ -31601,11 +33031,12 @@
 
 
 
-[section:is_site_local ip::address_v6::is_site_local]
+[section:overload3 ip::address::from_string (3 of 4 overloads)]
 
-Determine whether the address is site local.
+Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
 
- bool is_site_local() const;
+ static address from_string(
+ const std::string & str);
 
 
 
@@ -31613,35 +33044,27 @@
 
 
 
-[section:is_unspecified ip::address_v6::is_unspecified]
+[section:overload4 ip::address::from_string (4 of 4 overloads)]
 
-Determine whether the address is unspecified.
+Create an address from an IPv4 address string in dotted decimal form, or from an IPv6 address in hexadecimal notation.
 
- bool is_unspecified() const;
+ static address from_string(
+ const std::string & str,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
-
-[section:is_v4_compatible ip::address_v6::is_v4_compatible]
-
-Determine whether the address is an IPv4-compatible address.
-
- bool is_v4_compatible() const;
-
-
-
 [endsect]
 
 
+[section:is_v4 ip::address::is_v4]
 
-[section:is_v4_mapped ip::address_v6::is_v4_mapped]
-
-Determine whether the address is a mapped IPv4 address.
+[indexterm2 is_v4..ip::address] Get whether the address is an IP version 4 address.
 
- bool is_v4_mapped() const;
+ bool is_v4() const;
 
 
 
@@ -31649,11 +33072,11 @@
 
 
 
-[section:loopback ip::address_v6::loopback]
+[section:is_v6 ip::address::is_v6]
 
-Obtain an address object that represents the loopback address.
+[indexterm2 is_v6..ip::address] Get whether the address is an IP version 6 address.
 
- static address_v6 loopback();
+ bool is_v6() const;
 
 
 
@@ -31661,13 +33084,13 @@
 
 
 
-[section:operator_not__eq_ ip::address_v6::operator!=]
+[section:operator_not__eq_ ip::address::operator!=]
 
-Compare two addresses for inequality.
+[indexterm2 operator!=..ip::address] Compare two addresses for inequality.
 
   friend bool operator!=(
- const address_v6 & a1,
- const address_v6 & a2);
+ const address & a1,
+ const address & a2);
 
 
 
@@ -31675,13 +33098,13 @@
 
 
 
-[section:operator_lt_ ip::address_v6::operator<]
+[section:operator_lt_ ip::address::operator<]
 
-Compare addresses for ordering.
+[indexterm2 operator<..ip::address] Compare addresses for ordering.
 
   friend bool operator<(
- const address_v6 & a1,
- const address_v6 & a2);
+ const address & a1,
+ const address & a2);
 
 
 
@@ -31689,16 +33112,16 @@
 
 
 
-[section:operator_lt__lt_ ip::address_v6::operator<<]
+[section:operator_lt__lt_ ip::address::operator<<]
 
-Output an address as a string.
+[indexterm2 operator<<..ip::address] Output an address as a string.
 
   template<
- typename ``[link boost_asio.reference.Elem Elem]``,
- typename ``[link boost_asio.reference.Traits Traits]``>
+ typename Elem,
+ typename Traits>
   std::basic_ostream< Elem, Traits > & operator<<(
       std::basic_ostream< Elem, Traits > & os,
- const address_v6 & addr);
+ const address & addr);
 
 
 Used to output a human-readable string for a specified address.
@@ -31724,108 +33147,53 @@
 [endsect]
 
 
+[section:operator_eq_ ip::address::operator=]
 
-[section:operator_lt__eq_ ip::address_v6::operator<=]
-
-Compare addresses for ordering.
-
- friend bool operator<=(
- const address_v6 & a1,
- const address_v6 & a2);
-
+[indexterm2 operator=..ip::address] Assign from another address.
 
+ address & ``[link boost_asio.reference.ip__address.operator_eq_.overload1 operator=]``(
+ const address & other);
 
-[endsect]
+ address & ``[link boost_asio.reference.ip__address.operator_eq_.overload2 operator=]``(
+ const boost::asio::ip::address_v4 & ipv4_address);
 
+ address & ``[link boost_asio.reference.ip__address.operator_eq_.overload3 operator=]``(
+ const boost::asio::ip::address_v6 & ipv6_address);
 
 
-[section:operator_eq_ ip::address_v6::operator=]
+[section:overload1 ip::address::operator= (1 of 3 overloads)]
 
 Assign from another address.
 
- address_v6 & operator=(
- const address_v6 & other);
-
-
-
-[endsect]
-
-
-
-[section:operator_eq__eq_ ip::address_v6::operator==]
-
-Compare two addresses for equality.
-
- friend bool operator==(
- const address_v6 & a1,
- const address_v6 & a2);
-
-
-
-[endsect]
-
-
-
-[section:operator_gt_ ip::address_v6::operator>]
-
-Compare addresses for ordering.
-
- friend bool operator>(
- const address_v6 & a1,
- const address_v6 & a2);
-
-
-
-[endsect]
-
-
-
-[section:operator_gt__eq_ ip::address_v6::operator>=]
-
-Compare addresses for ordering.
-
- friend bool operator>=(
- const address_v6 & a1,
- const address_v6 & a2);
+ address & operator=(
+ const address & other);
 
 
 
 [endsect]
 
 
-[section:scope_id ip::address_v6::scope_id]
-
-The scope ID of the address.
-
- unsigned long ``[link boost_asio.reference.ip__address_v6.scope_id.overload1 scope_id]``() const;
-
- void ``[link boost_asio.reference.ip__address_v6.scope_id.overload2 scope_id]``(
- unsigned long id);
-
-
-[section:overload1 ip::address_v6::scope_id (1 of 2 overloads)]
 
-The scope ID of the address.
+[section:overload2 ip::address::operator= (2 of 3 overloads)]
 
- unsigned long scope_id() const;
+Assign from an IPv4 address.
 
+ address & operator=(
+ const boost::asio::ip::address_v4 & ipv4_address);
 
-Returns the scope ID associated with the IPv6 address.
 
 
 [endsect]
 
 
 
-[section:overload2 ip::address_v6::scope_id (2 of 2 overloads)]
-
-The scope ID of the address.
+[section:overload3 ip::address::operator= (3 of 3 overloads)]
 
- void scope_id(
- unsigned long id);
+Assign from an IPv6 address.
 
+ address & operator=(
+ const boost::asio::ip::address_v6 & ipv6_address);
 
-Modifies the scope ID associated with the IPv6 address.
 
 
 [endsect]
@@ -31834,30 +33202,32 @@
 [endsect]
 
 
-[section:to_bytes ip::address_v6::to_bytes]
+[section:operator_eq__eq_ ip::address::operator==]
 
-Get the address in bytes.
+[indexterm2 operator==..ip::address] Compare two addresses for equality.
 
- bytes_type to_bytes() const;
+ friend bool operator==(
+ const address & a1,
+ const address & a2);
 
 
 
 [endsect]
 
 
-[section:to_string ip::address_v6::to_string]
+[section:to_string ip::address::to_string]
 
-Get the address as a string.
+[indexterm2 to_string..ip::address] Get the address as a string in dotted decimal format.
 
- std::string ``[link boost_asio.reference.ip__address_v6.to_string.overload1 to_string]``() const;
+ std::string ``[link boost_asio.reference.ip__address.to_string.overload1 to_string]``() const;
 
- std::string ``[link boost_asio.reference.ip__address_v6.to_string.overload2 to_string]``(
+ std::string ``[link boost_asio.reference.ip__address.to_string.overload2 to_string]``(
       boost::system::error_code & ec) const;
 
 
-[section:overload1 ip::address_v6::to_string (1 of 2 overloads)]
+[section:overload1 ip::address::to_string (1 of 2 overloads)]
 
-Get the address as a string.
+Get the address as a string in dotted decimal format.
 
   std::string to_string() const;
 
@@ -31867,9 +33237,9 @@
 
 
 
-[section:overload2 ip::address_v6::to_string (2 of 2 overloads)]
+[section:overload2 ip::address::to_string (2 of 2 overloads)]
 
-Get the address as a string.
+Get the address as a string in dotted decimal format.
 
   std::string to_string(
       boost::system::error_code & ec) const;
@@ -31882,24 +33252,11 @@
 [endsect]
 
 
-[section:to_v4 ip::address_v6::to_v4]
-
-Converts an IPv4-mapped or IPv4-compatible address to an IPv4 address.
-
- address_v4 to_v4() const;
-
-
-
-[endsect]
-
-
-
-[section:v4_compatible ip::address_v6::v4_compatible]
+[section:to_v4 ip::address::to_v4]
 
-Create an IPv4-compatible IPv6 address.
+[indexterm2 to_v4..ip::address] Get the address as an IP version 4 address.
 
- static address_v6 v4_compatible(
- const address_v4 & addr);
+ boost::asio::ip::address_v4 to_v4() const;
 
 
 
@@ -31907,12 +33264,11 @@
 
 
 
-[section:v4_mapped ip::address_v6::v4_mapped]
+[section:to_v6 ip::address::to_v6]
 
-Create an IPv4-mapped IPv6 address.
+[indexterm2 to_v6..ip::address] Get the address as an IP version 6 address.
 
- static address_v6 v4_mapped(
- const address_v4 & addr);
+ boost::asio::ip::address_v6 to_v6() const;
 
 
 
@@ -31922,13 +33278,11 @@
 
 [endsect]
 
-[section:ip__basic_endpoint ip::basic_endpoint]
+[section:ip__address_v4 ip::address_v4]
 
-Describes an endpoint for a version-independent IP socket.
+Implements IP version 4 style addresses.
 
- template<
- typename ``[link boost_asio.reference.InternetProtocol InternetProtocol]``>
- class basic_endpoint
+ class address_v4
 
 
 [heading Types]
@@ -31937,15 +33291,8 @@
 
   [
 
- [[link boost_asio.reference.ip__basic_endpoint.data_type [*data_type]]]
- [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ip__basic_endpoint.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint. ]
+ [[link boost_asio.reference.ip__address_v4.bytes_type [*bytes_type]]]
+ [The type used to represent an address as an array of bytes. ]
   
   ]
 
@@ -31956,48 +33303,73 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_endpoint.address [*address]]]
- [Get the IP address associated with the endpoint. ]
+ [[link boost_asio.reference.ip__address_v4.address_v4 [*address_v4]]]
+ [Default constructor. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_endpoint.basic_endpoint [*basic_endpoint]]]
- [Default constructor. ]
+ [[link boost_asio.reference.ip__address_v4.any [*any]]]
+ [Obtain an address object that represents any address. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_endpoint.capacity [*capacity]]]
- [Get the capacity of the endpoint in the native type. ]
+ [[link boost_asio.reference.ip__address_v4.broadcast [*broadcast]]]
+ [Obtain an address object that represents the broadcast address. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_endpoint.data [*data]]]
- [Get the underlying endpoint in the native type. ]
+ [[link boost_asio.reference.ip__address_v4.from_string [*from_string]]]
+ [Create an address from an IP address string in dotted decimal form. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_endpoint.operator_eq_ [*operator=]]]
- [Assign from another endpoint. ]
+ [[link boost_asio.reference.ip__address_v4.is_class_a [*is_class_a]]]
+ [Determine whether the address is a class A address. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_endpoint.port [*port]]]
- [Get the port associated with the endpoint. The port number is always in the host's byte order. ]
+ [[link boost_asio.reference.ip__address_v4.is_class_b [*is_class_b]]]
+ [Determine whether the address is a class B address. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_endpoint.protocol [*protocol]]]
- [The protocol associated with the endpoint. ]
+ [[link boost_asio.reference.ip__address_v4.is_class_c [*is_class_c]]]
+ [Determine whether the address is a class C address. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_endpoint.resize [*resize]]]
- [Set the underlying size of the endpoint in the native type. ]
+ [[link boost_asio.reference.ip__address_v4.is_multicast [*is_multicast]]]
+ [Determine whether the address is a multicast address. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_endpoint.size [*size]]]
- [Get the underlying size of the endpoint in the native type. ]
+ [[link boost_asio.reference.ip__address_v4.loopback [*loopback]]]
+ [Obtain an address object that represents the loopback address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v4.netmask [*netmask]]]
+ [Obtain the netmask that corresponds to the address, based on its address class. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v4.operator_eq_ [*operator=]]]
+ [Assign from another address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v4.to_bytes [*to_bytes]]]
+ [Get the address in bytes. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v4.to_string [*to_string]]]
+ [Get the address as a string in dotted decimal format. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v4.to_ulong [*to_ulong]]]
+ [Get the address as an unsigned long in host byte order. ]
   ]
   
 ]
@@ -32007,18 +33379,33 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_endpoint.operator_not__eq_ [*operator!=]]]
- [Compare two endpoints for inequality. ]
+ [[link boost_asio.reference.ip__address_v4.operator_not__eq_ [*operator!=]]]
+ [Compare two addresses for inequality. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_endpoint.operator_lt_ [*operator<]]]
- [Compare endpoints for ordering. ]
+ [[link boost_asio.reference.ip__address_v4.operator_lt_ [*operator<]]]
+ [Compare addresses for ordering. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_endpoint.operator_eq__eq_ [*operator==]]]
- [Compare two endpoints for equality. ]
+ [[link boost_asio.reference.ip__address_v4.operator_lt__eq_ [*operator<=]]]
+ [Compare addresses for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v4.operator_eq__eq_ [*operator==]]]
+ [Compare two addresses for equality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v4.operator_gt_ [*operator>]]]
+ [Compare addresses for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v4.operator_gt__eq_ [*operator>=]]]
+ [Compare addresses for ordering. ]
   ]
   
 ]
@@ -32028,38 +33415,44 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_endpoint.operator_lt__lt_ [*operator<<]]]
- [Output an endpoint as a string. ]
+ [[link boost_asio.reference.ip__address_v4.operator_lt__lt_ [*operator<<]]]
+ [Output an address as a string. ]
   ]
   
 ]
 
 The
-[link boost_asio.reference.ip__basic_endpoint ip::basic_endpoint] class template describes an endpoint that may be associated with a particular socket.
+[link boost_asio.reference.ip__address_v4 ip::address_v4] class provides the ability to use and manipulate IP version 4 addresses.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[*Shared] [*objects:] Unsafe.
 
 
-[section:address ip::basic_endpoint::address]
+[section:address_v4 ip::address_v4::address_v4]
 
-Get the IP address associated with the endpoint.
+[indexterm2 address_v4..ip::address_v4] Default constructor.
 
- boost::asio::ip::address ``[link boost_asio.reference.ip__basic_endpoint.address.overload1 address]``() const;
+ ``[link boost_asio.reference.ip__address_v4.address_v4.overload1 address_v4]``();
 
- void ``[link boost_asio.reference.ip__basic_endpoint.address.overload2 address]``(
- const boost::asio::ip::address & addr);
+ ``[link boost_asio.reference.ip__address_v4.address_v4.overload2 address_v4]``(
+ const bytes_type & bytes);
 
+ ``[link boost_asio.reference.ip__address_v4.address_v4.overload3 address_v4]``(
+ unsigned long addr);
 
-[section:overload1 ip::basic_endpoint::address (1 of 2 overloads)]
+ ``[link boost_asio.reference.ip__address_v4.address_v4.overload4 address_v4]``(
+ const address_v4 & other);
 
-Get the IP address associated with the endpoint.
 
- boost::asio::ip::address address() const;
+[section:overload1 ip::address_v4::address_v4 (1 of 4 overloads)]
+
+Default constructor.
+
+ address_v4();
 
 
 
@@ -32067,135 +33460,189 @@
 
 
 
-[section:overload2 ip::basic_endpoint::address (2 of 2 overloads)]
+[section:overload2 ip::address_v4::address_v4 (2 of 4 overloads)]
 
-Set the IP address associated with the endpoint.
+Construct an address from raw bytes.
 
- void address(
- const boost::asio::ip::address & addr);
+ address_v4(
+ const bytes_type & bytes);
 
 
 
 [endsect]
 
 
+
+[section:overload3 ip::address_v4::address_v4 (3 of 4 overloads)]
+
+Construct an address from a unsigned long in host byte order.
+
+ address_v4(
+ unsigned long addr);
+
+
+
 [endsect]
 
-[section:basic_endpoint ip::basic_endpoint::basic_endpoint]
 
-Default constructor.
 
- ``[link boost_asio.reference.ip__basic_endpoint.basic_endpoint.overload1 basic_endpoint]``();
+[section:overload4 ip::address_v4::address_v4 (4 of 4 overloads)]
 
- ``[link boost_asio.reference.ip__basic_endpoint.basic_endpoint.overload2 basic_endpoint]``(
- const InternetProtocol & protocol,
- unsigned short port_num);
+Copy constructor.
 
- ``[link boost_asio.reference.ip__basic_endpoint.basic_endpoint.overload3 basic_endpoint]``(
- const boost::asio::ip::address & addr,
- unsigned short port_num);
+ address_v4(
+ const address_v4 & other);
 
- ``[link boost_asio.reference.ip__basic_endpoint.basic_endpoint.overload4 basic_endpoint]``(
- const basic_endpoint & other);
 
 
-[section:overload1 ip::basic_endpoint::basic_endpoint (1 of 4 overloads)]
+[endsect]
 
-Default constructor.
 
- basic_endpoint();
+[endsect]
+
+
+[section:any ip::address_v4::any]
+
+[indexterm2 any..ip::address_v4] Obtain an address object that represents any address.
+
+ static address_v4 any();
 
 
 
 [endsect]
 
 
+[section:broadcast ip::address_v4::broadcast]
 
-[section:overload2 ip::basic_endpoint::basic_endpoint (2 of 4 overloads)]
+[indexterm2 broadcast..ip::address_v4] Obtain an address object that represents the broadcast address.
 
-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.
+ static address_v4 ``[link boost_asio.reference.ip__address_v4.broadcast.overload1 broadcast]``();
 
- basic_endpoint(
- const InternetProtocol & protocol,
- unsigned short port_num);
+ static address_v4 ``[link boost_asio.reference.ip__address_v4.broadcast.overload2 broadcast]``(
+ const address_v4 & addr,
+ const address_v4 & mask);
 
 
+[section:overload1 ip::address_v4::broadcast (1 of 2 overloads)]
 
-[heading Examples]
-
-To initialise an IPv4 TCP endpoint for port 1234, use:
+Obtain an address object that represents the broadcast address.
+
+ static address_v4 broadcast();
 
- boost::asio::ip::tcp::endpoint ep(boost::asio::ip::tcp::v4(), 1234);
 
 
+[endsect]
 
 
-To specify an IPv6 UDP endpoint for port 9876, use:
 
- boost::asio::ip::udp::endpoint ep(boost::asio::ip::udp::v6(), 9876);
+[section:overload2 ip::address_v4::broadcast (2 of 2 overloads)]
+
+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);
 
 
 
+[endsect]
 
 
 [endsect]
 
 
+[section:bytes_type ip::address_v4::bytes_type]
 
-[section:overload3 ip::basic_endpoint::basic_endpoint (3 of 4 overloads)]
+[indexterm2 bytes_type..ip::address_v4] The type used to represent an address as an array of bytes.
 
-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.
+ typedef boost::array< unsigned char, 4 > bytes_type;
 
- basic_endpoint(
- const boost::asio::ip::address & addr,
- unsigned short port_num);
 
 
 
 [endsect]
 
 
+[section:from_string ip::address_v4::from_string]
 
-[section:overload4 ip::basic_endpoint::basic_endpoint (4 of 4 overloads)]
+[indexterm2 from_string..ip::address_v4] Create an address from an IP address string in dotted decimal form.
 
-Copy constructor.
+ static address_v4 ``[link boost_asio.reference.ip__address_v4.from_string.overload1 from_string]``(
+ const char * str);
 
- basic_endpoint(
- const basic_endpoint & other);
+ static address_v4 ``[link boost_asio.reference.ip__address_v4.from_string.overload2 from_string]``(
+ const char * str,
+ boost::system::error_code & ec);
+
+ static address_v4 ``[link boost_asio.reference.ip__address_v4.from_string.overload3 from_string]``(
+ const std::string & str);
+
+ static address_v4 ``[link boost_asio.reference.ip__address_v4.from_string.overload4 from_string]``(
+ const std::string & str,
+ boost::system::error_code & ec);
+
+
+[section:overload1 ip::address_v4::from_string (1 of 4 overloads)]
+
+Create an address from an IP address string in dotted decimal form.
+
+ static address_v4 from_string(
+ const char * str);
 
 
 
 [endsect]
 
 
+
+[section:overload2 ip::address_v4::from_string (2 of 4 overloads)]
+
+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);
+
+
+
 [endsect]
 
 
-[section:capacity ip::basic_endpoint::capacity]
 
-Get the capacity of the endpoint in the native type.
+[section:overload3 ip::address_v4::from_string (3 of 4 overloads)]
+
+Create an address from an IP address string in dotted decimal form.
 
- std::size_t capacity() const;
+ static address_v4 from_string(
+ const std::string & str);
 
 
 
 [endsect]
 
 
-[section:data ip::basic_endpoint::data]
 
-Get the underlying endpoint in the native type.
+[section:overload4 ip::address_v4::from_string (4 of 4 overloads)]
 
- data_type * ``[link boost_asio.reference.ip__basic_endpoint.data.overload1 data]``();
+Create an address from an IP address string in dotted decimal form.
 
- const data_type * ``[link boost_asio.reference.ip__basic_endpoint.data.overload2 data]``() const;
+ static address_v4 from_string(
+ const std::string & str,
+ boost::system::error_code & ec);
 
 
-[section:overload1 ip::basic_endpoint::data (1 of 2 overloads)]
 
-Get the underlying endpoint in the native type.
+[endsect]
 
- data_type * data();
+
+[endsect]
+
+
+[section:is_class_a ip::address_v4::is_class_a]
+
+[indexterm2 is_class_a..ip::address_v4] Determine whether the address is a class A address.
+
+ bool is_class_a() const;
 
 
 
@@ -32203,26 +33650,47 @@
 
 
 
-[section:overload2 ip::basic_endpoint::data (2 of 2 overloads)]
+[section:is_class_b ip::address_v4::is_class_b]
 
-Get the underlying endpoint in the native type.
+[indexterm2 is_class_b..ip::address_v4] Determine whether the address is a class B address.
+
+ bool is_class_b() const;
 
- const data_type * data() const;
+
+
+[endsect]
+
+
+
+[section:is_class_c ip::address_v4::is_class_c]
+
+[indexterm2 is_class_c..ip::address_v4] Determine whether the address is a class C address.
+
+ bool is_class_c() const;
 
 
 
 [endsect]
 
 
+
+[section:is_multicast ip::address_v4::is_multicast]
+
+[indexterm2 is_multicast..ip::address_v4] Determine whether the address is a multicast address.
+
+ bool is_multicast() const;
+
+
+
 [endsect]
 
 
-[section:data_type ip::basic_endpoint::data_type]
 
-The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer.
+[section:loopback ip::address_v4::loopback]
 
- typedef implementation_defined data_type;
+[indexterm2 loopback..ip::address_v4] Obtain an address object that represents the loopback address.
 
+ static address_v4 loopback();
 
 
 
@@ -32230,13 +33698,26 @@
 
 
 
-[section:operator_not__eq_ ip::basic_endpoint::operator!=]
+[section:netmask ip::address_v4::netmask]
+
+[indexterm2 netmask..ip::address_v4] Obtain the netmask that corresponds to the address, based on its address class.
+
+ static address_v4 netmask(
+ const address_v4 & addr);
+
+
+
+[endsect]
 
-Compare two endpoints for inequality.
+
+
+[section:operator_not__eq_ ip::address_v4::operator!=]
+
+[indexterm2 operator!=..ip::address_v4] Compare two addresses for inequality.
 
   friend bool operator!=(
- const basic_endpoint< InternetProtocol > & e1,
- const basic_endpoint< InternetProtocol > & e2);
+ const address_v4 & a1,
+ const address_v4 & a2);
 
 
 
@@ -32244,13 +33725,13 @@
 
 
 
-[section:operator_lt_ ip::basic_endpoint::operator<]
+[section:operator_lt_ ip::address_v4::operator<]
 
-Compare endpoints for ordering.
+[indexterm2 operator<..ip::address_v4] Compare addresses for ordering.
 
   friend bool operator<(
- const basic_endpoint< InternetProtocol > & e1,
- const basic_endpoint< InternetProtocol > & e2);
+ const address_v4 & a1,
+ const address_v4 & a2);
 
 
 
@@ -32258,16 +33739,19 @@
 
 
 
-[section:operator_lt__lt_ ip::basic_endpoint::operator<<]
+[section:operator_lt__lt_ ip::address_v4::operator<<]
 
-Output an endpoint as a string.
+[indexterm2 operator<<..ip::address_v4] Output an address as a string.
 
+ template<
+ typename Elem,
+ typename Traits>
   std::basic_ostream< Elem, Traits > & operator<<(
       std::basic_ostream< Elem, Traits > & os,
- const basic_endpoint< InternetProtocol > & endpoint);
+ const address_v4 & addr);
 
 
-Used to output a human-readable string for a specified endpoint.
+Used to output a human-readable string for a specified address.
 
 
 [heading Parameters]
@@ -32277,7 +33761,7 @@
   
 [[os][The output stream to which the string will be written.]]
 
-[[endpoint][The endpoint to be written.]]
+[[addr][The address to be written.]]
 
 ]
 
@@ -32291,12 +33775,13 @@
 
 
 
-[section:operator_eq_ ip::basic_endpoint::operator=]
+[section:operator_lt__eq_ ip::address_v4::operator<=]
 
-Assign from another endpoint.
+[indexterm2 operator<=..ip::address_v4] Compare addresses for ordering.
 
- basic_endpoint & operator=(
- const basic_endpoint & other);
+ friend bool operator<=(
+ const address_v4 & a1,
+ const address_v4 & a2);
 
 
 
@@ -32304,74 +33789,87 @@
 
 
 
-[section:operator_eq__eq_ ip::basic_endpoint::operator==]
+[section:operator_eq_ ip::address_v4::operator=]
 
-Compare two endpoints for equality.
+[indexterm2 operator=..ip::address_v4] Assign from another address.
 
- friend bool operator==(
- const basic_endpoint< InternetProtocol > & e1,
- const basic_endpoint< InternetProtocol > & e2);
+ address_v4 & operator=(
+ const address_v4 & other);
 
 
 
 [endsect]
 
 
-[section:port ip::basic_endpoint::port]
 
-Get the port associated with the endpoint. The port number is always in the host's byte order.
+[section:operator_eq__eq_ ip::address_v4::operator==]
 
- unsigned short ``[link boost_asio.reference.ip__basic_endpoint.port.overload1 port]``() const;
+[indexterm2 operator==..ip::address_v4] Compare two addresses for equality.
 
- void ``[link boost_asio.reference.ip__basic_endpoint.port.overload2 port]``(
- unsigned short port_num);
+ friend bool operator==(
+ const address_v4 & a1,
+ const address_v4 & a2);
 
 
-[section:overload1 ip::basic_endpoint::port (1 of 2 overloads)]
 
-Get the port associated with the endpoint. The port number is always in the host's byte order.
+[endsect]
 
- unsigned short port() const;
 
 
+[section:operator_gt_ ip::address_v4::operator>]
 
-[endsect]
+[indexterm2 operator>..ip::address_v4] Compare addresses for ordering.
 
+ friend bool operator>(
+ const address_v4 & a1,
+ const address_v4 & a2);
 
 
-[section:overload2 ip::basic_endpoint::port (2 of 2 overloads)]
 
-Set the port associated with the endpoint. The port number is always in the host's byte order.
+[endsect]
 
- void port(
- unsigned short port_num);
 
 
+[section:operator_gt__eq_ ip::address_v4::operator>=]
+
+[indexterm2 operator>=..ip::address_v4] Compare addresses for ordering.
+
+ friend bool operator>=(
+ const address_v4 & a1,
+ const address_v4 & a2);
 
-[endsect]
 
 
 [endsect]
 
 
-[section:protocol ip::basic_endpoint::protocol]
 
-The protocol associated with the endpoint.
+[section:to_bytes ip::address_v4::to_bytes]
 
- protocol_type protocol() const;
+[indexterm2 to_bytes..ip::address_v4] Get the address in bytes.
+
+ bytes_type to_bytes() const;
 
 
 
 [endsect]
 
 
+[section:to_string ip::address_v4::to_string]
 
-[section:protocol_type ip::basic_endpoint::protocol_type]
+[indexterm2 to_string..ip::address_v4] Get the address as a string in dotted decimal format.
 
-The protocol type associated with the endpoint.
+ std::string ``[link boost_asio.reference.ip__address_v4.to_string.overload1 to_string]``() const;
 
- typedef InternetProtocol protocol_type;
+ std::string ``[link boost_asio.reference.ip__address_v4.to_string.overload2 to_string]``(
+ boost::system::error_code & ec) const;
+
+
+[section:overload1 ip::address_v4::to_string (1 of 2 overloads)]
+
+Get the address as a string in dotted decimal format.
 
+ std::string to_string() const;
 
 
 
@@ -32379,24 +33877,26 @@
 
 
 
-[section:resize ip::basic_endpoint::resize]
+[section:overload2 ip::address_v4::to_string (2 of 2 overloads)]
 
-Set the underlying size of the endpoint in the native type.
+Get the address as a string in dotted decimal format.
 
- void resize(
- std::size_t size);
+ std::string to_string(
+ boost::system::error_code & ec) const;
 
 
 
 [endsect]
 
 
+[endsect]
+
 
-[section:size ip::basic_endpoint::size]
+[section:to_ulong ip::address_v4::to_ulong]
 
-Get the underlying size of the endpoint in the native type.
+[indexterm2 to_ulong..ip::address_v4] Get the address as an unsigned long in host byte order.
 
- std::size_t size() const;
+ unsigned long to_ulong() const;
 
 
 
@@ -32406,15 +33906,11 @@
 
 [endsect]
 
-[section:ip__basic_resolver ip::basic_resolver]
+[section:ip__address_v6 ip::address_v6]
 
-Provides endpoint resolution functionality.
+Implements IP version 6 style addresses.
 
- template<
- typename ``[link boost_asio.reference.InternetProtocol InternetProtocol]``,
- typename ``[link boost_asio.reference.ResolverService ResolverService]`` = resolver_service<InternetProtocol>>
- class basic_resolver :
- public basic_io_object< ResolverService >
+ class address_v6
 
 
 [heading Types]
@@ -32423,101 +33919,183 @@
 
   [
 
- [[link boost_asio.reference.ip__basic_resolver.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
+ [[link boost_asio.reference.ip__address_v6.bytes_type [*bytes_type]]]
+ [The type used to represent an address as an array of bytes. ]
   
   ]
 
- [
+]
 
- [[link boost_asio.reference.ip__basic_resolver.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.address_v6 [*address_v6]]]
+ [Default constructor. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ip__address_v6.any [*any]]]
+ [Obtain an address object that represents any address. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.ip__basic_resolver.iterator [*iterator]]]
- [The iterator type. ]
+ [[link boost_asio.reference.ip__address_v6.from_string [*from_string]]]
+ [Create an address from an IP address string. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ip__address_v6.is_link_local [*is_link_local]]]
+ [Determine whether the address is link local. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.ip__basic_resolver.protocol_type [*protocol_type]]]
- [The protocol type. ]
+ [[link boost_asio.reference.ip__address_v6.is_loopback [*is_loopback]]]
+ [Determine whether the address is a loopback address. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ip__address_v6.is_multicast [*is_multicast]]]
+ [Determine whether the address is a multicast address. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.ip__basic_resolver.query [*query]]]
- [The query type. ]
+ [[link boost_asio.reference.ip__address_v6.is_multicast_global [*is_multicast_global]]]
+ [Determine whether the address is a global multicast address. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ip__address_v6.is_multicast_link_local [*is_multicast_link_local]]]
+ [Determine whether the address is a link-local multicast address. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.ip__basic_resolver.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
+ [[link boost_asio.reference.ip__address_v6.is_multicast_node_local [*is_multicast_node_local]]]
+ [Determine whether the address is a node-local multicast address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.is_multicast_org_local [*is_multicast_org_local]]]
+ [Determine whether the address is a org-local multicast address. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ip__address_v6.is_multicast_site_local [*is_multicast_site_local]]]
+ [Determine whether the address is a site-local multicast address. ]
   ]
-
+
+ [
+ [[link boost_asio.reference.ip__address_v6.is_site_local [*is_site_local]]]
+ [Determine whether the address is site local. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.is_unspecified [*is_unspecified]]]
+ [Determine whether the address is unspecified. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.is_v4_compatible [*is_v4_compatible]]]
+ [Determine whether the address is an IPv4-compatible address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.is_v4_mapped [*is_v4_mapped]]]
+ [Determine whether the address is a mapped IPv4 address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.loopback [*loopback]]]
+ [Obtain an address object that represents the loopback address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.operator_eq_ [*operator=]]]
+ [Assign from another address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.scope_id [*scope_id]]]
+ [The scope ID of the address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.to_bytes [*to_bytes]]]
+ [Get the address in bytes. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.to_string [*to_string]]]
+ [Get the address as a string. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.to_v4 [*to_v4]]]
+ [Converts an IPv4-mapped or IPv4-compatible address to an IPv4 address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.v4_compatible [*v4_compatible]]]
+ [Create an IPv4-compatible IPv6 address. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__address_v6.v4_mapped [*v4_mapped]]]
+ [Create an IPv4-mapped IPv6 address. ]
+ ]
+
 ]
 
-[heading Member Functions]
+[heading Friends]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_resolver.async_resolve [*async_resolve]]]
- [Asynchronously resolve a query to a list of entries. ]
+ [[link boost_asio.reference.ip__address_v6.operator_not__eq_ [*operator!=]]]
+ [Compare two addresses for inequality. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver.basic_resolver [*basic_resolver]]]
- [Constructor. ]
+ [[link boost_asio.reference.ip__address_v6.operator_lt_ [*operator<]]]
+ [Compare addresses for ordering. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver.cancel [*cancel]]]
- [Cancel any asynchronous operations that are waiting on the resolver. ]
+ [[link boost_asio.reference.ip__address_v6.operator_lt__eq_ [*operator<=]]]
+ [Compare addresses for ordering. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
+ [[link boost_asio.reference.ip__address_v6.operator_eq__eq_ [*operator==]]]
+ [Compare two addresses for equality. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ [[link boost_asio.reference.ip__address_v6.operator_gt_ [*operator>]]]
+ [Compare addresses for ordering. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver.resolve [*resolve]]]
- [Resolve a query to a list of entries. ]
+ [[link boost_asio.reference.ip__address_v6.operator_gt__eq_ [*operator>=]]]
+ [Compare addresses for ordering. ]
   ]
   
 ]
 
-[heading Protected Data Members]
+[heading Related Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_resolver.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver.service [*service]]]
- [The service associated with the I/O object. ]
+ [[link boost_asio.reference.ip__address_v6.operator_lt__lt_ [*operator<<]]]
+ [Output an address as a string. ]
   ]
-
+
 ]
 
-The basic_resolver class template provides the ability to resolve a query to a list of endpoints.
+The
+[link boost_asio.reference.ip__address_v6 ip::address_v6] class provides the ability to use and manipulate IP version 6 addresses.
 
 
 [heading Thread Safety]
@@ -32527,163 +34105,124 @@
 [*Shared] [*objects:] Unsafe.
 
 
-[section:async_resolve ip::basic_resolver::async_resolve]
+[section:address_v6 ip::address_v6::address_v6]
 
-Asynchronously resolve a query to a list of entries.
+[indexterm2 address_v6..ip::address_v6] Default constructor.
 
- template<
- typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void ``[link boost_asio.reference.ip__basic_resolver.async_resolve.overload1 async_resolve]``(
- const query & q,
- ResolveHandler handler);
+ ``[link boost_asio.reference.ip__address_v6.address_v6.overload1 address_v6]``();
 
- template<
- typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void ``[link boost_asio.reference.ip__basic_resolver.async_resolve.overload2 async_resolve]``(
- const endpoint_type & e,
- ResolveHandler handler);
+ ``[link boost_asio.reference.ip__address_v6.address_v6.overload2 address_v6]``(
+ const bytes_type & bytes,
+ unsigned long scope_id = 0);
 
+ ``[link boost_asio.reference.ip__address_v6.address_v6.overload3 address_v6]``(
+ const address_v6 & other);
 
-[section:overload1 ip::basic_resolver::async_resolve (1 of 2 overloads)]
 
-Asynchronously resolve a query to a list of entries.
+[section:overload1 ip::address_v6::address_v6 (1 of 3 overloads)]
 
- template<
- typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void async_resolve(
- const query & q,
- ResolveHandler handler);
+Default constructor.
 
+ address_v6();
 
-This function is used to asynchronously resolve a query into a list of endpoint entries.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[q][A query object that determines what endpoints will be returned.]]
 
-[[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:
-``
- 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.
- );
 
-``
-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().]]
+[section:overload2 ip::address_v6::address_v6 (2 of 3 overloads)]
 
-]
+Construct an address from raw bytes and scope ID.
 
-[heading Remarks]
-
-A default constructed iterator represents the end of the list.
+ address_v6(
+ const bytes_type & bytes,
+ unsigned long scope_id = 0);
 
-A successful resolve operation is guaranteed to pass at least one entry to the handler.
 
 
 [endsect]
 
 
 
-[section:overload2 ip::basic_resolver::async_resolve (2 of 2 overloads)]
+[section:overload3 ip::address_v6::address_v6 (3 of 3 overloads)]
 
-Asynchronously resolve an endpoint to a list of entries.
+Copy constructor.
 
- template<
- typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void async_resolve(
- const endpoint_type & e,
- ResolveHandler handler);
+ address_v6(
+ const address_v6 & other);
 
 
-This function is used to asynchronously resolve an endpoint into a list of endpoint entries.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[e][An endpoint object that determines what endpoints will be returned.]]
+[endsect]
 
-[[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:
-``
- 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.
- );
 
-``
-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().]]
+[section:any ip::address_v6::any]
 
-]
+[indexterm2 any..ip::address_v6] Obtain an address object that represents any address.
 
-[heading Remarks]
-
-A default constructed iterator represents the end of the list.
+ static address_v6 any();
 
-A successful resolve operation is guaranteed to pass at least one entry to the handler.
 
 
 [endsect]
 
 
-[endsect]
-
 
-[section:basic_resolver ip::basic_resolver::basic_resolver]
+[section:bytes_type ip::address_v6::bytes_type]
 
-Constructor.
+[indexterm2 bytes_type..ip::address_v6] The type used to represent an address as an array of bytes.
 
- basic_resolver(
- boost::asio::io_service & io_service);
+ typedef boost::array< unsigned char, 16 > bytes_type;
 
 
-This constructor creates a basic_resolver.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[io_service][The io\_service object that the resolver will use to dispatch handlers for any asynchronous operations performed on the timer. ]]
 
-]
+[section:from_string ip::address_v6::from_string]
 
+[indexterm2 from_string..ip::address_v6] Create an address from an IP address string.
 
+ static address_v6 ``[link boost_asio.reference.ip__address_v6.from_string.overload1 from_string]``(
+ const char * str);
 
-[endsect]
+ static address_v6 ``[link boost_asio.reference.ip__address_v6.from_string.overload2 from_string]``(
+ const char * str,
+ boost::system::error_code & ec);
 
+ static address_v6 ``[link boost_asio.reference.ip__address_v6.from_string.overload3 from_string]``(
+ const std::string & str);
 
+ static address_v6 ``[link boost_asio.reference.ip__address_v6.from_string.overload4 from_string]``(
+ const std::string & str,
+ boost::system::error_code & ec);
 
-[section:cancel ip::basic_resolver::cancel]
 
-Cancel any asynchronous operations that are waiting on the resolver.
+[section:overload1 ip::address_v6::from_string (1 of 4 overloads)]
 
- void cancel();
+Create an address from an IP address string.
 
+ static address_v6 from_string(
+ const char * str);
 
-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.
 
 
 [endsect]
 
 
 
-[section:endpoint_type ip::basic_resolver::endpoint_type]
-
-The endpoint type.
+[section:overload2 ip::address_v6::from_string (2 of 4 overloads)]
 
- typedef InternetProtocol::endpoint endpoint_type;
+Create an address from an IP address string.
 
+ static address_v6 from_string(
+ const char * str,
+ boost::system::error_code & ec);
 
 
 
@@ -32691,76 +34230,76 @@
 
 
 
-[section:get_io_service ip::basic_resolver::get_io_service]
+[section:overload3 ip::address_v6::from_string (3 of 4 overloads)]
 
+Create an address from an IP address string.
 
-['Inherited from basic_io_object.]
+ static address_v6 from_string(
+ const std::string & str);
 
-Get the io_service associated with the object.
 
- boost::asio::io_service & get_io_service();
 
+[endsect]
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
 
-[heading Return Value]
-
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+[section:overload4 ip::address_v6::from_string (4 of 4 overloads)]
 
+Create an address from an IP address string.
 
+ static address_v6 from_string(
+ const std::string & str,
+ boost::system::error_code & ec);
 
-[endsect]
 
 
+[endsect]
 
-[section:implementation ip::basic_resolver::implementation]
 
+[endsect]
 
-['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[section:is_link_local ip::address_v6::is_link_local]
 
- implementation_type implementation;
+[indexterm2 is_link_local..ip::address_v6] Determine whether the address is link local.
 
+ bool is_link_local() const;
 
 
-[endsect]
 
+[endsect]
 
 
-[section:implementation_type ip::basic_resolver::implementation_type]
 
+[section:is_loopback ip::address_v6::is_loopback]
 
-['Inherited from basic_io_object.]
+[indexterm2 is_loopback..ip::address_v6] Determine whether the address is a loopback address.
 
-The underlying implementation type of I/O object.
+ bool is_loopback() const;
 
- typedef service_type::implementation_type implementation_type;
 
 
+[endsect]
 
 
-[endsect]
 
+[section:is_multicast ip::address_v6::is_multicast]
 
+[indexterm2 is_multicast..ip::address_v6] Determine whether the address is a multicast address.
 
-[section:io_service ip::basic_resolver::io_service]
+ bool is_multicast() const;
 
 
-['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[endsect]
 
- boost::asio::io_service & io_service();
 
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+[section:is_multicast_global ip::address_v6::is_multicast_global]
 
+[indexterm2 is_multicast_global..ip::address_v6] Determine whether the address is a global multicast address.
 
-[heading Return Value]
-
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+ bool is_multicast_global() const;
 
 
 
@@ -32768,12 +34307,11 @@
 
 
 
-[section:iterator ip::basic_resolver::iterator]
-
-The iterator type.
+[section:is_multicast_link_local ip::address_v6::is_multicast_link_local]
 
- typedef InternetProtocol::resolver_iterator iterator;
+[indexterm2 is_multicast_link_local..ip::address_v6] Determine whether the address is a link-local multicast address.
 
+ bool is_multicast_link_local() const;
 
 
 
@@ -32781,12 +34319,11 @@
 
 
 
-[section:protocol_type ip::basic_resolver::protocol_type]
-
-The protocol type.
+[section:is_multicast_node_local ip::address_v6::is_multicast_node_local]
 
- typedef InternetProtocol protocol_type;
+[indexterm2 is_multicast_node_local..ip::address_v6] Determine whether the address is a node-local multicast address.
 
+ bool is_multicast_node_local() const;
 
 
 
@@ -32794,173 +34331,131 @@
 
 
 
-[section:query ip::basic_resolver::query]
-
-The query type.
+[section:is_multicast_org_local ip::address_v6::is_multicast_org_local]
 
- typedef InternetProtocol::resolver_query query;
+[indexterm2 is_multicast_org_local..ip::address_v6] Determine whether the address is a org-local multicast address.
 
+ bool is_multicast_org_local() const;
 
 
 
 [endsect]
 
 
-[section:resolve ip::basic_resolver::resolve]
-
-Resolve a query to a list of entries.
 
- iterator ``[link boost_asio.reference.ip__basic_resolver.resolve.overload1 resolve]``(
- const query & q);
+[section:is_multicast_site_local ip::address_v6::is_multicast_site_local]
 
- iterator ``[link boost_asio.reference.ip__basic_resolver.resolve.overload2 resolve]``(
- const query & q,
- boost::system::error_code & ec);
+[indexterm2 is_multicast_site_local..ip::address_v6] Determine whether the address is a site-local multicast address.
 
- iterator ``[link boost_asio.reference.ip__basic_resolver.resolve.overload3 resolve]``(
- const endpoint_type & e);
+ bool is_multicast_site_local() const;
 
- iterator ``[link boost_asio.reference.ip__basic_resolver.resolve.overload4 resolve]``(
- const endpoint_type & e,
- boost::system::error_code & ec);
 
 
-[section:overload1 ip::basic_resolver::resolve (1 of 4 overloads)]
+[endsect]
 
-Resolve a query to a list of entries.
 
- iterator resolve(
- const query & q);
 
+[section:is_site_local ip::address_v6::is_site_local]
 
-This function is used to resolve a query into a list of endpoint entries.
+[indexterm2 is_site_local..ip::address_v6] Determine whether the address is site local.
 
+ bool is_site_local() const;
 
-[heading Parameters]
-
 
-[variablelist
-
-[[q][A query object that determines what endpoints will be returned.]]
 
-]
+[endsect]
 
-[heading Return Value]
-
-A forward-only iterator that can be used to traverse the list of endpoint entries.
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
+[section:is_unspecified ip::address_v6::is_unspecified]
 
-]
+[indexterm2 is_unspecified..ip::address_v6] Determine whether the address is unspecified.
 
-[heading Remarks]
-
-A default constructed iterator represents the end of the list.
+ bool is_unspecified() const;
 
-A successful call to this function is guaranteed to return at least one entry.
 
 
 [endsect]
 
 
 
-[section:overload2 ip::basic_resolver::resolve (2 of 4 overloads)]
-
-Resolve a query to a list of entries.
+[section:is_v4_compatible ip::address_v6::is_v4_compatible]
 
- iterator resolve(
- const query & q,
- boost::system::error_code & ec);
+[indexterm2 is_v4_compatible..ip::address_v6] Determine whether the address is an IPv4-compatible address.
 
+ bool is_v4_compatible() const;
 
-This function is used to resolve a query into a list of endpoint entries.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[q][A query object that determines what endpoints will be returned.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
+[section:is_v4_mapped ip::address_v6::is_v4_mapped]
 
-[heading Return Value]
-
-A forward-only iterator that can be used to traverse the list of endpoint entries. Returns a default constructed iterator if an error occurs.
+[indexterm2 is_v4_mapped..ip::address_v6] Determine whether the address is a mapped IPv4 address.
 
-[heading Remarks]
-
-A default constructed iterator represents the end of the list.
+ bool is_v4_mapped() const;
 
-A successful call to this function is guaranteed to return at least one entry.
 
 
 [endsect]
 
 
 
-[section:overload3 ip::basic_resolver::resolve (3 of 4 overloads)]
+[section:loopback ip::address_v6::loopback]
 
-Resolve an endpoint to a list of entries.
+[indexterm2 loopback..ip::address_v6] Obtain an address object that represents the loopback address.
 
- iterator resolve(
- const endpoint_type & e);
+ static address_v6 loopback();
 
 
-This function is used to resolve an endpoint into a list of endpoint entries.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[e][An endpoint object that determines what endpoints will be returned.]]
 
-]
+[section:operator_not__eq_ ip::address_v6::operator!=]
 
-[heading Return Value]
-
-A forward-only iterator that can be used to traverse the list of endpoint entries.
+[indexterm2 operator!=..ip::address_v6] Compare two addresses for inequality.
 
-[heading Exceptions]
-
+ friend bool operator!=(
+ const address_v6 & a1,
+ const address_v6 & a2);
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
 
-[heading Remarks]
-
-A default constructed iterator represents the end of the list.
+[endsect]
+
+
+
+[section:operator_lt_ ip::address_v6::operator<]
+
+[indexterm2 operator<..ip::address_v6] Compare addresses for ordering.
+
+ friend bool operator<(
+ const address_v6 & a1,
+ const address_v6 & a2);
 
-A successful call to this function is guaranteed to return at least one entry.
 
 
 [endsect]
 
 
 
-[section:overload4 ip::basic_resolver::resolve (4 of 4 overloads)]
+[section:operator_lt__lt_ ip::address_v6::operator<<]
 
-Resolve an endpoint to a list of entries.
+[indexterm2 operator<<..ip::address_v6] Output an address as a string.
 
- iterator resolve(
- const endpoint_type & e,
- boost::system::error_code & ec);
+ template<
+ typename Elem,
+ typename Traits>
+ std::basic_ostream< Elem, Traits > & operator<<(
+ std::basic_ostream< Elem, Traits > & os,
+ const address_v6 & addr);
 
 
-This function is used to resolve an endpoint into a list of endpoint entries.
+Used to output a human-readable string for a specified address.
 
 
 [heading Parameters]
@@ -32968,167 +34463,124 @@
 
 [variablelist
   
-[[e][An endpoint object that determines what endpoints will be returned.]]
+[[os][The output stream to which the string will be written.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[[addr][The address to be written.]]
 
 ]
 
 [heading Return Value]
       
-A forward-only iterator that can be used to traverse the list of endpoint entries. Returns a default constructed iterator if an error occurs.
-
-[heading Remarks]
-
-A default constructed iterator represents the end of the list.
+The output stream.
 
-A successful call to this function is guaranteed to return at least one entry.
 
 
 [endsect]
 
 
-[endsect]
-
 
-[section:service ip::basic_resolver::service]
+[section:operator_lt__eq_ ip::address_v6::operator<=]
 
+[indexterm2 operator<=..ip::address_v6] Compare addresses for ordering.
 
-['Inherited from basic_io_object.]
+ friend bool operator<=(
+ const address_v6 & a1,
+ const address_v6 & a2);
 
-The service associated with the I/O object.
 
- service_type & service;
 
+[endsect]
 
 
-[endsect]
 
+[section:operator_eq_ ip::address_v6::operator=]
 
+[indexterm2 operator=..ip::address_v6] Assign from another address.
 
-[section:service_type ip::basic_resolver::service_type]
+ address_v6 & operator=(
+ const address_v6 & other);
 
 
-['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[endsect]
 
- typedef ResolverService service_type;
 
 
+[section:operator_eq__eq_ ip::address_v6::operator==]
 
+[indexterm2 operator==..ip::address_v6] Compare two addresses for equality.
 
-[endsect]
+ friend bool operator==(
+ const address_v6 & a1,
+ const address_v6 & a2);
 
 
 
 [endsect]
 
-[section:ip__basic_resolver_entry ip::basic_resolver_entry]
 
-An entry produced by a resolver.
 
- template<
- typename ``[link boost_asio.reference.InternetProtocol InternetProtocol]``>
- class basic_resolver_entry
+[section:operator_gt_ ip::address_v6::operator>]
 
+[indexterm2 operator>..ip::address_v6] Compare addresses for ordering.
 
-[heading Types]
-[table
- [[Name][Description]]
+ friend bool operator>(
+ const address_v6 & a1,
+ const address_v6 & a2);
 
- [
 
- [[link boost_asio.reference.ip__basic_resolver_entry.endpoint_type [*endpoint_type]]]
- [The endpoint type associated with the endpoint entry. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.ip__basic_resolver_entry.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint entry. ]
-
- ]
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[section:operator_gt__eq_ ip::address_v6::operator>=]
 
- [
- [[link boost_asio.reference.ip__basic_resolver_entry.basic_resolver_entry [*basic_resolver_entry]]]
- [Default constructor. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver_entry.endpoint [*endpoint]]]
- [Get the endpoint associated with the entry. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver_entry.host_name [*host_name]]]
- [Get the host name associated with the entry. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver_entry.operator_endpoint_type [*operator endpoint_type]]]
- [Convert to the endpoint associated with the entry. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver_entry.service_name [*service_name]]]
- [Get the service name associated with the entry. ]
- ]
-
-]
+[indexterm2 operator>=..ip::address_v6] Compare addresses for ordering.
 
-The
-[link boost_asio.reference.ip__basic_resolver_entry ip::basic_resolver_entry] class template describes an entry as returned by a resolver.
+ friend bool operator>=(
+ const address_v6 & a1,
+ const address_v6 & a2);
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[endsect]
 
 
-[section:basic_resolver_entry ip::basic_resolver_entry::basic_resolver_entry]
+[section:scope_id ip::address_v6::scope_id]
 
-Default constructor.
+[indexterm2 scope_id..ip::address_v6] The scope ID of the address.
 
- ``[link boost_asio.reference.ip__basic_resolver_entry.basic_resolver_entry.overload1 basic_resolver_entry]``();
+ unsigned long ``[link boost_asio.reference.ip__address_v6.scope_id.overload1 scope_id]``() const;
 
- ``[link boost_asio.reference.ip__basic_resolver_entry.basic_resolver_entry.overload2 basic_resolver_entry]``(
- const endpoint_type & endpoint,
- const std::string & host_name,
- const std::string & service_name);
+ void ``[link boost_asio.reference.ip__address_v6.scope_id.overload2 scope_id]``(
+ unsigned long id);
 
 
-[section:overload1 ip::basic_resolver_entry::basic_resolver_entry (1 of 2 overloads)]
+[section:overload1 ip::address_v6::scope_id (1 of 2 overloads)]
 
-Default constructor.
+The scope ID of the address.
 
- basic_resolver_entry();
+ unsigned long scope_id() const;
 
 
+Returns the scope ID associated with the IPv6 address.
+
 
 [endsect]
 
 
 
-[section:overload2 ip::basic_resolver_entry::basic_resolver_entry (2 of 2 overloads)]
+[section:overload2 ip::address_v6::scope_id (2 of 2 overloads)]
 
-Construct with specified endpoint, host name and service name.
+The scope ID of the address.
 
- basic_resolver_entry(
- const endpoint_type & endpoint,
- const std::string & host_name,
- const std::string & service_name);
+ void scope_id(
+ unsigned long id);
 
 
+Modifies the scope ID associated with the IPv6 address.
+
 
 [endsect]
 
@@ -33136,24 +34588,32 @@
 [endsect]
 
 
-[section:endpoint ip::basic_resolver_entry::endpoint]
+[section:to_bytes ip::address_v6::to_bytes]
 
-Get the endpoint associated with the entry.
+[indexterm2 to_bytes..ip::address_v6] Get the address in bytes.
 
- endpoint_type endpoint() const;
+ bytes_type to_bytes() const;
 
 
 
 [endsect]
 
 
+[section:to_string ip::address_v6::to_string]
 
-[section:endpoint_type ip::basic_resolver_entry::endpoint_type]
+[indexterm2 to_string..ip::address_v6] Get the address as a string.
 
-The endpoint type associated with the endpoint entry.
+ std::string ``[link boost_asio.reference.ip__address_v6.to_string.overload1 to_string]``() const;
 
- typedef InternetProtocol::endpoint endpoint_type;
+ std::string ``[link boost_asio.reference.ip__address_v6.to_string.overload2 to_string]``(
+ boost::system::error_code & ec) const;
+
+
+[section:overload1 ip::address_v6::to_string (1 of 2 overloads)]
+
+Get the address as a string.
 
+ std::string to_string() const;
 
 
 
@@ -33161,36 +34621,39 @@
 
 
 
-[section:host_name ip::basic_resolver_entry::host_name]
+[section:overload2 ip::address_v6::to_string (2 of 2 overloads)]
 
-Get the host name associated with the entry.
+Get the address as a string.
 
- std::string host_name() const;
+ std::string to_string(
+ boost::system::error_code & ec) const;
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:operator_endpoint_type ip::basic_resolver_entry::operator endpoint_type]
 
-Convert to the endpoint associated with the entry.
+[section:to_v4 ip::address_v6::to_v4]
 
- operator endpoint_type() const;
+[indexterm2 to_v4..ip::address_v6] Converts an IPv4-mapped or IPv4-compatible address to an IPv4 address.
 
+ address_v4 to_v4() const;
 
 
-[endsect]
 
+[endsect]
 
 
-[section:protocol_type ip::basic_resolver_entry::protocol_type]
 
-The protocol type associated with the endpoint entry.
+[section:v4_compatible ip::address_v6::v4_compatible]
 
- typedef InternetProtocol protocol_type;
+[indexterm2 v4_compatible..ip::address_v6] Create an IPv4-compatible IPv6 address.
 
+ static address_v6 v4_compatible(
+ const address_v4 & addr);
 
 
 
@@ -33198,11 +34661,12 @@
 
 
 
-[section:service_name ip::basic_resolver_entry::service_name]
+[section:v4_mapped ip::address_v6::v4_mapped]
 
-Get the service name associated with the entry.
+[indexterm2 v4_mapped..ip::address_v6] Create an IPv4-mapped IPv6 address.
 
- std::string service_name() const;
+ static address_v6 v4_mapped(
+ const address_v4 & addr);
 
 
 
@@ -33212,273 +34676,188 @@
 
 [endsect]
 
-[section:ip__basic_resolver_iterator ip::basic_resolver_iterator]
+[section:ip__basic_endpoint ip::basic_endpoint]
 
-An iterator over the entries produced by a resolver.
+Describes an endpoint for a version-independent IP socket.
 
   template<
       typename ``[link boost_asio.reference.InternetProtocol InternetProtocol]``>
- class basic_resolver_iterator
+ class basic_endpoint
 
 
-[heading Member Functions]
+[heading Types]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_resolver_iterator.basic_resolver_iterator [*basic_resolver_iterator]]]
- [Default constructor creates an end iterator. ]
- ]
+
+ [[link boost_asio.reference.ip__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
   
- [
- [[link boost_asio.reference.ip__basic_resolver_iterator.create [*create]]]
- [Create an iterator from an addrinfo list returned by getaddrinfo. ]
   ]
-
-]
-
-The
-[link boost_asio.reference.ip__basic_resolver_iterator 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:
-
- const basic_resolver_entry<InternetProtocol>
-
-
-
 
+ [
 
-[heading Thread Safety]
+ [[link boost_asio.reference.ip__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
   
-[*Distinct] [*objects:] Safe.
-
-[*Shared] [*objects:] Unsafe.
-
-
-
-[section:basic_resolver_iterator ip::basic_resolver_iterator::basic_resolver_iterator]
-
-Default constructor creates an end iterator.
-
- basic_resolver_iterator();
-
-
-
-[endsect]
-
-
-[section:create ip::basic_resolver_iterator::create]
-
-Create an iterator from an addrinfo list returned by getaddrinfo.
+ ]
 
- static basic_resolver_iterator ``[link boost_asio.reference.ip__basic_resolver_iterator.create.overload1 create]``(
- boost::asio::detail::addrinfo_type * address_info,
- const std::string & host_name,
- const std::string & service_name);
+]
 
- static basic_resolver_iterator ``[link boost_asio.reference.ip__basic_resolver_iterator.create.overload2 create]``(
- const typename InternetProtocol::endpoint & endpoint,
- const std::string & host_name,
- const std::string & service_name);
-
-
-[section:overload1 ip::basic_resolver_iterator::create (1 of 2 overloads)]
-
-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);
-
-
-
-[endsect]
-
-
-
-[section:overload2 ip::basic_resolver_iterator::create (2 of 2 overloads)]
-
-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);
-
-
-
-[endsect]
-
-
-[endsect]
-
-
-[endsect]
-
-[section:ip__basic_resolver_query ip::basic_resolver_query]
-
-An query to be passed to a resolver.
-
- template<
- typename ``[link boost_asio.reference.InternetProtocol InternetProtocol]``>
- class basic_resolver_query :
- public ip::resolver_query_base
-
-
-[heading Types]
-[table
- [[Name][Description]]
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
   [
-
- [[link boost_asio.reference.ip__basic_resolver_query.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint query. ]
+ [[link boost_asio.reference.ip__basic_endpoint.address [*address]]]
+ [Get the IP address associated with the endpoint. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor. ]
   ]
-
-]
-
-[heading Member Functions]
-[table
- [[Name][Description]]
-
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query [*basic_resolver_query]]]
- [Construct with specified service name for any protocol. ]
+ [[link boost_asio.reference.ip__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver_query.hints [*hints]]]
- [Get the hints associated with the query. ]
+ [[link boost_asio.reference.ip__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver_query.host_name [*host_name]]]
- [Get the host name associated with the query. ]
+ [[link boost_asio.reference.ip__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver_query.service_name [*service_name]]]
- [Get the service name associated with the query. ]
+ [[link boost_asio.reference.ip__basic_endpoint.port [*port]]]
+ [Get the port associated with the endpoint. The port number is always in the host's byte order. ]
   ]
   
-]
-
-[heading Data Members]
-[table
- [[Name][Description]]
-
   [
- [[link boost_asio.reference.ip__basic_resolver_query.address_configured [*address_configured]]]
- [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. ]
+ [[link boost_asio.reference.ip__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.all_matching [*all_matching]]]
- [If used with v4_mapped, return all matching IPv6 and IPv4 addresses. ]
+ [[link boost_asio.reference.ip__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.canonical_name [*canonical_name]]]
- [Determine the canonical name of the host specified in the query. ]
+ [[link boost_asio.reference.ip__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
   ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_resolver_query.numeric_host [*numeric_host]]]
- [Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted. ]
+ [[link boost_asio.reference.ip__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.numeric_service [*numeric_service]]]
- [Service name should be treated as a numeric string defining a port number and no name resolution should be attempted. ]
+ [[link boost_asio.reference.ip__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.passive [*passive]]]
- [Indicate that returned endpoint is intended for use as a locally bound socket endpoint. ]
+ [[link boost_asio.reference.ip__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
   ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_resolver_query.v4_mapped [*v4_mapped]]]
- [If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses. ]
+ [[link boost_asio.reference.ip__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
   ]
-
+
 ]
 
 The
-[link boost_asio.reference.ip__basic_resolver_query ip::basic_resolver_query] class template describes a query that can be passed to a resolver.
+[link boost_asio.reference.ip__basic_endpoint ip::basic_endpoint] class template describes an endpoint that may be associated with a particular socket.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[*Shared] [*objects:] Unsafe.
 
 
+[section:address ip::basic_endpoint::address]
 
-[section:address_configured ip::basic_resolver_query::address_configured]
+[indexterm2 address..ip::basic_endpoint] Get the IP address associated with the endpoint.
 
+ boost::asio::ip::address ``[link boost_asio.reference.ip__basic_endpoint.address.overload1 address]``() const;
 
-['Inherited from ip::resolver_query_base.]
+ void ``[link boost_asio.reference.ip__basic_endpoint.address.overload2 address]``(
+ const boost::asio::ip::address & addr);
 
-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;
+[section:overload1 ip::basic_endpoint::address (1 of 2 overloads)]
 
+Get the IP address associated with the endpoint.
 
+ boost::asio::ip::address address() const;
 
-[endsect]
 
 
+[endsect]
 
-[section:all_matching ip::basic_resolver_query::all_matching]
 
 
-['Inherited from ip::resolver_query_base.]
+[section:overload2 ip::basic_endpoint::address (2 of 2 overloads)]
 
-If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
+Set the IP address associated with the endpoint.
 
- static const int all_matching = implementation_defined;
+ void address(
+ const boost::asio::ip::address & addr);
 
 
 
 [endsect]
 
 
-[section:basic_resolver_query ip::basic_resolver_query::basic_resolver_query]
+[endsect]
 
-Construct with specified service name for any protocol.
+[section:basic_endpoint ip::basic_endpoint::basic_endpoint]
 
- ``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload1 basic_resolver_query]``(
- const std::string & service_name,
- int flags = passive|address_configured);
+[indexterm2 basic_endpoint..ip::basic_endpoint] Default constructor.
 
- ``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload2 basic_resolver_query]``(
- const protocol_type & protocol,
- const std::string & service_name,
- int flags = passive|address_configured);
+ ``[link boost_asio.reference.ip__basic_endpoint.basic_endpoint.overload1 basic_endpoint]``();
 
- ``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload3 basic_resolver_query]``(
- const std::string & host_name,
- const std::string & service_name,
- int flags = address_configured);
+ ``[link boost_asio.reference.ip__basic_endpoint.basic_endpoint.overload2 basic_endpoint]``(
+ const InternetProtocol & protocol,
+ unsigned short port_num);
 
- ``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload4 basic_resolver_query]``(
- const protocol_type & protocol,
- const std::string & host_name,
- const std::string & service_name,
- int flags = address_configured);
+ ``[link boost_asio.reference.ip__basic_endpoint.basic_endpoint.overload3 basic_endpoint]``(
+ const boost::asio::ip::address & addr,
+ unsigned short port_num);
 
+ ``[link boost_asio.reference.ip__basic_endpoint.basic_endpoint.overload4 basic_endpoint]``(
+ const basic_endpoint & other);
 
-[section:overload1 ip::basic_resolver_query::basic_resolver_query (1 of 4 overloads)]
 
-Construct with specified service name for any protocol.
+[section:overload1 ip::basic_endpoint::basic_endpoint (1 of 4 overloads)]
 
- basic_resolver_query(
- const std::string & service_name,
- int flags = passive|address_configured);
+Default constructor.
+
+ basic_endpoint();
 
 
 
@@ -33486,29 +34865,30 @@
 
 
 
-[section:overload2 ip::basic_resolver_query::basic_resolver_query (2 of 4 overloads)]
+[section:overload2 ip::basic_endpoint::basic_endpoint (2 of 4 overloads)]
 
-Construct with specified service name for a given protocol.
+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.
 
- basic_resolver_query(
- const protocol_type & protocol,
- const std::string & service_name,
- int flags = passive|address_configured);
+ basic_endpoint(
+ const InternetProtocol & protocol,
+ unsigned short port_num);
 
 
 
-[endsect]
+[heading Examples]
+
+To initialise an IPv4 TCP endpoint for port 1234, use:
 
+ boost::asio::ip::tcp::endpoint ep(boost::asio::ip::tcp::v4(), 1234);
 
 
-[section:overload3 ip::basic_resolver_query::basic_resolver_query (3 of 4 overloads)]
 
-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);
+To specify an IPv6 UDP endpoint for port 9876, use:
+
+ boost::asio::ip::udp::endpoint ep(boost::asio::ip::udp::v6(), 9876);
+
+
 
 
 
@@ -33516,44 +34896,60 @@
 
 
 
-[section:overload4 ip::basic_resolver_query::basic_resolver_query (4 of 4 overloads)]
+[section:overload3 ip::basic_endpoint::basic_endpoint (3 of 4 overloads)]
 
-Construct with specified host name and service name for a given protocol.
+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_resolver_query(
- const protocol_type & protocol,
- const std::string & host_name,
- const std::string & service_name,
- int flags = address_configured);
+ basic_endpoint(
+ const boost::asio::ip::address & addr,
+ unsigned short port_num);
 
 
 
 [endsect]
 
 
+
+[section:overload4 ip::basic_endpoint::basic_endpoint (4 of 4 overloads)]
+
+Copy constructor.
+
+ basic_endpoint(
+ const basic_endpoint & other);
+
+
+
 [endsect]
 
 
-[section:canonical_name ip::basic_resolver_query::canonical_name]
+[endsect]
 
 
-['Inherited from ip::resolver_query_base.]
+[section:capacity ip::basic_endpoint::capacity]
 
-Determine the canonical name of the host specified in the query.
+[indexterm2 capacity..ip::basic_endpoint] Get the capacity of the endpoint in the native type.
 
- static const int canonical_name = implementation_defined;
+ std::size_t capacity() const;
 
 
 
 [endsect]
 
 
+[section:data ip::basic_endpoint::data]
 
-[section:hints ip::basic_resolver_query::hints]
+[indexterm2 data..ip::basic_endpoint] Get the underlying endpoint in the native type.
 
-Get the hints associated with the query.
+ data_type * ``[link boost_asio.reference.ip__basic_endpoint.data.overload1 data]``();
 
- const boost::asio::detail::addrinfo_type & hints() const;
+ const data_type * ``[link boost_asio.reference.ip__basic_endpoint.data.overload2 data]``() const;
+
+
+[section:overload1 ip::basic_endpoint::data (1 of 2 overloads)]
+
+Get the underlying endpoint in the native type.
+
+ data_type * data();
 
 
 
@@ -33561,26 +34957,26 @@
 
 
 
-[section:host_name ip::basic_resolver_query::host_name]
+[section:overload2 ip::basic_endpoint::data (2 of 2 overloads)]
 
-Get the host name associated with the query.
+Get the underlying endpoint in the native type.
 
- std::string host_name() const;
+ const data_type * data() const;
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:numeric_host ip::basic_resolver_query::numeric_host]
 
+[section:data_type ip::basic_endpoint::data_type]
 
-['Inherited from ip::resolver_query_base.]
+[indexterm2 data_type..ip::basic_endpoint] The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer.
 
-Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted.
+ typedef implementation_defined data_type;
 
- static const int numeric_host = implementation_defined;
 
 
 
@@ -33588,14 +34984,27 @@
 
 
 
-[section:numeric_service ip::basic_resolver_query::numeric_service]
+[section:operator_not__eq_ ip::basic_endpoint::operator!=]
 
+[indexterm2 operator!=..ip::basic_endpoint] Compare two endpoints for inequality.
 
-['Inherited from ip::resolver_query_base.]
+ friend bool operator!=(
+ const basic_endpoint< InternetProtocol > & e1,
+ const basic_endpoint< InternetProtocol > & e2);
+
+
+
+[endsect]
 
-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;
+
+[section:operator_lt_ ip::basic_endpoint::operator<]
+
+[indexterm2 operator<..ip::basic_endpoint] Compare endpoints for ordering.
+
+ friend bool operator<(
+ const basic_endpoint< InternetProtocol > & e1,
+ const basic_endpoint< InternetProtocol > & e2);
 
 
 
@@ -33603,14 +35012,32 @@
 
 
 
-[section:passive ip::basic_resolver_query::passive]
+[section:operator_lt__lt_ ip::basic_endpoint::operator<<]
 
+[indexterm2 operator<<..ip::basic_endpoint] Output an endpoint as a string.
 
-['Inherited from ip::resolver_query_base.]
+ std::basic_ostream< Elem, Traits > & operator<<(
+ std::basic_ostream< Elem, Traits > & os,
+ const basic_endpoint< InternetProtocol > & endpoint);
 
-Indicate that returned endpoint is intended for use as a locally bound socket endpoint.
 
- static const int passive = implementation_defined;
+Used to output a human-readable string for a specified endpoint.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[os][The output stream to which the string will be written.]]
+
+[[endpoint][The endpoint to be written.]]
+
+]
+
+[heading Return Value]
+
+The output stream.
 
 
 
@@ -33618,24 +35045,47 @@
 
 
 
-[section:protocol_type ip::basic_resolver_query::protocol_type]
+[section:operator_eq_ ip::basic_endpoint::operator=]
 
-The protocol type associated with the endpoint query.
+[indexterm2 operator=..ip::basic_endpoint] Assign from another endpoint.
 
- typedef InternetProtocol protocol_type;
+ basic_endpoint & operator=(
+ const basic_endpoint & other);
+
+
+
+[endsect]
 
 
 
+[section:operator_eq__eq_ ip::basic_endpoint::operator==]
+
+[indexterm2 operator==..ip::basic_endpoint] Compare two endpoints for equality.
+
+ friend bool operator==(
+ const basic_endpoint< InternetProtocol > & e1,
+ const basic_endpoint< InternetProtocol > & e2);
+
+
 
 [endsect]
 
 
+[section:port ip::basic_endpoint::port]
 
-[section:service_name ip::basic_resolver_query::service_name]
+[indexterm2 port..ip::basic_endpoint] Get the port associated with the endpoint. The port number is always in the host's byte order.
 
-Get the service name associated with the query.
+ unsigned short ``[link boost_asio.reference.ip__basic_endpoint.port.overload1 port]``() const;
 
- std::string service_name() const;
+ void ``[link boost_asio.reference.ip__basic_endpoint.port.overload2 port]``(
+ unsigned short port_num);
+
+
+[section:overload1 ip::basic_endpoint::port (1 of 2 overloads)]
+
+Get the port associated with the endpoint. The port number is always in the host's byte order.
+
+ unsigned short port() const;
 
 
 
@@ -33643,38 +35093,52 @@
 
 
 
-[section:v4_mapped ip::basic_resolver_query::v4_mapped]
+[section:overload2 ip::basic_endpoint::port (2 of 2 overloads)]
 
+Set the port associated with the endpoint. The port number is always in the host's byte order.
 
-['Inherited from ip::resolver_query_base.]
+ void port(
+ unsigned short port_num);
 
-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;
 
+[endsect]
 
 
 [endsect]
 
 
+[section:protocol ip::basic_endpoint::protocol]
+
+[indexterm2 protocol..ip::basic_endpoint] The protocol associated with the endpoint.
+
+ protocol_type protocol() const;
+
+
 
 [endsect]
 
-[section:ip__host_name ip::host_name]
 
-Get the current host name.
 
- std::string ``[link boost_asio.reference.ip__host_name.overload1 host_name]``();
+[section:protocol_type ip::basic_endpoint::protocol_type]
 
- std::string ``[link boost_asio.reference.ip__host_name.overload2 host_name]``(
- boost::system::error_code & ec);
+[indexterm2 protocol_type..ip::basic_endpoint] The protocol type associated with the endpoint.
 
+ typedef InternetProtocol protocol_type;
 
-[section:overload1 ip::host_name (1 of 2 overloads)]
 
-Get the current host name.
 
- std::string host_name();
+
+[endsect]
+
+
+
+[section:resize ip::basic_endpoint::resize]
+
+[indexterm2 resize..ip::basic_endpoint] Set the underlying size of the endpoint in the native type.
+
+ void resize(
+ std::size_t size);
 
 
 
@@ -33682,25 +35146,29 @@
 
 
 
-[section:overload2 ip::host_name (2 of 2 overloads)]
+[section:size ip::basic_endpoint::size]
 
-Get the current host name.
+[indexterm2 size..ip::basic_endpoint] Get the underlying size of the endpoint in the native type.
 
- std::string host_name(
- boost::system::error_code & ec);
+ std::size_t size() const;
 
 
 
 [endsect]
 
 
+
 [endsect]
 
-[section:ip__icmp ip::icmp]
+[section:ip__basic_resolver ip::basic_resolver]
 
-Encapsulates the flags needed for ICMP.
+Provides endpoint resolution functionality.
 
- class icmp
+ template<
+ typename ``[link boost_asio.reference.InternetProtocol InternetProtocol]``,
+ typename ``[link boost_asio.reference.ResolverService ResolverService]`` = resolver_service<InternetProtocol>>
+ class basic_resolver :
+ public basic_io_object< ResolverService >
 
 
 [heading Types]
@@ -33709,36 +35177,43 @@
 
   [
 
- [[link boost_asio.reference.ip__icmp.endpoint [*endpoint]]]
- [The type of a ICMP endpoint. ]
+ [[link boost_asio.reference.ip__basic_resolver.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__icmp.resolver [*resolver]]]
- [The ICMP resolver type. ]
+ [[link boost_asio.reference.ip__basic_resolver.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__icmp.resolver_iterator [*resolver_iterator]]]
- [The type of a resolver iterator. ]
+ [[link boost_asio.reference.ip__basic_resolver.iterator [*iterator]]]
+ [The iterator type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__icmp.resolver_query [*resolver_query]]]
- [The type of a resolver query. ]
+ [[link boost_asio.reference.ip__basic_resolver.protocol_type [*protocol_type]]]
+ [The protocol type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__icmp.socket [*socket]]]
- [The ICMP socket type. ]
+ [[link boost_asio.reference.ip__basic_resolver.query [*query]]]
+ [The query type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
@@ -33749,220 +35224,191 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__icmp.family [*family]]]
- [Obtain an identifier for the protocol family. ]
+ [[link boost_asio.reference.ip__basic_resolver.async_resolve [*async_resolve]]]
+ [Asynchronously resolve a query to a list of entries. ]
   ]
   
   [
- [[link boost_asio.reference.ip__icmp.protocol [*protocol]]]
- [Obtain an identifier for the protocol. ]
+ [[link boost_asio.reference.ip__basic_resolver.basic_resolver [*basic_resolver]]]
+ [Constructor. ]
   ]
   
   [
- [[link boost_asio.reference.ip__icmp.type [*type]]]
- [Obtain an identifier for the type of the protocol. ]
+ [[link boost_asio.reference.ip__basic_resolver.cancel [*cancel]]]
+ [Cancel any asynchronous operations that are waiting on the resolver. ]
   ]
   
   [
- [[link boost_asio.reference.ip__icmp.v4 [*v4]]]
- [Construct to represent the IPv4 ICMP protocol. ]
+ [[link boost_asio.reference.ip__basic_resolver.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.ip__icmp.v6 [*v6]]]
- [Construct to represent the IPv6 ICMP protocol. ]
+ [[link boost_asio.reference.ip__basic_resolver.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.resolve [*resolve]]]
+ [Resolve a query to a list of entries. ]
   ]
   
 ]
 
-[heading Friends]
+[heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__icmp.operator_not__eq_ [*operator!=]]]
- [Compare two protocols for inequality. ]
+ [[link boost_asio.reference.ip__basic_resolver.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__icmp.operator_eq__eq_ [*operator==]]]
- [Compare two protocols for equality. ]
+ [[link boost_asio.reference.ip__basic_resolver.service [*service]]]
+ [The service associated with the I/O object. ]
   ]
-
+
 ]
 
-The
-[link boost_asio.reference.ip__icmp ip::icmp] class contains flags necessary for ICMP sockets.
+The basic_resolver class template provides the ability to resolve a query to a list of endpoints.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+[*Shared] [*objects:] Unsafe.
 
 
+[section:async_resolve ip::basic_resolver::async_resolve]
 
-[section:endpoint ip::icmp::endpoint]
+[indexterm2 async_resolve..ip::basic_resolver] Asynchronously resolve a query to a list of entries.
 
-The type of a ICMP endpoint.
+ template<
+ typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
+ void ``[link boost_asio.reference.ip__basic_resolver.async_resolve.overload1 async_resolve]``(
+ const query & q,
+ ResolveHandler handler);
 
- typedef basic_endpoint< icmp > endpoint;
+ template<
+ typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
+ void ``[link boost_asio.reference.ip__basic_resolver.async_resolve.overload2 async_resolve]``(
+ const endpoint_type & e,
+ ResolveHandler handler);
 
 
-[heading Types]
-[table
- [[Name][Description]]
+[section:overload1 ip::basic_resolver::async_resolve (1 of 2 overloads)]
 
- [
+Asynchronously resolve a query to a list of entries.
 
- [[link boost_asio.reference.ip__basic_endpoint.data_type [*data_type]]]
- [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
-
- ]
+ template<
+ typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
+ void async_resolve(
+ const query & q,
+ ResolveHandler handler);
 
- [
 
- [[link boost_asio.reference.ip__basic_endpoint.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint. ]
-
- ]
+This function is used to asynchronously resolve a query into a list of endpoint entries.
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[heading Parameters]
+
 
- [
- [[link boost_asio.reference.ip__basic_endpoint.address [*address]]]
- [Get the IP address associated with the endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.basic_endpoint [*basic_endpoint]]]
- [Default constructor. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.capacity [*capacity]]]
- [Get the capacity of the endpoint in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.data [*data]]]
- [Get the underlying endpoint in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.operator_eq_ [*operator=]]]
- [Assign from another endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.port [*port]]]
- [Get the port associated with the endpoint. The port number is always in the host's byte order. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.protocol [*protocol]]]
- [The protocol associated with the endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.resize [*resize]]]
- [Set the underlying size of the endpoint in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.size [*size]]]
- [Get the underlying size of the endpoint in the native type. ]
- ]
+[variablelist
   
-]
+[[q][A query object that determines what endpoints will be returned.]]
 
-[heading Friends]
-[table
- [[Name][Description]]
+[[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:
+``
+ 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.
+ );
+``
+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().]]
 
- [
- [[link boost_asio.reference.ip__basic_endpoint.operator_not__eq_ [*operator!=]]]
- [Compare two endpoints for inequality. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.operator_lt_ [*operator<]]]
- [Compare endpoints for ordering. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.operator_eq__eq_ [*operator==]]]
- [Compare two endpoints for equality. ]
- ]
-
 ]
 
-[heading Related Functions]
-[table
- [[Name][Description]]
+[heading Remarks]
+
+A default constructed iterator represents the end of the list.
 
- [
- [[link boost_asio.reference.ip__basic_endpoint.operator_lt__lt_ [*operator<<]]]
- [Output an endpoint as a string. ]
- ]
-
-]
+A successful resolve operation is guaranteed to pass at least one entry to the handler.
 
-The
-[link boost_asio.reference.ip__basic_endpoint ip::basic_endpoint] class template describes an endpoint that may be associated with a particular socket.
 
+[endsect]
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
 
+[section:overload2 ip::basic_resolver::async_resolve (2 of 2 overloads)]
 
+Asynchronously resolve an endpoint to a list of entries.
 
+ template<
+ typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
+ void async_resolve(
+ const endpoint_type & e,
+ ResolveHandler handler);
 
-[endsect]
 
+This function is used to asynchronously resolve an endpoint into a list of endpoint entries.
 
 
-[section:family ip::icmp::family]
+[heading Parameters]
+
 
-Obtain an identifier for the protocol family.
+[variablelist
+
+[[e][An endpoint object that determines what endpoints will be returned.]]
 
- int family() const;
+[[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:
+``
+ 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.
+ );
+``
+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().]]
 
+]
 
+[heading Remarks]
+
+A default constructed iterator represents the end of the list.
 
-[endsect]
+A successful resolve operation is guaranteed to pass at least one entry to the handler.
 
 
+[endsect]
 
-[section:operator_not__eq_ ip::icmp::operator!=]
 
-Compare two protocols for inequality.
+[endsect]
 
- friend bool operator!=(
- const icmp & p1,
- const icmp & p2);
 
+[section:basic_resolver ip::basic_resolver::basic_resolver]
 
+[indexterm2 basic_resolver..ip::basic_resolver] Constructor.
 
-[endsect]
+ basic_resolver(
+ boost::asio::io_service & io_service);
 
 
+This constructor creates a basic_resolver.
 
-[section:operator_eq__eq_ ip::icmp::operator==]
 
-Compare two protocols for equality.
+[heading Parameters]
+
 
- friend bool operator==(
- const icmp & p1,
- const icmp & p2);
+[variablelist
+
+[[io_service][The io\_service object that the resolver will use to dispatch handlers for any asynchronous operations performed on the timer. ]]
+
+]
 
 
 
@@ -33970,134 +35416,64 @@
 
 
 
-[section:protocol ip::icmp::protocol]
+[section:cancel ip::basic_resolver::cancel]
 
-Obtain an identifier for the protocol.
+[indexterm2 cancel..ip::basic_resolver] Cancel any asynchronous operations that are waiting on the resolver.
 
- int protocol() const;
+ void cancel();
 
 
+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.
 
-[endsect]
 
+[endsect]
 
 
-[section:resolver ip::icmp::resolver]
 
-The ICMP resolver type.
+[section:endpoint_type ip::basic_resolver::endpoint_type]
 
- typedef basic_resolver< icmp > resolver;
+[indexterm2 endpoint_type..ip::basic_resolver] The endpoint type.
 
+ typedef InternetProtocol::endpoint endpoint_type;
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
 
- [[link boost_asio.reference.ip__basic_resolver.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.ip__basic_resolver.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.ip__basic_resolver.iterator [*iterator]]]
- [The iterator type. ]
-
- ]
+[section:get_io_service ip::basic_resolver::get_io_service]
 
- [
 
- [[link boost_asio.reference.ip__basic_resolver.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
+['Inherited from basic_io_object.]
 
- [
+[indexterm2 get_io_service..ip::basic_resolver] Get the io_service associated with the object.
 
- [[link boost_asio.reference.ip__basic_resolver.query [*query]]]
- [The query type. ]
-
- ]
+ boost::asio::io_service & get_io_service();
 
- [
 
- [[link boost_asio.reference.ip__basic_resolver.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
- [
- [[link boost_asio.reference.ip__basic_resolver.async_resolve [*async_resolve]]]
- [Asynchronously resolve a query to a list of entries. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver.basic_resolver [*basic_resolver]]]
- [Constructor. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver.cancel [*cancel]]]
- [Cancel any asynchronous operations that are waiting on the resolver. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver.resolve [*resolve]]]
- [Resolve a query to a list of entries. ]
- ]
-
-]
 
-[heading Protected Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ip__basic_resolver.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
+[endsect]
 
- [
- [[link boost_asio.reference.ip__basic_resolver.service [*service]]]
- [The service associated with the I/O object. ]
- ]
 
-]
 
-The basic_resolver class template provides the ability to resolve a query to a list of endpoints.
+[section:implementation ip::basic_resolver::implementation]
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+['Inherited from basic_io_object.]
 
-[*Shared] [*objects:] Unsafe.
+[indexterm2 implementation..ip::basic_resolver] The underlying implementation of the I/O object.
 
+ implementation_type implementation;
 
 
 
@@ -34105,638 +35481,389 @@
 
 
 
-[section:resolver_iterator ip::icmp::resolver_iterator]
-
-The type of a resolver iterator.
+[section:implementation_type ip::basic_resolver::implementation_type]
 
- typedef basic_resolver_iterator< icmp > resolver_iterator;
 
+['Inherited from basic_io_object.]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[indexterm2 implementation_type..ip::basic_resolver] The underlying implementation type of I/O object.
 
- [
- [[link boost_asio.reference.ip__basic_resolver_iterator.basic_resolver_iterator [*basic_resolver_iterator]]]
- [Default constructor creates an end iterator. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver_iterator.create [*create]]]
- [Create an iterator from an addrinfo list returned by getaddrinfo. ]
- ]
-
-]
+ typedef service_type::implementation_type implementation_type;
 
-The
-[link boost_asio.reference.ip__basic_resolver_iterator 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:
 
- const basic_resolver_entry<InternetProtocol>
 
+[endsect]
 
 
 
+[section:io_service ip::basic_resolver::io_service]
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+['Inherited from basic_io_object.]
 
+[indexterm2 io_service..ip::basic_resolver] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
+ boost::asio::io_service & io_service();
 
 
-[endsect]
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
 
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
-[section:resolver_query ip::icmp::resolver_query]
 
-The type of a resolver query.
 
- typedef basic_resolver_query< icmp > resolver_query;
+[endsect]
 
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
+[section:iterator ip::basic_resolver::iterator]
 
- [[link boost_asio.reference.ip__basic_resolver_query.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint query. ]
-
- ]
+[indexterm2 iterator..ip::basic_resolver] The iterator type.
 
-]
+ typedef InternetProtocol::resolver_iterator iterator;
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query [*basic_resolver_query]]]
- [Construct with specified service name for any protocol. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver_query.hints [*hints]]]
- [Get the hints associated with the query. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver_query.host_name [*host_name]]]
- [Get the host name associated with the query. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver_query.service_name [*service_name]]]
- [Get the service name associated with the query. ]
- ]
-
-]
 
-[heading Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ip__basic_resolver_query.address_configured [*address_configured]]]
- [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. ]
- ]
+[endsect]
 
- [
- [[link boost_asio.reference.ip__basic_resolver_query.all_matching [*all_matching]]]
- [If used with v4_mapped, return all matching IPv6 and IPv4 addresses. ]
- ]
 
- [
- [[link boost_asio.reference.ip__basic_resolver_query.canonical_name [*canonical_name]]]
- [Determine the canonical name of the host specified in the query. ]
- ]
 
- [
- [[link boost_asio.reference.ip__basic_resolver_query.numeric_host [*numeric_host]]]
- [Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted. ]
- ]
+[section:protocol_type ip::basic_resolver::protocol_type]
 
- [
- [[link boost_asio.reference.ip__basic_resolver_query.numeric_service [*numeric_service]]]
- [Service name should be treated as a numeric string defining a port number and no name resolution should be attempted. ]
- ]
+[indexterm2 protocol_type..ip::basic_resolver] The protocol type.
 
- [
- [[link boost_asio.reference.ip__basic_resolver_query.passive [*passive]]]
- [Indicate that returned endpoint is intended for use as a locally bound socket endpoint. ]
- ]
+ typedef InternetProtocol protocol_type;
 
- [
- [[link boost_asio.reference.ip__basic_resolver_query.v4_mapped [*v4_mapped]]]
- [If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses. ]
- ]
 
-]
 
-The
-[link boost_asio.reference.ip__basic_resolver_query ip::basic_resolver_query] class template describes a query that can be passed to a resolver.
 
+[endsect]
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
 
+[section:query ip::basic_resolver::query]
 
+[indexterm2 query..ip::basic_resolver] The query type.
 
+ typedef InternetProtocol::resolver_query query;
 
-[endsect]
 
 
 
-[section:socket ip::icmp::socket]
+[endsect]
 
-The ICMP socket type.
 
- typedef basic_raw_socket< icmp > socket;
+[section:resolve ip::basic_resolver::resolve]
 
+[indexterm2 resolve..ip::basic_resolver] Resolve a query to a list of entries.
 
-[heading Types]
-[table
- [[Name][Description]]
+ iterator ``[link boost_asio.reference.ip__basic_resolver.resolve.overload1 resolve]``(
+ const query & q);
 
- [
+ iterator ``[link boost_asio.reference.ip__basic_resolver.resolve.overload2 resolve]``(
+ const query & q,
+ boost::system::error_code & ec);
 
- [[link boost_asio.reference.basic_raw_socket.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
+ iterator ``[link boost_asio.reference.ip__basic_resolver.resolve.overload3 resolve]``(
+ const endpoint_type & e);
 
- [
+ iterator ``[link boost_asio.reference.ip__basic_resolver.resolve.overload4 resolve]``(
+ const endpoint_type & e,
+ boost::system::error_code & ec);
 
- [[link boost_asio.reference.basic_raw_socket.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
 
- [
+[section:overload1 ip::basic_resolver::resolve (1 of 4 overloads)]
 
- [[link boost_asio.reference.basic_raw_socket.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
+Resolve a query to a list of entries.
 
- [
+ iterator resolve(
+ const query & q);
 
- [[link boost_asio.reference.basic_raw_socket.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
 
- [
+This function is used to resolve a query into a list of endpoint entries.
 
- [[link boost_asio.reference.basic_raw_socket.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
-
- ]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.basic_raw_socket.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
+[variablelist
   
- ]
+[[q][A query object that determines what endpoints will be returned.]]
 
- [
+]
 
- [[link boost_asio.reference.basic_raw_socket.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
+[heading Return Value]
+
+A forward-only iterator that can be used to traverse the list of endpoint entries.
 
- [
+[heading Exceptions]
+
 
- [[link boost_asio.reference.basic_raw_socket.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
+[variablelist
   
- ]
-
- [
+[[boost::system::system_error][Thrown on failure.]]
 
- [[link boost_asio.reference.basic_raw_socket.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
-
- ]
+]
 
- [
+[heading Remarks]
+
+A default constructed iterator represents the end of the list.
 
- [[link boost_asio.reference.basic_raw_socket.lowest_layer_type [*lowest_layer_type]]]
- [A basic_socket is always the lowest layer. ]
-
- ]
+A successful call to this function is guaranteed to return at least one entry.
 
- [
 
- [[link boost_asio.reference.basic_raw_socket.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_raw_socket.native_type [*native_type]]]
- [The native representation of a socket. ]
-
- ]
 
- [
+[section:overload2 ip::basic_resolver::resolve (2 of 4 overloads)]
 
- [[link boost_asio.reference.basic_raw_socket.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
- ]
+Resolve a query to a list of entries.
 
- [
+ iterator resolve(
+ const query & q,
+ boost::system::error_code & ec);
 
- [[link boost_asio.reference.basic_raw_socket.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
 
- [
+This function is used to resolve a query into a list of endpoint entries.
 
- [[link boost_asio.reference.basic_raw_socket.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
-
- ]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.basic_raw_socket.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
+[variablelist
   
- ]
+[[q][A query object that determines what endpoints will be returned.]]
 
- [
+[[ec][Set to indicate what error occurred, if any.]]
 
- [[link boost_asio.reference.basic_raw_socket.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
-
- ]
+]
 
- [
-
- [[link boost_asio.reference.basic_raw_socket.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_raw_socket.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_raw_socket.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
+[heading Return Value]
+
+A forward-only iterator that can be used to traverse the list of endpoint entries. Returns a default constructed iterator if an error occurs.
 
- [
+[heading Remarks]
+
+A default constructed iterator represents the end of the list.
 
- [[link boost_asio.reference.basic_raw_socket.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
-
- ]
+A successful call to this function is guaranteed to return at least one entry.
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[endsect]
 
- [
- [[link boost_asio.reference.basic_raw_socket.assign [*assign]]]
- [Assign an existing native socket to the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.async_receive [*async_receive]]]
- [Start an asynchronous receive on a connected socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.async_receive_from [*async_receive_from]]]
- [Start an asynchronous receive. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.async_send [*async_send]]]
- [Start an asynchronous send on a connected socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.async_send_to [*async_send_to]]]
- [Start an asynchronous send. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.available [*available]]]
- [Determine the number of bytes available for reading. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.basic_raw_socket [*basic_raw_socket]]]
- [Construct a basic_raw_socket without opening it. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.bind [*bind]]]
- [Bind the socket to the given local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.close [*close]]]
- [Close the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.connect [*connect]]]
- [Connect the socket to the specified endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.get_option [*get_option]]]
- [Get an option from the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.is_open [*is_open]]]
- [Determine whether the socket is open. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.local_endpoint [*local_endpoint]]]
- [Get the local endpoint of the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.native [*native]]]
- [Get the native socket representation. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.open [*open]]]
- [Open the socket using the specified protocol. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.receive [*receive]]]
- [Receive some data on a connected socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.receive_from [*receive_from]]]
- [Receive raw data with the endpoint of the sender. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint of the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.send [*send]]]
- [Send some data on a connected socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.send_to [*send_to]]]
- [Send raw data to the specified endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.set_option [*set_option]]]
- [Set an option on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_raw_socket.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
- ]
-
-]
 
-[heading Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.basic_raw_socket.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
+[section:overload3 ip::basic_resolver::resolve (3 of 4 overloads)]
 
- [
- [[link boost_asio.reference.basic_raw_socket.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
- ]
+Resolve an endpoint to a list of entries.
 
- [
- [[link boost_asio.reference.basic_raw_socket.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
- ]
+ iterator resolve(
+ const endpoint_type & e);
 
- [
- [[link boost_asio.reference.basic_raw_socket.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
- ]
 
-]
+This function is used to resolve an endpoint into a list of endpoint entries.
 
-[heading Protected Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.basic_raw_socket.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
+[heading Parameters]
+
 
- [
- [[link boost_asio.reference.basic_raw_socket.service [*service]]]
- [The service associated with the I/O object. ]
- ]
+[variablelist
+
+[[e][An endpoint object that determines what endpoints will be returned.]]
 
 ]
 
-The basic_raw_socket class template provides asynchronous and blocking raw-oriented socket functionality.
+[heading Return Value]
+
+A forward-only iterator that can be used to traverse the list of endpoint entries.
 
+[heading Exceptions]
+
 
-[heading Thread Safety]
+[variablelist
   
-[*Distinct] [*objects:] Safe.
+[[boost::system::system_error][Thrown on failure.]]
 
-[*Shared] [*objects:] Unsafe.
+]
 
+[heading Remarks]
+
+A default constructed iterator represents the end of the list.
 
+A successful call to this function is guaranteed to return at least one entry.
 
 
 [endsect]
 
 
 
-[section:type ip::icmp::type]
+[section:overload4 ip::basic_resolver::resolve (4 of 4 overloads)]
 
-Obtain an identifier for the type of the protocol.
+Resolve an endpoint to a list of entries.
 
- int type() const;
+ iterator resolve(
+ const endpoint_type & e,
+ boost::system::error_code & ec);
 
 
+This function is used to resolve an endpoint into a list of endpoint entries.
 
-[endsect]
 
+[heading Parameters]
+
+
+[variablelist
+
+[[e][An endpoint object that determines what endpoints will be returned.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
-[section:v4 ip::icmp::v4]
+]
 
-Construct to represent the IPv4 ICMP protocol.
+[heading Return Value]
+
+A forward-only iterator that can be used to traverse the list of endpoint entries. Returns a default constructed iterator if an error occurs.
 
- static icmp v4();
+[heading Remarks]
+
+A default constructed iterator represents the end of the list.
 
+A successful call to this function is guaranteed to return at least one entry.
 
 
 [endsect]
 
 
+[endsect]
 
-[section:v6 ip::icmp::v6]
 
-Construct to represent the IPv6 ICMP protocol.
+[section:service ip::basic_resolver::service]
 
- static icmp v6();
 
+['Inherited from basic_io_object.]
 
+[indexterm2 service..ip::basic_resolver] The service associated with the I/O object.
 
-[endsect]
+ service_type & service;
 
 
 
 [endsect]
 
 
-[section:ip__multicast__enable_loopback ip::multicast::enable_loopback]
-
-Socket option determining whether outgoing multicast packets will be received on the same socket if it is a member of the multicast group.
-
- typedef implementation_defined enable_loopback;
 
+[section:service_type ip::basic_resolver::service_type]
 
 
-Implements the IPPROTO\_IP/IP\_MULTICAST\_LOOP socket option.
+['Inherited from basic_io_object.]
 
+[indexterm2 service_type..ip::basic_resolver] The type of the service that will be used to provide I/O operations.
 
-[heading Examples]
-
-Setting the option:
+ typedef ResolverService service_type;
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::ip::multicast::enable_loopback option(true);
- socket.set_option(option);
 
 
 
+[endsect]
 
-Getting the current option value:
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::ip::multicast::enable_loopback option;
- socket.get_option(option);
- bool is_set = option.value();
 
+[endsect]
 
+[section:ip__basic_resolver_entry ip::basic_resolver_entry]
 
+An entry produced by a resolver.
 
+ template<
+ typename ``[link boost_asio.reference.InternetProtocol InternetProtocol]``>
+ class basic_resolver_entry
 
 
-[endsect]
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
+ [[link boost_asio.reference.ip__basic_resolver_entry.endpoint_type [*endpoint_type]]]
+ [The endpoint type associated with the endpoint entry. ]
+
+ ]
 
-[section:ip__multicast__hops ip::multicast::hops]
+ [
 
-Socket option for time-to-live associated with outgoing multicast packets.
+ [[link boost_asio.reference.ip__basic_resolver_entry.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint entry. ]
+
+ ]
 
- typedef implementation_defined hops;
+]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.ip__basic_resolver_entry.basic_resolver_entry [*basic_resolver_entry]]]
+ [Default constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_entry.endpoint [*endpoint]]]
+ [Get the endpoint associated with the entry. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_entry.host_name [*host_name]]]
+ [Get the host name associated with the entry. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_entry.operator_endpoint_type [*operator endpoint_type]]]
+ [Convert to the endpoint associated with the entry. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_entry.service_name [*service_name]]]
+ [Get the service name associated with the entry. ]
+ ]
+
+]
 
-Implements the IPPROTO\_IP/IP\_MULTICAST\_TTL socket option.
+The
+[link boost_asio.reference.ip__basic_resolver_entry ip::basic_resolver_entry] class template describes an entry as returned by a resolver.
 
 
-[heading Examples]
+[heading Thread Safety]
   
-Setting the option:
+[*Distinct] [*objects:] Safe.
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::ip::multicast::hops option(4);
- socket.set_option(option);
+[*Shared] [*objects:] Unsafe.
 
 
+[section:basic_resolver_entry ip::basic_resolver_entry::basic_resolver_entry]
 
+[indexterm2 basic_resolver_entry..ip::basic_resolver_entry] Default constructor.
 
-Getting the current option value:
+ ``[link boost_asio.reference.ip__basic_resolver_entry.basic_resolver_entry.overload1 basic_resolver_entry]``();
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::ip::multicast::hops option;
- socket.get_option(option);
- int ttl = option.value();
+ ``[link boost_asio.reference.ip__basic_resolver_entry.basic_resolver_entry.overload2 basic_resolver_entry]``(
+ const endpoint_type & endpoint,
+ const std::string & host_name,
+ const std::string & service_name);
 
 
+[section:overload1 ip::basic_resolver_entry::basic_resolver_entry (1 of 2 overloads)]
+
+Default constructor.
 
+ basic_resolver_entry();
 
 
 
@@ -34744,30 +35871,28 @@
 
 
 
-[section:ip__multicast__join_group ip::multicast::join_group]
+[section:overload2 ip::basic_resolver_entry::basic_resolver_entry (2 of 2 overloads)]
 
-Socket option to join a multicast group on a specified interface.
+Construct with specified endpoint, host name and service name.
 
- typedef implementation_defined join_group;
+ basic_resolver_entry(
+ const endpoint_type & endpoint,
+ const std::string & host_name,
+ const std::string & service_name);
 
 
 
-Implements the IPPROTO\_IP/IP\_ADD\_MEMBERSHIP socket option.
+[endsect]
 
 
-[heading Examples]
-
-Setting the option to join a multicast group:
+[endsect]
 
- 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);
 
+[section:endpoint ip::basic_resolver_entry::endpoint]
 
+[indexterm2 endpoint..ip::basic_resolver_entry] Get the endpoint associated with the entry.
 
+ endpoint_type endpoint() const;
 
 
 
@@ -34775,30 +35900,24 @@
 
 
 
-[section:ip__multicast__leave_group ip::multicast::leave_group]
+[section:endpoint_type ip::basic_resolver_entry::endpoint_type]
 
-Socket option to leave a multicast group on a specified interface.
+[indexterm2 endpoint_type..ip::basic_resolver_entry] The endpoint type associated with the endpoint entry.
 
- typedef implementation_defined leave_group;
+ typedef InternetProtocol::endpoint endpoint_type;
 
 
 
-Implements the IPPROTO\_IP/IP\_DROP\_MEMBERSHIP socket option.
 
+[endsect]
 
-[heading Examples]
-
-Setting the option to leave a multicast group:
 
- 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);
 
+[section:host_name ip::basic_resolver_entry::host_name]
 
+[indexterm2 host_name..ip::basic_resolver_entry] Get the host name associated with the entry.
 
+ std::string host_name() const;
 
 
 
@@ -34806,29 +35925,23 @@
 
 
 
-[section:ip__multicast__outbound_interface ip::multicast::outbound_interface]
+[section:operator_endpoint_type ip::basic_resolver_entry::operator endpoint_type]
 
-Socket option for local interface to use for outgoing multicast packets.
+[indexterm2 operator endpoint_type..ip::basic_resolver_entry] Convert to the endpoint associated with the entry.
 
- typedef implementation_defined outbound_interface;
+ operator endpoint_type() const;
 
 
 
-Implements the IPPROTO\_IP/IP\_MULTICAST\_IF socket option.
+[endsect]
 
 
-[heading Examples]
-
-Setting the option:
 
- 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);
+[section:protocol_type ip::basic_resolver_entry::protocol_type]
 
+[indexterm2 protocol_type..ip::basic_resolver_entry] The protocol type associated with the endpoint entry.
 
+ typedef InternetProtocol protocol_type;
 
 
 
@@ -34836,131 +35949,99 @@
 [endsect]
 
 
-[section:ip__resolver_query_base ip::resolver_query_base]
 
-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.
+[section:service_name ip::basic_resolver_entry::service_name]
 
- class resolver_query_base
+[indexterm2 service_name..ip::basic_resolver_entry] Get the service name associated with the entry.
 
+ std::string service_name() const;
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ip__resolver_query_base._resolver_query_base [*~resolver_query_base]]]
- [Protected destructor to prevent deletion through this type. ]
- ]
-
-]
 
-[heading Data Members]
-[table
- [[Name][Description]]
+[endsect]
 
- [
- [[link boost_asio.reference.ip__resolver_query_base.address_configured [*address_configured]]]
- [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. ]
- ]
 
- [
- [[link boost_asio.reference.ip__resolver_query_base.all_matching [*all_matching]]]
- [If used with v4_mapped, return all matching IPv6 and IPv4 addresses. ]
- ]
 
- [
- [[link boost_asio.reference.ip__resolver_query_base.canonical_name [*canonical_name]]]
- [Determine the canonical name of the host specified in the query. ]
- ]
+[endsect]
 
- [
- [[link boost_asio.reference.ip__resolver_query_base.numeric_host [*numeric_host]]]
- [Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted. ]
- ]
+[section:ip__basic_resolver_iterator ip::basic_resolver_iterator]
 
- [
- [[link boost_asio.reference.ip__resolver_query_base.numeric_service [*numeric_service]]]
- [Service name should be treated as a numeric string defining a port number and no name resolution should be attempted. ]
- ]
+An iterator over the entries produced by a resolver.
+
+ template<
+ typename ``[link boost_asio.reference.InternetProtocol InternetProtocol]``>
+ class basic_resolver_iterator
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__resolver_query_base.passive [*passive]]]
- [Indicate that returned endpoint is intended for use as a locally bound socket endpoint. ]
+ [[link boost_asio.reference.ip__basic_resolver_iterator.basic_resolver_iterator [*basic_resolver_iterator]]]
+ [Default constructor creates an end iterator. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__resolver_query_base.v4_mapped [*v4_mapped]]]
- [If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses. ]
+ [[link boost_asio.reference.ip__basic_resolver_iterator.create [*create]]]
+ [Create an iterator from an addrinfo list returned by getaddrinfo. ]
   ]
-
+
 ]
 
+The
+[link boost_asio.reference.ip__basic_resolver_iterator ip::basic_resolver_iterator] class template is used to define iterators over the results returned by a resolver.
 
-[section:address_configured ip::resolver_query_base::address_configured]
+The iterator's value\_type, obtained when the iterator is dereferenced, is:
 
-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.
+ const basic_resolver_entry<InternetProtocol>
 
- static const int address_configured = implementation_defined;
 
 
 
-[endsect]
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
+[*Shared] [*objects:] Unsafe.
 
-[section:all_matching ip::resolver_query_base::all_matching]
 
-If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
 
- static const int all_matching = implementation_defined;
+[section:basic_resolver_iterator ip::basic_resolver_iterator::basic_resolver_iterator]
 
+[indexterm2 basic_resolver_iterator..ip::basic_resolver_iterator] Default constructor creates an end iterator.
 
+ basic_resolver_iterator();
 
-[endsect]
 
 
+[endsect]
 
-[section:canonical_name ip::resolver_query_base::canonical_name]
 
-Determine the canonical name of the host specified in the query.
+[section:create ip::basic_resolver_iterator::create]
 
- static const int canonical_name = implementation_defined;
+[indexterm2 create..ip::basic_resolver_iterator] Create an iterator from an addrinfo list returned by getaddrinfo.
 
+ static basic_resolver_iterator ``[link boost_asio.reference.ip__basic_resolver_iterator.create.overload1 create]``(
+ boost::asio::detail::addrinfo_type * address_info,
+ const std::string & host_name,
+ const std::string & service_name);
 
-
-[endsect]
-
-
-
-[section:numeric_host ip::resolver_query_base::numeric_host]
-
-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;
-
-
-
-[endsect]
-
-
-
-[section:numeric_service ip::resolver_query_base::numeric_service]
-
-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;
-
-
-
-[endsect]
-
+ static basic_resolver_iterator ``[link boost_asio.reference.ip__basic_resolver_iterator.create.overload2 create]``(
+ const typename InternetProtocol::endpoint & endpoint,
+ const std::string & host_name,
+ const std::string & service_name);
 
 
-[section:passive ip::resolver_query_base::passive]
+[section:overload1 ip::basic_resolver_iterator::create (1 of 2 overloads)]
 
-Indicate that returned endpoint is intended for use as a locally bound socket endpoint.
+Create an iterator from an addrinfo list returned by getaddrinfo.
 
- static const int passive = implementation_defined;
+ static basic_resolver_iterator create(
+ boost::asio::detail::addrinfo_type * address_info,
+ const std::string & host_name,
+ const std::string & service_name);
 
 
 
@@ -34968,40 +36049,33 @@
 
 
 
-[section:v4_mapped ip::resolver_query_base::v4_mapped]
+[section:overload2 ip::basic_resolver_iterator::create (2 of 2 overloads)]
 
-If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses.
+Create an iterator from an endpoint, host name and service name.
 
- static const int v4_mapped = implementation_defined;
+ static basic_resolver_iterator create(
+ const typename InternetProtocol::endpoint & endpoint,
+ const std::string & host_name,
+ const std::string & service_name);
 
 
 
 [endsect]
 
 
-
-[section:_resolver_query_base ip::resolver_query_base::~resolver_query_base]
-
-Protected destructor to prevent deletion through this type.
-
- ~resolver_query_base();
-
-
-
 [endsect]
 
 
-
 [endsect]
 
-[section:ip__resolver_service ip::resolver_service]
+[section:ip__basic_resolver_query ip::basic_resolver_query]
 
-Default service implementation for a resolver.
+An query to be passed to a resolver.
 
   template<
       typename ``[link boost_asio.reference.InternetProtocol InternetProtocol]``>
- class resolver_service :
- public io_service::service
+ class basic_resolver_query :
+ public ip::resolver_query_base
 
 
 [heading Types]
@@ -35010,36 +36084,8 @@
 
   [
 
- [[link boost_asio.reference.ip__resolver_service.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ip__resolver_service.implementation_type [*implementation_type]]]
- [The type of a resolver implementation. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ip__resolver_service.iterator_type [*iterator_type]]]
- [The iterator type. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ip__resolver_service.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ip__resolver_service.query_type [*query_type]]]
- [The query type. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint query. ]
   
   ]
 
@@ -35050,92 +36096,88 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__resolver_service.async_resolve [*async_resolve]]]
- [Asynchronously resolve a query to a list of entries. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query [*basic_resolver_query]]]
+ [Construct with specified service name for any protocol. ]
   ]
   
   [
- [[link boost_asio.reference.ip__resolver_service.cancel [*cancel]]]
- [Cancel pending asynchronous operations. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.hints [*hints]]]
+ [Get the hints associated with the query. ]
   ]
   
   [
- [[link boost_asio.reference.ip__resolver_service.construct [*construct]]]
- [Construct a new resolver implementation. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.host_name [*host_name]]]
+ [Get the host name associated with the query. ]
   ]
   
   [
- [[link boost_asio.reference.ip__resolver_service.destroy [*destroy]]]
- [Destroy a resolver implementation. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.service_name [*service_name]]]
+ [Get the service name associated with the query. ]
   ]
   
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.ip__resolver_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.address_configured [*address_configured]]]
+ [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. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__resolver_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.all_matching [*all_matching]]]
+ [If used with v4_mapped, return all matching IPv6 and IPv4 addresses. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__resolver_service.resolve [*resolve]]]
- [Resolve a query to a list of entries. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.canonical_name [*canonical_name]]]
+ [Determine the canonical name of the host specified in the query. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__resolver_service.resolver_service [*resolver_service]]]
- [Construct a new resolver service for the specified io_service. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.numeric_host [*numeric_host]]]
+ [Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__resolver_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.numeric_service [*numeric_service]]]
+ [Service name should be treated as a numeric string defining a port number and no name resolution should be attempted. ]
   ]
-
-]
 
-[heading Data Members]
-[table
- [[Name][Description]]
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.passive [*passive]]]
+ [Indicate that returned endpoint is intended for use as a locally bound socket endpoint. ]
+ ]
 
   [
- [[link boost_asio.reference.ip__resolver_service.id [*id]]]
- [The unique service identifier. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.v4_mapped [*v4_mapped]]]
+ [If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses. ]
   ]
 
 ]
 
-[section:async_resolve ip::resolver_service::async_resolve]
+The
+[link boost_asio.reference.ip__basic_resolver_query ip::basic_resolver_query] class template describes a query that can be passed to a resolver.
 
-Asynchronously resolve a query to a list of entries.
 
- template<
- typename ``[link boost_asio.reference.Handler Handler]``>
- void ``[link boost_asio.reference.ip__resolver_service.async_resolve.overload1 async_resolve]``(
- implementation_type & impl,
- const query_type & query,
- Handler handler);
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
- template<
- typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void ``[link boost_asio.reference.ip__resolver_service.async_resolve.overload2 async_resolve]``(
- implementation_type & impl,
- const endpoint_type & endpoint,
- ResolveHandler handler);
+[*Shared] [*objects:] Unsafe.
 
 
-[section:overload1 ip::resolver_service::async_resolve (1 of 2 overloads)]
 
-Asynchronously resolve a query to a list of entries.
+[section:address_configured ip::basic_resolver_query::address_configured]
 
- template<
- typename ``[link boost_asio.reference.Handler Handler]``>
- void async_resolve(
- implementation_type & impl,
- const query_type & query,
- Handler handler);
+
+['Inherited from ip::resolver_query_base.]
+
+[indexterm2 address_configured..ip::basic_resolver_query] 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;
 
 
 
@@ -35143,31 +36185,52 @@
 
 
 
-[section:overload2 ip::resolver_service::async_resolve (2 of 2 overloads)]
+[section:all_matching ip::basic_resolver_query::all_matching]
 
-Asynchronously resolve an endpoint to a list of entries.
 
- template<
- typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
- void async_resolve(
- implementation_type & impl,
- const endpoint_type & endpoint,
- ResolveHandler handler);
+['Inherited from ip::resolver_query_base.]
 
+[indexterm2 all_matching..ip::basic_resolver_query] If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
 
+ static const int all_matching = implementation_defined;
 
-[endsect]
 
 
 [endsect]
 
 
-[section:cancel ip::resolver_service::cancel]
+[section:basic_resolver_query ip::basic_resolver_query::basic_resolver_query]
 
-Cancel pending asynchronous operations.
+[indexterm2 basic_resolver_query..ip::basic_resolver_query] Construct with specified service name for any protocol.
 
- void cancel(
- implementation_type & impl);
+ ``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload1 basic_resolver_query]``(
+ const std::string & service_name,
+ int flags = passive|address_configured);
+
+ ``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload2 basic_resolver_query]``(
+ const protocol_type & protocol,
+ const std::string & service_name,
+ int flags = passive|address_configured);
+
+ ``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload3 basic_resolver_query]``(
+ const std::string & host_name,
+ const std::string & service_name,
+ int flags = address_configured);
+
+ ``[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query.overload4 basic_resolver_query]``(
+ const protocol_type & protocol,
+ const std::string & host_name,
+ const std::string & service_name,
+ int flags = address_configured);
+
+
+[section:overload1 ip::basic_resolver_query::basic_resolver_query (1 of 4 overloads)]
+
+Construct with specified service name for any protocol.
+
+ basic_resolver_query(
+ const std::string & service_name,
+ int flags = passive|address_configured);
 
 
 
@@ -35175,12 +36238,14 @@
 
 
 
-[section:construct ip::resolver_service::construct]
+[section:overload2 ip::basic_resolver_query::basic_resolver_query (2 of 4 overloads)]
 
-Construct a new resolver implementation.
+Construct with specified service name for a given protocol.
 
- void construct(
- implementation_type & impl);
+ basic_resolver_query(
+ const protocol_type & protocol,
+ const std::string & service_name,
+ int flags = passive|address_configured);
 
 
 
@@ -35188,12 +36253,14 @@
 
 
 
-[section:destroy ip::resolver_service::destroy]
+[section:overload3 ip::basic_resolver_query::basic_resolver_query (3 of 4 overloads)]
 
-Destroy a resolver implementation.
+Construct with specified host name and service name for any protocol.
 
- void destroy(
- implementation_type & impl);
+ basic_resolver_query(
+ const std::string & host_name,
+ const std::string & service_name,
+ int flags = address_configured);
 
 
 
@@ -35201,27 +36268,32 @@
 
 
 
-[section:endpoint_type ip::resolver_service::endpoint_type]
-
-The endpoint type.
+[section:overload4 ip::basic_resolver_query::basic_resolver_query (4 of 4 overloads)]
 
- typedef InternetProtocol::endpoint endpoint_type;
+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);
 
 
 
 [endsect]
 
 
+[endsect]
+
 
-[section:get_io_service ip::resolver_service::get_io_service]
+[section:canonical_name ip::basic_resolver_query::canonical_name]
 
 
-['Inherited from io_service.]
+['Inherited from ip::resolver_query_base.]
 
-Get the io_service object that owns the service.
+[indexterm2 canonical_name..ip::basic_resolver_query] Determine the canonical name of the host specified in the query.
 
- boost::asio::io_service & get_io_service();
+ static const int canonical_name = implementation_defined;
 
 
 
@@ -35229,11 +36301,11 @@
 
 
 
-[section:id ip::resolver_service::id]
+[section:hints ip::basic_resolver_query::hints]
 
-The unique service identifier.
+[indexterm2 hints..ip::basic_resolver_query] Get the hints associated with the query.
 
- static boost::asio::io_service::id id;
+ const boost::asio::detail::addrinfo_type & hints() const;
 
 
 
@@ -35241,12 +36313,11 @@
 
 
 
-[section:implementation_type ip::resolver_service::implementation_type]
-
-The type of a resolver implementation.
+[section:host_name ip::basic_resolver_query::host_name]
 
- typedef implementation_defined implementation_type;
+[indexterm2 host_name..ip::basic_resolver_query] Get the host name associated with the query.
 
+ std::string host_name() const;
 
 
 
@@ -35254,14 +36325,14 @@
 
 
 
-[section:io_service ip::resolver_service::io_service]
+[section:numeric_host ip::basic_resolver_query::numeric_host]
 
 
-['Inherited from io_service.]
+['Inherited from ip::resolver_query_base.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 numeric_host..ip::basic_resolver_query] Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted.
 
- boost::asio::io_service & io_service();
+ static const int numeric_host = implementation_defined;
 
 
 
@@ -35269,12 +36340,14 @@
 
 
 
-[section:iterator_type ip::resolver_service::iterator_type]
+[section:numeric_service ip::basic_resolver_query::numeric_service]
 
-The iterator type.
 
- typedef InternetProtocol::resolver_iterator iterator_type;
+['Inherited from ip::resolver_query_base.]
 
+[indexterm2 numeric_service..ip::basic_resolver_query] 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;
 
 
 
@@ -35282,12 +36355,14 @@
 
 
 
-[section:protocol_type ip::resolver_service::protocol_type]
+[section:passive ip::basic_resolver_query::passive]
 
-The protocol type.
 
- typedef InternetProtocol protocol_type;
+['Inherited from ip::resolver_query_base.]
 
+[indexterm2 passive..ip::basic_resolver_query] Indicate that returned endpoint is intended for use as a locally bound socket endpoint.
+
+ static const int passive = implementation_defined;
 
 
 
@@ -35295,11 +36370,11 @@
 
 
 
-[section:query_type ip::resolver_service::query_type]
+[section:protocol_type ip::basic_resolver_query::protocol_type]
 
-The query type.
+[indexterm2 protocol_type..ip::basic_resolver_query] The protocol type associated with the endpoint query.
 
- typedef InternetProtocol::resolver_query query_type;
+ typedef InternetProtocol protocol_type;
 
 
 
@@ -35307,59 +36382,51 @@
 [endsect]
 
 
-[section:resolve ip::resolver_service::resolve]
 
-Resolve a query to a list of entries.
+[section:service_name ip::basic_resolver_query::service_name]
 
- iterator_type ``[link boost_asio.reference.ip__resolver_service.resolve.overload1 resolve]``(
- implementation_type & impl,
- const query_type & query,
- boost::system::error_code & ec);
+[indexterm2 service_name..ip::basic_resolver_query] Get the service name associated with the query.
 
- iterator_type ``[link boost_asio.reference.ip__resolver_service.resolve.overload2 resolve]``(
- implementation_type & impl,
- const endpoint_type & endpoint,
- boost::system::error_code & ec);
+ std::string service_name() const;
 
 
-[section:overload1 ip::resolver_service::resolve (1 of 2 overloads)]
 
-Resolve a query to a list of entries.
+[endsect]
+
 
- iterator_type resolve(
- implementation_type & impl,
- const query_type & query,
- boost::system::error_code & ec);
 
+[section:v4_mapped ip::basic_resolver_query::v4_mapped]
 
 
-[endsect]
+['Inherited from ip::resolver_query_base.]
 
+[indexterm2 v4_mapped..ip::basic_resolver_query] 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;
 
-[section:overload2 ip::resolver_service::resolve (2 of 2 overloads)]
 
-Resolve an endpoint to a list of entries.
 
- iterator_type resolve(
- implementation_type & impl,
- const endpoint_type & endpoint,
- boost::system::error_code & ec);
+[endsect]
 
 
 
 [endsect]
 
+[section:ip__host_name ip::host_name]
 
-[endsect]
+[indexterm1 ip::host_name] Get the current host name.
+
+ std::string ``[link boost_asio.reference.ip__host_name.overload1 host_name]``();
 
+ std::string ``[link boost_asio.reference.ip__host_name.overload2 host_name]``(
+ boost::system::error_code & ec);
 
-[section:resolver_service ip::resolver_service::resolver_service]
 
-Construct a new resolver service for the specified io_service.
+[section:overload1 ip::host_name (1 of 2 overloads)]
 
- resolver_service(
- boost::asio::io_service & io_service);
+Get the current host name.
+
+ std::string host_name();
 
 
 
@@ -35367,25 +36434,25 @@
 
 
 
-[section:shutdown_service ip::resolver_service::shutdown_service]
+[section:overload2 ip::host_name (2 of 2 overloads)]
 
-Destroy all user-defined handler objects owned by the service.
+Get the current host name.
 
- void shutdown_service();
+ std::string host_name(
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
-
 [endsect]
 
-[section:ip__tcp ip::tcp]
+[section:ip__icmp ip::icmp]
 
-Encapsulates the flags needed for TCP.
+Encapsulates the flags needed for ICMP.
 
- class tcp
+ class icmp
 
 
 [heading Types]
@@ -35394,57 +36461,36 @@
 
   [
 
- [[link boost_asio.reference.ip__tcp.acceptor [*acceptor]]]
- [The TCP acceptor type. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ip__tcp.endpoint [*endpoint]]]
- [The type of a TCP endpoint. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ip__tcp.iostream [*iostream]]]
- [The TCP iostream type. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ip__tcp.no_delay [*no_delay]]]
- [Socket option for disabling the Nagle algorithm. ]
+ [[link boost_asio.reference.ip__icmp.endpoint [*endpoint]]]
+ [The type of a ICMP endpoint. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__tcp.resolver [*resolver]]]
- [The TCP resolver type. ]
+ [[link boost_asio.reference.ip__icmp.resolver [*resolver]]]
+ [The ICMP resolver type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__tcp.resolver_iterator [*resolver_iterator]]]
+ [[link boost_asio.reference.ip__icmp.resolver_iterator [*resolver_iterator]]]
     [The type of a resolver iterator. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__tcp.resolver_query [*resolver_query]]]
+ [[link boost_asio.reference.ip__icmp.resolver_query [*resolver_query]]]
     [The type of a resolver query. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__tcp.socket [*socket]]]
- [The TCP socket type. ]
+ [[link boost_asio.reference.ip__icmp.socket [*socket]]]
+ [The ICMP socket type. ]
   
   ]
 
@@ -35455,28 +36501,28 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__tcp.family [*family]]]
+ [[link boost_asio.reference.ip__icmp.family [*family]]]
     [Obtain an identifier for the protocol family. ]
   ]
   
   [
- [[link boost_asio.reference.ip__tcp.protocol [*protocol]]]
+ [[link boost_asio.reference.ip__icmp.protocol [*protocol]]]
     [Obtain an identifier for the protocol. ]
   ]
   
   [
- [[link boost_asio.reference.ip__tcp.type [*type]]]
+ [[link boost_asio.reference.ip__icmp.type [*type]]]
     [Obtain an identifier for the type of the protocol. ]
   ]
   
   [
- [[link boost_asio.reference.ip__tcp.v4 [*v4]]]
- [Construct to represent the IPv4 TCP protocol. ]
+ [[link boost_asio.reference.ip__icmp.v4 [*v4]]]
+ [Construct to represent the IPv4 ICMP protocol. ]
   ]
   
   [
- [[link boost_asio.reference.ip__tcp.v6 [*v6]]]
- [Construct to represent the IPv6 TCP protocol. ]
+ [[link boost_asio.reference.ip__icmp.v6 [*v6]]]
+ [Construct to represent the IPv6 ICMP protocol. ]
   ]
   
 ]
@@ -35486,19 +36532,19 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__tcp.operator_not__eq_ [*operator!=]]]
+ [[link boost_asio.reference.ip__icmp.operator_not__eq_ [*operator!=]]]
     [Compare two protocols for inequality. ]
   ]
   
   [
- [[link boost_asio.reference.ip__tcp.operator_eq__eq_ [*operator==]]]
+ [[link boost_asio.reference.ip__icmp.operator_eq__eq_ [*operator==]]]
     [Compare two protocols for equality. ]
   ]
   
 ]
 
 The
-[link boost_asio.reference.ip__tcp ip::tcp] class contains flags necessary for TCP sockets.
+[link boost_asio.reference.ip__icmp ip::icmp] class contains flags necessary for ICMP sockets.
 
 
 [heading Thread Safety]
@@ -35509,11 +36555,11 @@
 
 
 
-[section:acceptor ip::tcp::acceptor]
+[section:endpoint ip::icmp::endpoint]
 
-The TCP acceptor type.
+[indexterm2 endpoint..ip::icmp] The type of a ICMP endpoint.
 
- typedef basic_socket_acceptor< tcp > acceptor;
+ typedef basic_endpoint< icmp > endpoint;
 
 
 [heading Types]
@@ -35522,385 +36568,74 @@
 
   [
 
- [[link boost_asio.reference.basic_socket_acceptor.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
+ [[link boost_asio.reference.ip__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_socket_acceptor.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
+ [[link boost_asio.reference.ip__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
   
   ]
 
- [
+]
 
- [[link boost_asio.reference.basic_socket_acceptor.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
   [
-
- [[link boost_asio.reference.basic_socket_acceptor.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
+ [[link boost_asio.reference.ip__basic_endpoint.address [*address]]]
+ [Get the IP address associated with the endpoint. ]
   ]
-
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
   
- ]
-
   [
-
- [[link boost_asio.reference.basic_socket_acceptor.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
+ [[link boost_asio.reference.ip__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor. ]
   ]
-
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
   
- ]
-
   [
-
- [[link boost_asio.reference.basic_socket_acceptor.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
-
+ [[link boost_asio.reference.ip__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.basic_socket_acceptor.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+ [[link boost_asio.reference.ip__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.basic_socket_acceptor.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
+ [[link boost_asio.reference.ip__basic_endpoint.port [*port]]]
+ [Get the port associated with the endpoint. The port number is always in the host's byte order. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.basic_socket_acceptor.native_type [*native_type]]]
- [The native representation of an acceptor. ]
+ [[link boost_asio.reference.ip__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
   ]
+
+]
 
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_socket_acceptor.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
-
- ]
-
-]
-
-[heading Member Functions]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.accept [*accept]]]
- [Accept a new connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.assign [*assign]]]
- [Assigns an existing native acceptor to the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.async_accept [*async_accept]]]
- [Start an asynchronous accept. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor [*basic_socket_acceptor]]]
- [Construct an acceptor without opening it. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.bind [*bind]]]
- [Bind the acceptor to the given local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.close [*close]]]
- [Close the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.get_option [*get_option]]]
- [Get an option from the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.is_open [*is_open]]]
- [Determine whether the acceptor is open. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.listen [*listen]]]
- [Place the acceptor into the state where it will listen for new connections. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.local_endpoint [*local_endpoint]]]
- [Get the local endpoint of the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.native [*native]]]
- [Get the native acceptor representation. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.open [*open]]]
- [Open the acceptor using the specified protocol. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.set_option [*set_option]]]
- [Set an option on the acceptor. ]
- ]
-
-]
-
-[heading Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
- ]
-
-]
-
-[heading Protected Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.service [*service]]]
- [The service associated with the I/O object. ]
- ]
-
-]
-
-The basic_socket_acceptor class template is used for accepting new socket connections.
-
-
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
-
-[*Shared] [*objects:] Unsafe.
-
-[heading Example]
-
-Opening a socket acceptor with the SO\_REUSEADDR option enabled:
-
- 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();
-
-
-
-
-
-
-
-[endsect]
-
-
-
-[section:endpoint ip::tcp::endpoint]
-
-The type of a TCP endpoint.
-
- typedef basic_endpoint< tcp > endpoint;
-
-
-[heading Types]
-[table
- [[Name][Description]]
-
- [
-
- [[link boost_asio.reference.ip__basic_endpoint.data_type [*data_type]]]
- [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ip__basic_endpoint.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint. ]
-
- ]
-
-]
-
-[heading Member Functions]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.address [*address]]]
- [Get the IP address associated with the endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.basic_endpoint [*basic_endpoint]]]
- [Default constructor. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.capacity [*capacity]]]
- [Get the capacity of the endpoint in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.data [*data]]]
- [Get the underlying endpoint in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.operator_eq_ [*operator=]]]
- [Assign from another endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.port [*port]]]
- [Get the port associated with the endpoint. The port number is always in the host's byte order. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.protocol [*protocol]]]
- [The protocol associated with the endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.resize [*resize]]]
- [Set the underlying size of the endpoint in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.size [*size]]]
- [Get the underlying size of the endpoint in the native type. ]
- ]
-
-]
-
-[heading Friends]
-[table
- [[Name][Description]]
+[heading Friends]
+[table
+ [[Name][Description]]
 
   [
     [[link boost_asio.reference.ip__basic_endpoint.operator_not__eq_ [*operator!=]]]
@@ -35947,9 +36682,9 @@
 
 
 
-[section:family ip::tcp::family]
+[section:family ip::icmp::family]
 
-Obtain an identifier for the protocol family.
+[indexterm2 family..ip::icmp] Obtain an identifier for the protocol family.
 
   int family() const;
 
@@ -35959,92 +36694,13 @@
 
 
 
-[section:iostream ip::tcp::iostream]
-
-The TCP iostream type.
-
- typedef basic_socket_iostream< tcp > iostream;
-
-
-[heading Member Functions]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream [*basic_socket_iostream]]]
- [Construct a basic_socket_iostream without establishing a connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_iostream.close [*close]]]
- [Close the connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_iostream.connect [*connect]]]
- [Establish a connection to an endpoint corresponding to a resolver query. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_iostream.rdbuf [*rdbuf]]]
- [Return a pointer to the underlying streambuf. ]
- ]
-
-]
-
-
-
-[endsect]
-
-
-
-[section:no_delay ip::tcp::no_delay]
-
-Socket option for disabling the Nagle algorithm.
-
- typedef implementation_defined no_delay;
-
-
-
-Implements the IPPROTO\_TCP/TCP\_NODELAY socket option.
-
-
-[heading Examples]
-
-Setting the option:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::ip::tcp::no_delay option(true);
- socket.set_option(option);
-
-
-
-
-Getting the current option value:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::ip::tcp::no_delay option;
- socket.get_option(option);
- bool is_set = option.value();
-
-
-
-
-
-
-[endsect]
-
-
-
-[section:operator_not__eq_ ip::tcp::operator!=]
+[section:operator_not__eq_ ip::icmp::operator!=]
 
-Compare two protocols for inequality.
+[indexterm2 operator!=..ip::icmp] Compare two protocols for inequality.
 
   friend bool operator!=(
- const tcp & p1,
- const tcp & p2);
+ const icmp & p1,
+ const icmp & p2);
 
 
 
@@ -36052,13 +36708,13 @@
 
 
 
-[section:operator_eq__eq_ ip::tcp::operator==]
+[section:operator_eq__eq_ ip::icmp::operator==]
 
-Compare two protocols for equality.
+[indexterm2 operator==..ip::icmp] Compare two protocols for equality.
 
   friend bool operator==(
- const tcp & p1,
- const tcp & p2);
+ const icmp & p1,
+ const icmp & p2);
 
 
 
@@ -36066,9 +36722,9 @@
 
 
 
-[section:protocol ip::tcp::protocol]
+[section:protocol ip::icmp::protocol]
 
-Obtain an identifier for the protocol.
+[indexterm2 protocol..ip::icmp] Obtain an identifier for the protocol.
 
   int protocol() const;
 
@@ -36078,11 +36734,11 @@
 
 
 
-[section:resolver ip::tcp::resolver]
+[section:resolver ip::icmp::resolver]
 
-The TCP resolver type.
+[indexterm2 resolver..ip::icmp] The ICMP resolver type.
 
- typedef basic_resolver< tcp > resolver;
+ typedef basic_resolver< icmp > resolver;
 
 
 [heading Types]
@@ -36201,11 +36857,11 @@
 
 
 
-[section:resolver_iterator ip::tcp::resolver_iterator]
+[section:resolver_iterator ip::icmp::resolver_iterator]
 
-The type of a resolver iterator.
+[indexterm2 resolver_iterator..ip::icmp] The type of a resolver iterator.
 
- typedef basic_resolver_iterator< tcp > resolver_iterator;
+ typedef basic_resolver_iterator< icmp > resolver_iterator;
 
 
 [heading Member Functions]
@@ -36248,11 +36904,11 @@
 
 
 
-[section:resolver_query ip::tcp::resolver_query]
+[section:resolver_query ip::icmp::resolver_query]
 
-The type of a resolver query.
+[indexterm2 resolver_query..ip::icmp] The type of a resolver query.
 
- typedef basic_resolver_query< tcp > resolver_query;
+ typedef basic_resolver_query< icmp > resolver_query;
 
 
 [heading Types]
@@ -36352,11 +37008,11 @@
 
 
 
-[section:socket ip::tcp::socket]
+[section:socket ip::icmp::socket]
 
-The TCP socket type.
+[indexterm2 socket..ip::icmp] The ICMP socket type.
 
- typedef basic_stream_socket< tcp > socket;
+ typedef basic_raw_socket< icmp > socket;
 
 
 [heading Types]
@@ -36365,147 +37021,147 @@
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.broadcast [*broadcast]]]
+ [[link boost_asio.reference.basic_raw_socket.broadcast [*broadcast]]]
     [Socket option to permit sending of broadcast messages. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.bytes_readable [*bytes_readable]]]
+ [[link boost_asio.reference.basic_raw_socket.bytes_readable [*bytes_readable]]]
     [IO control command to get the amount of data that can be read without blocking. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.debug [*debug]]]
+ [[link boost_asio.reference.basic_raw_socket.debug [*debug]]]
     [Socket option to enable socket-level debugging. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.do_not_route [*do_not_route]]]
+ [[link boost_asio.reference.basic_raw_socket.do_not_route [*do_not_route]]]
     [Socket option to prevent routing, use local interfaces only. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [[link boost_asio.reference.basic_raw_socket.enable_connection_aborted [*enable_connection_aborted]]]
     [Socket option to report aborted connections on accept. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.endpoint_type [*endpoint_type]]]
+ [[link boost_asio.reference.basic_raw_socket.endpoint_type [*endpoint_type]]]
     [The endpoint type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.implementation_type [*implementation_type]]]
+ [[link boost_asio.reference.basic_raw_socket.implementation_type [*implementation_type]]]
     [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.keep_alive [*keep_alive]]]
+ [[link boost_asio.reference.basic_raw_socket.keep_alive [*keep_alive]]]
     [Socket option to send keep-alives. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.linger [*linger]]]
+ [[link boost_asio.reference.basic_raw_socket.linger [*linger]]]
     [Socket option to specify whether the socket lingers on close if unsent data is present. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.lowest_layer_type [*lowest_layer_type]]]
+ [[link boost_asio.reference.basic_raw_socket.lowest_layer_type [*lowest_layer_type]]]
     [A basic_socket is always the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.message_flags [*message_flags]]]
+ [[link boost_asio.reference.basic_raw_socket.message_flags [*message_flags]]]
     [Bitmask type for flags that can be passed to send and receive operations. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.native_type [*native_type]]]
+ [[link boost_asio.reference.basic_raw_socket.native_type [*native_type]]]
     [The native representation of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.non_blocking_io [*non_blocking_io]]]
+ [[link boost_asio.reference.basic_raw_socket.non_blocking_io [*non_blocking_io]]]
     [IO control command to set the blocking mode of the socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.protocol_type [*protocol_type]]]
+ [[link boost_asio.reference.basic_raw_socket.protocol_type [*protocol_type]]]
     [The protocol type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.receive_buffer_size [*receive_buffer_size]]]
+ [[link boost_asio.reference.basic_raw_socket.receive_buffer_size [*receive_buffer_size]]]
     [Socket option for the receive buffer size of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.receive_low_watermark [*receive_low_watermark]]]
+ [[link boost_asio.reference.basic_raw_socket.receive_low_watermark [*receive_low_watermark]]]
     [Socket option for the receive low watermark. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.reuse_address [*reuse_address]]]
+ [[link boost_asio.reference.basic_raw_socket.reuse_address [*reuse_address]]]
     [Socket option to allow the socket to be bound to an address that is already in use. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.send_buffer_size [*send_buffer_size]]]
+ [[link boost_asio.reference.basic_raw_socket.send_buffer_size [*send_buffer_size]]]
     [Socket option for the send buffer size of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.send_low_watermark [*send_low_watermark]]]
+ [[link boost_asio.reference.basic_raw_socket.send_low_watermark [*send_low_watermark]]]
     [Socket option for the send low watermark. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.service_type [*service_type]]]
+ [[link boost_asio.reference.basic_raw_socket.service_type [*service_type]]]
     [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.shutdown_type [*shutdown_type]]]
+ [[link boost_asio.reference.basic_raw_socket.shutdown_type [*shutdown_type]]]
     [Different ways a socket may be shutdown. ]
   
   ]
@@ -36517,148 +37173,148 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_stream_socket.assign [*assign]]]
+ [[link boost_asio.reference.basic_raw_socket.assign [*assign]]]
     [Assign an existing native socket to the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.async_connect [*async_connect]]]
+ [[link boost_asio.reference.basic_raw_socket.async_connect [*async_connect]]]
     [Start an asynchronous connect. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.async_read_some [*async_read_some]]]
- [Start an asynchronous read. ]
+ [[link boost_asio.reference.basic_raw_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive on a connected socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.async_receive [*async_receive]]]
+ [[link boost_asio.reference.basic_raw_socket.async_receive_from [*async_receive_from]]]
     [Start an asynchronous receive. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.async_send [*async_send]]]
- [Start an asynchronous send. ]
+ [[link boost_asio.reference.basic_raw_socket.async_send [*async_send]]]
+ [Start an asynchronous send on a connected socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.async_write_some [*async_write_some]]]
- [Start an asynchronous write. ]
+ [[link boost_asio.reference.basic_raw_socket.async_send_to [*async_send_to]]]
+ [Start an asynchronous send. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.at_mark [*at_mark]]]
+ [[link boost_asio.reference.basic_raw_socket.at_mark [*at_mark]]]
     [Determine whether the socket is at the out-of-band data mark. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.available [*available]]]
+ [[link boost_asio.reference.basic_raw_socket.available [*available]]]
     [Determine the number of bytes available for reading. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.basic_stream_socket [*basic_stream_socket]]]
- [Construct a basic_stream_socket without opening it. ]
+ [[link boost_asio.reference.basic_raw_socket.basic_raw_socket [*basic_raw_socket]]]
+ [Construct a basic_raw_socket without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.bind [*bind]]]
+ [[link boost_asio.reference.basic_raw_socket.bind [*bind]]]
     [Bind the socket to the given local endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.cancel [*cancel]]]
+ [[link boost_asio.reference.basic_raw_socket.cancel [*cancel]]]
     [Cancel all asynchronous operations associated with the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.close [*close]]]
+ [[link boost_asio.reference.basic_raw_socket.close [*close]]]
     [Close the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.connect [*connect]]]
+ [[link boost_asio.reference.basic_raw_socket.connect [*connect]]]
     [Connect the socket to the specified endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.get_io_service [*get_io_service]]]
+ [[link boost_asio.reference.basic_raw_socket.get_io_service [*get_io_service]]]
     [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.get_option [*get_option]]]
+ [[link boost_asio.reference.basic_raw_socket.get_option [*get_option]]]
     [Get an option from the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.io_control [*io_control]]]
+ [[link boost_asio.reference.basic_raw_socket.io_control [*io_control]]]
     [Perform an IO control command on the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.io_service [*io_service]]]
+ [[link boost_asio.reference.basic_raw_socket.io_service [*io_service]]]
     [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.is_open [*is_open]]]
+ [[link boost_asio.reference.basic_raw_socket.is_open [*is_open]]]
     [Determine whether the socket is open. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.local_endpoint [*local_endpoint]]]
+ [[link boost_asio.reference.basic_raw_socket.local_endpoint [*local_endpoint]]]
     [Get the local endpoint of the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.lowest_layer [*lowest_layer]]]
+ [[link boost_asio.reference.basic_raw_socket.lowest_layer [*lowest_layer]]]
     [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.native [*native]]]
+ [[link boost_asio.reference.basic_raw_socket.native [*native]]]
     [Get the native socket representation. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.open [*open]]]
+ [[link boost_asio.reference.basic_raw_socket.open [*open]]]
     [Open the socket using the specified protocol. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.read_some [*read_some]]]
- [Read some data from the socket. ]
+ [[link boost_asio.reference.basic_raw_socket.receive [*receive]]]
+ [Receive some data on a connected socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.receive [*receive]]]
- [Receive some data on the socket. ]
- ]
+ [[link boost_asio.reference.basic_raw_socket.receive_from [*receive_from]]]
+ [Receive raw data with the endpoint of the sender. ]
+ ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.remote_endpoint [*remote_endpoint]]]
+ [[link boost_asio.reference.basic_raw_socket.remote_endpoint [*remote_endpoint]]]
     [Get the remote endpoint of the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.send [*send]]]
- [Send some data on the socket. ]
+ [[link boost_asio.reference.basic_raw_socket.send [*send]]]
+ [Send some data on a connected socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.set_option [*set_option]]]
- [Set an option on the socket. ]
+ [[link boost_asio.reference.basic_raw_socket.send_to [*send_to]]]
+ [Send raw data to the specified endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
+ [[link boost_asio.reference.basic_raw_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.write_some [*write_some]]]
- [Write some data to the socket. ]
+ [[link boost_asio.reference.basic_raw_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
   ]
   
 ]
@@ -36668,22 +37324,22 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_stream_socket.max_connections [*max_connections]]]
+ [[link boost_asio.reference.basic_raw_socket.max_connections [*max_connections]]]
     [The maximum length of the queue of pending incoming connections. ]
   ]
 
   [
- [[link boost_asio.reference.basic_stream_socket.message_do_not_route [*message_do_not_route]]]
+ [[link boost_asio.reference.basic_raw_socket.message_do_not_route [*message_do_not_route]]]
     [Specify that the data should not be subject to routing. ]
   ]
 
   [
- [[link boost_asio.reference.basic_stream_socket.message_out_of_band [*message_out_of_band]]]
+ [[link boost_asio.reference.basic_raw_socket.message_out_of_band [*message_out_of_band]]]
     [Process out-of-band data. ]
   ]
 
   [
- [[link boost_asio.reference.basic_stream_socket.message_peek [*message_peek]]]
+ [[link boost_asio.reference.basic_raw_socket.message_peek [*message_peek]]]
     [Peek at incoming data without removing it from the input queue. ]
   ]
 
@@ -36694,25 +37350,25 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_stream_socket.implementation [*implementation]]]
+ [[link boost_asio.reference.basic_raw_socket.implementation [*implementation]]]
     [The underlying implementation of the I/O object. ]
   ]
 
   [
- [[link boost_asio.reference.basic_stream_socket.service [*service]]]
+ [[link boost_asio.reference.basic_raw_socket.service [*service]]]
     [The service associated with the I/O object. ]
   ]
 
 ]
 
-The basic_stream_socket class template provides asynchronous and blocking stream-oriented socket functionality.
+The basic_raw_socket class template provides asynchronous and blocking raw-oriented socket functionality.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[*Shared] [*objects:] Unsafe.
 
 
 
@@ -36721,9 +37377,9 @@
 
 
 
-[section:type ip::tcp::type]
+[section:type ip::icmp::type]
 
-Obtain an identifier for the type of the protocol.
+[indexterm2 type..ip::icmp] Obtain an identifier for the type of the protocol.
 
   int type() const;
 
@@ -36733,11 +37389,11 @@
 
 
 
-[section:v4 ip::tcp::v4]
+[section:v4 ip::icmp::v4]
 
-Construct to represent the IPv4 TCP protocol.
+[indexterm2 v4..ip::icmp] Construct to represent the IPv4 ICMP protocol.
 
- static tcp v4();
+ static icmp v4();
 
 
 
@@ -36745,11 +37401,11 @@
 
 
 
-[section:v6 ip::tcp::v6]
+[section:v6 ip::icmp::v6]
 
-Construct to represent the IPv6 TCP protocol.
+[indexterm2 v6..ip::icmp] Construct to represent the IPv6 ICMP protocol.
 
- static tcp v6();
+ static icmp v6();
 
 
 
@@ -36759,245 +37415,268 @@
 
 [endsect]
 
-[section:ip__udp ip::udp]
 
-Encapsulates the flags needed for UDP.
+[section:ip__multicast__enable_loopback ip::multicast::enable_loopback]
 
- class udp
+[indexterm1 ip::multicast::enable_loopback] Socket option determining whether outgoing multicast packets will be received on the same socket if it is a member of the multicast group.
 
+ typedef implementation_defined enable_loopback;
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
 
- [[link boost_asio.reference.ip__udp.endpoint [*endpoint]]]
- [The type of a UDP endpoint. ]
-
- ]
+Implements the IPPROTO\_IP/IP\_MULTICAST\_LOOP socket option.
 
- [
 
- [[link boost_asio.reference.ip__udp.resolver [*resolver]]]
- [The UDP resolver type. ]
+[heading Examples]
   
- ]
+Setting the option:
 
- [
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::ip::multicast::enable_loopback option(true);
+ socket.set_option(option);
 
- [[link boost_asio.reference.ip__udp.resolver_iterator [*resolver_iterator]]]
- [The type of a resolver iterator. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.ip__udp.resolver_query [*resolver_query]]]
- [The type of a resolver query. ]
-
- ]
 
- [
+Getting the current option value:
 
- [[link boost_asio.reference.ip__udp.socket [*socket]]]
- [The UDP socket type. ]
-
- ]
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::ip::multicast::enable_loopback option;
+ socket.get_option(option);
+ bool is_set = option.value();
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ip__udp.family [*family]]]
- [Obtain an identifier for the protocol family. ]
- ]
-
- [
- [[link boost_asio.reference.ip__udp.protocol [*protocol]]]
- [Obtain an identifier for the protocol. ]
- ]
-
- [
- [[link boost_asio.reference.ip__udp.type [*type]]]
- [Obtain an identifier for the type of the protocol. ]
- ]
-
- [
- [[link boost_asio.reference.ip__udp.v4 [*v4]]]
- [Construct to represent the IPv4 UDP protocol. ]
- ]
-
- [
- [[link boost_asio.reference.ip__udp.v6 [*v6]]]
- [Construct to represent the IPv6 UDP protocol. ]
- ]
-
-]
 
-[heading Friends]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ip__udp.operator_not__eq_ [*operator!=]]]
- [Compare two protocols for inequality. ]
- ]
-
- [
- [[link boost_asio.reference.ip__udp.operator_eq__eq_ [*operator==]]]
- [Compare two protocols for equality. ]
- ]
+
+[endsect]
+
+
+
+[section:ip__multicast__hops ip::multicast::hops]
+
+[indexterm1 ip::multicast::hops] Socket option for time-to-live associated with outgoing multicast packets.
+
+ typedef implementation_defined hops;
+
+
+
+Implements the IPPROTO\_IP/IP\_MULTICAST\_TTL socket option.
+
+
+[heading Examples]
   
-]
+Setting the option:
 
-The
-[link boost_asio.reference.ip__udp ip::udp] class contains flags necessary for UDP sockets.
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::ip::multicast::hops option(4);
+ socket.set_option(option);
 
 
-[heading Thread Safety]
+
+
+Getting the current option value:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::ip::multicast::hops option;
+ socket.get_option(option);
+ int ttl = option.value();
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:ip__multicast__join_group ip::multicast::join_group]
+
+[indexterm1 ip::multicast::join_group] Socket option to join a multicast group on a specified interface.
+
+ typedef implementation_defined join_group;
+
+
+
+Implements the IPPROTO\_IP/IP\_ADD\_MEMBERSHIP socket option.
+
+
+[heading Examples]
   
-[*Distinct] [*objects:] Safe.
+Setting the option to join a multicast group:
 
-[*Shared] [*objects:] Safe.
+ 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);
 
 
 
-[section:endpoint ip::udp::endpoint]
 
-The type of a UDP endpoint.
 
- typedef basic_endpoint< udp > endpoint;
 
+[endsect]
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
 
- [[link boost_asio.reference.ip__basic_endpoint.data_type [*data_type]]]
- [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+[section:ip__multicast__leave_group ip::multicast::leave_group]
+
+[indexterm1 ip::multicast::leave_group] Socket option to leave a multicast group on a specified interface.
+
+ typedef implementation_defined leave_group;
+
+
+
+Implements the IPPROTO\_IP/IP\_DROP\_MEMBERSHIP socket option.
+
+
+[heading Examples]
   
- ]
+Setting the option to leave a multicast group:
 
- [
+ 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);
 
- [[link boost_asio.reference.ip__basic_endpoint.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint. ]
+
+
+
+
+
+[endsect]
+
+
+
+[section:ip__multicast__outbound_interface ip::multicast::outbound_interface]
+
+[indexterm1 ip::multicast::outbound_interface] Socket option for local interface to use for outgoing multicast packets.
+
+ typedef implementation_defined outbound_interface;
+
+
+
+Implements the IPPROTO\_IP/IP\_MULTICAST\_IF socket option.
+
+
+[heading Examples]
   
- ]
+Setting the option:
 
-]
+ 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);
 
-[heading Member Functions]
+
+
+
+
+
+[endsect]
+
+
+[section:ip__resolver_query_base ip::resolver_query_base]
+
+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
+
+
+[heading Protected Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_endpoint.address [*address]]]
- [Get the IP address associated with the endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.basic_endpoint [*basic_endpoint]]]
- [Default constructor. ]
+ [[link boost_asio.reference.ip__resolver_query_base._resolver_query_base [*~resolver_query_base]]]
+ [Protected destructor to prevent deletion through this type. ]
   ]
   
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.ip__basic_endpoint.capacity [*capacity]]]
- [Get the capacity of the endpoint in the native type. ]
+ [[link boost_asio.reference.ip__resolver_query_base.address_configured [*address_configured]]]
+ [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. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_endpoint.data [*data]]]
- [Get the underlying endpoint in the native type. ]
+ [[link boost_asio.reference.ip__resolver_query_base.all_matching [*all_matching]]]
+ [If used with v4_mapped, return all matching IPv6 and IPv4 addresses. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_endpoint.operator_eq_ [*operator=]]]
- [Assign from another endpoint. ]
+ [[link boost_asio.reference.ip__resolver_query_base.canonical_name [*canonical_name]]]
+ [Determine the canonical name of the host specified in the query. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_endpoint.port [*port]]]
- [Get the port associated with the endpoint. The port number is always in the host's byte order. ]
+ [[link boost_asio.reference.ip__resolver_query_base.numeric_host [*numeric_host]]]
+ [Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_endpoint.protocol [*protocol]]]
- [The protocol associated with the endpoint. ]
+ [[link boost_asio.reference.ip__resolver_query_base.numeric_service [*numeric_service]]]
+ [Service name should be treated as a numeric string defining a port number and no name resolution should be attempted. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_endpoint.resize [*resize]]]
- [Set the underlying size of the endpoint in the native type. ]
+ [[link boost_asio.reference.ip__resolver_query_base.passive [*passive]]]
+ [Indicate that returned endpoint is intended for use as a locally bound socket endpoint. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_endpoint.size [*size]]]
- [Get the underlying size of the endpoint in the native type. ]
+ [[link boost_asio.reference.ip__resolver_query_base.v4_mapped [*v4_mapped]]]
+ [If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses. ]
   ]
-
+
 ]
 
-[heading Friends]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ip__basic_endpoint.operator_not__eq_ [*operator!=]]]
- [Compare two endpoints for inequality. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.operator_lt_ [*operator<]]]
- [Compare endpoints for ordering. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_endpoint.operator_eq__eq_ [*operator==]]]
- [Compare two endpoints for equality. ]
- ]
-
-]
+[section:address_configured ip::resolver_query_base::address_configured]
 
-[heading Related Functions]
-[table
- [[Name][Description]]
+[indexterm2 address_configured..ip::resolver_query_base] 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.
 
- [
- [[link boost_asio.reference.ip__basic_endpoint.operator_lt__lt_ [*operator<<]]]
- [Output an endpoint as a string. ]
- ]
-
-]
+ static const int address_configured = implementation_defined;
 
-The
-[link boost_asio.reference.ip__basic_endpoint ip::basic_endpoint] class template describes an endpoint that may be associated with a particular socket.
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+[endsect]
 
-[*Shared] [*objects:] Unsafe.
 
 
+[section:all_matching ip::resolver_query_base::all_matching]
+
+[indexterm2 all_matching..ip::resolver_query_base] If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
+
+ static const int all_matching = implementation_defined;
+
 
 
 [endsect]
 
 
 
-[section:family ip::udp::family]
+[section:canonical_name ip::resolver_query_base::canonical_name]
 
-Obtain an identifier for the protocol family.
+[indexterm2 canonical_name..ip::resolver_query_base] Determine the canonical name of the host specified in the query.
 
- int family() const;
+ static const int canonical_name = implementation_defined;
 
 
 
@@ -37005,13 +37684,11 @@
 
 
 
-[section:operator_not__eq_ ip::udp::operator!=]
+[section:numeric_host ip::resolver_query_base::numeric_host]
 
-Compare two protocols for inequality.
+[indexterm2 numeric_host..ip::resolver_query_base] Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted.
 
- friend bool operator!=(
- const udp & p1,
- const udp & p2);
+ static const int numeric_host = implementation_defined;
 
 
 
@@ -37019,13 +37696,11 @@
 
 
 
-[section:operator_eq__eq_ ip::udp::operator==]
+[section:numeric_service ip::resolver_query_base::numeric_service]
 
-Compare two protocols for equality.
+[indexterm2 numeric_service..ip::resolver_query_base] Service name should be treated as a numeric string defining a port number and no name resolution should be attempted.
 
- friend bool operator==(
- const udp & p1,
- const udp & p2);
+ static const int numeric_service = implementation_defined;
 
 
 
@@ -37033,11 +37708,11 @@
 
 
 
-[section:protocol ip::udp::protocol]
+[section:passive ip::resolver_query_base::passive]
 
-Obtain an identifier for the protocol.
+[indexterm2 passive..ip::resolver_query_base] Indicate that returned endpoint is intended for use as a locally bound socket endpoint.
 
- int protocol() const;
+ static const int passive = implementation_defined;
 
 
 
@@ -37045,11 +37720,40 @@
 
 
 
-[section:resolver ip::udp::resolver]
+[section:v4_mapped ip::resolver_query_base::v4_mapped]
 
-The UDP resolver type.
+[indexterm2 v4_mapped..ip::resolver_query_base] If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses.
 
- typedef basic_resolver< udp > resolver;
+ static const int v4_mapped = implementation_defined;
+
+
+
+[endsect]
+
+
+
+[section:_resolver_query_base ip::resolver_query_base::~resolver_query_base]
+
+[indexterm2 ~resolver_query_base..ip::resolver_query_base] Protected destructor to prevent deletion through this type.
+
+ ~resolver_query_base();
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:ip__resolver_service ip::resolver_service]
+
+Default service implementation for a resolver.
+
+ template<
+ typename ``[link boost_asio.reference.InternetProtocol InternetProtocol]``>
+ class resolver_service :
+ public io_service::service
 
 
 [heading Types]
@@ -37058,46 +37762,39 @@
 
   [
 
- [[link boost_asio.reference.ip__basic_resolver.endpoint_type [*endpoint_type]]]
+ [[link boost_asio.reference.ip__resolver_service.endpoint_type [*endpoint_type]]]
     [The endpoint type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__basic_resolver.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
+ [[link boost_asio.reference.ip__resolver_service.implementation_type [*implementation_type]]]
+ [The type of a resolver implementation. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__basic_resolver.iterator [*iterator]]]
+ [[link boost_asio.reference.ip__resolver_service.iterator_type [*iterator_type]]]
     [The iterator type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__basic_resolver.protocol_type [*protocol_type]]]
+ [[link boost_asio.reference.ip__resolver_service.protocol_type [*protocol_type]]]
     [The protocol type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ip__basic_resolver.query [*query]]]
+ [[link boost_asio.reference.ip__resolver_service.query_type [*query_type]]]
     [The query type. ]
   
   ]
 
- [
-
- [[link boost_asio.reference.ip__basic_resolver.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
-
 ]
 
 [heading Member Functions]
@@ -37105,121 +37802,342 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_resolver.async_resolve [*async_resolve]]]
+ [[link boost_asio.reference.ip__resolver_service.async_resolve [*async_resolve]]]
     [Asynchronously resolve a query to a list of entries. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver.basic_resolver [*basic_resolver]]]
- [Constructor. ]
+ [[link boost_asio.reference.ip__resolver_service.cancel [*cancel]]]
+ [Cancel pending asynchronous operations. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver.cancel [*cancel]]]
- [Cancel any asynchronous operations that are waiting on the resolver. ]
+ [[link boost_asio.reference.ip__resolver_service.construct [*construct]]]
+ [Construct a new resolver implementation. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
+ [[link boost_asio.reference.ip__resolver_service.destroy [*destroy]]]
+ [Destroy a resolver implementation. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ [[link boost_asio.reference.ip__resolver_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
   ]
   
   [
- [[link boost_asio.reference.ip__basic_resolver.resolve [*resolve]]]
+ [[link boost_asio.reference.ip__resolver_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__resolver_service.resolve [*resolve]]]
     [Resolve a query to a list of entries. ]
   ]
   
+ [
+ [[link boost_asio.reference.ip__resolver_service.resolver_service [*resolver_service]]]
+ [Construct a new resolver service for the specified io_service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__resolver_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
+ ]
+
 ]
 
-[heading Protected Data Members]
+[heading Data Members]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_resolver.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver.service [*service]]]
- [The service associated with the I/O object. ]
+ [[link boost_asio.reference.ip__resolver_service.id [*id]]]
+ [The unique service identifier. ]
   ]
 
 ]
 
-The basic_resolver class template provides the ability to resolve a query to a list of endpoints.
+[section:async_resolve ip::resolver_service::async_resolve]
 
+[indexterm2 async_resolve..ip::resolver_service] Asynchronously resolve a query to a list of entries.
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ void ``[link boost_asio.reference.ip__resolver_service.async_resolve.overload1 async_resolve]``(
+ implementation_type & impl,
+ const query_type & query,
+ Handler handler);
 
-[*Shared] [*objects:] Unsafe.
+ template<
+ typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
+ void ``[link boost_asio.reference.ip__resolver_service.async_resolve.overload2 async_resolve]``(
+ implementation_type & impl,
+ const endpoint_type & endpoint,
+ ResolveHandler handler);
 
 
+[section:overload1 ip::resolver_service::async_resolve (1 of 2 overloads)]
 
+Asynchronously resolve a query to a list of entries.
 
-[endsect]
+ template<
+ typename ``[link boost_asio.reference.Handler Handler]``>
+ void async_resolve(
+ implementation_type & impl,
+ const query_type & query,
+ Handler handler);
 
 
 
-[section:resolver_iterator ip::udp::resolver_iterator]
+[endsect]
 
-The type of a resolver iterator.
 
- typedef basic_resolver_iterator< udp > resolver_iterator;
 
+[section:overload2 ip::resolver_service::async_resolve (2 of 2 overloads)]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+Asynchronously resolve an endpoint to a list of entries.
 
- [
- [[link boost_asio.reference.ip__basic_resolver_iterator.basic_resolver_iterator [*basic_resolver_iterator]]]
- [Default constructor creates an end iterator. ]
- ]
-
- [
- [[link boost_asio.reference.ip__basic_resolver_iterator.create [*create]]]
- [Create an iterator from an addrinfo list returned by getaddrinfo. ]
- ]
-
-]
+ template<
+ typename ``[link boost_asio.reference.ResolveHandler ResolveHandler]``>
+ void async_resolve(
+ implementation_type & impl,
+ const endpoint_type & endpoint,
+ ResolveHandler handler);
 
-The
-[link boost_asio.reference.ip__basic_resolver_iterator 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:
 
- const basic_resolver_entry<InternetProtocol>
+[endsect]
 
 
+[endsect]
 
 
+[section:cancel ip::resolver_service::cancel]
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+[indexterm2 cancel..ip::resolver_service] Cancel pending asynchronous operations.
 
-[*Shared] [*objects:] Unsafe.
+ void cancel(
+ implementation_type & impl);
+
+
+
+[endsect]
 
 
 
+[section:construct ip::resolver_service::construct]
+
+[indexterm2 construct..ip::resolver_service] Construct a new resolver implementation.
+
+ void construct(
+ implementation_type & impl);
+
+
 
 [endsect]
 
 
 
-[section:resolver_query ip::udp::resolver_query]
+[section:destroy ip::resolver_service::destroy]
 
-The type of a resolver query.
+[indexterm2 destroy..ip::resolver_service] Destroy a resolver implementation.
+
+ void destroy(
+ implementation_type & impl);
+
+
+
+[endsect]
+
+
+
+[section:endpoint_type ip::resolver_service::endpoint_type]
+
+[indexterm2 endpoint_type..ip::resolver_service] The endpoint type.
+
+ typedef InternetProtocol::endpoint endpoint_type;
+
+
+
+
+[endsect]
+
+
+
+[section:get_io_service ip::resolver_service::get_io_service]
+
+
+['Inherited from io_service.]
+
+[indexterm2 get_io_service..ip::resolver_service] Get the io_service object that owns the service.
+
+ boost::asio::io_service & get_io_service();
+
+
+
+[endsect]
+
+
+
+[section:id ip::resolver_service::id]
+
+[indexterm2 id..ip::resolver_service] The unique service identifier.
+
+ static boost::asio::io_service::id id;
+
+
+
+[endsect]
+
+
+
+[section:implementation_type ip::resolver_service::implementation_type]
+
+[indexterm2 implementation_type..ip::resolver_service] The type of a resolver implementation.
+
+ typedef implementation_defined implementation_type;
+
+
+
+
+[endsect]
+
+
+
+[section:io_service ip::resolver_service::io_service]
+
+
+['Inherited from io_service.]
+
+[indexterm2 io_service..ip::resolver_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
+
+ boost::asio::io_service & io_service();
+
+
+
+[endsect]
 
- typedef basic_resolver_query< udp > resolver_query;
+
+
+[section:iterator_type ip::resolver_service::iterator_type]
+
+[indexterm2 iterator_type..ip::resolver_service] The iterator type.
+
+ typedef InternetProtocol::resolver_iterator iterator_type;
+
+
+
+
+[endsect]
+
+
+
+[section:protocol_type ip::resolver_service::protocol_type]
+
+[indexterm2 protocol_type..ip::resolver_service] The protocol type.
+
+ typedef InternetProtocol protocol_type;
+
+
+
+
+[endsect]
+
+
+
+[section:query_type ip::resolver_service::query_type]
+
+[indexterm2 query_type..ip::resolver_service] The query type.
+
+ typedef InternetProtocol::resolver_query query_type;
+
+
+
+
+[endsect]
+
+
+[section:resolve ip::resolver_service::resolve]
+
+[indexterm2 resolve..ip::resolver_service] Resolve a query to a list of entries.
+
+ iterator_type ``[link boost_asio.reference.ip__resolver_service.resolve.overload1 resolve]``(
+ implementation_type & impl,
+ const query_type & query,
+ boost::system::error_code & ec);
+
+ iterator_type ``[link boost_asio.reference.ip__resolver_service.resolve.overload2 resolve]``(
+ implementation_type & impl,
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
+
+
+[section:overload1 ip::resolver_service::resolve (1 of 2 overloads)]
+
+Resolve a query to a list of entries.
+
+ iterator_type resolve(
+ implementation_type & impl,
+ const query_type & query,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:overload2 ip::resolver_service::resolve (2 of 2 overloads)]
+
+Resolve an endpoint to a list of entries.
+
+ iterator_type resolve(
+ implementation_type & impl,
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:resolver_service ip::resolver_service::resolver_service]
+
+[indexterm2 resolver_service..ip::resolver_service] Construct a new resolver service for the specified io_service.
+
+ resolver_service(
+ boost::asio::io_service & io_service);
+
+
+
+[endsect]
+
+
+
+[section:shutdown_service ip::resolver_service::shutdown_service]
+
+[indexterm2 shutdown_service..ip::resolver_service] Destroy all user-defined handler objects owned by the service.
+
+ void shutdown_service();
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:ip__tcp ip::tcp]
+
+Encapsulates the flags needed for TCP.
+
+ class tcp
 
 
 [heading Types]
@@ -37228,102 +38146,126 @@
 
   [
 
- [[link boost_asio.reference.ip__basic_resolver_query.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint query. ]
+ [[link boost_asio.reference.ip__tcp.acceptor [*acceptor]]]
+ [The TCP acceptor type. ]
   
   ]
 
-]
+ [
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+ [[link boost_asio.reference.ip__tcp.endpoint [*endpoint]]]
+ [The type of a TCP endpoint. ]
+
+ ]
 
   [
- [[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query [*basic_resolver_query]]]
- [Construct with specified service name for any protocol. ]
- ]
+
+ [[link boost_asio.reference.ip__tcp.iostream [*iostream]]]
+ [The TCP iostream type. ]
   
- [
- [[link boost_asio.reference.ip__basic_resolver_query.hints [*hints]]]
- [Get the hints associated with the query. ]
   ]
+
+ [
+
+ [[link boost_asio.reference.ip__tcp.no_delay [*no_delay]]]
+ [Socket option for disabling the Nagle algorithm. ]
   
+ ]
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.host_name [*host_name]]]
- [Get the host name associated with the query. ]
+
+ [[link boost_asio.reference.ip__tcp.resolver [*resolver]]]
+ [The TCP resolver type. ]
+
   ]
+
+ [
+
+ [[link boost_asio.reference.ip__tcp.resolver_iterator [*resolver_iterator]]]
+ [The type of a resolver iterator. ]
   
+ ]
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.service_name [*service_name]]]
- [Get the service name associated with the query. ]
+
+ [[link boost_asio.reference.ip__tcp.resolver_query [*resolver_query]]]
+ [The type of a resolver query. ]
+
   ]
+
+ [
+
+ [[link boost_asio.reference.ip__tcp.socket [*socket]]]
+ [The TCP socket type. ]
   
+ ]
+
 ]
 
-[heading Data Members]
+[heading Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_resolver_query.address_configured [*address_configured]]]
- [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. ]
+ [[link boost_asio.reference.ip__tcp.family [*family]]]
+ [Obtain an identifier for the protocol family. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.all_matching [*all_matching]]]
- [If used with v4_mapped, return all matching IPv6 and IPv4 addresses. ]
+ [[link boost_asio.reference.ip__tcp.protocol [*protocol]]]
+ [Obtain an identifier for the protocol. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.canonical_name [*canonical_name]]]
- [Determine the canonical name of the host specified in the query. ]
+ [[link boost_asio.reference.ip__tcp.type [*type]]]
+ [Obtain an identifier for the type of the protocol. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.numeric_host [*numeric_host]]]
- [Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted. ]
+ [[link boost_asio.reference.ip__tcp.v4 [*v4]]]
+ [Construct to represent the IPv4 TCP protocol. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.numeric_service [*numeric_service]]]
- [Service name should be treated as a numeric string defining a port number and no name resolution should be attempted. ]
+ [[link boost_asio.reference.ip__tcp.v6 [*v6]]]
+ [Construct to represent the IPv6 TCP protocol. ]
   ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
 
   [
- [[link boost_asio.reference.ip__basic_resolver_query.passive [*passive]]]
- [Indicate that returned endpoint is intended for use as a locally bound socket endpoint. ]
+ [[link boost_asio.reference.ip__tcp.operator_not__eq_ [*operator!=]]]
+ [Compare two protocols for inequality. ]
   ]
-
+
   [
- [[link boost_asio.reference.ip__basic_resolver_query.v4_mapped [*v4_mapped]]]
- [If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses. ]
+ [[link boost_asio.reference.ip__tcp.operator_eq__eq_ [*operator==]]]
+ [Compare two protocols for equality. ]
   ]
-
+
 ]
 
 The
-[link boost_asio.reference.ip__basic_resolver_query ip::basic_resolver_query] class template describes a query that can be passed to a resolver.
+[link boost_asio.reference.ip__tcp ip::tcp] class contains flags necessary for TCP sockets.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
-
-
-
-
-[endsect]
+[*Shared] [*objects:] Safe.
 
 
 
-[section:socket ip::udp::socket]
+[section:acceptor ip::tcp::acceptor]
 
-The UDP socket type.
+[indexterm2 acceptor..ip::tcp] The TCP acceptor type.
 
- typedef basic_datagram_socket< udp > socket;
+ typedef basic_socket_acceptor< tcp > acceptor;
 
 
 [heading Types]
@@ -37332,147 +38274,140 @@
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.broadcast [*broadcast]]]
+ [[link boost_asio.reference.basic_socket_acceptor.broadcast [*broadcast]]]
     [Socket option to permit sending of broadcast messages. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.bytes_readable [*bytes_readable]]]
+ [[link boost_asio.reference.basic_socket_acceptor.bytes_readable [*bytes_readable]]]
     [IO control command to get the amount of data that can be read without blocking. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.debug [*debug]]]
+ [[link boost_asio.reference.basic_socket_acceptor.debug [*debug]]]
     [Socket option to enable socket-level debugging. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.do_not_route [*do_not_route]]]
+ [[link boost_asio.reference.basic_socket_acceptor.do_not_route [*do_not_route]]]
     [Socket option to prevent routing, use local interfaces only. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [[link boost_asio.reference.basic_socket_acceptor.enable_connection_aborted [*enable_connection_aborted]]]
     [Socket option to report aborted connections on accept. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.endpoint_type [*endpoint_type]]]
+ [[link boost_asio.reference.basic_socket_acceptor.endpoint_type [*endpoint_type]]]
     [The endpoint type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.implementation_type [*implementation_type]]]
+ [[link boost_asio.reference.basic_socket_acceptor.implementation_type [*implementation_type]]]
     [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.keep_alive [*keep_alive]]]
+ [[link boost_asio.reference.basic_socket_acceptor.keep_alive [*keep_alive]]]
     [Socket option to send keep-alives. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.linger [*linger]]]
+ [[link boost_asio.reference.basic_socket_acceptor.linger [*linger]]]
     [Socket option to specify whether the socket lingers on close if unsent data is present. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.lowest_layer_type [*lowest_layer_type]]]
- [A basic_socket is always the lowest layer. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.basic_datagram_socket.message_flags [*message_flags]]]
+ [[link boost_asio.reference.basic_socket_acceptor.message_flags [*message_flags]]]
     [Bitmask type for flags that can be passed to send and receive operations. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.native_type [*native_type]]]
- [The native representation of a socket. ]
+ [[link boost_asio.reference.basic_socket_acceptor.native_type [*native_type]]]
+ [The native representation of an acceptor. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.non_blocking_io [*non_blocking_io]]]
+ [[link boost_asio.reference.basic_socket_acceptor.non_blocking_io [*non_blocking_io]]]
     [IO control command to set the blocking mode of the socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.protocol_type [*protocol_type]]]
+ [[link boost_asio.reference.basic_socket_acceptor.protocol_type [*protocol_type]]]
     [The protocol type. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.receive_buffer_size [*receive_buffer_size]]]
+ [[link boost_asio.reference.basic_socket_acceptor.receive_buffer_size [*receive_buffer_size]]]
     [Socket option for the receive buffer size of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.receive_low_watermark [*receive_low_watermark]]]
+ [[link boost_asio.reference.basic_socket_acceptor.receive_low_watermark [*receive_low_watermark]]]
     [Socket option for the receive low watermark. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.reuse_address [*reuse_address]]]
+ [[link boost_asio.reference.basic_socket_acceptor.reuse_address [*reuse_address]]]
     [Socket option to allow the socket to be bound to an address that is already in use. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.send_buffer_size [*send_buffer_size]]]
+ [[link boost_asio.reference.basic_socket_acceptor.send_buffer_size [*send_buffer_size]]]
     [Socket option for the send buffer size of a socket. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.send_low_watermark [*send_low_watermark]]]
+ [[link boost_asio.reference.basic_socket_acceptor.send_low_watermark [*send_low_watermark]]]
     [Socket option for the send low watermark. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.service_type [*service_type]]]
+ [[link boost_asio.reference.basic_socket_acceptor.service_type [*service_type]]]
     [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.shutdown_type [*shutdown_type]]]
+ [[link boost_asio.reference.basic_socket_acceptor.shutdown_type [*shutdown_type]]]
     [Different ways a socket may be shutdown. ]
   
   ]
@@ -37484,202 +38419,278 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_datagram_socket.assign [*assign]]]
- [Assign an existing native socket to the socket. ]
+ [[link boost_asio.reference.basic_socket_acceptor.accept [*accept]]]
+ [Accept a new connection. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
+ [[link boost_asio.reference.basic_socket_acceptor.assign [*assign]]]
+ [Assigns an existing native acceptor to the acceptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.async_receive [*async_receive]]]
- [Start an asynchronous receive on a connected socket. ]
+ [[link boost_asio.reference.basic_socket_acceptor.async_accept [*async_accept]]]
+ [Start an asynchronous accept. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.async_receive_from [*async_receive_from]]]
- [Start an asynchronous receive. ]
+ [[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor [*basic_socket_acceptor]]]
+ [Construct an acceptor without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.async_send [*async_send]]]
- [Start an asynchronous send on a connected socket. ]
+ [[link boost_asio.reference.basic_socket_acceptor.bind [*bind]]]
+ [Bind the acceptor to the given local endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.async_send_to [*async_send_to]]]
- [Start an asynchronous send. ]
+ [[link boost_asio.reference.basic_socket_acceptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the acceptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
+ [[link boost_asio.reference.basic_socket_acceptor.close [*close]]]
+ [Close the acceptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.available [*available]]]
- [Determine the number of bytes available for reading. ]
+ [[link boost_asio.reference.basic_socket_acceptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.basic_datagram_socket [*basic_datagram_socket]]]
- [Construct a basic_datagram_socket without opening it. ]
+ [[link boost_asio.reference.basic_socket_acceptor.get_option [*get_option]]]
+ [Get an option from the acceptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.bind [*bind]]]
- [Bind the socket to the given local endpoint. ]
+ [[link boost_asio.reference.basic_socket_acceptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
+ [[link boost_asio.reference.basic_socket_acceptor.is_open [*is_open]]]
+ [Determine whether the acceptor is open. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.close [*close]]]
- [Close the socket. ]
+ [[link boost_asio.reference.basic_socket_acceptor.listen [*listen]]]
+ [Place the acceptor into the state where it will listen for new connections. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.connect [*connect]]]
- [Connect the socket to the specified endpoint. ]
+ [[link boost_asio.reference.basic_socket_acceptor.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the acceptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
+ [[link boost_asio.reference.basic_socket_acceptor.native [*native]]]
+ [Get the native acceptor representation. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.get_option [*get_option]]]
- [Get an option from the socket. ]
+ [[link boost_asio.reference.basic_socket_acceptor.open [*open]]]
+ [Open the acceptor using the specified protocol. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
+ [[link boost_asio.reference.basic_socket_acceptor.set_option [*set_option]]]
+ [Set an option on the acceptor. ]
   ]
   
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.basic_datagram_socket.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ [[link boost_asio.reference.basic_socket_acceptor.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
   ]
-
+
   [
- [[link boost_asio.reference.basic_datagram_socket.is_open [*is_open]]]
- [Determine whether the socket is open. ]
+ [[link boost_asio.reference.basic_socket_acceptor.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
   ]
-
+
   [
- [[link boost_asio.reference.basic_datagram_socket.local_endpoint [*local_endpoint]]]
- [Get the local endpoint of the socket. ]
+ [[link boost_asio.reference.basic_socket_acceptor.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
   ]
-
+
   [
- [[link boost_asio.reference.basic_datagram_socket.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
+ [[link boost_asio.reference.basic_socket_acceptor.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
   ]
-
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.basic_datagram_socket.native [*native]]]
- [Get the native socket representation. ]
+ [[link boost_asio.reference.basic_socket_acceptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
   ]
-
+
   [
- [[link boost_asio.reference.basic_datagram_socket.open [*open]]]
- [Open the socket using the specified protocol. ]
+ [[link boost_asio.reference.basic_socket_acceptor.service [*service]]]
+ [The service associated with the I/O object. ]
   ]
+
+]
+
+The basic_socket_acceptor class template is used for accepting new socket connections.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+[heading Example]
+
+Opening a socket acceptor with the SO\_REUSEADDR option enabled:
+
+ 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();
+
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:endpoint ip::tcp::endpoint]
+
+[indexterm2 endpoint..ip::tcp] The type of a TCP endpoint.
+
+ typedef basic_endpoint< tcp > endpoint;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
   
+ ]
+
   [
- [[link boost_asio.reference.basic_datagram_socket.receive [*receive]]]
- [Receive some data on a connected socket. ]
+
+ [[link boost_asio.reference.ip__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.address [*address]]]
+ [Get the IP address associated with the endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.receive_from [*receive_from]]]
- [Receive a datagram with the endpoint of the sender. ]
+ [[link boost_asio.reference.ip__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint of the socket. ]
+ [[link boost_asio.reference.ip__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.send [*send]]]
- [Send some data on a connected socket. ]
+ [[link boost_asio.reference.ip__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.send_to [*send_to]]]
- [Send a datagram to the specified endpoint. ]
+ [[link boost_asio.reference.ip__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.set_option [*set_option]]]
- [Set an option on the socket. ]
+ [[link boost_asio.reference.ip__basic_endpoint.port [*port]]]
+ [Get the port associated with the endpoint. The port number is always in the host's byte order. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
+ [[link boost_asio.reference.ip__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
   ]
   
 ]
 
-[heading Data Members]
+[heading Friends]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_datagram_socket.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
+ [[link boost_asio.reference.ip__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
   ]
-
+
   [
- [[link boost_asio.reference.basic_datagram_socket.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
+ [[link boost_asio.reference.ip__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
   ]
-
+
   [
- [[link boost_asio.reference.basic_datagram_socket.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
+ [[link boost_asio.reference.ip__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
   ]
-
+
 ]
 
-[heading Protected Data Members]
+[heading Related Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_datagram_socket.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.service [*service]]]
- [The service associated with the I/O object. ]
+ [[link boost_asio.reference.ip__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
   ]
-
+
 ]
 
-The basic_datagram_socket class template provides asynchronous and blocking datagram-oriented socket functionality.
+The
+[link boost_asio.reference.ip__basic_endpoint ip::basic_endpoint] class template describes an endpoint that may be associated with a particular socket.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[*Shared] [*objects:] Unsafe.
 
 
 
@@ -37688,11 +38699,11 @@
 
 
 
-[section:type ip::udp::type]
+[section:family ip::tcp::family]
 
-Obtain an identifier for the type of the protocol.
+[indexterm2 family..ip::tcp] Obtain an identifier for the protocol family.
 
- int type() const;
+ int family() const;
 
 
 
@@ -37700,23 +38711,38 @@
 
 
 
-[section:v4 ip::udp::v4]
-
-Construct to represent the IPv4 UDP protocol.
-
- static udp v4();
-
-
-
-[endsect]
+[section:iostream ip::tcp::iostream]
 
+[indexterm2 iostream..ip::tcp] The TCP iostream type.
 
+ typedef basic_socket_iostream< tcp > iostream;
 
-[section:v6 ip::udp::v6]
 
-Construct to represent the IPv6 UDP protocol.
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
- static udp v6();
+ [
+ [[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream [*basic_socket_iostream]]]
+ [Construct a basic_socket_iostream without establishing a connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.close [*close]]]
+ [Close the connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.connect [*connect]]]
+ [Establish a connection to an endpoint corresponding to a resolver query. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.rdbuf [*rdbuf]]]
+ [Return a pointer to the underlying streambuf. ]
+ ]
+
+]
 
 
 
@@ -37724,27 +38750,24 @@
 
 
 
-[endsect]
-
-
-[section:ip__unicast__hops ip::unicast::hops]
+[section:no_delay ip::tcp::no_delay]
 
-Socket option for time-to-live associated with outgoing unicast packets.
+[indexterm2 no_delay..ip::tcp] Socket option for disabling the Nagle algorithm.
 
- typedef implementation_defined hops;
+ typedef implementation_defined no_delay;
 
 
 
-Implements the IPPROTO\_IP/IP\_UNICAST\_TTL socket option.
+Implements the IPPROTO\_TCP/TCP\_NODELAY socket option.
 
 
 [heading Examples]
   
 Setting the option:
 
- boost::asio::ip::udp::socket socket(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::ip::unicast::hops option(4);
+ boost::asio::ip::tcp::no_delay option(true);
    socket.set_option(option);
 
 
@@ -37752,11 +38775,11 @@
 
 Getting the current option value:
 
- boost::asio::ip::udp::socket socket(io_service);
+ boost::asio::ip::tcp::socket socket(io_service);
    ...
- boost::asio::ip::unicast::hops option;
+ boost::asio::ip::tcp::no_delay option;
    socket.get_option(option);
- int ttl = option.value();
+ bool is_set = option.value();
 
 
 
@@ -37767,122 +38790,221 @@
 
 
 
-[section:ip__v6_only ip::v6_only]
+[section:operator_not__eq_ ip::tcp::operator!=]
 
-Socket option for determining whether an IPv6 socket supports IPv6 communication only.
+[indexterm2 operator!=..ip::tcp] Compare two protocols for inequality.
 
- typedef implementation_defined v6_only;
+ friend bool operator!=(
+ const tcp & p1,
+ const tcp & p2);
 
 
 
-Implements the IPPROTO\_IPV6/IP\_V6ONLY socket option.
+[endsect]
 
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::ip::v6_only option(true);
- socket.set_option(option);
+[section:operator_eq__eq_ ip::tcp::operator==]
+
+[indexterm2 operator==..ip::tcp] Compare two protocols for equality.
+
+ friend bool operator==(
+ const tcp & p1,
+ const tcp & p2);
 
 
 
+[endsect]
 
-Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::ip::v6_only option;
- socket.get_option(option);
- bool v6_only = option.value();
 
+[section:protocol ip::tcp::protocol]
 
+[indexterm2 protocol..ip::tcp] Obtain an identifier for the protocol.
 
+ int protocol() const;
 
 
 
 [endsect]
 
 
-[section:is_read_buffered is_read_buffered]
 
-The is_read_buffered class is a traits class that may be used to determine whether a stream type supports buffering of read data.
+[section:resolver ip::tcp::resolver]
 
- template<
- typename Stream>
- class is_read_buffered
+[indexterm2 resolver..ip::tcp] The TCP resolver type.
 
+ typedef basic_resolver< tcp > resolver;
 
-[heading Data Members]
+
+[heading Types]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.is_read_buffered.value [*value]]]
- [The value member is true only if the Stream type supports buffering of read data. ]
+
+ [[link boost_asio.reference.ip__basic_resolver.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.iterator [*iterator]]]
+ [The iterator type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.query [*query]]]
+ [The query type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
   ]
 
 ]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[section:value is_read_buffered::value]
+ [
+ [[link boost_asio.reference.ip__basic_resolver.async_resolve [*async_resolve]]]
+ [Asynchronously resolve a query to a list of entries. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.basic_resolver [*basic_resolver]]]
+ [Constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.cancel [*cancel]]]
+ [Cancel any asynchronous operations that are waiting on the resolver. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.resolve [*resolve]]]
+ [Resolve a query to a list of entries. ]
+ ]
+
+]
 
-The value member is true only if the Stream type supports buffering of read data.
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
 
- static const bool value;
+ [
+ [[link boost_asio.reference.ip__basic_resolver.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
 
+ [
+ [[link boost_asio.reference.ip__basic_resolver.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
 
+]
+
+The basic_resolver class template provides the ability to resolve a query to a list of endpoints.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
 
-[endsect]
 
 
 
 [endsect]
 
-[section:is_write_buffered is_write_buffered]
 
-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
+[section:resolver_iterator ip::tcp::resolver_iterator]
 
+[indexterm2 resolver_iterator..ip::tcp] The type of a resolver iterator.
 
-[heading Data Members]
+ typedef basic_resolver_iterator< tcp > resolver_iterator;
+
+
+[heading Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.is_write_buffered.value [*value]]]
- [The value member is true only if the Stream type supports buffering of written data. ]
+ [[link boost_asio.reference.ip__basic_resolver_iterator.basic_resolver_iterator [*basic_resolver_iterator]]]
+ [Default constructor creates an end iterator. ]
   ]
-
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.create [*create]]]
+ [Create an iterator from an addrinfo list returned by getaddrinfo. ]
+ ]
+
 ]
 
+The
+[link boost_asio.reference.ip__basic_resolver_iterator 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:
 
-[section:value is_write_buffered::value]
+ const basic_resolver_entry<InternetProtocol>
 
-The value member is true only if the Stream type supports buffering of written data.
 
- static const bool value;
 
 
 
-[endsect]
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
 
 
 
 [endsect]
 
-[section:local__basic_endpoint local::basic_endpoint]
 
-Describes an endpoint for a UNIX socket.
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``>
- class basic_endpoint
+[section:resolver_query ip::tcp::resolver_query]
+
+[indexterm2 resolver_query..ip::tcp] The type of a resolver query.
+
+ typedef basic_resolver_query< tcp > resolver_query;
 
 
 [heading Types]
@@ -37891,15 +39013,8 @@
 
   [
 
- [[link boost_asio.reference.local__basic_endpoint.data_type [*data_type]]]
- [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.local__basic_endpoint.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint query. ]
   
   ]
 
@@ -37910,124 +39025,4106 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.local__basic_endpoint.basic_endpoint [*basic_endpoint]]]
- [Default constructor. ]
- ]
-
- [
- [[link boost_asio.reference.local__basic_endpoint.capacity [*capacity]]]
- [Get the capacity of the endpoint in the native type. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query [*basic_resolver_query]]]
+ [Construct with specified service name for any protocol. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.data [*data]]]
- [Get the underlying endpoint in the native type. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.hints [*hints]]]
+ [Get the hints associated with the query. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.operator_eq_ [*operator=]]]
- [Assign from another endpoint. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.host_name [*host_name]]]
+ [Get the host name associated with the query. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.path [*path]]]
- [Get the path associated with the endpoint. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.service_name [*service_name]]]
+ [Get the service name associated with the query. ]
   ]
   
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.local__basic_endpoint.protocol [*protocol]]]
- [The protocol associated with the endpoint. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.address_configured [*address_configured]]]
+ [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. ]
   ]
-
+
   [
- [[link boost_asio.reference.local__basic_endpoint.resize [*resize]]]
- [Set the underlying size of the endpoint in the native type. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.all_matching [*all_matching]]]
+ [If used with v4_mapped, return all matching IPv6 and IPv4 addresses. ]
   ]
-
+
   [
- [[link boost_asio.reference.local__basic_endpoint.size [*size]]]
- [Get the underlying size of the endpoint in the native type. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.canonical_name [*canonical_name]]]
+ [Determine the canonical name of the host specified in the query. ]
   ]
-
-]
-
-[heading Friends]
-[table
- [[Name][Description]]
 
   [
- [[link boost_asio.reference.local__basic_endpoint.operator_not__eq_ [*operator!=]]]
- [Compare two endpoints for inequality. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.numeric_host [*numeric_host]]]
+ [Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted. ]
   ]
-
+
   [
- [[link boost_asio.reference.local__basic_endpoint.operator_lt_ [*operator<]]]
- [Compare endpoints for ordering. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.numeric_service [*numeric_service]]]
+ [Service name should be treated as a numeric string defining a port number and no name resolution should be attempted. ]
   ]
-
+
   [
- [[link boost_asio.reference.local__basic_endpoint.operator_eq__eq_ [*operator==]]]
- [Compare two endpoints for equality. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.passive [*passive]]]
+ [Indicate that returned endpoint is intended for use as a locally bound socket endpoint. ]
   ]
-
-]
-
-[heading Related Functions]
-[table
- [[Name][Description]]
 
   [
- [[link boost_asio.reference.local__basic_endpoint.operator_lt__lt_ [*operator<<]]]
- [Output an endpoint as a string. ]
+ [[link boost_asio.reference.ip__basic_resolver_query.v4_mapped [*v4_mapped]]]
+ [If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses. ]
   ]
-
+
 ]
 
 The
-[link boost_asio.reference.local__basic_endpoint local::basic_endpoint] class template describes an endpoint that may be associated with a particular UNIX socket.
+[link boost_asio.reference.ip__basic_resolver_query ip::basic_resolver_query] class template describes a query that can be passed to a resolver.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[*Shared] [*objects:] Unsafe.
 
 
-[section:basic_endpoint local::basic_endpoint::basic_endpoint]
 
-Default constructor.
 
- ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload1 basic_endpoint]``();
+[endsect]
 
- ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload2 basic_endpoint]``(
- const char * path);
 
- ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload3 basic_endpoint]``(
- const std::string & path);
 
- ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload4 basic_endpoint]``(
- const basic_endpoint & other);
+[section:socket ip::tcp::socket]
 
+[indexterm2 socket..ip::tcp] The TCP socket type.
 
-[section:overload1 local::basic_endpoint::basic_endpoint (1 of 4 overloads)]
+ typedef basic_stream_socket< tcp > socket;
 
-Default constructor.
 
- basic_endpoint();
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
+ [[link boost_asio.reference.basic_stream_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
 
-[endsect]
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.native_type [*native_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_send [*async_send]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.basic_stream_socket [*basic_stream_socket]]]
+ [Construct a basic_stream_socket without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.native [*native]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.read_some [*read_some]]]
+ [Read some data from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.receive [*receive]]]
+ [Receive some data on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.send [*send]]]
+ [Send some data on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.write_some [*write_some]]]
+ [Write some data to the socket. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The basic_stream_socket class template provides asynchronous and blocking stream-oriented socket functionality.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:type ip::tcp::type]
+
+[indexterm2 type..ip::tcp] Obtain an identifier for the type of the protocol.
+
+ int type() const;
+
+
+
+[endsect]
+
+
+
+[section:v4 ip::tcp::v4]
+
+[indexterm2 v4..ip::tcp] Construct to represent the IPv4 TCP protocol.
+
+ static tcp v4();
+
+
+
+[endsect]
+
+
+
+[section:v6 ip::tcp::v6]
+
+[indexterm2 v6..ip::tcp] Construct to represent the IPv6 TCP protocol.
+
+ static tcp v6();
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:ip__udp ip::udp]
+
+Encapsulates the flags needed for UDP.
+
+ class udp
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.ip__udp.endpoint [*endpoint]]]
+ [The type of a UDP endpoint. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__udp.resolver [*resolver]]]
+ [The UDP resolver type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__udp.resolver_iterator [*resolver_iterator]]]
+ [The type of a resolver iterator. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__udp.resolver_query [*resolver_query]]]
+ [The type of a resolver query. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__udp.socket [*socket]]]
+ [The UDP socket type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__udp.family [*family]]]
+ [Obtain an identifier for the protocol family. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__udp.protocol [*protocol]]]
+ [Obtain an identifier for the protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__udp.type [*type]]]
+ [Obtain an identifier for the type of the protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__udp.v4 [*v4]]]
+ [Construct to represent the IPv4 UDP protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__udp.v6 [*v6]]]
+ [Construct to represent the IPv6 UDP protocol. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__udp.operator_not__eq_ [*operator!=]]]
+ [Compare two protocols for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__udp.operator_eq__eq_ [*operator==]]]
+ [Compare two protocols for equality. ]
+ ]
+
+]
+
+The
+[link boost_asio.reference.ip__udp ip::udp] class contains flags necessary for UDP sockets.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Safe.
+
+
+
+[section:endpoint ip::udp::endpoint]
+
+[indexterm2 endpoint..ip::udp] The type of a UDP endpoint.
+
+ typedef basic_endpoint< udp > endpoint;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.address [*address]]]
+ [Get the IP address associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.port [*port]]]
+ [Get the port associated with the endpoint. The port number is always in the host's byte order. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
+ ]
+
+]
+
+The
+[link boost_asio.reference.ip__basic_endpoint ip::basic_endpoint] class template describes an endpoint that may be associated with a particular socket.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:family ip::udp::family]
+
+[indexterm2 family..ip::udp] Obtain an identifier for the protocol family.
+
+ int family() const;
+
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ ip::udp::operator!=]
+
+[indexterm2 operator!=..ip::udp] Compare two protocols for inequality.
+
+ friend bool operator!=(
+ const udp & p1,
+ const udp & p2);
+
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ ip::udp::operator==]
+
+[indexterm2 operator==..ip::udp] Compare two protocols for equality.
+
+ friend bool operator==(
+ const udp & p1,
+ const udp & p2);
+
+
+
+[endsect]
+
+
+
+[section:protocol ip::udp::protocol]
+
+[indexterm2 protocol..ip::udp] Obtain an identifier for the protocol.
+
+ int protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:resolver ip::udp::resolver]
+
+[indexterm2 resolver..ip::udp] The UDP resolver type.
+
+ typedef basic_resolver< udp > resolver;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.iterator [*iterator]]]
+ [The iterator type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.query [*query]]]
+ [The query type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.async_resolve [*async_resolve]]]
+ [Asynchronously resolve a query to a list of entries. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.basic_resolver [*basic_resolver]]]
+ [Constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.cancel [*cancel]]]
+ [Cancel any asynchronous operations that are waiting on the resolver. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.resolve [*resolve]]]
+ [Resolve a query to a list of entries. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The basic_resolver class template provides the ability to resolve a query to a list of endpoints.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:resolver_iterator ip::udp::resolver_iterator]
+
+[indexterm2 resolver_iterator..ip::udp] The type of a resolver iterator.
+
+ typedef basic_resolver_iterator< udp > resolver_iterator;
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.basic_resolver_iterator [*basic_resolver_iterator]]]
+ [Default constructor creates an end iterator. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_iterator.create [*create]]]
+ [Create an iterator from an addrinfo list returned by getaddrinfo. ]
+ ]
+
+]
+
+The
+[link boost_asio.reference.ip__basic_resolver_iterator 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:
+
+ const basic_resolver_entry<InternetProtocol>
+
+
+
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:resolver_query ip::udp::resolver_query]
+
+[indexterm2 resolver_query..ip::udp] The type of a resolver query.
+
+ typedef basic_resolver_query< udp > resolver_query;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.ip__basic_resolver_query.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint query. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.basic_resolver_query [*basic_resolver_query]]]
+ [Construct with specified service name for any protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.hints [*hints]]]
+ [Get the hints associated with the query. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.host_name [*host_name]]]
+ [Get the host name associated with the query. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.service_name [*service_name]]]
+ [Get the service name associated with the query. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.address_configured [*address_configured]]]
+ [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. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.all_matching [*all_matching]]]
+ [If used with v4_mapped, return all matching IPv6 and IPv4 addresses. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.canonical_name [*canonical_name]]]
+ [Determine the canonical name of the host specified in the query. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.numeric_host [*numeric_host]]]
+ [Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.numeric_service [*numeric_service]]]
+ [Service name should be treated as a numeric string defining a port number and no name resolution should be attempted. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.passive [*passive]]]
+ [Indicate that returned endpoint is intended for use as a locally bound socket endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ip__basic_resolver_query.v4_mapped [*v4_mapped]]]
+ [If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses. ]
+ ]
+
+]
+
+The
+[link boost_asio.reference.ip__basic_resolver_query ip::basic_resolver_query] class template describes a query that can be passed to a resolver.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:socket ip::udp::socket]
+
+[indexterm2 socket..ip::udp] The UDP socket type.
+
+ typedef basic_datagram_socket< udp > socket;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.native_type [*native_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_receive_from [*async_receive_from]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_send [*async_send]]]
+ [Start an asynchronous send on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_send_to [*async_send_to]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.basic_datagram_socket [*basic_datagram_socket]]]
+ [Construct a basic_datagram_socket without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.native [*native]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.receive [*receive]]]
+ [Receive some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.receive_from [*receive_from]]]
+ [Receive a datagram with the endpoint of the sender. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.send [*send]]]
+ [Send some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.send_to [*send_to]]]
+ [Send a datagram to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The basic_datagram_socket class template provides asynchronous and blocking datagram-oriented socket functionality.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:type ip::udp::type]
+
+[indexterm2 type..ip::udp] Obtain an identifier for the type of the protocol.
+
+ int type() const;
+
+
+
+[endsect]
+
+
+
+[section:v4 ip::udp::v4]
+
+[indexterm2 v4..ip::udp] Construct to represent the IPv4 UDP protocol.
+
+ static udp v4();
+
+
+
+[endsect]
+
+
+
+[section:v6 ip::udp::v6]
+
+[indexterm2 v6..ip::udp] Construct to represent the IPv6 UDP protocol.
+
+ static udp v6();
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+
+[section:ip__unicast__hops ip::unicast::hops]
+
+[indexterm1 ip::unicast::hops] Socket option for time-to-live associated with outgoing unicast packets.
+
+ typedef implementation_defined hops;
+
+
+
+Implements the IPPROTO\_IP/IP\_UNICAST\_TTL socket option.
+
+
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::ip::unicast::hops option(4);
+ socket.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::ip::unicast::hops option;
+ socket.get_option(option);
+ int ttl = option.value();
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:ip__v6_only ip::v6_only]
+
+[indexterm1 ip::v6_only] Socket option for determining whether an IPv6 socket supports IPv6 communication only.
+
+ typedef implementation_defined v6_only;
+
+
+
+Implements the IPPROTO\_IPV6/IP\_V6ONLY socket option.
+
+
+[heading Examples]
+
+Setting the option:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::ip::v6_only option(true);
+ socket.set_option(option);
+
+
+
+
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::ip::v6_only option;
+ socket.get_option(option);
+ bool v6_only = option.value();
+
+
+
+
+
+
+[endsect]
+
+
+[section:is_match_condition is_match_condition]
+
+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
+
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.is_match_condition.value [*value]]]
+ [The value member is true if the type may be used as a match condition. ]
+ ]
+
+]
+
+
+[section:value is_match_condition::value]
+
+[indexterm2 value..is_match_condition] The value member is true if the type may be used as a match condition.
+
+ static const bool value;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:is_read_buffered is_read_buffered]
+
+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
+
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.is_read_buffered.value [*value]]]
+ [The value member is true only if the Stream type supports buffering of read data. ]
+ ]
+
+]
+
+
+[section:value is_read_buffered::value]
+
+[indexterm2 value..is_read_buffered] The value member is true only if the Stream type supports buffering of read data.
+
+ static const bool value;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:is_write_buffered is_write_buffered]
+
+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
+
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.is_write_buffered.value [*value]]]
+ [The value member is true only if the Stream type supports buffering of written data. ]
+ ]
+
+]
+
+
+[section:value is_write_buffered::value]
+
+[indexterm2 value..is_write_buffered] The value member is true only if the Stream type supports buffering of written data.
+
+ static const bool value;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:local__basic_endpoint local::basic_endpoint]
+
+Describes an endpoint for a UNIX socket.
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ class basic_endpoint
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.local__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.path [*path]]]
+ [Get the path associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
+ ]
+
+]
+
+The
+[link boost_asio.reference.local__basic_endpoint local::basic_endpoint] class template describes an endpoint that may be associated with a particular UNIX socket.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+[section:basic_endpoint local::basic_endpoint::basic_endpoint]
+
+[indexterm2 basic_endpoint..local::basic_endpoint] Default constructor.
+
+ ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload1 basic_endpoint]``();
+
+ ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload2 basic_endpoint]``(
+ const char * path);
+
+ ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload3 basic_endpoint]``(
+ const std::string & path);
+
+ ``[link boost_asio.reference.local__basic_endpoint.basic_endpoint.overload4 basic_endpoint]``(
+ const basic_endpoint & other);
+
+
+[section:overload1 local::basic_endpoint::basic_endpoint (1 of 4 overloads)]
+
+Default constructor.
+
+ basic_endpoint();
+
+
+
+[endsect]
 
 
 
 [section:overload2 local::basic_endpoint::basic_endpoint (2 of 4 overloads)]
 
-Construct an endpoint using the specified path name.
+Construct an endpoint using the specified path name.
+
+ basic_endpoint(
+ const char * path);
+
+
+
+[endsect]
+
+
+
+[section:overload3 local::basic_endpoint::basic_endpoint (3 of 4 overloads)]
+
+Construct an endpoint using the specified path name.
+
+ basic_endpoint(
+ const std::string & path);
+
+
+
+[endsect]
+
+
+
+[section:overload4 local::basic_endpoint::basic_endpoint (4 of 4 overloads)]
+
+Copy constructor.
+
+ basic_endpoint(
+ const basic_endpoint & other);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:capacity local::basic_endpoint::capacity]
+
+[indexterm2 capacity..local::basic_endpoint] Get the capacity of the endpoint in the native type.
+
+ std::size_t capacity() const;
+
+
+
+[endsect]
+
+
+[section:data local::basic_endpoint::data]
+
+[indexterm2 data..local::basic_endpoint] Get the underlying endpoint in the native type.
+
+ data_type * ``[link boost_asio.reference.local__basic_endpoint.data.overload1 data]``();
+
+ const data_type * ``[link boost_asio.reference.local__basic_endpoint.data.overload2 data]``() const;
+
+
+[section:overload1 local::basic_endpoint::data (1 of 2 overloads)]
+
+Get the underlying endpoint in the native type.
+
+ data_type * data();
+
+
+
+[endsect]
+
+
+
+[section:overload2 local::basic_endpoint::data (2 of 2 overloads)]
+
+Get the underlying endpoint in the native type.
+
+ const data_type * data() const;
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:data_type local::basic_endpoint::data_type]
+
+[indexterm2 data_type..local::basic_endpoint] The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer.
+
+ typedef implementation_defined data_type;
+
+
+
+
+[endsect]
+
+
+
+[section:operator_not__eq_ local::basic_endpoint::operator!=]
+
+[indexterm2 operator!=..local::basic_endpoint] Compare two endpoints for inequality.
+
+ friend bool operator!=(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
+
+
+
+[endsect]
+
+
+
+[section:operator_lt_ local::basic_endpoint::operator<]
+
+[indexterm2 operator<..local::basic_endpoint] Compare endpoints for ordering.
+
+ friend bool operator<(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
+
+
+
+[endsect]
+
+
+
+[section:operator_lt__lt_ local::basic_endpoint::operator<<]
+
+[indexterm2 operator<<..local::basic_endpoint] Output an endpoint as a string.
+
+ std::basic_ostream< Elem, Traits > & operator<<(
+ std::basic_ostream< Elem, Traits > & os,
+ const basic_endpoint< Protocol > & endpoint);
+
+
+Used to output a human-readable string for a specified endpoint.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[os][The output stream to which the string will be written.]]
+
+[[endpoint][The endpoint to be written.]]
+
+]
+
+[heading Return Value]
+
+The output stream.
+
+
+
+[endsect]
+
+
+
+[section:operator_eq_ local::basic_endpoint::operator=]
+
+[indexterm2 operator=..local::basic_endpoint] Assign from another endpoint.
+
+ basic_endpoint & operator=(
+ const basic_endpoint & other);
+
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ local::basic_endpoint::operator==]
+
+[indexterm2 operator==..local::basic_endpoint] Compare two endpoints for equality.
+
+ friend bool operator==(
+ const basic_endpoint< Protocol > & e1,
+ const basic_endpoint< Protocol > & e2);
+
+
+
+[endsect]
+
+
+[section:path local::basic_endpoint::path]
+
+[indexterm2 path..local::basic_endpoint] Get the path associated with the endpoint.
+
+ std::string ``[link boost_asio.reference.local__basic_endpoint.path.overload1 path]``() const;
+
+ void ``[link boost_asio.reference.local__basic_endpoint.path.overload2 path]``(
+ const char * p);
+
+ void ``[link boost_asio.reference.local__basic_endpoint.path.overload3 path]``(
+ const std::string & p);
+
+
+[section:overload1 local::basic_endpoint::path (1 of 3 overloads)]
+
+Get the path associated with the endpoint.
+
+ std::string path() const;
+
+
+
+[endsect]
+
+
+
+[section:overload2 local::basic_endpoint::path (2 of 3 overloads)]
+
+Set the path associated with the endpoint.
+
+ void path(
+ const char * p);
+
+
+
+[endsect]
+
+
+
+[section:overload3 local::basic_endpoint::path (3 of 3 overloads)]
+
+Set the path associated with the endpoint.
+
+ void path(
+ const std::string & p);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:protocol local::basic_endpoint::protocol]
+
+[indexterm2 protocol..local::basic_endpoint] The protocol associated with the endpoint.
+
+ protocol_type protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:protocol_type local::basic_endpoint::protocol_type]
+
+[indexterm2 protocol_type..local::basic_endpoint] The protocol type associated with the endpoint.
+
+ typedef Protocol protocol_type;
+
+
+
+
+[endsect]
+
+
+
+[section:resize local::basic_endpoint::resize]
+
+[indexterm2 resize..local::basic_endpoint] Set the underlying size of the endpoint in the native type.
+
+ void resize(
+ std::size_t size);
+
+
+
+[endsect]
+
+
+
+[section:size local::basic_endpoint::size]
+
+[indexterm2 size..local::basic_endpoint] Get the underlying size of the endpoint in the native type.
+
+ std::size_t size() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:local__connect_pair local::connect_pair]
+
+[indexterm1 local::connect_pair] Create a pair of connected sockets.
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.SocketService SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService2]``>
+ void ``[link boost_asio.reference.local__connect_pair.overload1 connect_pair]``(
+ basic_socket< Protocol, SocketService1 > & socket1,
+ basic_socket< Protocol, SocketService2 > & socket2);
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.SocketService SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService2]``>
+ boost::system::error_code ``[link boost_asio.reference.local__connect_pair.overload2 connect_pair]``(
+ basic_socket< Protocol, SocketService1 > & socket1,
+ basic_socket< Protocol, SocketService2 > & socket2,
+ boost::system::error_code & ec);
+
+
+[section:overload1 local::connect_pair (1 of 2 overloads)]
+
+Create a pair of connected sockets.
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.SocketService SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService2]``>
+ void connect_pair(
+ basic_socket< Protocol, SocketService1 > & socket1,
+ basic_socket< Protocol, SocketService2 > & socket2);
+
+
+
+[endsect]
+
+
+
+[section:overload2 local::connect_pair (2 of 2 overloads)]
+
+Create a pair of connected sockets.
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``,
+ typename ``[link boost_asio.reference.SocketService SocketService1]``,
+ typename ``[link boost_asio.reference.SocketService SocketService2]``>
+ boost::system::error_code connect_pair(
+ basic_socket< Protocol, SocketService1 > & socket1,
+ basic_socket< Protocol, SocketService2 > & socket2,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:local__datagram_protocol local::datagram_protocol]
+
+Encapsulates the flags needed for datagram-oriented UNIX sockets.
+
+ class datagram_protocol
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.local__datagram_protocol.endpoint [*endpoint]]]
+ [The type of a UNIX domain endpoint. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__datagram_protocol.socket [*socket]]]
+ [The UNIX domain socket type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__datagram_protocol.family [*family]]]
+ [Obtain an identifier for the protocol family. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__datagram_protocol.protocol [*protocol]]]
+ [Obtain an identifier for the protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__datagram_protocol.type [*type]]]
+ [Obtain an identifier for the type of the protocol. ]
+ ]
+
+]
+
+The
+[link boost_asio.reference.local__datagram_protocol local::datagram_protocol] class contains flags necessary for datagram-oriented UNIX domain sockets.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Safe.
+
+
+
+[section:endpoint local::datagram_protocol::endpoint]
+
+[indexterm2 endpoint..local::datagram_protocol] The type of a UNIX domain endpoint.
+
+ typedef basic_endpoint< datagram_protocol > endpoint;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.local__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.path [*path]]]
+ [Get the path associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
+ ]
+
+]
+
+The
+[link boost_asio.reference.local__basic_endpoint local::basic_endpoint] class template describes an endpoint that may be associated with a particular UNIX socket.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:family local::datagram_protocol::family]
+
+[indexterm2 family..local::datagram_protocol] Obtain an identifier for the protocol family.
+
+ int family() const;
+
+
+
+[endsect]
+
+
+
+[section:protocol local::datagram_protocol::protocol]
+
+[indexterm2 protocol..local::datagram_protocol] Obtain an identifier for the protocol.
+
+ int protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:socket local::datagram_protocol::socket]
+
+[indexterm2 socket..local::datagram_protocol] The UNIX domain socket type.
+
+ typedef basic_datagram_socket< datagram_protocol > socket;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.native_type [*native_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_datagram_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_receive_from [*async_receive_from]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_send [*async_send]]]
+ [Start an asynchronous send on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.async_send_to [*async_send_to]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.basic_datagram_socket [*basic_datagram_socket]]]
+ [Construct a basic_datagram_socket without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.native [*native]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.receive [*receive]]]
+ [Receive some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.receive_from [*receive_from]]]
+ [Receive a datagram with the endpoint of the sender. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.send [*send]]]
+ [Send some data on a connected socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.send_to [*send_to]]]
+ [Send a datagram to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_datagram_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The basic_datagram_socket class template provides asynchronous and blocking datagram-oriented socket functionality.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:type local::datagram_protocol::type]
+
+[indexterm2 type..local::datagram_protocol] Obtain an identifier for the type of the protocol.
+
+ int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:local__stream_protocol local::stream_protocol]
+
+Encapsulates the flags needed for stream-oriented UNIX sockets.
+
+ class stream_protocol
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.local__stream_protocol.acceptor [*acceptor]]]
+ [The UNIX domain acceptor type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__stream_protocol.endpoint [*endpoint]]]
+ [The type of a UNIX domain endpoint. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__stream_protocol.iostream [*iostream]]]
+ [The UNIX domain iostream type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__stream_protocol.socket [*socket]]]
+ [The UNIX domain socket type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__stream_protocol.family [*family]]]
+ [Obtain an identifier for the protocol family. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__stream_protocol.protocol [*protocol]]]
+ [Obtain an identifier for the protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__stream_protocol.type [*type]]]
+ [Obtain an identifier for the type of the protocol. ]
+ ]
+
+]
+
+The
+[link boost_asio.reference.local__stream_protocol local::stream_protocol] class contains flags necessary for stream-oriented UNIX domain sockets.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Safe.
+
+
+
+[section:acceptor local::stream_protocol::acceptor]
+
+[indexterm2 acceptor..local::stream_protocol] The UNIX domain acceptor type.
+
+ typedef basic_socket_acceptor< stream_protocol > acceptor;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.native_type [*native_type]]]
+ [The native representation of an acceptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_socket_acceptor.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.accept [*accept]]]
+ [Accept a new connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.assign [*assign]]]
+ [Assigns an existing native acceptor to the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.async_accept [*async_accept]]]
+ [Start an asynchronous accept. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor [*basic_socket_acceptor]]]
+ [Construct an acceptor without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.bind [*bind]]]
+ [Bind the acceptor to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.close [*close]]]
+ [Close the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.get_option [*get_option]]]
+ [Get an option from the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.is_open [*is_open]]]
+ [Determine whether the acceptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.listen [*listen]]]
+ [Place the acceptor into the state where it will listen for new connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.native [*native]]]
+ [Get the native acceptor representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.open [*open]]]
+ [Open the acceptor using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.set_option [*set_option]]]
+ [Set an option on the acceptor. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_acceptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The basic_socket_acceptor class template is used for accepting new socket connections.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+[heading Example]
+
+Opening a socket acceptor with the SO\_REUSEADDR option enabled:
+
+ 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();
+
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:endpoint local::stream_protocol::endpoint]
+
+[indexterm2 endpoint..local::stream_protocol] The type of a UNIX domain endpoint.
+
+ typedef basic_endpoint< stream_protocol > endpoint;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.local__basic_endpoint.data_type [*data_type]]]
+ [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.local__basic_endpoint.protocol_type [*protocol_type]]]
+ [The protocol type associated with the endpoint. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.basic_endpoint [*basic_endpoint]]]
+ [Default constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.capacity [*capacity]]]
+ [Get the capacity of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.data [*data]]]
+ [Get the underlying endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq_ [*operator=]]]
+ [Assign from another endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.path [*path]]]
+ [Get the path associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.protocol [*protocol]]]
+ [The protocol associated with the endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.resize [*resize]]]
+ [Set the underlying size of the endpoint in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.size [*size]]]
+ [Get the underlying size of the endpoint in the native type. ]
+ ]
+
+]
+
+[heading Friends]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_not__eq_ [*operator!=]]]
+ [Compare two endpoints for inequality. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt_ [*operator<]]]
+ [Compare endpoints for ordering. ]
+ ]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_eq__eq_ [*operator==]]]
+ [Compare two endpoints for equality. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.local__basic_endpoint.operator_lt__lt_ [*operator<<]]]
+ [Output an endpoint as a string. ]
+ ]
+
+]
+
+The
+[link boost_asio.reference.local__basic_endpoint local::basic_endpoint] class template describes an endpoint that may be associated with a particular UNIX socket.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:family local::stream_protocol::family]
+
+[indexterm2 family..local::stream_protocol] Obtain an identifier for the protocol family.
+
+ int family() const;
+
+
+
+[endsect]
+
+
+
+[section:iostream local::stream_protocol::iostream]
+
+[indexterm2 iostream..local::stream_protocol] The UNIX domain iostream type.
+
+ typedef basic_socket_iostream< stream_protocol > iostream;
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream [*basic_socket_iostream]]]
+ [Construct a basic_socket_iostream without establishing a connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.close [*close]]]
+ [Close the connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.connect [*connect]]]
+ [Establish a connection to an endpoint corresponding to a resolver query. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_socket_iostream.rdbuf [*rdbuf]]]
+ [Return a pointer to the underlying streambuf. ]
+ ]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:protocol local::stream_protocol::protocol]
+
+[indexterm2 protocol..local::stream_protocol] Obtain an identifier for the protocol.
+
+ int protocol() const;
+
+
+
+[endsect]
+
+
+
+[section:socket local::stream_protocol::socket]
+
+[indexterm2 socket..local::stream_protocol] The UNIX domain socket type.
+
+ typedef basic_stream_socket< stream_protocol > socket;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_socket is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.native_type [*native_type]]]
+ [The native representation of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_stream_socket.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.assign [*assign]]]
+ [Assign an existing native socket to the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_receive [*async_receive]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_send [*async_send]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.basic_stream_socket [*basic_stream_socket]]]
+ [Construct a basic_stream_socket without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.bind [*bind]]]
+ [Bind the socket to the given local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.close [*close]]]
+ [Close the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.connect [*connect]]]
+ [Connect the socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.get_option [*get_option]]]
+ [Get an option from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.native [*native]]]
+ [Get the native socket representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.open [*open]]]
+ [Open the socket using the specified protocol. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.read_some [*read_some]]]
+ [Read some data from the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.receive [*receive]]]
+ [Receive some data on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint of the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.send [*send]]]
+ [Send some data on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.set_option [*set_option]]]
+ [Set an option on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.write_some [*write_some]]]
+ [Write some data to the socket. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_stream_socket.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The basic_stream_socket class template provides asynchronous and blocking stream-oriented socket functionality.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+
+[section:type local::stream_protocol::type]
+
+[indexterm2 type..local::stream_protocol] Obtain an identifier for the type of the protocol.
+
+ int type() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:mutable_buffer mutable_buffer]
+
+Holds a buffer that can be modified.
+
+ class mutable_buffer
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
+ [Construct an empty buffer. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.operator_plus_ [*operator+]]]
+ [Create a new modifiable buffer that is offset from the start of another. ]
+ ]
+
+]
+
+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.
+
+
+[section:buffer_cast mutable_buffer::buffer_cast]
+
+[indexterm2 buffer_cast..mutable_buffer] Cast a non-modifiable buffer to a specified pointer to POD type.
+
+ template<
+ typename PointerToPodType>
+ PointerToPodType buffer_cast(
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+
+[section:buffer_size mutable_buffer::buffer_size]
+
+[indexterm2 buffer_size..mutable_buffer] Get the number of bytes in a non-modifiable buffer.
+
+ std::size_t buffer_size(
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+[section:mutable_buffer mutable_buffer::mutable_buffer]
+
+[indexterm2 mutable_buffer..mutable_buffer] Construct an empty buffer.
+
+ ``[link boost_asio.reference.mutable_buffer.mutable_buffer.overload1 mutable_buffer]``();
+
+ ``[link boost_asio.reference.mutable_buffer.mutable_buffer.overload2 mutable_buffer]``(
+ void * data,
+ std::size_t size);
+
+
+[section:overload1 mutable_buffer::mutable_buffer (1 of 2 overloads)]
+
+Construct an empty buffer.
+
+ mutable_buffer();
+
+
+
+[endsect]
+
+
+
+[section:overload2 mutable_buffer::mutable_buffer (2 of 2 overloads)]
+
+Construct a buffer to represent a given memory range.
+
+ mutable_buffer(
+ void * data,
+ std::size_t size);
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:operator_plus_ mutable_buffer::operator+]
+
+[indexterm2 operator+..mutable_buffer] Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer ``[link boost_asio.reference.mutable_buffer.operator_plus_.overload1 operator+]``(
+ const mutable_buffer & b,
+ std::size_t start);
+
+ mutable_buffer ``[link boost_asio.reference.mutable_buffer.operator_plus_.overload2 operator+]``(
+ std::size_t start,
+ const mutable_buffer & b);
+
+
+[section:overload1 mutable_buffer::operator+ (1 of 2 overloads)]
+
+Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer operator+(
+ const mutable_buffer & b,
+ std::size_t start);
+
+
+
+[endsect]
+
+
+
+[section:overload2 mutable_buffer::operator+ (2 of 2 overloads)]
+
+Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer operator+(
+ std::size_t start,
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[endsect]
+
+[section:mutable_buffers_1 mutable_buffers_1]
+
+Adapts a single modifiable buffer so that it meets the requirements of the MutableBufferSequence concept.
+
+ class mutable_buffers_1 :
+ public mutable_buffer
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.mutable_buffers_1.const_iterator [*const_iterator]]]
+ [A random-access iterator type that may be used to read elements. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.mutable_buffers_1.value_type [*value_type]]]
+ [The type for each element in the list of buffers. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.begin [*begin]]]
+ [Get a random-access iterator to the first element. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.end [*end]]]
+ [Get a random-access iterator for one past the last element. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.mutable_buffers_1 [*mutable_buffers_1]]]
+ [Construct to represent a given memory range. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffers_1.operator_plus_ [*operator+]]]
+ [Create a new modifiable buffer that is offset from the start of another. ]
+ ]
+
+]
+
+
+[section:begin mutable_buffers_1::begin]
+
+[indexterm2 begin..mutable_buffers_1] Get a random-access iterator to the first element.
+
+ const_iterator begin() const;
+
+
+
+[endsect]
+
+
+
+[section:buffer_cast mutable_buffers_1::buffer_cast]
+
+
+['Inherited from mutable_buffer.]
+
+[indexterm2 buffer_cast..mutable_buffers_1] Cast a non-modifiable buffer to a specified pointer to POD type.
+
+ template<
+ typename PointerToPodType>
+ PointerToPodType buffer_cast(
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+
+[section:buffer_size mutable_buffers_1::buffer_size]
+
+
+['Inherited from mutable_buffer.]
+
+[indexterm2 buffer_size..mutable_buffers_1] Get the number of bytes in a non-modifiable buffer.
+
+ std::size_t buffer_size(
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+
+[section:const_iterator mutable_buffers_1::const_iterator]
+
+[indexterm2 const_iterator..mutable_buffers_1] A random-access iterator type that may be used to read elements.
+
+ typedef const mutable_buffer * const_iterator;
+
+
+
+
+[endsect]
+
+
+
+[section:end mutable_buffers_1::end]
+
+[indexterm2 end..mutable_buffers_1] Get a random-access iterator for one past the last element.
+
+ const_iterator end() const;
+
+
+
+[endsect]
+
+
+[section:mutable_buffers_1 mutable_buffers_1::mutable_buffers_1]
+
+[indexterm2 mutable_buffers_1..mutable_buffers_1] Construct to represent a given memory range.
+
+ ``[link boost_asio.reference.mutable_buffers_1.mutable_buffers_1.overload1 mutable_buffers_1]``(
+ void * data,
+ std::size_t size);
+
+ ``[link boost_asio.reference.mutable_buffers_1.mutable_buffers_1.overload2 mutable_buffers_1]``(
+ const mutable_buffer & b);
+
+
+[section:overload1 mutable_buffers_1::mutable_buffers_1 (1 of 2 overloads)]
+
+Construct to represent a given memory range.
+
+ mutable_buffers_1(
+ void * data,
+ std::size_t size);
+
+
+
+[endsect]
+
+
+
+[section:overload2 mutable_buffers_1::mutable_buffers_1 (2 of 2 overloads)]
+
+Construct to represent a single modifiable buffer.
+
+ mutable_buffers_1(
+ const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:operator_plus_ mutable_buffers_1::operator+]
+
+[indexterm2 operator+..mutable_buffers_1] Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer ``[link boost_asio.reference.mutable_buffers_1.operator_plus_.overload1 operator+]``(
+ const mutable_buffer & b,
+ std::size_t start);
+
+ mutable_buffer ``[link boost_asio.reference.mutable_buffers_1.operator_plus_.overload2 operator+]``(
+ std::size_t start,
+ const mutable_buffer & b);
+
+
+[section:overload1 mutable_buffers_1::operator+ (1 of 2 overloads)]
+
+
+['Inherited from mutable_buffer.]
+
+Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer operator+(
+ const mutable_buffer & b,
+ std::size_t start);
+
+
+
+[endsect]
+
+
+
+[section:overload2 mutable_buffers_1::operator+ (2 of 2 overloads)]
+
+
+['Inherited from mutable_buffer.]
+
+Create a new modifiable buffer that is offset from the start of another.
+
+ mutable_buffer operator+(
+ std::size_t start,
+ const mutable_buffer & b);
+
+
+
+[endsect]
 
- basic_endpoint(
- const char * path);
+
+[endsect]
+
+
+[section:value_type mutable_buffers_1::value_type]
+
+[indexterm2 value_type..mutable_buffers_1] The type for each element in the list of buffers.
+
+ typedef mutable_buffer value_type;
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
+ [Construct an empty buffer. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.operator_plus_ [*operator+]]]
+ [Create a new modifiable buffer that is offset from the start of another. ]
+ ]
+
+]
+
+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.
 
 
 
@@ -38035,12 +43132,57 @@
 
 
 
-[section:overload3 local::basic_endpoint::basic_endpoint (3 of 4 overloads)]
+[endsect]
 
-Construct an endpoint using the specified path name.
+[section:null_buffers null_buffers]
 
- basic_endpoint(
- const std::string & path);
+An implementation of both the ConstBufferSequence and MutableBufferSequence concepts to represent a null buffer sequence.
+
+ class null_buffers
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.null_buffers.const_iterator [*const_iterator]]]
+ [A random-access iterator type that may be used to read elements. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.null_buffers.value_type [*value_type]]]
+ [The type for each element in the list of buffers. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.null_buffers.begin [*begin]]]
+ [Get a random-access iterator to the first element. ]
+ ]
+
+ [
+ [[link boost_asio.reference.null_buffers.end [*end]]]
+ [Get a random-access iterator for one past the last element. ]
+ ]
+
+]
+
+
+[section:begin null_buffers::begin]
+
+[indexterm2 begin..null_buffers] Get a random-access iterator to the first element.
+
+ const_iterator begin() const;
 
 
 
@@ -38048,134 +43190,559 @@
 
 
 
-[section:overload4 local::basic_endpoint::basic_endpoint (4 of 4 overloads)]
+[section:const_iterator null_buffers::const_iterator]
 
-Copy constructor.
+[indexterm2 const_iterator..null_buffers] A random-access iterator type that may be used to read elements.
+
+ typedef const mutable_buffer * const_iterator;
+
+
+
+
+[endsect]
+
+
+
+[section:end null_buffers::end]
+
+[indexterm2 end..null_buffers] Get a random-access iterator for one past the last element.
+
+ const_iterator end() const;
+
+
+
+[endsect]
+
+
+
+[section:value_type null_buffers::value_type]
+
+[indexterm2 value_type..null_buffers] The type for each element in the list of buffers.
+
+ typedef mutable_buffer value_type;
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
+ [Construct an empty buffer. ]
+ ]
+
+]
+
+[heading Related Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_cast [*buffer_cast]]]
+ [Cast a non-modifiable buffer to a specified pointer to POD type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.buffer_size [*buffer_size]]]
+ [Get the number of bytes in a non-modifiable buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.mutable_buffer.operator_plus_ [*operator+]]]
+ [Create a new modifiable buffer that is offset from the start of another. ]
+ ]
+
+]
+
+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.
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+
+[section:placeholders__bytes_transferred placeholders::bytes_transferred]
+
+[indexterm1 placeholders::bytes_transferred] 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;
+
+
+
+[endsect]
+
+
+
+[section:placeholders__error placeholders::error]
+
+[indexterm1 placeholders::error] 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;
+
+
+
+[endsect]
+
+
+
+[section:placeholders__iterator placeholders::iterator]
+
+[indexterm1 placeholders::iterator] 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;
+
+
+
+[endsect]
+
+
+[section:posix__basic_descriptor posix::basic_descriptor]
+
+Provides POSIX descriptor functionality.
+
+ template<
+ typename ``[link boost_asio.reference.DescriptorService DescriptorService]``>
+ class basic_descriptor :
+ public basic_io_object< DescriptorService >,
+ public posix::descriptor_base
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_descriptor is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.native_type [*native_type]]]
+ [The native representation of a descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__basic_descriptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.assign [*assign]]]
+ [Assign an existing native descriptor to the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
+ [Construct a basic_descriptor without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.close [*close]]]
+ [Close the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.native [*native]]]
+ [Get the native descriptor representation. ]
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The posix::basic_descriptor class template provides the ability to wrap a POSIX descriptor.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+[section:assign posix::basic_descriptor::assign]
+
+[indexterm2 assign..posix::basic_descriptor] Assign an existing native descriptor to the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_descriptor.assign.overload1 assign]``(
+ const native_type & native_descriptor);
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.assign.overload2 assign]``(
+ const native_type & native_descriptor,
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_descriptor::assign (1 of 2 overloads)]
+
+Assign an existing native descriptor to the descriptor.
+
+ void assign(
+ const native_type & native_descriptor);
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_descriptor::assign (2 of 2 overloads)]
+
+Assign an existing native descriptor to the descriptor.
+
+ boost::system::error_code assign(
+ const native_type & native_descriptor,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+[endsect]
+
+[section:basic_descriptor posix::basic_descriptor::basic_descriptor]
+
+[indexterm2 basic_descriptor..posix::basic_descriptor] Construct a basic_descriptor without opening it.
+
+ ``[link boost_asio.reference.posix__basic_descriptor.basic_descriptor.overload1 basic_descriptor]``(
+ boost::asio::io_service & io_service);
+
+ ``[link boost_asio.reference.posix__basic_descriptor.basic_descriptor.overload2 basic_descriptor]``(
+ boost::asio::io_service & io_service,
+ const native_type & native_descriptor);
+
+
+[section:overload1 posix::basic_descriptor::basic_descriptor (1 of 2 overloads)]
+
+Construct a basic_descriptor without opening it.
+
+ basic_descriptor(
+ boost::asio::io_service & io_service);
+
+
+This constructor creates a descriptor without opening it.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_descriptor::basic_descriptor (2 of 2 overloads)]
+
+Construct a basic_descriptor on an existing native descriptor.
+
+ basic_descriptor(
+ boost::asio::io_service & io_service,
+ const native_type & native_descriptor);
+
+
+This constructor creates a descriptor object to hold an existing native descriptor.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[io_service][The io\_service object that the descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor.]]
+
+[[native_descriptor][A native descriptor.]]
+
+]
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:bytes_readable posix::basic_descriptor::bytes_readable]
+
+
+['Inherited from posix::descriptor_base.]
+
+[indexterm2 bytes_readable..posix::basic_descriptor] IO control command to get the amount of data that can be read without blocking.
+
+ typedef implementation_defined bytes_readable;
+
+
+
+Implements the FIONREAD IO control command.
+
+
+[heading Example]
+
+
+
+ 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();
+
+
+
+
+
+
+[endsect]
+
+
+[section:cancel posix::basic_descriptor::cancel]
+
+[indexterm2 cancel..posix::basic_descriptor] Cancel all asynchronous operations associated with the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_descriptor.cancel.overload1 cancel]``();
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.cancel.overload2 cancel]``(
+ boost::system::error_code & ec);
 
- basic_endpoint(
- const basic_endpoint & other);
 
+[section:overload1 posix::basic_descriptor::cancel (1 of 2 overloads)]
 
+Cancel all asynchronous operations associated with the descriptor.
 
-[endsect]
+ void cancel();
 
 
-[endsect]
+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.
 
 
-[section:capacity local::basic_endpoint::capacity]
+[heading Exceptions]
+
 
-Get the capacity of the endpoint in the native type.
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
- std::size_t capacity() const;
+]
 
 
 
 [endsect]
 
 
-[section:data local::basic_endpoint::data]
 
-Get the underlying endpoint in the native type.
+[section:overload2 posix::basic_descriptor::cancel (2 of 2 overloads)]
 
- data_type * ``[link boost_asio.reference.local__basic_endpoint.data.overload1 data]``();
+Cancel all asynchronous operations associated with the descriptor.
 
- const data_type * ``[link boost_asio.reference.local__basic_endpoint.data.overload2 data]``() const;
+ boost::system::error_code cancel(
+ boost::system::error_code & ec);
 
 
-[section:overload1 local::basic_endpoint::data (1 of 2 overloads)]
+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.
 
-Get the underlying endpoint in the native type.
 
- data_type * data();
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
 
+]
 
 
-[endsect]
 
+[endsect]
 
 
-[section:overload2 local::basic_endpoint::data (2 of 2 overloads)]
+[endsect]
 
-Get the underlying endpoint in the native type.
+[section:close posix::basic_descriptor::close]
 
- const data_type * data() const;
+[indexterm2 close..posix::basic_descriptor] Close the descriptor.
 
+ void ``[link boost_asio.reference.posix__basic_descriptor.close.overload1 close]``();
 
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.close.overload2 close]``(
+ boost::system::error_code & ec);
 
-[endsect]
 
+[section:overload1 posix::basic_descriptor::close (1 of 2 overloads)]
 
-[endsect]
+Close the descriptor.
 
+ void close();
 
-[section:data_type local::basic_endpoint::data_type]
 
-The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer.
+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.
 
- typedef implementation_defined data_type;
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
-[endsect]
 
 
+[endsect]
 
-[section:operator_not__eq_ local::basic_endpoint::operator!=]
 
-Compare two endpoints for inequality.
 
- friend bool operator!=(
- const basic_endpoint< Protocol > & e1,
- const basic_endpoint< Protocol > & e2);
+[section:overload2 posix::basic_descriptor::close (2 of 2 overloads)]
 
+Close the descriptor.
 
+ boost::system::error_code close(
+ boost::system::error_code & ec);
 
-[endsect]
 
+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.
 
 
-[section:operator_lt_ local::basic_endpoint::operator<]
+[heading Parameters]
+
 
-Compare endpoints for ordering.
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
 
- friend bool operator<(
- const basic_endpoint< Protocol > & e1,
- const basic_endpoint< Protocol > & e2);
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:operator_lt__lt_ local::basic_endpoint::operator<<]
-
-Output an endpoint as a string.
 
- std::basic_ostream< Elem, Traits > & operator<<(
- std::basic_ostream< Elem, Traits > & os,
- const basic_endpoint< Protocol > & endpoint);
+[section:get_io_service posix::basic_descriptor::get_io_service]
 
 
-Used to output a human-readable string for a specified endpoint.
+['Inherited from basic_io_object.]
 
+[indexterm2 get_io_service..posix::basic_descriptor] Get the io_service associated with the object.
 
-[heading Parameters]
-
+ boost::asio::io_service & get_io_service();
 
-[variablelist
-
-[[os][The output stream to which the string will be written.]]
 
-[[endpoint][The endpoint to be written.]]
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
-]
 
 [heading Return Value]
       
-The output stream.
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -38183,202 +43750,213 @@
 
 
 
-[section:operator_eq_ local::basic_endpoint::operator=]
+[section:implementation posix::basic_descriptor::implementation]
 
-Assign from another endpoint.
 
- basic_endpoint & operator=(
- const basic_endpoint & other);
+['Inherited from basic_io_object.]
 
+[indexterm2 implementation..posix::basic_descriptor] The underlying implementation of the I/O object.
 
+ implementation_type implementation;
 
-[endsect]
 
 
+[endsect]
 
-[section:operator_eq__eq_ local::basic_endpoint::operator==]
 
-Compare two endpoints for equality.
 
- friend bool operator==(
- const basic_endpoint< Protocol > & e1,
- const basic_endpoint< Protocol > & e2);
+[section:implementation_type posix::basic_descriptor::implementation_type]
 
 
+['Inherited from basic_io_object.]
 
-[endsect]
+[indexterm2 implementation_type..posix::basic_descriptor] The underlying implementation type of I/O object.
 
+ typedef service_type::implementation_type implementation_type;
 
-[section:path local::basic_endpoint::path]
 
-Get the path associated with the endpoint.
 
- std::string ``[link boost_asio.reference.local__basic_endpoint.path.overload1 path]``() const;
 
- void ``[link boost_asio.reference.local__basic_endpoint.path.overload2 path]``(
- const char * p);
+[endsect]
 
- void ``[link boost_asio.reference.local__basic_endpoint.path.overload3 path]``(
- const std::string & p);
 
+[section:io_control posix::basic_descriptor::io_control]
 
-[section:overload1 local::basic_endpoint::path (1 of 3 overloads)]
+[indexterm2 io_control..posix::basic_descriptor] Perform an IO control command on the descriptor.
 
-Get the path associated with the endpoint.
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ void ``[link boost_asio.reference.posix__basic_descriptor.io_control.overload1 io_control]``(
+ IoControlCommand & command);
 
- std::string path() const;
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.io_control.overload2 io_control]``(
+ IoControlCommand & command,
+ boost::system::error_code & ec);
 
 
+[section:overload1 posix::basic_descriptor::io_control (1 of 2 overloads)]
 
-[endsect]
+Perform an IO control command on the descriptor.
 
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ void io_control(
+ IoControlCommand & command);
 
 
-[section:overload2 local::basic_endpoint::path (2 of 3 overloads)]
+This function is used to execute an IO control command on the descriptor.
 
-Set the path associated with the endpoint.
 
- void path(
- const char * p);
+[heading Parameters]
+
 
+[variablelist
+
+[[command][The IO control command to be performed on the descriptor.]]
 
+]
 
-[endsect]
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
+]
 
-[section:overload3 local::basic_endpoint::path (3 of 3 overloads)]
+[heading Example]
+
+Getting the number of bytes ready to read:
 
-Set the path associated with the endpoint.
+ 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();
 
- void path(
- const std::string & p);
 
 
 
-[endsect]
 
 
 [endsect]
 
 
-[section:protocol local::basic_endpoint::protocol]
 
-The protocol associated with the endpoint.
+[section:overload2 posix::basic_descriptor::io_control (2 of 2 overloads)]
 
- protocol_type protocol() const;
+Perform an IO control command on the descriptor.
 
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ IoControlCommand & command,
+ boost::system::error_code & ec);
 
 
-[endsect]
+This function is used to execute an IO control command on the descriptor.
 
 
+[heading Parameters]
+
 
-[section:protocol_type local::basic_endpoint::protocol_type]
+[variablelist
+
+[[command][The IO control command to be performed on the descriptor.]]
 
-The protocol type associated with the endpoint.
+[[ec][Set to indicate what error occurred, if any.]]
 
- typedef Protocol protocol_type;
+]
 
+[heading Example]
+
+Getting the number of bytes ready to read:
 
+ 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();
 
 
-[endsect]
 
 
 
-[section:resize local::basic_endpoint::resize]
 
-Set the underlying size of the endpoint in the native type.
+[endsect]
 
- void resize(
- std::size_t size);
 
+[endsect]
 
 
-[endsect]
+[section:io_service posix::basic_descriptor::io_service]
 
 
+['Inherited from basic_io_object.]
 
-[section:size local::basic_endpoint::size]
+[indexterm2 io_service..posix::basic_descriptor] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
-Get the underlying size of the endpoint in the native type.
+ boost::asio::io_service & io_service();
 
- std::size_t size() const;
 
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
 
-[endsect]
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
 [endsect]
 
-[section:local__connect_pair local::connect_pair]
 
-Create a pair of connected sockets.
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
- typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
- void ``[link boost_asio.reference.local__connect_pair.overload1 connect_pair]``(
- basic_socket< Protocol, SocketService1 > & socket1,
- basic_socket< Protocol, SocketService2 > & socket2);
+[section:is_open posix::basic_descriptor::is_open]
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
- typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
- boost::system::error_code ``[link boost_asio.reference.local__connect_pair.overload2 connect_pair]``(
- basic_socket< Protocol, SocketService1 > & socket1,
- basic_socket< Protocol, SocketService2 > & socket2,
- boost::system::error_code & ec);
+[indexterm2 is_open..posix::basic_descriptor] Determine whether the descriptor is open.
 
+ bool is_open() const;
 
-[section:overload1 local::connect_pair (1 of 2 overloads)]
 
-Create a pair of connected sockets.
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
- typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
- void connect_pair(
- basic_socket< Protocol, SocketService1 > & socket1,
- basic_socket< Protocol, SocketService2 > & socket2);
+[endsect]
 
 
 
-[endsect]
+[section:lowest_layer posix::basic_descriptor::lowest_layer]
 
+[indexterm2 lowest_layer..posix::basic_descriptor] Get a reference to the lowest layer.
 
+ lowest_layer_type & lowest_layer();
 
-[section:overload2 local::connect_pair (2 of 2 overloads)]
 
-Create a pair of connected sockets.
+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.
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``,
- typename ``[link boost_asio.reference.SocketService1 SocketService1]``,
- typename ``[link boost_asio.reference.SocketService2 SocketService2]``>
- boost::system::error_code connect_pair(
- basic_socket< Protocol, SocketService1 > & socket1,
- basic_socket< Protocol, SocketService2 > & socket2,
- boost::system::error_code & ec);
+
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
 
 
 
 [endsect]
 
 
-[endsect]
 
-[section:local__datagram_protocol local::datagram_protocol]
+[section:lowest_layer_type posix::basic_descriptor::lowest_layer_type]
 
-Encapsulates the flags needed for datagram-oriented UNIX sockets.
+[indexterm2 lowest_layer_type..posix::basic_descriptor] A basic_descriptor is always the lowest layer.
 
- class datagram_protocol
+ typedef basic_descriptor< DescriptorService > lowest_layer_type;
 
 
 [heading Types]
@@ -38387,75 +43965,43 @@
 
   [
 
- [[link boost_asio.reference.local__datagram_protocol.endpoint [*endpoint]]]
- [The type of a UNIX domain endpoint. ]
+ [[link boost_asio.reference.posix__basic_descriptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.local__datagram_protocol.socket [*socket]]]
- [The UNIX domain socket type. ]
+ [[link boost_asio.reference.posix__basic_descriptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
   
   ]
 
-]
-
-[heading Member Functions]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.local__datagram_protocol.family [*family]]]
- [Obtain an identifier for the protocol family. ]
- ]
-
   [
- [[link boost_asio.reference.local__datagram_protocol.protocol [*protocol]]]
- [Obtain an identifier for the protocol. ]
- ]
+
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_descriptor is always the lowest layer. ]
   
- [
- [[link boost_asio.reference.local__datagram_protocol.type [*type]]]
- [Obtain an identifier for the type of the protocol. ]
   ]
-
-]
-
-The
-[link boost_asio.reference.local__datagram_protocol local::datagram_protocol] class contains flags necessary for datagram-oriented UNIX domain sockets.
 
+ [
 
-[heading Thread Safety]
+ [[link boost_asio.reference.posix__basic_descriptor.native_type [*native_type]]]
+ [The native representation of a descriptor. ]
   
-[*Distinct] [*objects:] Safe.
-
-[*Shared] [*objects:] Safe.
-
-
-
-[section:endpoint local::datagram_protocol::endpoint]
-
-The type of a UNIX domain endpoint.
-
- typedef basic_endpoint< datagram_protocol > endpoint;
-
-
-[heading Types]
-[table
- [[Name][Description]]
+ ]
 
   [
 
- [[link boost_asio.reference.local__basic_endpoint.data_type [*data_type]]]
- [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
+ [[link boost_asio.reference.posix__basic_descriptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.local__basic_endpoint.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint. ]
+ [[link boost_asio.reference.posix__basic_descriptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
@@ -38466,88 +44012,92 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.local__basic_endpoint.basic_endpoint [*basic_endpoint]]]
- [Default constructor. ]
+ [[link boost_asio.reference.posix__basic_descriptor.assign [*assign]]]
+ [Assign an existing native descriptor to the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.capacity [*capacity]]]
- [Get the capacity of the endpoint in the native type. ]
+ [[link boost_asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
+ [Construct a basic_descriptor without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.data [*data]]]
- [Get the underlying endpoint in the native type. ]
+ [[link boost_asio.reference.posix__basic_descriptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.operator_eq_ [*operator=]]]
- [Assign from another endpoint. ]
+ [[link boost_asio.reference.posix__basic_descriptor.close [*close]]]
+ [Close the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.path [*path]]]
- [Get the path associated with the endpoint. ]
+ [[link boost_asio.reference.posix__basic_descriptor.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.protocol [*protocol]]]
- [The protocol associated with the endpoint. ]
+ [[link boost_asio.reference.posix__basic_descriptor.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.resize [*resize]]]
- [Set the underlying size of the endpoint in the native type. ]
+ [[link boost_asio.reference.posix__basic_descriptor.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.size [*size]]]
- [Get the underlying size of the endpoint in the native type. ]
+ [[link boost_asio.reference.posix__basic_descriptor.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
   ]
   
-]
-
-[heading Friends]
-[table
- [[Name][Description]]
-
   [
- [[link boost_asio.reference.local__basic_endpoint.operator_not__eq_ [*operator!=]]]
- [Compare two endpoints for inequality. ]
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.local__basic_endpoint.operator_lt_ [*operator<]]]
- [Compare endpoints for ordering. ]
+ [[link boost_asio.reference.posix__basic_descriptor.native [*native]]]
+ [Get the native descriptor representation. ]
   ]
   
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.local__basic_endpoint.operator_eq__eq_ [*operator==]]]
- [Compare two endpoints for equality. ]
+ [[link boost_asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
+ [Protected destructor to prevent deletion through this type. ]
   ]
   
 ]
 
-[heading Related Functions]
+[heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.local__basic_endpoint.operator_lt__lt_ [*operator<<]]]
- [Output an endpoint as a string. ]
+ [[link boost_asio.reference.posix__basic_descriptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
   ]
-
+
+ [
+ [[link boost_asio.reference.posix__basic_descriptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
 ]
 
-The
-[link boost_asio.reference.local__basic_endpoint local::basic_endpoint] class template describes an endpoint that may be associated with a particular UNIX socket.
+The posix::basic_descriptor class template provides the ability to wrap a POSIX descriptor.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[*Shared] [*objects:] Unsafe.
 
 
 
@@ -38556,23 +44106,26 @@
 
 
 
-[section:family local::datagram_protocol::family]
+[section:native posix::basic_descriptor::native]
 
-Obtain an identifier for the protocol family.
+[indexterm2 native..posix::basic_descriptor] Get the native descriptor representation.
 
- int family() const;
+ native_type native();
 
 
+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.
+
 
 [endsect]
 
 
 
-[section:protocol local::datagram_protocol::protocol]
+[section:native_type posix::basic_descriptor::native_type]
 
-Obtain an identifier for the protocol.
+[indexterm2 native_type..posix::basic_descriptor] The native representation of a descriptor.
+
+ typedef DescriptorService::native_type native_type;
 
- int protocol() const;
 
 
 
@@ -38580,161 +44133,136 @@
 
 
 
-[section:socket local::datagram_protocol::socket]
+[section:non_blocking_io posix::basic_descriptor::non_blocking_io]
 
-The UNIX domain socket type.
 
- typedef basic_datagram_socket< datagram_protocol > socket;
+['Inherited from posix::descriptor_base.]
 
+[indexterm2 non_blocking_io..posix::basic_descriptor] IO control command to set the blocking mode of the descriptor.
 
-[heading Types]
-[table
- [[Name][Description]]
+ typedef implementation_defined non_blocking_io;
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
 
- [
+Implements the FIONBIO IO control command.
 
- [[link boost_asio.reference.basic_datagram_socket.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
+
+[heading Example]
   
- ]
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::descriptor_base::non_blocking_io command(true);
+ descriptor.io_control(command);
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
 
- [
+[section:service posix::basic_descriptor::service]
 
- [[link boost_asio.reference.basic_datagram_socket.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
-
- ]
 
- [
+['Inherited from basic_io_object.]
 
- [[link boost_asio.reference.basic_datagram_socket.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
-
- ]
+[indexterm2 service..posix::basic_descriptor] The service associated with the I/O object.
 
- [
+ service_type & service;
 
- [[link boost_asio.reference.basic_datagram_socket.lowest_layer_type [*lowest_layer_type]]]
- [A basic_socket is always the lowest layer. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
-
- ]
+[endsect]
+
+
+
+[section:service_type posix::basic_descriptor::service_type]
+
+
+['Inherited from basic_io_object.]
+
+[indexterm2 service_type..posix::basic_descriptor] The type of the service that will be used to provide I/O operations.
+
+ typedef DescriptorService service_type;
+
+
+
+
+[endsect]
+
+
+
+[section:_basic_descriptor posix::basic_descriptor::~basic_descriptor]
+
+[indexterm2 ~basic_descriptor..posix::basic_descriptor] Protected destructor to prevent deletion through this type.
+
+ ~basic_descriptor();
+
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.native_type [*native_type]]]
- [The native representation of a socket. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_datagram_socket.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.basic_datagram_socket.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
+[section:posix__basic_stream_descriptor posix::basic_stream_descriptor]
 
- [
+Provides stream-oriented descriptor functionality.
 
- [[link boost_asio.reference.basic_datagram_socket.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
-
- ]
+ template<
+ typename ``[link boost_asio.reference.StreamDescriptorService StreamDescriptorService]`` = stream_descriptor_service>
+ class basic_stream_descriptor :
+ public posix::basic_descriptor< StreamDescriptorService >
+
+
+[heading Types]
+[table
+ [[Name][Description]]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_descriptor is always the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.native_type [*native_type]]]
+ [The native representation of a descriptor. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_datagram_socket.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
@@ -38745,203 +44273,124 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_datagram_socket.assign [*assign]]]
- [Assign an existing native socket to the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.async_receive [*async_receive]]]
- [Start an asynchronous receive on a connected socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.async_receive_from [*async_receive_from]]]
- [Start an asynchronous receive. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.async_send [*async_send]]]
- [Start an asynchronous send on a connected socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.async_send_to [*async_send_to]]]
- [Start an asynchronous send. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.available [*available]]]
- [Determine the number of bytes available for reading. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.assign [*assign]]]
+ [Assign an existing native descriptor to the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.basic_datagram_socket [*basic_datagram_socket]]]
- [Construct a basic_datagram_socket without opening it. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.bind [*bind]]]
- [Bind the socket to the given local endpoint. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor [*basic_stream_descriptor]]]
+ [Construct a basic_stream_descriptor without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.close [*close]]]
- [Close the socket. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.connect [*connect]]]
- [Connect the socket to the specified endpoint. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.close [*close]]]
+ [Close the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.get_io_service [*get_io_service]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.get_io_service [*get_io_service]]]
     [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.get_option [*get_option]]]
- [Get an option from the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.io_service [*io_service]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.io_service [*io_service]]]
     [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.is_open [*is_open]]]
- [Determine whether the socket is open. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.local_endpoint [*local_endpoint]]]
- [Get the local endpoint of the socket. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.lowest_layer [*lowest_layer]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer [*lowest_layer]]]
     [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.native [*native]]]
- [Get the native socket representation. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.open [*open]]]
- [Open the socket using the specified protocol. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.receive [*receive]]]
- [Receive some data on a connected socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.receive_from [*receive_from]]]
- [Receive a datagram with the endpoint of the sender. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint of the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.send [*send]]]
- [Send some data on a connected socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.send_to [*send_to]]]
- [Send a datagram to the specified endpoint. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.native [*native]]]
+ [Get the native descriptor representation. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.set_option [*set_option]]]
- [Set an option on the socket. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.read_some [*read_some]]]
+ [Read some data from the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_datagram_socket.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.write_some [*write_some]]]
+ [Write some data to the descriptor. ]
   ]
   
 ]
 
-[heading Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
- ]
-
- [
- [[link boost_asio.reference.basic_datagram_socket.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
- ]
-
-]
-
 [heading Protected Data Members]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_datagram_socket.implementation [*implementation]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.implementation [*implementation]]]
     [The underlying implementation of the I/O object. ]
   ]
 
   [
- [[link boost_asio.reference.basic_datagram_socket.service [*service]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.service [*service]]]
     [The service associated with the I/O object. ]
   ]
 
 ]
 
-The basic_datagram_socket class template provides asynchronous and blocking datagram-oriented socket functionality.
+The posix::basic_stream_descriptor class template provides asynchronous and blocking stream-oriented descriptor functionality.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[*Shared] [*objects:] Unsafe.
+
+
+[section:assign posix::basic_stream_descriptor::assign]
+
+[indexterm2 assign..posix::basic_stream_descriptor] Assign an existing native descriptor to the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_stream_descriptor.assign.overload1 assign]``(
+ const native_type & native_descriptor);
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.assign.overload2 assign]``(
+ const native_type & native_descriptor,
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_stream_descriptor::assign (1 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Assign an existing native descriptor to the descriptor.
 
+ void assign(
+ const native_type & native_descriptor);
 
 
 
@@ -38949,11 +44398,73 @@
 
 
 
-[section:type local::datagram_protocol::type]
+[section:overload2 posix::basic_stream_descriptor::assign (2 of 2 overloads)]
 
-Obtain an identifier for the type of the protocol.
 
- int type() const;
+['Inherited from posix::basic_descriptor.]
+
+Assign an existing native descriptor to the descriptor.
+
+ boost::system::error_code assign(
+ const native_type & native_descriptor,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:async_read_some posix::basic_stream_descriptor::async_read_some]
+
+[indexterm2 async_read_some..posix::basic_stream_descriptor] Start an asynchronous read.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
+
+
+This function is used to asynchronously read data from the stream descriptor. The function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[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.]]
+
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes read.
+ );
+``
+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().]]
+
+]
+
+[heading Remarks]
+
+The read operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
+
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ descriptor.async_read_some(boost::asio::buffer(data, size), handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -38961,385 +44472,353 @@
 
 
 
+[section:async_write_some posix::basic_stream_descriptor::async_write_some]
+
+[indexterm2 async_write_some..posix::basic_stream_descriptor] Start an asynchronous write.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
+
+
+This function is used to asynchronously write data to the stream descriptor. The function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[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.]]
+
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes written.
+ );
+``
+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().]]
+
+]
+
+[heading Remarks]
+
+The write operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ descriptor.async_write_some(boost::asio::buffer(data, size), handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
 [endsect]
 
-[section:local__stream_protocol local::stream_protocol]
 
-Encapsulates the flags needed for stream-oriented UNIX sockets.
+[section:basic_stream_descriptor posix::basic_stream_descriptor::basic_stream_descriptor]
 
- class stream_protocol
+[indexterm2 basic_stream_descriptor..posix::basic_stream_descriptor] Construct a basic_stream_descriptor without opening it.
 
+ ``[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor.overload1 basic_stream_descriptor]``(
+ boost::asio::io_service & io_service);
 
-[heading Types]
-[table
- [[Name][Description]]
+ ``[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor.overload2 basic_stream_descriptor]``(
+ boost::asio::io_service & io_service,
+ const native_type & native_descriptor);
 
- [
 
- [[link boost_asio.reference.local__stream_protocol.acceptor [*acceptor]]]
- [The UNIX domain acceptor type. ]
+[section:overload1 posix::basic_stream_descriptor::basic_stream_descriptor (1 of 2 overloads)]
+
+Construct a basic_stream_descriptor without opening it.
+
+ basic_stream_descriptor(
+ boost::asio::io_service & io_service);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[io_service][The io\_service object that the stream descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor. ]]
 
- [
+]
 
- [[link boost_asio.reference.local__stream_protocol.endpoint [*endpoint]]]
- [The type of a UNIX domain endpoint. ]
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::basic_stream_descriptor (2 of 2 overloads)]
+
+Construct a basic_stream_descriptor on an existing native descriptor.
+
+ basic_stream_descriptor(
+ boost::asio::io_service & io_service,
+ const native_type & native_descriptor);
+
+
+This constructor creates a stream descriptor object to hold an existing native descriptor.
+
+
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[io_service][The io\_service object that the stream descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor.]]
 
- [
+[[native_descriptor][The new underlying descriptor implementation.]]
 
- [[link boost_asio.reference.local__stream_protocol.iostream [*iostream]]]
- [The UNIX domain iostream type. ]
+]
+
+[heading Exceptions]
+
+
+[variablelist
   
- ]
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:bytes_readable posix::basic_stream_descriptor::bytes_readable]
+
+
+['Inherited from posix::descriptor_base.]
+
+[indexterm2 bytes_readable..posix::basic_stream_descriptor] IO control command to get the amount of data that can be read without blocking.
+
+ typedef implementation_defined bytes_readable;
+
+
+
+Implements the FIONREAD IO control command.
+
+
+[heading Example]
+
+
+
+ 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();
+
+
+
+
+
+
+[endsect]
+
+
+[section:cancel posix::basic_stream_descriptor::cancel]
+
+[indexterm2 cancel..posix::basic_stream_descriptor] Cancel all asynchronous operations associated with the descriptor.
+
+ void ``[link boost_asio.reference.posix__basic_stream_descriptor.cancel.overload1 cancel]``();
+
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.cancel.overload2 cancel]``(
+ boost::system::error_code & ec);
+
+
+[section:overload1 posix::basic_stream_descriptor::cancel (1 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Cancel all asynchronous operations associated with the descriptor.
+
+ void cancel();
+
+
+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.
+
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload2 posix::basic_stream_descriptor::cancel (2 of 2 overloads)]
+
+
+['Inherited from posix::basic_descriptor.]
+
+Cancel all asynchronous operations associated with the descriptor.
+
+ boost::system::error_code cancel(
+ boost::system::error_code & ec);
 
- [
 
- [[link boost_asio.reference.local__stream_protocol.socket [*socket]]]
- [The UNIX domain socket type. ]
-
- ]
+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.
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[heading Parameters]
+
 
- [
- [[link boost_asio.reference.local__stream_protocol.family [*family]]]
- [Obtain an identifier for the protocol family. ]
- ]
-
- [
- [[link boost_asio.reference.local__stream_protocol.protocol [*protocol]]]
- [Obtain an identifier for the protocol. ]
- ]
-
- [
- [[link boost_asio.reference.local__stream_protocol.type [*type]]]
- [Obtain an identifier for the type of the protocol. ]
- ]
+[variablelist
   
-]
+[[ec][Set to indicate what error occurred, if any. ]]
 
-The
-[link boost_asio.reference.local__stream_protocol local::stream_protocol] class contains flags necessary for stream-oriented UNIX domain sockets.
+]
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Safe.
+[endsect]
 
 
+[endsect]
 
-[section:acceptor local::stream_protocol::acceptor]
+[section:close posix::basic_stream_descriptor::close]
 
-The UNIX domain acceptor type.
+[indexterm2 close..posix::basic_stream_descriptor] Close the descriptor.
 
- typedef basic_socket_acceptor< stream_protocol > acceptor;
+ void ``[link boost_asio.reference.posix__basic_stream_descriptor.close.overload1 close]``();
 
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.close.overload2 close]``(
+ boost::system::error_code & ec);
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
+[section:overload1 posix::basic_stream_descriptor::close (1 of 2 overloads)]
 
- [[link boost_asio.reference.basic_socket_acceptor.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
 
- [
+['Inherited from posix::basic_descriptor.]
 
- [[link boost_asio.reference.basic_socket_acceptor.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
+Close the descriptor.
 
- [
+ void close();
 
- [[link boost_asio.reference.basic_socket_acceptor.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
 
- [
+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.
 
- [[link boost_asio.reference.basic_socket_acceptor.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
 
- [
+[heading Exceptions]
+
 
- [[link boost_asio.reference.basic_socket_acceptor.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
+[variablelist
   
- ]
+[[boost::system::system_error][Thrown on failure. ]]
 
- [
+]
 
- [[link boost_asio.reference.basic_socket_acceptor.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
-
- ]
 
- [
+[section:overload2 posix::basic_stream_descriptor::close (2 of 2 overloads)]
 
- [[link boost_asio.reference.basic_socket_acceptor.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
-
- ]
 
- [
+['Inherited from posix::basic_descriptor.]
 
- [[link boost_asio.reference.basic_socket_acceptor.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
-
- ]
+Close the descriptor.
 
- [
+ boost::system::error_code close(
+ boost::system::error_code & ec);
 
- [[link boost_asio.reference.basic_socket_acceptor.native_type [*native_type]]]
- [The native representation of an acceptor. ]
-
- ]
 
- [
+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.
 
- [[link boost_asio.reference.basic_socket_acceptor.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
- ]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.basic_socket_acceptor.protocol_type [*protocol_type]]]
- [The protocol type. ]
+[variablelist
   
- ]
+[[ec][Set to indicate what error occurred, if any. ]]
 
- [
+]
 
- [[link boost_asio.reference.basic_socket_acceptor.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
-
- ]
+[section:get_io_service posix::basic_stream_descriptor::get_io_service]
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
-
- ]
+['Inherited from basic_io_object.]
 
- [
+[indexterm2 get_io_service..posix::basic_stream_descriptor] Get the io_service associated with the object.
 
- [[link boost_asio.reference.basic_socket_acceptor.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
+ boost::asio::io_service & get_io_service();
 
- [
 
- [[link boost_asio.reference.basic_socket_acceptor.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
-
- ]
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.accept [*accept]]]
- [Accept a new connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.assign [*assign]]]
- [Assigns an existing native acceptor to the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.async_accept [*async_accept]]]
- [Start an asynchronous accept. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.basic_socket_acceptor [*basic_socket_acceptor]]]
- [Construct an acceptor without opening it. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.bind [*bind]]]
- [Bind the acceptor to the given local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.close [*close]]]
- [Close the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.get_option [*get_option]]]
- [Get an option from the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.is_open [*is_open]]]
- [Determine whether the acceptor is open. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.listen [*listen]]]
- [Place the acceptor into the state where it will listen for new connections. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.local_endpoint [*local_endpoint]]]
- [Get the local endpoint of the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.native [*native]]]
- [Get the native acceptor representation. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.open [*open]]]
- [Open the acceptor using the specified protocol. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_acceptor.set_option [*set_option]]]
- [Set an option on the acceptor. ]
- ]
-
-]
 
-[heading Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
+[endsect]
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
- ]
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
- ]
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
- ]
+[section:implementation posix::basic_stream_descriptor::implementation]
 
-]
 
-[heading Protected Data Members]
-[table
- [[Name][Description]]
+['Inherited from basic_io_object.]
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
+[indexterm2 implementation..posix::basic_stream_descriptor] The underlying implementation of the I/O object.
 
- [
- [[link boost_asio.reference.basic_socket_acceptor.service [*service]]]
- [The service associated with the I/O object. ]
- ]
+ implementation_type implementation;
 
-]
 
-The basic_socket_acceptor class template is used for accepting new socket connections.
 
+[endsect]
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
 
-[heading Example]
-
-Opening a socket acceptor with the SO\_REUSEADDR option enabled:
+[section:implementation_type posix::basic_stream_descriptor::implementation_type]
 
- 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();
 
+['Inherited from basic_io_object.]
 
+[indexterm2 implementation_type..posix::basic_stream_descriptor] The underlying implementation type of I/O object.
 
+ typedef service_type::implementation_type implementation_type;
 
 
 
@@ -39347,121 +44826,61 @@
 [endsect]
 
 
+[section:io_control posix::basic_stream_descriptor::io_control]
 
-[section:endpoint local::stream_protocol::endpoint]
+[indexterm2 io_control..posix::basic_stream_descriptor] Perform an IO control command on the descriptor.
 
-The type of a UNIX domain endpoint.
+ void ``[link boost_asio.reference.posix__basic_stream_descriptor.io_control.overload1 io_control]``(
+ IoControlCommand & command);
 
- typedef basic_endpoint< stream_protocol > endpoint;
+ boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.io_control.overload2 io_control]``(
+ IoControlCommand & command,
+ boost::system::error_code & ec);
 
 
-[heading Types]
-[table
- [[Name][Description]]
+[section:overload1 posix::basic_stream_descriptor::io_control (1 of 2 overloads)]
 
- [
 
- [[link boost_asio.reference.local__basic_endpoint.data_type [*data_type]]]
- [The type of the endpoint structure. This type is dependent on the underlying implementation of the socket layer. ]
-
- ]
+['Inherited from posix::basic_descriptor.]
 
- [
+Perform an IO control command on the descriptor.
 
- [[link boost_asio.reference.local__basic_endpoint.protocol_type [*protocol_type]]]
- [The protocol type associated with the endpoint. ]
-
- ]
+ void io_control(
+ IoControlCommand & command);
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+This function is used to execute an IO control command on the descriptor.
 
- [
- [[link boost_asio.reference.local__basic_endpoint.basic_endpoint [*basic_endpoint]]]
- [Default constructor. ]
- ]
-
- [
- [[link boost_asio.reference.local__basic_endpoint.capacity [*capacity]]]
- [Get the capacity of the endpoint in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.local__basic_endpoint.data [*data]]]
- [Get the underlying endpoint in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.local__basic_endpoint.operator_eq_ [*operator=]]]
- [Assign from another endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.local__basic_endpoint.path [*path]]]
- [Get the path associated with the endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.local__basic_endpoint.protocol [*protocol]]]
- [The protocol associated with the endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.local__basic_endpoint.resize [*resize]]]
- [Set the underlying size of the endpoint in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.local__basic_endpoint.size [*size]]]
- [Get the underlying size of the endpoint in the native type. ]
- ]
-
-]
 
-[heading Friends]
-[table
- [[Name][Description]]
+[heading Parameters]
+
 
- [
- [[link boost_asio.reference.local__basic_endpoint.operator_not__eq_ [*operator!=]]]
- [Compare two endpoints for inequality. ]
- ]
-
- [
- [[link boost_asio.reference.local__basic_endpoint.operator_lt_ [*operator<]]]
- [Compare endpoints for ordering. ]
- ]
-
- [
- [[link boost_asio.reference.local__basic_endpoint.operator_eq__eq_ [*operator==]]]
- [Compare two endpoints for equality. ]
- ]
+[variablelist
   
+[[command][The IO control command to be performed on the descriptor.]]
+
 ]
 
-[heading Related Functions]
-[table
- [[Name][Description]]
+[heading Exceptions]
+
 
- [
- [[link boost_asio.reference.local__basic_endpoint.operator_lt__lt_ [*operator<<]]]
- [Output an endpoint as a string. ]
- ]
+[variablelist
   
+[[boost::system::system_error][Thrown on failure.]]
+
 ]
 
-The
-[link boost_asio.reference.local__basic_endpoint local::basic_endpoint] class template describes an endpoint that may be associated with a particular UNIX socket.
+[heading Example]
+
+Getting the number of bytes ready to read:
 
+ 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();
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
 
 
 
@@ -39470,62 +44889,74 @@
 
 
 
-[section:family local::stream_protocol::family]
-
-Obtain an identifier for the protocol family.
+[section:overload2 posix::basic_stream_descriptor::io_control (2 of 2 overloads)]
 
- int family() const;
 
+['Inherited from posix::basic_descriptor.]
 
+Perform an IO control command on the descriptor.
 
-[endsect]
+ boost::system::error_code io_control(
+ IoControlCommand & command,
+ boost::system::error_code & ec);
 
 
+This function is used to execute an IO control command on the descriptor.
 
-[section:iostream local::stream_protocol::iostream]
 
-The UNIX domain iostream type.
+[heading Parameters]
+
 
- typedef basic_socket_iostream< stream_protocol > iostream;
+[variablelist
+
+[[command][The IO control command to be performed on the descriptor.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+]
 
- [
- [[link boost_asio.reference.basic_socket_iostream.basic_socket_iostream [*basic_socket_iostream]]]
- [Construct a basic_socket_iostream without establishing a connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_iostream.close [*close]]]
- [Close the connection. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_iostream.connect [*connect]]]
- [Establish a connection to an endpoint corresponding to a resolver query. ]
- ]
-
- [
- [[link boost_asio.reference.basic_socket_iostream.rdbuf [*rdbuf]]]
- [Return a pointer to the underlying streambuf. ]
- ]
+[heading Example]
   
-]
+Getting the number of bytes ready to read:
+
+ 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();
+
+
+
+
 
 
+[endsect]
+
 
 [endsect]
 
 
+[section:io_service posix::basic_stream_descriptor::io_service]
 
-[section:protocol local::stream_protocol::protocol]
 
-Obtain an identifier for the protocol.
+['Inherited from basic_io_object.]
 
- int protocol() const;
+[indexterm2 io_service..posix::basic_stream_descriptor] (Deprecated: use get_io_service().) Get the io_service associated with the object.
+
+ boost::asio::io_service & io_service();
+
+
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -39533,164 +44964,100 @@
 
 
 
-[section:socket local::stream_protocol::socket]
-
-The UNIX domain socket type.
-
- typedef basic_stream_socket< stream_protocol > socket;
+[section:is_open posix::basic_stream_descriptor::is_open]
 
 
-[heading Types]
-[table
- [[Name][Description]]
+['Inherited from posix::basic_descriptor.]
 
- [
+[indexterm2 is_open..posix::basic_stream_descriptor] Determine whether the descriptor is open.
 
- [[link boost_asio.reference.basic_stream_socket.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
-
- ]
+ bool is_open() const;
 
- [
 
- [[link boost_asio.reference.basic_stream_socket.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.basic_stream_socket.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_stream_socket.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
-
- ]
+[section:lowest_layer posix::basic_stream_descriptor::lowest_layer]
 
- [
 
- [[link boost_asio.reference.basic_stream_socket.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
-
- ]
+['Inherited from posix::basic_descriptor.]
 
- [
+[indexterm2 lowest_layer..posix::basic_stream_descriptor] Get a reference to the lowest layer.
 
- [[link boost_asio.reference.basic_stream_socket.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
+ lowest_layer_type & lowest_layer();
 
- [
 
- [[link boost_asio.reference.basic_stream_socket.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
+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.
 
- [
 
- [[link boost_asio.reference.basic_stream_socket.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
-
- ]
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
 
- [
 
- [[link boost_asio.reference.basic_stream_socket.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.basic_stream_socket.lowest_layer_type [*lowest_layer_type]]]
- [A basic_socket is always the lowest layer. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.basic_stream_socket.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
-
- ]
+[section:lowest_layer_type posix::basic_stream_descriptor::lowest_layer_type]
 
- [
 
- [[link boost_asio.reference.basic_stream_socket.native_type [*native_type]]]
- [The native representation of a socket. ]
-
- ]
+['Inherited from posix::basic_descriptor.]
 
- [
+[indexterm2 lowest_layer_type..posix::basic_stream_descriptor] A basic_descriptor is always the lowest layer.
 
- [[link boost_asio.reference.basic_stream_socket.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
- ]
+ typedef basic_descriptor< StreamDescriptorService > lowest_layer_type;
 
- [
 
- [[link boost_asio.reference.basic_stream_socket.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
+[heading Types]
+[table
+ [[Name][Description]]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
+ [[link boost_asio.reference.posix__basic_descriptor.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
+ [[link boost_asio.reference.posix__basic_descriptor.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_descriptor is always the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
+ [[link boost_asio.reference.posix__basic_descriptor.native_type [*native_type]]]
+ [The native representation of a descriptor. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
+ [[link boost_asio.reference.posix__basic_descriptor.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_stream_socket.service_type [*service_type]]]
+ [[link boost_asio.reference.posix__basic_descriptor.service_type [*service_type]]]
     [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
- [
-
- [[link boost_asio.reference.basic_stream_socket.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
-
- ]
-
 ]
 
 [heading Member Functions]
@@ -39698,176 +45065,66 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_stream_socket.assign [*assign]]]
- [Assign an existing native socket to the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.async_read_some [*async_read_some]]]
- [Start an asynchronous read. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.async_receive [*async_receive]]]
- [Start an asynchronous receive. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.async_send [*async_send]]]
- [Start an asynchronous send. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.async_write_some [*async_write_some]]]
- [Start an asynchronous write. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.available [*available]]]
- [Determine the number of bytes available for reading. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.basic_stream_socket [*basic_stream_socket]]]
- [Construct a basic_stream_socket without opening it. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.bind [*bind]]]
- [Bind the socket to the given local endpoint. ]
+ [[link boost_asio.reference.posix__basic_descriptor.assign [*assign]]]
+ [Assign an existing native descriptor to the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
+ [[link boost_asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
+ [Construct a basic_descriptor without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.close [*close]]]
- [Close the socket. ]
+ [[link boost_asio.reference.posix__basic_descriptor.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.connect [*connect]]]
- [Connect the socket to the specified endpoint. ]
+ [[link boost_asio.reference.posix__basic_descriptor.close [*close]]]
+ [Close the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.get_io_service [*get_io_service]]]
+ [[link boost_asio.reference.posix__basic_descriptor.get_io_service [*get_io_service]]]
     [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.get_option [*get_option]]]
- [Get an option from the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
+ [[link boost_asio.reference.posix__basic_descriptor.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.io_service [*io_service]]]
+ [[link boost_asio.reference.posix__basic_descriptor.io_service [*io_service]]]
     [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.is_open [*is_open]]]
- [Determine whether the socket is open. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.local_endpoint [*local_endpoint]]]
- [Get the local endpoint of the socket. ]
+ [[link boost_asio.reference.posix__basic_descriptor.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.lowest_layer [*lowest_layer]]]
+ [[link boost_asio.reference.posix__basic_descriptor.lowest_layer [*lowest_layer]]]
     [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.basic_stream_socket.native [*native]]]
- [Get the native socket representation. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.open [*open]]]
- [Open the socket using the specified protocol. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.read_some [*read_some]]]
- [Read some data from the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.receive [*receive]]]
- [Receive some data on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint of the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.send [*send]]]
- [Send some data on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.set_option [*set_option]]]
- [Set an option on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.write_some [*write_some]]]
- [Write some data to the socket. ]
+ [[link boost_asio.reference.posix__basic_descriptor.native [*native]]]
+ [Get the native descriptor representation. ]
   ]
   
 ]
 
-[heading Data Members]
+[heading Protected Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_stream_socket.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
- ]
-
- [
- [[link boost_asio.reference.basic_stream_socket.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
+ [[link boost_asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
+ [Protected destructor to prevent deletion through this type. ]
   ]
-
+
 ]
 
 [heading Protected Data Members]
@@ -39875,132 +45132,56 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_stream_socket.implementation [*implementation]]]
+ [[link boost_asio.reference.posix__basic_descriptor.implementation [*implementation]]]
     [The underlying implementation of the I/O object. ]
   ]
 
   [
- [[link boost_asio.reference.basic_stream_socket.service [*service]]]
+ [[link boost_asio.reference.posix__basic_descriptor.service [*service]]]
     [The service associated with the I/O object. ]
   ]
 
 ]
 
-The basic_stream_socket class template provides asynchronous and blocking stream-oriented socket functionality.
+The posix::basic_descriptor class template provides the ability to wrap a POSIX descriptor.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
-
-
-
-
-[endsect]
-
-
-
-[section:type local::stream_protocol::type]
-
-Obtain an identifier for the type of the protocol.
-
- int type() const;
-
-
+[*Shared] [*objects:] Unsafe.
 
-[endsect]
 
 
 
 [endsect]
 
-[section:mutable_buffer mutable_buffer]
-
-Holds a buffer that can be modified.
-
- class mutable_buffer
-
-
-[heading Member Functions]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
- [Construct an empty buffer. ]
- ]
-
-]
-
-[heading Related Functions]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.mutable_buffer.buffer_cast [*buffer_cast]]]
- [Cast a non-modifiable buffer to a specified pointer to POD type. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffer.buffer_size [*buffer_size]]]
- [Get the number of bytes in a non-modifiable buffer. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffer.operator_plus_ [*operator+]]]
- [Create a new modifiable buffer that is offset from the start of another. ]
- ]
-
-]
-
-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.
-
-
-[section:buffer_cast mutable_buffer::buffer_cast]
-
-Cast a non-modifiable buffer to a specified pointer to POD type.
-
- template<
- typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
- PointerToPodType buffer_cast(
- const mutable_buffer & b);
-
 
 
-[endsect]
+[section:native posix::basic_stream_descriptor::native]
 
 
+['Inherited from posix::basic_descriptor.]
 
-[section:buffer_size mutable_buffer::buffer_size]
+[indexterm2 native..posix::basic_stream_descriptor] Get the native descriptor representation.
 
-Get the number of bytes in a non-modifiable buffer.
+ native_type native();
 
- std::size_t buffer_size(
- const mutable_buffer & b);
 
+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.
 
 
 [endsect]
 
 
-[section:mutable_buffer mutable_buffer::mutable_buffer]
-
-Construct an empty buffer.
-
- ``[link boost_asio.reference.mutable_buffer.mutable_buffer.overload1 mutable_buffer]``();
-
- ``[link boost_asio.reference.mutable_buffer.mutable_buffer.overload2 mutable_buffer]``(
- void * data,
- std::size_t size);
 
+[section:native_type posix::basic_stream_descriptor::native_type]
 
-[section:overload1 mutable_buffer::mutable_buffer (1 of 2 overloads)]
+[indexterm2 native_type..posix::basic_stream_descriptor] The native representation of a descriptor.
 
-Construct an empty buffer.
+ typedef StreamDescriptorService::native_type native_type;
 
- mutable_buffer();
 
 
 
@@ -40008,323 +45189,304 @@
 
 
 
-[section:overload2 mutable_buffer::mutable_buffer (2 of 2 overloads)]
-
-Construct a buffer to represent a given memory range.
+[section:non_blocking_io posix::basic_stream_descriptor::non_blocking_io]
 
- mutable_buffer(
- void * data,
- std::size_t size);
 
+['Inherited from posix::descriptor_base.]
 
+[indexterm2 non_blocking_io..posix::basic_stream_descriptor] IO control command to set the blocking mode of the descriptor.
 
-[endsect]
+ typedef implementation_defined non_blocking_io;
 
 
-[endsect]
 
-[section:operator_plus_ mutable_buffer::operator+]
+Implements the FIONBIO IO control command.
 
-Create a new modifiable buffer that is offset from the start of another.
 
- mutable_buffer ``[link boost_asio.reference.mutable_buffer.operator_plus_.overload1 operator+]``(
- const mutable_buffer & b,
- std::size_t start);
+[heading Example]
+
 
- mutable_buffer ``[link boost_asio.reference.mutable_buffer.operator_plus_.overload2 operator+]``(
- std::size_t start,
- const mutable_buffer & b);
 
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::descriptor_base::non_blocking_io command(true);
+ descriptor.io_control(command);
 
-[section:overload1 mutable_buffer::operator+ (1 of 2 overloads)]
 
-Create a new modifiable buffer that is offset from the start of another.
 
- mutable_buffer operator+(
- const mutable_buffer & b,
- std::size_t start);
 
 
 
 [endsect]
 
 
+[section:read_some posix::basic_stream_descriptor::read_some]
 
-[section:overload2 mutable_buffer::operator+ (2 of 2 overloads)]
-
-Create a new modifiable buffer that is offset from the start of another.
-
- mutable_buffer operator+(
- std::size_t start,
- const mutable_buffer & b);
-
-
-
-[endsect]
-
-
-[endsect]
+[indexterm2 read_some..posix::basic_stream_descriptor] Read some data from the descriptor.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.read_some.overload1 read_some]``(
+ const MutableBufferSequence & buffers);
 
-[endsect]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.read_some.overload2 read_some]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-[section:mutable_buffers_1 mutable_buffers_1]
 
-Adapts a single modifiable buffer so that it meets the requirements of the MutableBufferSequence concept.
+[section:overload1 posix::basic_stream_descriptor::read_some (1 of 2 overloads)]
 
- class mutable_buffers_1 :
- public mutable_buffer
+Read some data from the descriptor.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers);
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
+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.
 
- [[link boost_asio.reference.mutable_buffers_1.const_iterator [*const_iterator]]]
- [A random-access iterator type that may be used to read elements. ]
-
- ]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.mutable_buffers_1.value_type [*value_type]]]
- [The type for each element in the list of buffers. ]
+[variablelist
   
- ]
+[[buffers][One or more buffers into which the data will be read.]]
 
 ]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.mutable_buffers_1.begin [*begin]]]
- [Get a random-access iterator to the first element. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffers_1.end [*end]]]
- [Get a random-access iterator for one past the last element. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffers_1.mutable_buffers_1 [*mutable_buffers_1]]]
- [Construct to represent a single modifiable buffer. ]
- ]
-
-]
+[heading Return Value]
+
+The number of bytes read.
 
-[heading Related Functions]
-[table
- [[Name][Description]]
+[heading Exceptions]
+
 
- [
- [[link boost_asio.reference.mutable_buffers_1.buffer_cast [*buffer_cast]]]
- [Cast a non-modifiable buffer to a specified pointer to POD type. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffers_1.buffer_size [*buffer_size]]]
- [Get the number of bytes in a non-modifiable buffer. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffers_1.operator_plus_ [*operator+]]]
- [Create a new modifiable buffer that is offset from the start of another. ]
- ]
+[variablelist
   
-]
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
 
+]
 
-[section:begin mutable_buffers_1::begin]
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
-Get a random-access iterator to the first element.
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
- const_iterator begin() const;
+ descriptor.read_some(boost::asio::buffer(data, size));
 
 
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
-[endsect]
 
 
+[endsect]
 
-[section:buffer_cast mutable_buffers_1::buffer_cast]
 
 
-['Inherited from mutable_buffer.]
+[section:overload2 posix::basic_stream_descriptor::read_some (2 of 2 overloads)]
 
-Cast a non-modifiable buffer to a specified pointer to POD type.
+Read some data from the descriptor.
 
   template<
- typename ``[link boost_asio.reference.PointerToPodType PointerToPodType]``>
- PointerToPodType buffer_cast(
- const mutable_buffer & b);
-
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
-[endsect]
+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.
 
 
+[heading Parameters]
+
 
-[section:buffer_size mutable_buffers_1::buffer_size]
+[variablelist
+
+[[buffers][One or more buffers into which the data will be read.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
-['Inherited from mutable_buffer.]
+]
 
-Get the number of bytes in a non-modifiable buffer.
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
 
- std::size_t buffer_size(
- const mutable_buffer & b);
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:const_iterator mutable_buffers_1::const_iterator]
 
-A random-access iterator type that may be used to read elements.
+[section:service posix::basic_stream_descriptor::service]
 
- typedef const mutable_buffer * const_iterator;
 
+['Inherited from basic_io_object.]
 
+[indexterm2 service..posix::basic_stream_descriptor] The service associated with the I/O object.
 
+ service_type & service;
 
-[endsect]
 
 
+[endsect]
 
-[section:end mutable_buffers_1::end]
 
-Get a random-access iterator for one past the last element.
 
- const_iterator end() const;
+[section:service_type posix::basic_stream_descriptor::service_type]
 
 
+['Inherited from basic_io_object.]
 
-[endsect]
+[indexterm2 service_type..posix::basic_stream_descriptor] The type of the service that will be used to provide I/O operations.
 
+ typedef StreamDescriptorService service_type;
 
 
-[section:mutable_buffers_1 mutable_buffers_1::mutable_buffers_1]
 
-Construct to represent a single modifiable buffer.
 
- mutable_buffers_1(
- const mutable_buffer & b);
+[endsect]
 
 
+[section:write_some posix::basic_stream_descriptor::write_some]
 
-[endsect]
+[indexterm2 write_some..posix::basic_stream_descriptor] Write some data to the descriptor.
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.write_some.overload1 write_some]``(
+ const ConstBufferSequence & buffers);
 
-[section:operator_plus_ mutable_buffers_1::operator+]
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.write_some.overload2 write_some]``(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-Create a new modifiable buffer that is offset from the start of another.
 
- mutable_buffer ``[link boost_asio.reference.mutable_buffers_1.operator_plus_.overload1 operator+]``(
- const mutable_buffer & b,
- std::size_t start);
+[section:overload1 posix::basic_stream_descriptor::write_some (1 of 2 overloads)]
 
- mutable_buffer ``[link boost_asio.reference.mutable_buffers_1.operator_plus_.overload2 operator+]``(
- std::size_t start,
- const mutable_buffer & b);
+Write some data to the descriptor.
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers);
 
-[section:overload1 mutable_buffers_1::operator+ (1 of 2 overloads)]
 
+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.
 
-['Inherited from mutable_buffer.]
 
-Create a new modifiable buffer that is offset from the start of another.
+[heading Parameters]
+
 
- mutable_buffer operator+(
- const mutable_buffer & b,
- std::size_t start);
+[variablelist
+
+[[buffers][One or more data buffers to be written to the descriptor.]]
 
+]
 
+[heading Return Value]
+
+The number of bytes written.
 
-[endsect]
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
 
+]
 
-[section:overload2 mutable_buffers_1::operator+ (2 of 2 overloads)]
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
-['Inherited from mutable_buffer.]
+ descriptor.write_some(boost::asio::buffer(data, size));
 
-Create a new modifiable buffer that is offset from the start of another.
 
- mutable_buffer operator+(
- std::size_t start,
- const mutable_buffer & b);
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
 [endsect]
 
 
-[endsect]
 
+[section:overload2 posix::basic_stream_descriptor::write_some (2 of 2 overloads)]
 
-[section:value_type mutable_buffers_1::value_type]
+Write some data to the descriptor.
 
-The type for each element in the list of buffers.
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
- typedef mutable_buffer value_type;
 
+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.
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
- [Construct an empty buffer. ]
- ]
+[heading Parameters]
+
+
+[variablelist
   
-]
+[[buffers][One or more data buffers to be written to the descriptor.]]
 
-[heading Related Functions]
-[table
- [[Name][Description]]
+[[ec][Set to indicate what error occurred, if any.]]
 
- [
- [[link boost_asio.reference.mutable_buffer.buffer_cast [*buffer_cast]]]
- [Cast a non-modifiable buffer to a specified pointer to POD type. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffer.buffer_size [*buffer_size]]]
- [Get the number of bytes in a non-modifiable buffer. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffer.operator_plus_ [*operator+]]]
- [Create a new modifiable buffer that is offset from the start of another. ]
- ]
-
 ]
 
-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.
+[heading Return Value]
+
+The number of bytes written. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
 
 
 [endsect]
 
 
+[endsect]
+
 
 [endsect]
 
-[section:null_buffers null_buffers]
+[section:posix__descriptor_base posix::descriptor_base]
 
-An implementation of both the ConstBufferSequence and MutableBufferSequence concepts to represent a null buffer sequence.
+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 null_buffers
+ class descriptor_base
 
 
 [heading Types]
@@ -40333,67 +45495,55 @@
 
   [
 
- [[link boost_asio.reference.null_buffers.const_iterator [*const_iterator]]]
- [A random-access iterator type that may be used to read elements. ]
+ [[link boost_asio.reference.posix__descriptor_base.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.null_buffers.value_type [*value_type]]]
- [The type for each element in the list of buffers. ]
+ [[link boost_asio.reference.posix__descriptor_base.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the descriptor. ]
   
   ]
 
 ]
 
-[heading Member Functions]
+[heading Protected Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.null_buffers.begin [*begin]]]
- [Get a random-access iterator to the first element. ]
- ]
-
- [
- [[link boost_asio.reference.null_buffers.end [*end]]]
- [Get a random-access iterator for one past the last element. ]
+ [[link boost_asio.reference.posix__descriptor_base._descriptor_base [*~descriptor_base]]]
+ [Protected destructor to prevent deletion through this type. ]
   ]
   
 ]
 
 
-[section:begin null_buffers::begin]
-
-Get a random-access iterator to the first element.
-
- const_iterator begin() const;
-
-
-
-[endsect]
-
-
+[section:bytes_readable posix::descriptor_base::bytes_readable]
 
-[section:const_iterator null_buffers::const_iterator]
+[indexterm2 bytes_readable..posix::descriptor_base] IO control command to get the amount of data that can be read without blocking.
 
-A random-access iterator type that may be used to read elements.
+ typedef implementation_defined bytes_readable;
 
- typedef const mutable_buffer * const_iterator;
 
 
+Implements the FIONREAD IO control command.
 
 
-[endsect]
+[heading Example]
+
 
 
+ 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();
 
-[section:end null_buffers::end]
 
-Get a random-access iterator for one past the last element.
 
- const_iterator end() const;
 
 
 
@@ -40401,61 +45551,28 @@
 
 
 
-[section:value_type null_buffers::value_type]
+[section:non_blocking_io posix::descriptor_base::non_blocking_io]
 
-The type for each element in the list of buffers.
+[indexterm2 non_blocking_io..posix::descriptor_base] IO control command to set the blocking mode of the descriptor.
 
- typedef mutable_buffer value_type;
+ typedef implementation_defined non_blocking_io;
 
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.mutable_buffer.mutable_buffer [*mutable_buffer]]]
- [Construct an empty buffer. ]
- ]
-
-]
+Implements the FIONBIO IO control command.
 
-[heading Related Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.mutable_buffer.buffer_cast [*buffer_cast]]]
- [Cast a non-modifiable buffer to a specified pointer to POD type. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffer.buffer_size [*buffer_size]]]
- [Get the number of bytes in a non-modifiable buffer. ]
- ]
-
- [
- [[link boost_asio.reference.mutable_buffer.operator_plus_ [*operator+]]]
- [Create a new modifiable buffer that is offset from the start of another. ]
- ]
+[heading Example]
   
-]
-
-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.
-
 
 
-[endsect]
-
-
-
-[endsect]
-
+ boost::asio::posix::stream_descriptor descriptor(io_service);
+ ...
+ boost::asio::descriptor_base::non_blocking_io command(true);
+ descriptor.io_control(command);
 
-[section:placeholders__bytes_transferred placeholders::bytes_transferred]
 
-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;
 
 
 
@@ -40463,11 +45580,11 @@
 
 
 
-[section:placeholders__error placeholders::error]
+[section:_descriptor_base posix::descriptor_base::~descriptor_base]
 
-An argument placeholder, for use with boost::bind(), that corresponds to the error argument of a handler for any of the asynchronous functions.
+[indexterm2 ~descriptor_base..posix::descriptor_base] Protected destructor to prevent deletion through this type.
 
- unspecified error;
+ ~descriptor_base();
 
 
 
@@ -40475,26 +45592,14 @@
 
 
 
-[section:placeholders__iterator placeholders::iterator]
-
-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;
-
-
-
 [endsect]
 
 
-[section:posix__basic_descriptor posix::basic_descriptor]
+[section:posix__stream_descriptor posix::stream_descriptor]
 
-Provides POSIX descriptor functionality.
+[indexterm1 posix::stream_descriptor] Typedef for the typical usage of a stream-oriented descriptor.
 
- template<
- typename ``[link boost_asio.reference.DescriptorService DescriptorService]``>
- class basic_descriptor :
- public basic_io_object< DescriptorService >,
- public posix::descriptor_base
+ typedef basic_stream_descriptor stream_descriptor;
 
 
 [heading Types]
@@ -40503,42 +45608,42 @@
 
   [
 
- [[link boost_asio.reference.posix__basic_descriptor.bytes_readable [*bytes_readable]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.bytes_readable [*bytes_readable]]]
     [IO control command to get the amount of data that can be read without blocking. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.posix__basic_descriptor.implementation_type [*implementation_type]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.implementation_type [*implementation_type]]]
     [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.posix__basic_descriptor.lowest_layer_type [*lowest_layer_type]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer_type [*lowest_layer_type]]]
     [A basic_descriptor is always the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.posix__basic_descriptor.native_type [*native_type]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.native_type [*native_type]]]
     [The native representation of a descriptor. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.posix__basic_descriptor.non_blocking_io [*non_blocking_io]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.non_blocking_io [*non_blocking_io]]]
     [IO control command to set the blocking mode of the descriptor. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.posix__basic_descriptor.service_type [*service_type]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.service_type [*service_type]]]
     [The type of the service that will be used to provide I/O operations. ]
   
   ]
@@ -40550,112 +45655,292 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.posix__basic_descriptor.assign [*assign]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.assign [*assign]]]
     [Assign an existing native descriptor to the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
- [Construct a basic_descriptor without opening it. ]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_descriptor.cancel [*cancel]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor [*basic_stream_descriptor]]]
+ [Construct a basic_stream_descriptor without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.cancel [*cancel]]]
     [Cancel all asynchronous operations associated with the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_descriptor.close [*close]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.close [*close]]]
     [Close the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_descriptor.get_io_service [*get_io_service]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.get_io_service [*get_io_service]]]
     [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_descriptor.io_control [*io_control]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.io_control [*io_control]]]
     [Perform an IO control command on the descriptor. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_descriptor.io_service [*io_service]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.io_service [*io_service]]]
     [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_descriptor.is_open [*is_open]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.is_open [*is_open]]]
     [Determine whether the descriptor is open. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_descriptor.lowest_layer [*lowest_layer]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer [*lowest_layer]]]
     [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_descriptor.native [*native]]]
+ [[link boost_asio.reference.posix__basic_stream_descriptor.native [*native]]]
     [Get the native descriptor representation. ]
   ]
   
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.read_some [*read_some]]]
+ [Read some data from the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.write_some [*write_some]]]
+ [Write some data to the descriptor. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__basic_stream_descriptor.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The posix::basic_stream_descriptor class template provides asynchronous and blocking stream-oriented descriptor functionality.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+[section:posix__stream_descriptor_service posix::stream_descriptor_service]
+
+Default service implementation for a stream descriptor.
+
+ class stream_descriptor_service :
+ public io_service::service
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.posix__stream_descriptor_service.implementation_type [*implementation_type]]]
+ [The type of a stream descriptor implementation. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.posix__stream_descriptor_service.native_type [*native_type]]]
+ [The native descriptor type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.assign [*assign]]]
+ [Assign an existing native descriptor to a stream descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.close [*close]]]
+ [Close a stream descriptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.construct [*construct]]]
+ [Construct a new stream descriptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.destroy [*destroy]]]
+ [Destroy a stream descriptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.io_control [*io_control]]]
+ [Perform an IO control command on the descriptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.is_open [*is_open]]]
+ [Determine whether the descriptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.native [*native]]]
+ [Get the native descriptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.read_some [*read_some]]]
+ [Read some data from the stream. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined descriptorr objects owned by the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.stream_descriptor_service [*stream_descriptor_service]]]
+ [Construct a new stream descriptor service for the specified io_service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.write_some [*write_some]]]
+ [Write the given data to the stream. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.posix__stream_descriptor_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
+
 ]
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
- [Protected destructor to prevent deletion through this type. ]
- ]
-
-]
+[section:assign posix::stream_descriptor_service::assign]
+
+[indexterm2 assign..posix::stream_descriptor_service] 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);
+
+
+
+[endsect]
+
+
+
+[section:async_read_some posix::stream_descriptor_service::async_read_some]
 
-[heading Protected Data Members]
-[table
- [[Name][Description]]
+[indexterm2 async_read_some..posix::stream_descriptor_service] Start an asynchronous read.
 
- [
- [[link boost_asio.reference.posix__basic_descriptor.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ ReadHandler descriptorr);
 
- [
- [[link boost_asio.reference.posix__basic_descriptor.service [*service]]]
- [The service associated with the I/O object. ]
- ]
 
-]
 
-The posix::basic_descriptor class template provides the ability to wrap a POSIX descriptor.
+[endsect]
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[section:async_write_some posix::stream_descriptor_service::async_write_some]
 
+[indexterm2 async_write_some..posix::stream_descriptor_service] Start an asynchronous write.
 
-[section:assign posix::basic_descriptor::assign]
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ WriteHandler descriptorr);
 
-Assign an existing native descriptor to the descriptor.
 
- void ``[link boost_asio.reference.posix__basic_descriptor.assign.overload1 assign]``(
- const native_type & native_descriptor);
 
- boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.assign.overload2 assign]``(
- const native_type & native_descriptor,
- boost::system::error_code & ec);
+[endsect]
 
 
-[section:overload1 posix::basic_descriptor::assign (1 of 2 overloads)]
 
-Assign an existing native descriptor to the descriptor.
+[section:cancel posix::stream_descriptor_service::cancel]
 
- void assign(
- const native_type & native_descriptor);
+[indexterm2 cancel..posix::stream_descriptor_service] Cancel all asynchronous operations associated with the descriptor.
+
+ boost::system::error_code cancel(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
 
 
@@ -40663,12 +45948,12 @@
 
 
 
-[section:overload2 posix::basic_descriptor::assign (2 of 2 overloads)]
+[section:close posix::stream_descriptor_service::close]
 
-Assign an existing native descriptor to the descriptor.
+[indexterm2 close..posix::stream_descriptor_service] Close a stream descriptor implementation.
 
- boost::system::error_code assign(
- const native_type & native_descriptor,
+ boost::system::error_code close(
+ implementation_type & impl,
       boost::system::error_code & ec);
 
 
@@ -40676,39 +45961,41 @@
 [endsect]
 
 
+
+[section:construct posix::stream_descriptor_service::construct]
+
+[indexterm2 construct..posix::stream_descriptor_service] Construct a new stream descriptor implementation.
+
+ void construct(
+ implementation_type & impl);
+
+
+
 [endsect]
 
-[section:basic_descriptor posix::basic_descriptor::basic_descriptor]
 
-Construct a basic_descriptor without opening it.
 
- ``[link boost_asio.reference.posix__basic_descriptor.basic_descriptor.overload1 basic_descriptor]``(
- boost::asio::io_service & io_service);
+[section:destroy posix::stream_descriptor_service::destroy]
 
- ``[link boost_asio.reference.posix__basic_descriptor.basic_descriptor.overload2 basic_descriptor]``(
- boost::asio::io_service & io_service,
- const native_type & native_descriptor);
+[indexterm2 destroy..posix::stream_descriptor_service] Destroy a stream descriptor implementation.
 
+ void destroy(
+ implementation_type & impl);
 
-[section:overload1 posix::basic_descriptor::basic_descriptor (1 of 2 overloads)]
 
-Construct a basic_descriptor without opening it.
 
- basic_descriptor(
- boost::asio::io_service & io_service);
+[endsect]
 
 
-This constructor creates a descriptor without opening it.
 
+[section:get_io_service posix::stream_descriptor_service::get_io_service]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[io_service][The io\_service object that the descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor. ]]
+['Inherited from io_service.]
 
-]
+[indexterm2 get_io_service..posix::stream_descriptor_service] Get the io_service object that owns the service.
+
+ boost::asio::io_service & get_io_service();
 
 
 
@@ -40716,71 +46003,94 @@
 
 
 
-[section:overload2 posix::basic_descriptor::basic_descriptor (2 of 2 overloads)]
+[section:id posix::stream_descriptor_service::id]
 
-Construct a basic_descriptor on an existing native descriptor.
+[indexterm2 id..posix::stream_descriptor_service] The unique service identifier.
 
- basic_descriptor(
- boost::asio::io_service & io_service,
- const native_type & native_descriptor);
+ static boost::asio::io_service::id id;
 
 
-This constructor creates a descriptor object to hold an existing native descriptor.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[io_service][The io\_service object that the descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor.]]
 
-[[native_descriptor][A native descriptor.]]
+[section:implementation_type posix::stream_descriptor_service::implementation_type]
 
-]
+[indexterm2 implementation_type..posix::stream_descriptor_service] The type of a stream descriptor implementation.
 
-[heading Exceptions]
-
+ typedef implementation_defined implementation_type;
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+
+
+[endsect]
+
+
+
+[section:io_control posix::stream_descriptor_service::io_control]
+
+[indexterm2 io_control..posix::stream_descriptor_service] Perform an IO control command on the descriptor.
+
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ implementation_type & impl,
+ IoControlCommand & command,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
+
+[section:io_service posix::stream_descriptor_service::io_service]
+
+
+['Inherited from io_service.]
+
+[indexterm2 io_service..posix::stream_descriptor_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
+
+ boost::asio::io_service & io_service();
+
+
+
 [endsect]
 
 
-[section:bytes_readable posix::basic_descriptor::bytes_readable]
 
+[section:is_open posix::stream_descriptor_service::is_open]
 
-['Inherited from posix::descriptor_base.]
+[indexterm2 is_open..posix::stream_descriptor_service] Determine whether the descriptor is open.
 
-IO control command to get the amount of data that can be read without blocking.
+ bool is_open(
+ const implementation_type & impl) const;
 
- typedef implementation_defined bytes_readable;
 
 
+[endsect]
 
-Implements the FIONREAD IO control command.
 
 
-[heading Example]
-
+[section:native posix::stream_descriptor_service::native]
+
+[indexterm2 native..posix::stream_descriptor_service] Get the native descriptor implementation.
+
+ native_type native(
+ implementation_type & impl);
+
+
+
+[endsect]
 
 
- 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();
 
+[section:native_type posix::stream_descriptor_service::native_type]
+
+[indexterm2 native_type..posix::stream_descriptor_service] The native descriptor type.
 
+ typedef implementation_defined native_type;
 
 
 
@@ -40788,34 +46098,42 @@
 [endsect]
 
 
-[section:cancel posix::basic_descriptor::cancel]
 
-Cancel all asynchronous operations associated with the descriptor.
+[section:read_some posix::stream_descriptor_service::read_some]
 
- void ``[link boost_asio.reference.posix__basic_descriptor.cancel.overload1 cancel]``();
+[indexterm2 read_some..posix::stream_descriptor_service] Read some data from the stream.
 
- boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.cancel.overload2 cancel]``(
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
-[section:overload1 posix::basic_descriptor::cancel (1 of 2 overloads)]
 
-Cancel all asynchronous operations associated with the descriptor.
+[endsect]
 
- void cancel();
 
 
-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.
+[section:shutdown_service posix::stream_descriptor_service::shutdown_service]
 
+[indexterm2 shutdown_service..posix::stream_descriptor_service] Destroy all user-defined descriptorr objects owned by the service.
 
-[heading Exceptions]
-
+ void shutdown_service();
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+
+[endsect]
+
+
+
+[section:stream_descriptor_service posix::stream_descriptor_service::stream_descriptor_service]
+
+[indexterm2 stream_descriptor_service..posix::stream_descriptor_service] Construct a new stream descriptor service for the specified io_service.
+
+ stream_descriptor_service(
+ boost::asio::io_service & io_service);
 
 
 
@@ -40823,61 +46141,287 @@
 
 
 
-[section:overload2 posix::basic_descriptor::cancel (2 of 2 overloads)]
+[section:write_some posix::stream_descriptor_service::write_some]
 
-Cancel all asynchronous operations associated with the descriptor.
+[indexterm2 write_some..posix::stream_descriptor_service] Write the given data to the stream.
 
- boost::system::error_code cancel(
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
-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.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
+
+[endsect]
+
+[section:raw_socket_service raw_socket_service]
+
+Default service implementation for a raw socket.
+
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ class raw_socket_service :
+ public io_service::service
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.raw_socket_service.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
   
-[[ec][Set to indicate what error occurred, if any. ]]
+ ]
+
+ [
+
+ [[link boost_asio.reference.raw_socket_service.implementation_type [*implementation_type]]]
+ [The type of a raw socket. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.raw_socket_service.native_type [*native_type]]]
+ [The native socket type. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.raw_socket_service.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
 
 ]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.raw_socket_service.assign [*assign]]]
+ [Assign an existing native socket to a raw socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.async_receive [*async_receive]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.async_receive_from [*async_receive_from]]]
+ [Start an asynchronous receive that will get the endpoint of the sender. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.async_send [*async_send]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.async_send_to [*async_send_to]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.bind [*bind]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.close [*close]]]
+ [Close a raw socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.connect [*connect]]]
+ [Connect the raw socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.construct [*construct]]]
+ [Construct a new raw socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.destroy [*destroy]]]
+ [Destroy a raw socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.get_option [*get_option]]]
+ [Get a socket option. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.native [*native]]]
+ [Get the native socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.open [*open]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.raw_socket_service [*raw_socket_service]]]
+ [Construct a new raw socket service for the specified io_service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.receive [*receive]]]
+ [Receive some data from the peer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.receive_from [*receive_from]]]
+ [Receive raw data with the endpoint of the sender. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.send [*send]]]
+ [Send the given data to the peer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.send_to [*send_to]]]
+ [Send raw data to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.set_option [*set_option]]]
+ [Set a socket option. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.raw_socket_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
+ ]
+
+]
 
-[endsect]
+[heading Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.raw_socket_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
 
-[endsect]
+]
 
-[section:close posix::basic_descriptor::close]
 
-Close the descriptor.
+[section:assign raw_socket_service::assign]
 
- void ``[link boost_asio.reference.posix__basic_descriptor.close.overload1 close]``();
+[indexterm2 assign..raw_socket_service] Assign an existing native socket to a raw socket.
 
- boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.close.overload2 close]``(
+ boost::system::error_code assign(
+ implementation_type & impl,
+ const protocol_type & protocol,
+ const native_type & native_socket,
       boost::system::error_code & ec);
 
 
-[section:overload1 posix::basic_descriptor::close (1 of 2 overloads)]
 
-Close the descriptor.
+[endsect]
 
- void close();
 
 
-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.
+[section:async_connect raw_socket_service::async_connect]
 
+[indexterm2 async_connect..raw_socket_service] Start an asynchronous connect.
 
-[heading Exceptions]
-
+ template<
+ typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
+ void async_connect(
+ implementation_type & impl,
+ const endpoint_type & peer_endpoint,
+ ConnectHandler handler);
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+
+[endsect]
+
+
+
+[section:async_receive raw_socket_service::async_receive]
+
+[indexterm2 async_receive..raw_socket_service] Start an asynchronous receive.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_receive(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
+ ReadHandler handler);
 
 
 
@@ -40885,65 +46429,86 @@
 
 
 
-[section:overload2 posix::basic_descriptor::close (2 of 2 overloads)]
+[section:async_receive_from raw_socket_service::async_receive_from]
 
-Close the descriptor.
+[indexterm2 async_receive_from..raw_socket_service] Start an asynchronous receive that will get the endpoint of the sender.
 
- boost::system::error_code close(
- boost::system::error_code & ec);
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_receive_from(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ endpoint_type & sender_endpoint,
+ socket_base::message_flags flags,
+ ReadHandler handler);
 
 
-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.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any. ]]
 
-]
+[section:async_send raw_socket_service::async_send]
+
+[indexterm2 async_send..raw_socket_service] Start an asynchronous send.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_send(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ WriteHandler handler);
 
 
 
 [endsect]
 
 
-[endsect]
-
 
-[section:get_io_service posix::basic_descriptor::get_io_service]
+[section:async_send_to raw_socket_service::async_send_to]
 
+[indexterm2 async_send_to..raw_socket_service] Start an asynchronous send.
 
-['Inherited from basic_io_object.]
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_send_to(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ const endpoint_type & destination,
+ socket_base::message_flags flags,
+ WriteHandler handler);
 
-Get the io_service associated with the object.
 
- boost::asio::io_service & get_io_service();
 
+[endsect]
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
 
-[heading Return Value]
-
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+[section:at_mark raw_socket_service::at_mark]
 
+[indexterm2 at_mark..raw_socket_service] 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;
 
-[endsect]
 
 
+[endsect]
 
-[section:implementation posix::basic_descriptor::implementation]
 
 
-['Inherited from basic_io_object.]
+[section:available raw_socket_service::available]
 
-The underlying implementation of the I/O object.
+[indexterm2 available..raw_socket_service] Determine the number of bytes available for reading.
 
- implementation_type implementation;
+ std::size_t available(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
 
 
@@ -40951,80 +46516,57 @@
 
 
 
-[section:implementation_type posix::basic_descriptor::implementation_type]
-
-
-['Inherited from basic_io_object.]
-
-The underlying implementation type of I/O object.
+[section:bind raw_socket_service::bind]
 
- typedef service_type::implementation_type implementation_type;
+[indexterm2 bind..raw_socket_service]
 
+ boost::system::error_code bind(
+ implementation_type & impl,
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
-[section:io_control posix::basic_descriptor::io_control]
 
-Perform an IO control command on the descriptor.
+[section:cancel raw_socket_service::cancel]
 
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- void ``[link boost_asio.reference.posix__basic_descriptor.io_control.overload1 io_control]``(
- IoControlCommand & command);
+[indexterm2 cancel..raw_socket_service] Cancel all asynchronous operations associated with the socket.
 
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code ``[link boost_asio.reference.posix__basic_descriptor.io_control.overload2 io_control]``(
- IoControlCommand & command,
+ boost::system::error_code cancel(
+ implementation_type & impl,
       boost::system::error_code & ec);
 
 
-[section:overload1 posix::basic_descriptor::io_control (1 of 2 overloads)]
-
-Perform an IO control command on the descriptor.
-
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- void io_control(
- IoControlCommand & command);
 
+[endsect]
 
-This function is used to execute an IO control command on the descriptor.
 
 
-[heading Parameters]
-
+[section:close raw_socket_service::close]
 
-[variablelist
-
-[[command][The IO control command to be performed on the descriptor.]]
+[indexterm2 close..raw_socket_service] Close a raw socket implementation.
 
-]
+ boost::system::error_code close(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
+[endsect]
 
-[heading Example]
-
-Getting the number of bytes ready to read:
 
- 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();
 
+[section:connect raw_socket_service::connect]
 
+[indexterm2 connect..raw_socket_service] 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);
 
 
 
@@ -41032,73 +46574,53 @@
 
 
 
-[section:overload2 posix::basic_descriptor::io_control (2 of 2 overloads)]
+[section:construct raw_socket_service::construct]
 
-Perform an IO control command on the descriptor.
+[indexterm2 construct..raw_socket_service] Construct a new raw socket implementation.
 
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code io_control(
- IoControlCommand & command,
- boost::system::error_code & ec);
+ void construct(
+ implementation_type & impl);
 
 
-This function is used to execute an IO control command on the descriptor.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[command][The IO control command to be performed on the descriptor.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[section:destroy raw_socket_service::destroy]
 
-]
+[indexterm2 destroy..raw_socket_service] Destroy a raw socket implementation.
 
-[heading Example]
-
-Getting the number of bytes ready to read:
+ void destroy(
+ implementation_type & impl);
 
- 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();
 
 
+[endsect]
 
 
 
+[section:endpoint_type raw_socket_service::endpoint_type]
 
-[endsect]
+[indexterm2 endpoint_type..raw_socket_service] The endpoint type.
 
+ typedef Protocol::endpoint endpoint_type;
 
-[endsect]
 
 
-[section:io_service posix::basic_descriptor::io_service]
 
+[endsect]
 
-['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
 
- boost::asio::io_service & io_service();
+[section:get_io_service raw_socket_service::get_io_service]
 
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+['Inherited from io_service.]
 
+[indexterm2 get_io_service..raw_socket_service] Get the io_service object that owns the service.
 
-[heading Return Value]
-
-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();
 
 
 
@@ -41106,11 +46628,16 @@
 
 
 
-[section:is_open posix::basic_descriptor::is_open]
+[section:get_option raw_socket_service::get_option]
 
-Determine whether the descriptor is open.
+[indexterm2 get_option..raw_socket_service] Get a socket option.
 
- bool is_open() const;
+ template<
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ boost::system::error_code get_option(
+ const implementation_type & impl,
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
 
 
 
@@ -41118,19 +46645,11 @@
 
 
 
-[section:lowest_layer posix::basic_descriptor::lowest_layer]
-
-Get a reference to the lowest layer.
-
- lowest_layer_type & 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.
+[section:id raw_socket_service::id]
 
+[indexterm2 id..raw_socket_service] The unique service identifier.
 
-[heading Return Value]
-
-A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
+ static boost::asio::io_service::id id;
 
 
 
@@ -41138,153 +46657,57 @@
 
 
 
-[section:lowest_layer_type posix::basic_descriptor::lowest_layer_type]
-
-A basic_descriptor is always the lowest layer.
+[section:implementation_type raw_socket_service::implementation_type]
 
- typedef basic_descriptor< DescriptorService > lowest_layer_type;
+[indexterm2 implementation_type..raw_socket_service] The type of a raw socket.
 
+ typedef implementation_defined implementation_type;
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
 
- [[link boost_asio.reference.posix__basic_descriptor.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.posix__basic_descriptor.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.posix__basic_descriptor.lowest_layer_type [*lowest_layer_type]]]
- [A basic_descriptor is always the lowest layer. ]
-
- ]
+[section:io_control raw_socket_service::io_control]
 
- [
+[indexterm2 io_control..raw_socket_service] Perform an IO control command on the socket.
 
- [[link boost_asio.reference.posix__basic_descriptor.native_type [*native_type]]]
- [The native representation of a descriptor. ]
-
- ]
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ implementation_type & impl,
+ IoControlCommand & command,
+ boost::system::error_code & ec);
 
- [
 
- [[link boost_asio.reference.posix__basic_descriptor.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the descriptor. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.posix__basic_descriptor.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[section:io_service raw_socket_service::io_service]
 
- [
- [[link boost_asio.reference.posix__basic_descriptor.assign [*assign]]]
- [Assign an existing native descriptor to the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
- [Construct a basic_descriptor without opening it. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.close [*close]]]
- [Close the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.io_control [*io_control]]]
- [Perform an IO control command on the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.is_open [*is_open]]]
- [Determine whether the descriptor is open. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.native [*native]]]
- [Get the native descriptor representation. ]
- ]
-
-]
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
+['Inherited from io_service.]
 
- [
- [[link boost_asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
- [Protected destructor to prevent deletion through this type. ]
- ]
-
-]
+[indexterm2 io_service..raw_socket_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
-[heading Protected Data Members]
-[table
- [[Name][Description]]
+ boost::asio::io_service & io_service();
 
- [
- [[link boost_asio.reference.posix__basic_descriptor.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
 
- [
- [[link boost_asio.reference.posix__basic_descriptor.service [*service]]]
- [The service associated with the I/O object. ]
- ]
 
-]
+[endsect]
 
-The posix::basic_descriptor class template provides the ability to wrap a POSIX descriptor.
 
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+[section:is_open raw_socket_service::is_open]
 
-[*Shared] [*objects:] Unsafe.
+[indexterm2 is_open..raw_socket_service] Determine whether the socket is open.
 
+ bool is_open(
+ const implementation_type & impl) const;
 
 
 
@@ -41292,26 +46715,26 @@
 
 
 
-[section:native posix::basic_descriptor::native]
-
-Get the native descriptor representation.
+[section:local_endpoint raw_socket_service::local_endpoint]
 
- native_type native();
+[indexterm2 local_endpoint..raw_socket_service] Get the local endpoint.
 
+ endpoint_type local_endpoint(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
-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.
 
 
 [endsect]
 
 
 
-[section:native_type posix::basic_descriptor::native_type]
-
-The native representation of a descriptor.
+[section:native raw_socket_service::native]
 
- typedef DescriptorService::native_type native_type;
+[indexterm2 native..raw_socket_service] Get the native socket implementation.
 
+ native_type native(
+ implementation_type & impl);
 
 
 
@@ -41319,31 +46742,27 @@
 
 
 
-[section:non_blocking_io posix::basic_descriptor::non_blocking_io]
-
-
-['Inherited from posix::descriptor_base.]
-
-IO control command to set the blocking mode of the descriptor.
+[section:native_type raw_socket_service::native_type]
 
- typedef implementation_defined non_blocking_io;
+[indexterm2 native_type..raw_socket_service] The native socket type.
 
+ typedef implementation_defined native_type;
 
 
-Implements the FIONBIO IO control command.
 
 
-[heading Example]
-
+[endsect]
 
 
- boost::asio::posix::stream_descriptor descriptor(io_service);
- ...
- boost::asio::descriptor_base::non_blocking_io command(true);
- descriptor.io_control(command);
 
+[section:open raw_socket_service::open]
 
+[indexterm2 open..raw_socket_service]
 
+ boost::system::error_code open(
+ implementation_type & impl,
+ const protocol_type & protocol,
+ boost::system::error_code & ec);
 
 
 
@@ -41351,14 +46770,12 @@
 
 
 
-[section:service posix::basic_descriptor::service]
-
+[section:protocol_type raw_socket_service::protocol_type]
 
-['Inherited from basic_io_object.]
+[indexterm2 protocol_type..raw_socket_service] The protocol type.
 
-The service associated with the I/O object.
+ typedef Protocol protocol_type;
 
- service_type & service;
 
 
 
@@ -41366,15 +46783,12 @@
 
 
 
-[section:service_type posix::basic_descriptor::service_type]
-
-
-['Inherited from basic_io_object.]
-
-The type of the service that will be used to provide I/O operations.
+[section:raw_socket_service raw_socket_service::raw_socket_service]
 
- typedef DescriptorService service_type;
+[indexterm2 raw_socket_service..raw_socket_service] Construct a new raw socket service for the specified io_service.
 
+ raw_socket_service(
+ boost::asio::io_service & io_service);
 
 
 
@@ -41382,11 +46796,17 @@
 
 
 
-[section:_basic_descriptor posix::basic_descriptor::~basic_descriptor]
+[section:receive raw_socket_service::receive]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 receive..raw_socket_service] Receive some data from the peer.
 
- ~basic_descriptor();
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t receive(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
+ boost::system::error_code & ec);
 
 
 
@@ -41394,228 +46814,199 @@
 
 
 
-[endsect]
-
-[section:posix__basic_stream_descriptor posix::basic_stream_descriptor]
+[section:receive_from raw_socket_service::receive_from]
 
-Provides stream-oriented descriptor functionality.
+[indexterm2 receive_from..raw_socket_service] Receive raw data with the endpoint of the sender.
 
   template<
- typename ``[link boost_asio.reference.StreamDescriptorService StreamDescriptorService]`` = stream_descriptor_service>
- class basic_stream_descriptor :
- public posix::basic_descriptor< StreamDescriptorService >
+ typename ``[link boost_asio.reference.MutableBufferSequence 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);
 
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
+[endsect]
 
- [[link boost_asio.reference.posix__basic_stream_descriptor.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.posix__basic_stream_descriptor.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
+[section:remote_endpoint raw_socket_service::remote_endpoint]
 
- [
+[indexterm2 remote_endpoint..raw_socket_service] Get the remote endpoint.
 
- [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer_type [*lowest_layer_type]]]
- [A basic_descriptor is always the lowest layer. ]
-
- ]
+ endpoint_type remote_endpoint(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
- [
 
- [[link boost_asio.reference.posix__basic_stream_descriptor.native_type [*native_type]]]
- [The native representation of a descriptor. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.posix__basic_stream_descriptor.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the descriptor. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.posix__basic_stream_descriptor.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
+[section:send raw_socket_service::send]
 
-]
+[indexterm2 send..raw_socket_service] Send the given data to the peer.
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t send(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ boost::system::error_code & ec);
 
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.assign [*assign]]]
- [Assign an existing native descriptor to the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.async_read_some [*async_read_some]]]
- [Start an asynchronous read. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.async_write_some [*async_write_some]]]
- [Start an asynchronous write. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor [*basic_stream_descriptor]]]
- [Construct a basic_stream_descriptor without opening it. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.close [*close]]]
- [Close the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.io_control [*io_control]]]
- [Perform an IO control command on the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.is_open [*is_open]]]
- [Determine whether the descriptor is open. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.native [*native]]]
- [Get the native descriptor representation. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.read_some [*read_some]]]
- [Read some data from the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.write_some [*write_some]]]
- [Write some data to the descriptor. ]
- ]
-
-]
 
-[heading Protected Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
+[endsect]
 
- [
- [[link boost_asio.reference.posix__basic_stream_descriptor.service [*service]]]
- [The service associated with the I/O object. ]
- ]
 
-]
 
-The posix::basic_stream_descriptor class template provides asynchronous and blocking stream-oriented descriptor functionality.
+[section:send_to raw_socket_service::send_to]
 
+[indexterm2 send_to..raw_socket_service] Send raw data to the specified endpoint.
 
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence 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);
 
-[*Shared] [*objects:] Unsafe.
 
 
-[section:assign posix::basic_stream_descriptor::assign]
+[endsect]
 
-Assign an existing native descriptor to the descriptor.
 
- void ``[link boost_asio.reference.posix__basic_stream_descriptor.assign.overload1 assign]``(
- const native_type & native_descriptor);
 
- boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.assign.overload2 assign]``(
- const native_type & native_descriptor,
+[section:set_option raw_socket_service::set_option]
+
+[indexterm2 set_option..raw_socket_service] Set a socket option.
+
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ boost::system::error_code set_option(
+ implementation_type & impl,
+ const SettableSocketOption & option,
       boost::system::error_code & ec);
 
 
-[section:overload1 posix::basic_stream_descriptor::assign (1 of 2 overloads)]
 
+[endsect]
 
-['Inherited from posix::basic_descriptor.]
 
-Assign an existing native descriptor to the descriptor.
 
- void assign(
- const native_type & native_descriptor);
+[section:shutdown raw_socket_service::shutdown]
 
+[indexterm2 shutdown..raw_socket_service] 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);
 
-[endsect]
 
 
+[endsect]
 
-[section:overload2 posix::basic_stream_descriptor::assign (2 of 2 overloads)]
 
 
-['Inherited from posix::basic_descriptor.]
+[section:shutdown_service raw_socket_service::shutdown_service]
 
-Assign an existing native descriptor to the descriptor.
+[indexterm2 shutdown_service..raw_socket_service] Destroy all user-defined handler objects owned by the service.
 
- boost::system::error_code assign(
- const native_type & native_descriptor,
- boost::system::error_code & ec);
+ void shutdown_service();
 
 
 
 [endsect]
 
 
+
 [endsect]
 
+[section:read read]
 
-[section:async_read_some posix::basic_stream_descriptor::async_read_some]
+[indexterm1 read] Attempt to read a certain amount of data from a stream before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.read.overload1 read]``(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers);
 
-Start an asynchronous read.
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read.overload2 read]``(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition);
 
   template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read.overload3 read]``(
+ SyncReadStream & s,
       const MutableBufferSequence & buffers,
- ReadHandler handler);
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
 
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read.overload4 read]``(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b);
 
-This function is used to asynchronously read data from the stream descriptor. The function call always returns immediately.
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read.overload5 read]``(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition);
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read.overload6 read]``(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
+
+
+[section:overload1 read (1 of 6 overloads)]
+
+Attempt to read a certain amount of data from a stream before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers);
+
+
+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:
+
+
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
+
+* An error occurred.
+
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
 
 [heading Parameters]
@@ -41623,35 +47014,46 @@
 
 [variablelist
   
-[[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.]]
-
-[[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:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes read.
- );
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-``
-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().]]
+[[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.]]
 
 ]
 
-[heading Remarks]
+[heading Return Value]
       
-The read operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
+The number of bytes transferred.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
 
 [heading Example]
   
 To read into a single data buffer use the
 [link boost_asio.reference.buffer buffer] function as follows:
 
- descriptor.async_read_some(boost::asio::buffer(data, size), handler);
+ boost::asio::read(s, boost::asio::buffer(data, size));
 
 
 See the
-[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+[heading Remarks]
+
+This overload is equivalent to calling:
+
+ boost::asio::read(
+ s, buffers,
+ boost::asio::transfer_all());
+
+
+
 
 
 
@@ -41659,19 +47061,28 @@
 
 
 
-[section:async_write_some posix::basic_stream_descriptor::async_write_some]
+[section:overload2 read (2 of 6 overloads)]
 
-Start an asynchronous write.
+Attempt to read a certain amount of data from a stream before returning.
 
   template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
- const ConstBufferSequence & buffers,
- WriteHandler handler);
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t read(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition);
 
 
-This function is used to asynchronously write data to the stream descriptor. The function call always returns immediately.
+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:
+
+
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
 
 [heading Parameters]
@@ -41679,62 +47090,78 @@
 
 [variablelist
   
-[[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.]]
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[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:
+[[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.]]
+
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
 ``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes written.
- );
+ bool completion_condition(
+ const boost::system::error_code& error, // Result of latest read_some
+ // operation.
 
+ std::size_t bytes_transferred // Number of bytes transferred
+ // so far.
+ );
 ``
-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().]]
+A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
 
 ]
 
-[heading Remarks]
+[heading Return Value]
       
-The write operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the asynchronous operation completes.
+The number of bytes transferred.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
 
 [heading Example]
   
-To write a single data buffer use the
+To read into a single data buffer use the
 [link boost_asio.reference.buffer buffer] function as follows:
 
- descriptor.async_write_some(boost::asio::buffer(data, size), handler);
+ boost::asio::read(s, boost::asio::buffer(data, size),
+ boost::asio::transfer_at_least(32));
 
 
 See the
-[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
 [endsect]
 
 
-[section:basic_stream_descriptor posix::basic_stream_descriptor::basic_stream_descriptor]
 
-Construct a basic_stream_descriptor without opening it.
+[section:overload3 read (3 of 6 overloads)]
 
- ``[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor.overload1 basic_stream_descriptor]``(
- boost::asio::io_service & io_service);
+Attempt to read a certain amount of data from a stream before returning.
 
- ``[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor.overload2 basic_stream_descriptor]``(
- boost::asio::io_service & io_service,
- const native_type & native_descriptor);
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t read(
+ SyncReadStream & s,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
 
 
-[section:overload1 posix::basic_stream_descriptor::basic_stream_descriptor (1 of 2 overloads)]
+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:
 
-Construct a basic_stream_descriptor without opening it.
 
- basic_stream_descriptor(
- boost::asio::io_service & io_service);
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
 
+* The completion_condition function object returns true.
 
-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.
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
 
 [heading Parameters]
@@ -41742,26 +47169,54 @@
 
 [variablelist
   
-[[io_service][The io\_service object that the stream descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor. ]]
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[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.]]
+
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool completion_condition(
+ const boost::system::error_code& error, // Result of latest read_some
+ // operation.
+
+ std::size_t bytes_transferred // Number of bytes transferred
+ // so far.
+ );
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
 
 ]
 
+[heading Return Value]
+
+The number of bytes read. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
+
 
 
 [endsect]
 
 
 
-[section:overload2 posix::basic_stream_descriptor::basic_stream_descriptor (2 of 2 overloads)]
+[section:overload4 read (4 of 6 overloads)]
 
-Construct a basic_stream_descriptor on an existing native descriptor.
+Attempt to read a certain amount of data from a stream before returning.
 
- basic_stream_descriptor(
- boost::asio::io_service & io_service,
- const native_type & native_descriptor);
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b);
 
 
-This constructor creates a stream descriptor object to hold an existing native descriptor.
+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:
+
+
+* An error occurred.
+
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
 
 [heading Parameters]
@@ -41769,179 +47224,328 @@
 
 [variablelist
   
-[[io_service][The io\_service object that the stream descriptor will use to dispatch handlers for any asynchronous operations performed on the descriptor.]]
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[native_descriptor][The new underlying descriptor implementation.]]
+[[b][The basic\_streambuf object into which the data will be read.]]
 
 ]
 
+[heading Return Value]
+
+The number of bytes transferred.
+
 [heading Exceptions]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure. ]]
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
+[heading Remarks]
+
+This overload is equivalent to calling:
+
+ boost::asio::read(
+ s, b,
+ boost::asio::transfer_all());
+
+
 
 
-[endsect]
 
 
 [endsect]
 
 
-[section:bytes_readable posix::basic_stream_descriptor::bytes_readable]
 
+[section:overload5 read (5 of 6 overloads)]
+
+Attempt to read a certain amount of data from a stream before returning.
 
-['Inherited from posix::descriptor_base.]
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t read(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition);
 
-IO control command to get the amount of data that can be read without blocking.
 
- typedef implementation_defined bytes_readable;
+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:
 
 
+* The completion_condition function object returns true.
 
-Implements the FIONREAD IO control command.
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
 
-[heading Example]
+[heading Parameters]
+
+
+[variablelist
   
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
+[[b][The basic\_streambuf object into which the data will be read.]]
 
- 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();
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool completion_condition(
+ const boost::system::error_code& error, // Result of latest read_some
+ // operation.
 
+ std::size_t bytes_transferred // Number of bytes transferred
+ // so far.
+ );
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
 
+]
 
+[heading Return Value]
+
+The number of bytes transferred.
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
-[endsect]
+]
 
 
-[section:cancel posix::basic_stream_descriptor::cancel]
 
-Cancel all asynchronous operations associated with the descriptor.
+[endsect]
 
- void ``[link boost_asio.reference.posix__basic_stream_descriptor.cancel.overload1 cancel]``();
 
- boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.cancel.overload2 cancel]``(
- boost::system::error_code & ec);
 
+[section:overload6 read (6 of 6 overloads)]
 
-[section:overload1 posix::basic_stream_descriptor::cancel (1 of 2 overloads)]
+Attempt to read a certain amount of data from a stream before returning.
 
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t read(
+ SyncReadStream & s,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
 
-['Inherited from posix::basic_descriptor.]
 
-Cancel all asynchronous operations associated with the descriptor.
+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:
 
- void cancel();
 
+* The completion_condition function object returns true.
 
-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.
+This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
 
-[heading Exceptions]
+[heading Parameters]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure. ]]
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-]
+[[b][The basic\_streambuf object into which the data will be read.]]
 
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool completion_condition(
+ const boost::system::error_code& error, // Result of latest read_some
+ // operation.
 
+ std::size_t bytes_transferred // Number of bytes transferred
+ // so far.
+ );
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
 
-[endsect]
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
+[heading Return Value]
+
+The number of bytes read. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
 
-[section:overload2 posix::basic_stream_descriptor::cancel (2 of 2 overloads)]
 
 
-['Inherited from posix::basic_descriptor.]
+[endsect]
 
-Cancel all asynchronous operations associated with the descriptor.
 
- boost::system::error_code cancel(
- boost::system::error_code & ec);
+[endsect]
 
+[section:read_at read_at]
 
-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.
+[indexterm1 read_at] Attempt to read a certain amount of data at the specified offset before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.read_at.overload1 read_at]``(
+ SyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers);
 
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read_at.overload2 read_at]``(
+ SyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition);
 
-[heading Parameters]
-
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read_at.overload3 read_at]``(
+ SyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any. ]]
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_at.overload4 read_at]``(
+ SyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b);
 
-]
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read_at.overload5 read_at]``(
+ SyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition);
 
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.read_at.overload6 read_at]``(
+ SyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
 
 
-[endsect]
+[section:overload1 read_at (1 of 6 overloads)]
 
+Attempt to read a certain amount of data at the specified offset before returning.
 
-[endsect]
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_at(
+ SyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers);
 
-[section:close posix::basic_stream_descriptor::close]
 
-Close the descriptor.
+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:
 
- void ``[link boost_asio.reference.posix__basic_stream_descriptor.close.overload1 close]``();
 
- boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.close.overload2 close]``(
- boost::system::error_code & ec);
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
 
+* An error occurred.
 
-[section:overload1 posix::basic_stream_descriptor::close (1 of 2 overloads)]
+This operation is implemented in terms of one or more calls to the device's read\_some\_at function.
 
 
-['Inherited from posix::basic_descriptor.]
+[heading Parameters]
+
 
-Close the descriptor.
+[variablelist
+
+[[d][The device from which the data is to be read. The type must support the SyncRandomAccessReadDevice concept.]]
 
- void close();
+[[offset][The offset at which the data will be read.]]
 
+[[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.]]
 
-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.
+]
 
+[heading Return Value]
+
+The number of bytes transferred.
 
 [heading Exceptions]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure. ]]
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ boost::asio::read_at(d, 42, boost::asio::buffer(data, size));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+[heading Remarks]
+
+This overload is equivalent to calling:
+
+ boost::asio::read_at(
+ d, 42, buffers,
+ boost::asio::transfer_all());
+
+
+
+
+
+
+[endsect]
 
 
-[endsect]
 
+[section:overload2 read_at (2 of 6 overloads)]
 
+Attempt to read a certain amount of data at the specified offset before returning.
 
-[section:overload2 posix::basic_stream_descriptor::close (2 of 2 overloads)]
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t read_at(
+ SyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ CompletionCondition completion_condition);
 
 
-['Inherited from posix::basic_descriptor.]
+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:
 
-Close the descriptor.
 
- boost::system::error_code close(
- boost::system::error_code & ec);
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
 
+* The completion_condition function object returns true.
 
-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.
+This operation is implemented in terms of one or more calls to the device's read\_some\_at function.
 
 
 [heading Parameters]
@@ -41949,34 +47553,50 @@
 
 [variablelist
   
-[[ec][Set to indicate what error occurred, if any. ]]
-
-]
-
+[[d][The device from which the data is to be read. The type must support the SyncRandomAccessReadDevice concept.]]
 
+[[offset][The offset at which the data will be read.]]
 
-[endsect]
-
+[[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.]]
 
-[endsect]
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool 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
+ );
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the device's read\_some\_at function are required.]]
 
-[section:get_io_service posix::basic_stream_descriptor::get_io_service]
+]
 
+[heading Return Value]
+
+The number of bytes transferred.
 
-['Inherited from basic_io_object.]
+[heading Exceptions]
+
 
-Get the io_service associated with the object.
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
- boost::asio::io_service & get_io_service();
+]
 
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
+ boost::asio::read_at(d, 42, boost::asio::buffer(data, size),
+ boost::asio::transfer_at_least(32));
 
 
-[heading Return Value]
-
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -41984,60 +47604,88 @@
 
 
 
-[section:implementation posix::basic_stream_descriptor::implementation]
+[section:overload3 read_at (3 of 6 overloads)]
 
+Attempt to read a certain amount of data at the specified offset before returning.
 
-['Inherited from basic_io_object.]
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename ``[link boost_asio.reference.MutableBufferSequence 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);
 
-The underlying implementation of the I/O object.
 
- implementation_type implementation;
+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:
 
 
+* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
 
-[endsect]
+* The completion_condition function object returns true.
 
+This operation is implemented in terms of one or more calls to the device's read\_some\_at function.
 
 
-[section:implementation_type posix::basic_stream_descriptor::implementation_type]
+[heading Parameters]
+
 
+[variablelist
+
+[[d][The device from which the data is to be read. The type must support the SyncRandomAccessReadDevice concept.]]
 
-['Inherited from basic_io_object.]
+[[offset][The offset at which the data will be read.]]
 
-The underlying implementation type of I/O object.
+[[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.]]
 
- typedef service_type::implementation_type implementation_type;
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool completion_condition(
+ const boost::system::error_code& error, // Result of latest read_some_at
+ // operation.
 
+ std::size_t bytes_transferred // Number of bytes transferred
+ // so far.
+ );
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the device's read\_some\_at function are required.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
-[endsect]
+[heading Return Value]
+
+The number of bytes read. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
 
 
-[section:io_control posix::basic_stream_descriptor::io_control]
 
-Perform an IO control command on the descriptor.
+[endsect]
 
- void ``[link boost_asio.reference.posix__basic_stream_descriptor.io_control.overload1 io_control]``(
- IoControlCommand & command);
 
- boost::system::error_code ``[link boost_asio.reference.posix__basic_stream_descriptor.io_control.overload2 io_control]``(
- IoControlCommand & command,
- boost::system::error_code & ec);
 
+[section:overload4 read_at (4 of 6 overloads)]
 
-[section:overload1 posix::basic_stream_descriptor::io_control (1 of 2 overloads)]
+Attempt to read a certain amount of data at the specified offset before returning.
 
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename Allocator>
+ std::size_t read_at(
+ SyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b);
 
-['Inherited from posix::basic_descriptor.]
 
-Perform an IO control command on the descriptor.
+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:
 
- void io_control(
- IoControlCommand & command);
 
+* An error occurred.
 
-This function is used to execute an IO control command on the descriptor.
+This operation is implemented in terms of one or more calls to the device's read\_some\_at function.
 
 
 [heading Parameters]
@@ -42045,10 +47693,18 @@
 
 [variablelist
   
-[[command][The IO control command to be performed on the descriptor.]]
+[[d][The device from which the data is to be read. The type must support the SyncRandomAccessReadDevice concept.]]
+
+[[offset][The offset at which the data will be read.]]
+
+[[b][The basic\_streambuf object into which the data will be read.]]
 
 ]
 
+[heading Return Value]
+
+The number of bytes transferred.
+
 [heading Exceptions]
     
 
@@ -42058,15 +47714,13 @@
 
 ]
 
-[heading Example]
-
-Getting the number of bytes ready to read:
+[heading Remarks]
+
+This overload is equivalent to calling:
 
- 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();
+ boost::asio::read_at(
+ d, 42, b,
+ boost::asio::transfer_all());
 
 
 
@@ -42077,19 +47731,27 @@
 
 
 
-[section:overload2 posix::basic_stream_descriptor::io_control (2 of 2 overloads)]
+[section:overload5 read_at (5 of 6 overloads)]
 
+Attempt to read a certain amount of data at the specified offset before returning.
 
-['Inherited from posix::basic_descriptor.]
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice SyncRandomAccessReadDevice]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t read_at(
+ SyncRandomAccessReadDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition);
 
-Perform an IO control command on the descriptor.
 
- boost::system::error_code io_control(
- IoControlCommand & command,
- boost::system::error_code & ec);
+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:
 
 
-This function is used to execute an IO control command on the descriptor.
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the device's read\_some\_at function.
 
 
 [heading Parameters]
@@ -42097,344 +47759,330 @@
 
 [variablelist
   
-[[command][The IO control command to be performed on the descriptor.]]
+[[d][The device from which the data is to be read. The type must support the SyncRandomAccessReadDevice concept.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[[offset][The offset at which the data will be read.]]
 
-]
+[[b][The basic\_streambuf object into which the data will be read.]]
 
-[heading Example]
-
-Getting the number of bytes ready to read:
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool completion_condition(
+ // Result of latest read_some_at operation.
+ const boost::system::error_code& error,
 
- 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();
+ // Number of bytes transferred so far.
+ std::size_t bytes_transferred
+ );
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the device's read\_some\_at function are required.]]
 
+]
 
+[heading Return Value]
+
+The number of bytes transferred.
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
-[endsect]
 
 
 [endsect]
 
 
-[section:io_service posix::basic_stream_descriptor::io_service]
 
+[section:overload6 read_at (6 of 6 overloads)]
 
-['Inherited from basic_io_object.]
+Attempt to read a certain amount of data at the specified offset before returning.
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessReadDevice 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);
 
- boost::asio::io_service & io_service();
 
+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:
 
-This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
+* The completion_condition function object returns true.
 
-[heading Return Value]
-
-A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
+This operation is implemented in terms of one or more calls to the device's read\_some\_at function.
 
 
+[heading Parameters]
+
 
-[endsect]
+[variablelist
+
+[[d][The device from which the data is to be read. The type must support the SyncRandomAccessReadDevice concept.]]
 
+[[offset][The offset at which the data will be read.]]
 
+[[b][The basic\_streambuf object into which the data will be read.]]
 
-[section:is_open posix::basic_stream_descriptor::is_open]
+[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
+``
+ bool 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
+ );
+``
+A return value of true indicates that the read operation is complete. False indicates that further calls to the device's read\_some\_at function are required.]]
 
-['Inherited from posix::basic_descriptor.]
+[[ec][Set to indicate what error occurred, if any.]]
 
-Determine whether the descriptor is open.
+]
 
- bool is_open() const;
+[heading Return Value]
+
+The number of bytes read. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:lowest_layer posix::basic_stream_descriptor::lowest_layer]
-
-
-['Inherited from posix::basic_descriptor.]
-
-Get a reference to the lowest layer.
-
- lowest_layer_type & 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.
-
+[section:read_until read_until]
 
-[heading Return Value]
+[indexterm1 read_until] Read data into a streambuf until it contains a delimiter, matches a regular expression, or a function object indicates a match.
       
-A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
-
-
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload1 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ char delim);
 
-[endsect]
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload2 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ char delim,
+ boost::system::error_code & ec);
 
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload3 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const std::string & delim);
 
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload4 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const std::string & delim,
+ boost::system::error_code & ec);
 
-[section:lowest_layer_type posix::basic_stream_descriptor::lowest_layer_type]
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload5 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const boost::regex & expr);
 
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.read_until.overload6 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const boost::regex & expr,
+ boost::system::error_code & ec);
 
-['Inherited from posix::basic_descriptor.]
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator,
+ typename MatchCondition>
+ std::size_t ``[link boost_asio.reference.read_until.overload7 read_until]``(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ MatchCondition match_condition,
+ typename boost::enable_if< is_match_condition< MatchCondition > >::type * = 0);
 
-A basic_descriptor is always the lowest layer.
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator,
+ typename MatchCondition>
+ std::size_t ``[link boost_asio.reference.read_until.overload8 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);
 
- typedef basic_descriptor< StreamDescriptorService > lowest_layer_type;
 
+[section:overload1 read_until (1 of 8 overloads)]
 
-[heading Types]
-[table
- [[Name][Description]]
+Read data into a streambuf until it contains a specified delimiter.
 
- [
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read_until(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ char delim);
 
- [[link boost_asio.reference.posix__basic_descriptor.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
 
- [
+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:
 
- [[link boost_asio.reference.posix__basic_descriptor.implementation_type [*implementation_type]]]
- [The underlying implementation type of I/O object. ]
-
- ]
 
- [
+* The get area of the streambuf contains the specified delimiter.
 
- [[link boost_asio.reference.posix__basic_descriptor.lowest_layer_type [*lowest_layer_type]]]
- [A basic_descriptor is always the lowest layer. ]
-
- ]
+* 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.
 
- [[link boost_asio.reference.posix__basic_descriptor.native_type [*native_type]]]
- [The native representation of a descriptor. ]
-
- ]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.posix__basic_descriptor.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the descriptor. ]
+[variablelist
   
- ]
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
- [
+[[b][A streambuf object into which the data will be read.]]
 
- [[link boost_asio.reference.posix__basic_descriptor.service_type [*service_type]]]
- [The type of the service that will be used to provide I/O operations. ]
-
- ]
+[[delim][The delimiter character.]]
 
 ]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.assign [*assign]]]
- [Assign an existing native descriptor to the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.basic_descriptor [*basic_descriptor]]]
- [Construct a basic_descriptor without opening it. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.close [*close]]]
- [Close the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.io_control [*io_control]]]
- [Perform an IO control command on the descriptor. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.is_open [*is_open]]]
- [Determine whether the descriptor is open. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.native [*native]]]
- [Get the native descriptor representation. ]
- ]
-
-]
+[heading Return Value]
+
+The number of bytes in the streambuf's get area up to and including the delimiter.
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
+[heading Exceptions]
+
 
- [
- [[link boost_asio.reference.posix__basic_descriptor._basic_descriptor [*~basic_descriptor]]]
- [Protected destructor to prevent deletion through this type. ]
- ]
+[variablelist
   
-]
-
-[heading Protected Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.implementation [*implementation]]]
- [The underlying implementation of the I/O object. ]
- ]
-
- [
- [[link boost_asio.reference.posix__basic_descriptor.service [*service]]]
- [The service associated with the I/O object. ]
- ]
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
-The posix::basic_descriptor class template provides the ability to wrap a POSIX descriptor.
-
+[heading Remarks]
+
+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.
 
-[heading Thread Safety]
+[heading Example]
   
-[*Distinct] [*objects:] Safe.
-
-[*Shared] [*objects:] Unsafe.
-
-
-
-
-[endsect]
-
-
-
-[section:native posix::basic_stream_descriptor::native]
-
+To read data into a streambuf until a newline is encountered:
 
-['Inherited from posix::basic_descriptor.]
+ boost::asio::streambuf b;
+ boost::asio::read_until(s, b, '\n');
+ std::istream is(&b);
+ std::string line;
+ std::getline(is, line);
 
-Get the native descriptor representation.
 
- native_type native();
 
 
-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.
 
 
 [endsect]
 
 
 
-[section:native_type posix::basic_stream_descriptor::native_type]
-
-The native representation of a descriptor.
-
- typedef StreamDescriptorService::native_type native_type;
-
-
-
-
-[endsect]
-
+[section:overload2 read_until (2 of 8 overloads)]
 
+Read data into a streambuf until it contains a specified delimiter.
 
-[section:non_blocking_io posix::basic_stream_descriptor::non_blocking_io]
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read_until(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ char delim,
+ boost::system::error_code & ec);
 
 
-['Inherited from posix::descriptor_base.]
+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:
 
-IO control command to set the blocking mode of the descriptor.
 
- typedef implementation_defined non_blocking_io;
+* The get area of the streambuf contains the specified delimiter.
 
+* 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.
 
-Implements the FIONBIO IO control command.
 
+[heading Parameters]
+
 
-[heading Example]
+[variablelist
   
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
+[[b][A streambuf object into which the data will be read.]]
 
- boost::asio::posix::stream_descriptor descriptor(io_service);
- ...
- boost::asio::descriptor_base::non_blocking_io command(true);
- descriptor.io_control(command);
+[[delim][The delimiter character.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
+[heading Return Value]
+
+The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
 
+[heading Remarks]
+
+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.
 
 
 
 [endsect]
 
 
-[section:read_some posix::basic_stream_descriptor::read_some]
 
-Read some data from the descriptor.
+[section:overload3 read_until (3 of 8 overloads)]
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.read_some.overload1 read_some]``(
- const MutableBufferSequence & buffers);
+Read data into a streambuf until it contains a specified delimiter.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.read_some.overload2 read_some]``(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read_until(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const std::string & delim);
 
 
-[section:overload1 posix::basic_stream_descriptor::read_some (1 of 2 overloads)]
+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:
 
-Read some data from the descriptor.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers);
+* The get area of the streambuf contains the specified delimiter.
 
+* An error occurred.
 
-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.
+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.
 
 
 [heading Parameters]
@@ -42442,38 +48090,43 @@
 
 [variablelist
   
-[[buffers][One or more buffers into which the data will be read.]]
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[delim][The delimiter string.]]
 
 ]
 
 [heading Return Value]
       
-The number of bytes read.
+The number of bytes in the streambuf's get area up to and including the delimiter.
 
 [heading Exceptions]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
 [heading Remarks]
       
-The read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+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.
 
 [heading Example]
   
-To read into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
+To read data into a streambuf until a newline is encountered:
+
+ boost::asio::streambuf b;
+ boost::asio::read_until(s, b, "\r\n");
+ std::istream is(&b);
+ std::string line;
+ std::getline(is, line);
 
- descriptor.read_some(boost::asio::buffer(data, size));
 
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -42481,18 +48134,28 @@
 
 
 
-[section:overload2 posix::basic_stream_descriptor::read_some (2 of 2 overloads)]
+[section:overload4 read_until (4 of 8 overloads)]
 
-Read some data from the descriptor.
+Read data into a streambuf until it contains a specified delimiter.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers,
+ typename ``[link boost_asio.reference.SyncReadStream 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);
 
 
-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.
+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:
+
+
+* The get area of the streambuf contains the specified delimiter.
+
+* 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.
 
 
 [heading Parameters]
@@ -42500,7 +48163,11 @@
 
 [variablelist
   
-[[buffers][One or more buffers into which the data will be read.]]
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[delim][The delimiter string.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -42508,78 +48175,39 @@
 
 [heading Return Value]
       
-The number of bytes read. Returns 0 if an error occurred.
+The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
 
 [heading Remarks]
       
-The read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
-
-
-
-[endsect]
-
-
-[endsect]
-
-
-[section:service posix::basic_stream_descriptor::service]
-
-
-['Inherited from basic_io_object.]
-
-The service associated with the I/O object.
-
- service_type & service;
-
-
-
-[endsect]
-
-
-
-[section:service_type posix::basic_stream_descriptor::service_type]
-
-
-['Inherited from basic_io_object.]
-
-The type of the service that will be used to provide I/O operations.
-
- typedef StreamDescriptorService service_type;
-
+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.
 
 
 
 [endsect]
 
 
-[section:write_some posix::basic_stream_descriptor::write_some]
 
-Write some data to the descriptor.
+[section:overload5 read_until (5 of 8 overloads)]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.write_some.overload1 write_some]``(
- const ConstBufferSequence & buffers);
+Read data into a streambuf until some part of the data it contains matches a regular expression.
 
   template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.posix__basic_stream_descriptor.write_some.overload2 write_some]``(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+ typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
+ typename Allocator>
+ std::size_t read_until(
+ SyncReadStream & s,
+ boost::asio::basic_streambuf< Allocator > & b,
+ const boost::regex & expr);
 
 
-[section:overload1 posix::basic_stream_descriptor::write_some (1 of 2 overloads)]
+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:
 
-Write some data to the descriptor.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers);
+* A substring of the streambuf's get area matches the regular expression.
 
+* An error occurred.
 
-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.
+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.
 
 
 [heading Parameters]
@@ -42587,38 +48215,43 @@
 
 [variablelist
   
-[[buffers][One or more data buffers to be written to the descriptor.]]
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[expr][The regular expression.]]
 
 ]
 
 [heading Return Value]
       
-The number of bytes written.
+The number of bytes in the streambuf's get area up to and including the substring that matches the regular expression.
 
 [heading Exceptions]
     
 
 [variablelist
   
-[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+[[boost::system::system_error][Thrown on failure.]]
 
 ]
 
 [heading Remarks]
       
-The write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+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.
 
 [heading Example]
   
-To write a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
+To read data into a streambuf until a CR-LF sequence is encountered:
+
+ 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);
 
- descriptor.write_some(boost::asio::buffer(data, size));
 
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -42626,18 +48259,28 @@
 
 
 
-[section:overload2 posix::basic_stream_descriptor::write_some (2 of 2 overloads)]
+[section:overload6 read_until (6 of 8 overloads)]
 
-Write some data to the descriptor.
+Read data into a streambuf until some part of the data it contains matches a regular expression.
 
   template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers,
+ typename ``[link boost_asio.reference.SyncReadStream 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);
 
 
-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.
+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:
+
+
+* A substring of the streambuf's get area matches the regular expression.
+
+* 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.
 
 
 [heading Parameters]
@@ -42645,7 +48288,11 @@
 
 [variablelist
   
-[[buffers][One or more data buffers to be written to the descriptor.]]
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[expr][The regular expression.]]
 
 [[ec][Set to indicate what error occurred, if any.]]
 
@@ -42653,83 +48300,135 @@
 
 [heading Return Value]
       
-The number of bytes written. Returns 0 if an error occurred.
+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.
 
 [heading Remarks]
       
-The write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+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.
 
 
 
 [endsect]
 
 
-[endsect]
 
+[section:overload7 read_until (7 of 8 overloads)]
 
-[endsect]
+Read data into a streambuf until a function object indicates a match.
 
-[section:posix__descriptor_base posix::descriptor_base]
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream 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);
 
-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
+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:
 
 
-[heading Types]
-[table
- [[Name][Description]]
+* The match condition function object returns a std::pair where the second element evaluates to true.
 
- [
+* An error occurred.
 
- [[link boost_asio.reference.posix__descriptor_base.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
+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.
 
- [
 
- [[link boost_asio.reference.posix__descriptor_base.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the descriptor. ]
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+
+[[b][A streambuf object into which the data will be read.]]
+
+[[match_condition][The function object to be called to determine whether a match exists. The signature of the function object must be:
+``
+ pair<iterator, bool> match_condition(iterator begin, iterator end);
+``
+where `iterator` represents the type:
+``
+ buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
+``
+The iterator parameters `begin` and `end` define the range of bytes to be scanned to determine whether there is a match. The `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 `begin` parameter for any subsequent invocation of the match condition. The `second` member of the return value is true if a match has been found, false otherwise.]]
 
 ]
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
+[heading Return Value]
+
+The number of bytes in the streambuf's get area that have been fully consumed by the match function.
 
- [
- [[link boost_asio.reference.posix__descriptor_base._descriptor_base [*~descriptor_base]]]
- [Protected destructor to prevent deletion through this type. ]
- ]
+[heading Exceptions]
+
+
+[variablelist
   
+[[boost::system::system_error][Thrown on failure.]]
+
 ]
 
+[heading Remarks]
+
+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
 
-[section:bytes_readable posix::descriptor_base::bytes_readable]
+The default implementation of the `is_match_condition` type trait evaluates to true for function pointers and function objects with a `result_type` typedef. It must be specialised for other user-defined function objects.
 
-IO control command to get the amount of data that can be read without blocking.
+[heading Examples]
+
+To read data into a streambuf until whitespace is encountered:
 
- typedef implementation_defined bytes_readable;
+ 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);
 
 
-Implements the FIONREAD IO control command.
 
 
-[heading Example]
-
+To read data into a streambuf until a matching character is found:
 
+ class match_char
+ {
+ public:
+ explicit match_char(char c) : c_(c) {}
 
- 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();
+ 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'));
 
 
 
@@ -42739,55 +48438,78 @@
 
 
 
-[section:non_blocking_io posix::descriptor_base::non_blocking_io]
-
-IO control command to set the blocking mode of the descriptor.
-
- typedef implementation_defined non_blocking_io;
+[section:overload8 read_until (8 of 8 overloads)]
 
+Read data into a streambuf until a function object indicates a match.
 
+ template<
+ typename ``[link boost_asio.reference.SyncReadStream 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);
 
-Implements the FIONBIO IO control command.
 
+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:
 
-[heading Example]
-
 
+* The match condition function object returns a std::pair where the second element evaluates to true.
 
- boost::asio::posix::stream_descriptor descriptor(io_service);
- ...
- boost::asio::descriptor_base::non_blocking_io command(true);
- descriptor.io_control(command);
+* 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.
 
 
+[heading Parameters]
+
 
+[variablelist
+
+[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
+[[b][A streambuf object into which the data will be read.]]
 
-[endsect]
+[[match_condition][The function object to be called to determine whether a match exists. The signature of the function object must be:
+``
+ pair<iterator, bool> match_condition(iterator begin, iterator end);
+``
+where `iterator` represents the type:
+``
+ buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
+``
+The iterator parameters `begin` and `end` define the range of bytes to be scanned to determine whether there is a match. The `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 `begin` parameter for any subsequent invocation of the match condition. The `second` member of the return value is true if a match has been found, false otherwise.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
+]
 
-[section:_descriptor_base posix::descriptor_base::~descriptor_base]
+[heading Return Value]
+
+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.
 
-Protected destructor to prevent deletion through this type.
+[heading Remarks]
+
+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
 
- ~descriptor_base();
+The default implementation of the `is_match_condition` type trait evaluates to true for function pointers and function objects with a `result_type` typedef. It must be specialised for other user-defined function objects.
 
 
 
 [endsect]
 
 
-
 [endsect]
 
 
-[section:posix__stream_descriptor posix::stream_descriptor]
+[section:serial_port serial_port]
 
-Typedef for the typical usage of a stream-oriented descriptor.
+[indexterm1 serial_port] Typedef for the typical usage of a serial port.
 
- typedef basic_stream_descriptor stream_descriptor;
+ typedef basic_serial_port serial_port;
 
 
 [heading Types]
@@ -42796,42 +48518,28 @@
 
   [
 
- [[link boost_asio.reference.posix__basic_stream_descriptor.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.posix__basic_stream_descriptor.implementation_type [*implementation_type]]]
+ [[link boost_asio.reference.basic_serial_port.implementation_type [*implementation_type]]]
     [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer_type [*lowest_layer_type]]]
- [A basic_descriptor is always the lowest layer. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.posix__basic_stream_descriptor.native_type [*native_type]]]
- [The native representation of a descriptor. ]
+ [[link boost_asio.reference.basic_serial_port.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_serial_port is always the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.posix__basic_stream_descriptor.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the descriptor. ]
+ [[link boost_asio.reference.basic_serial_port.native_type [*native_type]]]
+ [The native representation of a serial port. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.posix__basic_stream_descriptor.service_type [*service_type]]]
+ [[link boost_asio.reference.basic_serial_port.service_type [*service_type]]]
     [The type of the service that will be used to provide I/O operations. ]
   
   ]
@@ -42843,73 +48551,88 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.assign [*assign]]]
- [Assign an existing native descriptor to the descriptor. ]
+ [[link boost_asio.reference.basic_serial_port.assign [*assign]]]
+ [Assign an existing native serial port to the serial port. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.async_read_some [*async_read_some]]]
+ [[link boost_asio.reference.basic_serial_port.async_read_some [*async_read_some]]]
     [Start an asynchronous read. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.async_write_some [*async_write_some]]]
+ [[link boost_asio.reference.basic_serial_port.async_write_some [*async_write_some]]]
     [Start an asynchronous write. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.basic_stream_descriptor [*basic_stream_descriptor]]]
- [Construct a basic_stream_descriptor without opening it. ]
+ [[link boost_asio.reference.basic_serial_port.basic_serial_port [*basic_serial_port]]]
+ [Construct a basic_serial_port without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the descriptor. ]
+ [[link boost_asio.reference.basic_serial_port.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the serial port. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.close [*close]]]
- [Close the descriptor. ]
+ [[link boost_asio.reference.basic_serial_port.close [*close]]]
+ [Close the serial port. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.get_io_service [*get_io_service]]]
+ [[link boost_asio.reference.basic_serial_port.get_io_service [*get_io_service]]]
     [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.io_control [*io_control]]]
- [Perform an IO control command on the descriptor. ]
+ [[link boost_asio.reference.basic_serial_port.get_option [*get_option]]]
+ [Get an option from the serial port. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.io_service [*io_service]]]
+ [[link boost_asio.reference.basic_serial_port.io_service [*io_service]]]
     [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.is_open [*is_open]]]
- [Determine whether the descriptor is open. ]
+ [[link boost_asio.reference.basic_serial_port.is_open [*is_open]]]
+ [Determine whether the serial port is open. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.lowest_layer [*lowest_layer]]]
+ [[link boost_asio.reference.basic_serial_port.lowest_layer [*lowest_layer]]]
     [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.native [*native]]]
- [Get the native descriptor representation. ]
+ [[link boost_asio.reference.basic_serial_port.native [*native]]]
+ [Get the native serial port representation. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.read_some [*read_some]]]
- [Read some data from the descriptor. ]
+ [[link boost_asio.reference.basic_serial_port.open [*open]]]
+ [Open the serial port using the specified device name. ]
   ]
   
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.write_some [*write_some]]]
- [Write some data to the descriptor. ]
+ [[link boost_asio.reference.basic_serial_port.read_some [*read_some]]]
+ [Read some data from the serial port. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.send_break [*send_break]]]
+ [Send a break sequence to the serial port. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.set_option [*set_option]]]
+ [Set an option on the serial port. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_serial_port.write_some [*write_some]]]
+ [Write some data to the serial port. ]
   ]
   
 ]
@@ -42919,25 +48642,25 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.implementation [*implementation]]]
+ [[link boost_asio.reference.basic_serial_port.implementation [*implementation]]]
     [The underlying implementation of the I/O object. ]
   ]
 
   [
- [[link boost_asio.reference.posix__basic_stream_descriptor.service [*service]]]
+ [[link boost_asio.reference.basic_serial_port.service [*service]]]
     [The service associated with the I/O object. ]
   ]
 
 ]
 
-The posix::basic_stream_descriptor class template provides asynchronous and blocking stream-oriented descriptor functionality.
+The basic_serial_port class template provides functionality that is common to all serial ports.
 
 
 [heading Thread Safety]
   
 [*Distinct] [*objects:] Safe.
 
-[*Shared] [*objects:] Unsafe.
+[*Shared] [*objects:] Unsafe.
 
 
 
@@ -42945,12 +48668,11 @@
 [endsect]
 
 
-[section:posix__stream_descriptor_service posix::stream_descriptor_service]
+[section:serial_port_base serial_port_base]
 
-Default service implementation for a stream descriptor.
+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 stream_descriptor_service :
- public io_service::service
+ class serial_port_base
 
 
 [heading Types]
@@ -42959,126 +48681,304 @@
 
   [
 
- [[link boost_asio.reference.posix__stream_descriptor_service.implementation_type [*implementation_type]]]
- [The type of a stream descriptor implementation. ]
+ [[link boost_asio.reference.serial_port_base__baud_rate [*baud_rate]]]
+ [Serial port option to permit changing the baud rate. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.posix__stream_descriptor_service.native_type [*native_type]]]
- [The native descriptor type. ]
+ [[link boost_asio.reference.serial_port_base__character_size [*character_size]]]
+ [Serial port option to permit changing the character size. ]
   
   ]
 
-]
+ [
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+ [[link boost_asio.reference.serial_port_base__flow_control [*flow_control]]]
+ [Serial port option to permit changing the flow control. ]
+
+ ]
 
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.assign [*assign]]]
- [Assign an existing native descriptor to a stream descriptor. ]
+
+ [[link boost_asio.reference.serial_port_base__parity [*parity]]]
+ [Serial port option to permit changing the parity. ]
+
   ]
+
+ [
+
+ [[link boost_asio.reference.serial_port_base__stop_bits [*stop_bits]]]
+ [Serial port option to permit changing the number of stop bits. ]
   
+ ]
+
+]
+
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.async_read_some [*async_read_some]]]
- [Start an asynchronous read. ]
+ [[link boost_asio.reference.serial_port_base._serial_port_base [*~serial_port_base]]]
+ [Protected destructor to prevent deletion through this type. ]
   ]
   
+]
+
+
+[section:_serial_port_base serial_port_base::~serial_port_base]
+
+[indexterm2 ~serial_port_base..serial_port_base] Protected destructor to prevent deletion through this type.
+
+ ~serial_port_base();
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:serial_port_base__baud_rate serial_port_base::baud_rate]
+
+Serial port option to permit changing the baud rate.
+
+ class baud_rate
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.async_write_some [*async_write_some]]]
- [Start an asynchronous write. ]
+ [[link boost_asio.reference.serial_port_base__baud_rate.baud_rate [*baud_rate]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the descriptor. ]
+ [[link boost_asio.reference.serial_port_base__baud_rate.load [*load]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.close [*close]]]
- [Close a stream descriptor implementation. ]
+ [[link boost_asio.reference.serial_port_base__baud_rate.store [*store]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.construct [*construct]]]
- [Construct a new stream descriptor implementation. ]
+ [[link boost_asio.reference.serial_port_base__baud_rate.value [*value]]]
+ []
   ]
   
+]
+
+Implements changing the baud rate for a given serial port.
+
+
+[section:baud_rate serial_port_base::baud_rate::baud_rate]
+
+[indexterm2 baud_rate..serial_port_base::baud_rate]
+
+ baud_rate(
+ unsigned int rate = 0);
+
+
+
+[endsect]
+
+
+
+[section:load serial_port_base::baud_rate::load]
+
+[indexterm2 load..serial_port_base::baud_rate]
+
+ boost::system::error_code load(
+ const BOOST_ASIO_OPTION_STORAGE & storage,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:store serial_port_base::baud_rate::store]
+
+[indexterm2 store..serial_port_base::baud_rate]
+
+ boost::system::error_code store(
+ BOOST_ASIO_OPTION_STORAGE & storage,
+ boost::system::error_code & ec) const;
+
+
+
+[endsect]
+
+
+
+[section:value serial_port_base::baud_rate::value]
+
+[indexterm2 value..serial_port_base::baud_rate]
+
+ unsigned int value() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:serial_port_base__character_size serial_port_base::character_size]
+
+Serial port option to permit changing the character size.
+
+ class character_size
+
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.destroy [*destroy]]]
- [Destroy a stream descriptor implementation. ]
+ [[link boost_asio.reference.serial_port_base__character_size.character_size [*character_size]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.serial_port_base__character_size.load [*load]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.io_control [*io_control]]]
- [Perform an IO control command on the descriptor. ]
+ [[link boost_asio.reference.serial_port_base__character_size.store [*store]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ [[link boost_asio.reference.serial_port_base__character_size.value [*value]]]
+ []
   ]
   
+]
+
+Implements changing the character size for a given serial port.
+
+
+[section:character_size serial_port_base::character_size::character_size]
+
+[indexterm2 character_size..serial_port_base::character_size]
+
+ character_size(
+ unsigned int t = 8);
+
+
+
+[endsect]
+
+
+
+[section:load serial_port_base::character_size::load]
+
+[indexterm2 load..serial_port_base::character_size]
+
+ boost::system::error_code load(
+ const BOOST_ASIO_OPTION_STORAGE & storage,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:store serial_port_base::character_size::store]
+
+[indexterm2 store..serial_port_base::character_size]
+
+ boost::system::error_code store(
+ BOOST_ASIO_OPTION_STORAGE & storage,
+ boost::system::error_code & ec) const;
+
+
+
+[endsect]
+
+
+
+[section:value serial_port_base::character_size::value]
+
+[indexterm2 value..serial_port_base::character_size]
+
+ unsigned int value() const;
+
+
+
+[endsect]
+
+
+
+[endsect]
+
+[section:serial_port_base__flow_control serial_port_base::flow_control]
+
+Serial port option to permit changing the flow control.
+
+ class flow_control
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.is_open [*is_open]]]
- [Determine whether the descriptor is open. ]
- ]
+
+ [[link boost_asio.reference.serial_port_base__flow_control.type [*type]]]
+ []
   
- [
- [[link boost_asio.reference.posix__stream_descriptor_service.native [*native]]]
- [Get the native descriptor implementation. ]
   ]
-
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.read_some [*read_some]]]
- [Read some data from the stream. ]
+ [[link boost_asio.reference.serial_port_base__flow_control.flow_control [*flow_control]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined descriptorr objects owned by the service. ]
+ [[link boost_asio.reference.serial_port_base__flow_control.load [*load]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.stream_descriptor_service [*stream_descriptor_service]]]
- [Construct a new stream descriptor service for the specified io_service. ]
+ [[link boost_asio.reference.serial_port_base__flow_control.store [*store]]]
+ []
   ]
   
   [
- [[link boost_asio.reference.posix__stream_descriptor_service.write_some [*write_some]]]
- [Write the given data to the stream. ]
+ [[link boost_asio.reference.serial_port_base__flow_control.value [*value]]]
+ []
   ]
   
 ]
 
-[heading Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.posix__stream_descriptor_service.id [*id]]]
- [The unique service identifier. ]
- ]
-
-]
+Implements changing the flow control for a given serial port.
 
 
-[section:assign posix::stream_descriptor_service::assign]
+[section:flow_control serial_port_base::flow_control::flow_control]
 
-Assign an existing native descriptor to a stream descriptor.
+[indexterm2 flow_control..serial_port_base::flow_control]
 
- boost::system::error_code assign(
- implementation_type & impl,
- const native_type & native_descriptor,
- boost::system::error_code & ec);
+ flow_control(
+ type t = none);
 
 
 
@@ -43086,17 +48986,13 @@
 
 
 
-[section:async_read_some posix::stream_descriptor_service::async_read_some]
+[section:load serial_port_base::flow_control::load]
 
-Start an asynchronous read.
+[indexterm2 load..serial_port_base::flow_control]
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
- implementation_type & impl,
- const MutableBufferSequence & buffers,
- ReadHandler descriptorr);
+ boost::system::error_code load(
+ const BOOST_ASIO_OPTION_STORAGE & storage,
+ boost::system::error_code & ec);
 
 
 
@@ -43104,17 +49000,13 @@
 
 
 
-[section:async_write_some posix::stream_descriptor_service::async_write_some]
+[section:store serial_port_base::flow_control::store]
 
-Start an asynchronous write.
+[indexterm2 store..serial_port_base::flow_control]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
- implementation_type & impl,
- const ConstBufferSequence & buffers,
- WriteHandler descriptorr);
+ boost::system::error_code store(
+ BOOST_ASIO_OPTION_STORAGE & storage,
+ boost::system::error_code & ec) const;
 
 
 
@@ -43122,68 +49014,108 @@
 
 
 
-[section:cancel posix::stream_descriptor_service::cancel]
+[section:type serial_port_base::flow_control::type]
 
-Cancel all asynchronous operations associated with the descriptor.
+[indexterm2 type..serial_port_base::flow_control]
 
- boost::system::error_code cancel(
- implementation_type & impl,
- boost::system::error_code & ec);
+ enum type
 
+[heading Values]
+[variablelist
 
+ [
+ [none]
+ []
+ ]
 
-[endsect]
+ [
+ [software]
+ []
+ ]
 
+ [
+ [hardware]
+ []
+ ]
 
+]
 
-[section:close posix::stream_descriptor_service::close]
 
-Close a stream descriptor implementation.
 
- boost::system::error_code close(
- implementation_type & impl,
- boost::system::error_code & ec);
+[endsect]
 
 
 
-[endsect]
+[section:value serial_port_base::flow_control::value]
 
+[indexterm2 value..serial_port_base::flow_control]
 
+ type value() const;
 
-[section:construct posix::stream_descriptor_service::construct]
 
-Construct a new stream descriptor implementation.
 
- void construct(
- implementation_type & impl);
+[endsect]
 
 
 
 [endsect]
 
+[section:serial_port_base__parity serial_port_base::parity]
 
+Serial port option to permit changing the parity.
 
-[section:destroy posix::stream_descriptor_service::destroy]
+ class parity
 
-Destroy a stream descriptor implementation.
 
- void destroy(
- implementation_type & impl);
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
+ [[link boost_asio.reference.serial_port_base__parity.type [*type]]]
+ []
+
+ ]
 
-[endsect]
+]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.serial_port_base__parity.load [*load]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.serial_port_base__parity.parity [*parity]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.serial_port_base__parity.store [*store]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.serial_port_base__parity.value [*value]]]
+ []
+ ]
+
+]
 
-[section:get_io_service posix::stream_descriptor_service::get_io_service]
+Implements changing the parity for a given serial port.
 
 
-['Inherited from io_service.]
+[section:load serial_port_base::parity::load]
 
-Get the io_service object that owns the service.
+[indexterm2 load..serial_port_base::parity]
 
- boost::asio::io_service & get_io_service();
+ boost::system::error_code load(
+ const BOOST_ASIO_OPTION_STORAGE & storage,
+ boost::system::error_code & ec);
 
 
 
@@ -43191,11 +49123,12 @@
 
 
 
-[section:id posix::stream_descriptor_service::id]
+[section:parity serial_port_base::parity::parity]
 
-The unique service identifier.
+[indexterm2 parity..serial_port_base::parity]
 
- static boost::asio::io_service::id id;
+ parity(
+ type t = none);
 
 
 
@@ -43203,12 +49136,13 @@
 
 
 
-[section:implementation_type posix::stream_descriptor_service::implementation_type]
-
-The type of a stream descriptor implementation.
+[section:store serial_port_base::parity::store]
 
- typedef implementation_defined implementation_type;
+[indexterm2 store..serial_port_base::parity]
 
+ boost::system::error_code store(
+ BOOST_ASIO_OPTION_STORAGE & storage,
+ boost::system::error_code & ec) const;
 
 
 
@@ -43216,70 +49150,108 @@
 
 
 
-[section:io_control posix::stream_descriptor_service::io_control]
-
-Perform an IO control command on the descriptor.
-
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code io_control(
- implementation_type & impl,
- IoControlCommand & command,
- boost::system::error_code & ec);
+[section:type serial_port_base::parity::type]
 
+[indexterm2 type..serial_port_base::parity]
 
+ enum type
 
-[endsect]
+[heading Values]
+[variablelist
 
+ [
+ [none]
+ []
+ ]
 
+ [
+ [odd]
+ []
+ ]
 
-[section:io_service posix::stream_descriptor_service::io_service]
+ [
+ [even]
+ []
+ ]
 
+]
 
-['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
- boost::asio::io_service & io_service();
+[endsect]
 
 
 
-[endsect]
+[section:value serial_port_base::parity::value]
 
+[indexterm2 value..serial_port_base::parity]
 
+ type value() const;
 
-[section:is_open posix::stream_descriptor_service::is_open]
 
-Determine whether the descriptor is open.
 
- bool is_open(
- const implementation_type & impl) const;
+[endsect]
 
 
 
 [endsect]
 
+[section:serial_port_base__stop_bits serial_port_base::stop_bits]
 
+Serial port option to permit changing the number of stop bits.
 
-[section:native posix::stream_descriptor_service::native]
+ class stop_bits
 
-Get the native descriptor implementation.
 
- native_type native(
- implementation_type & impl);
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
+
+ [[link boost_asio.reference.serial_port_base__stop_bits.type [*type]]]
+ []
+
+ ]
 
+]
 
-[endsect]
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.serial_port_base__stop_bits.load [*load]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.serial_port_base__stop_bits.stop_bits [*stop_bits]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.serial_port_base__stop_bits.store [*store]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.serial_port_base__stop_bits.value [*value]]]
+ []
+ ]
+
+]
 
+Implements changing the number of stop bits for a given serial port.
 
-[section:native_type posix::stream_descriptor_service::native_type]
 
-The native descriptor type.
+[section:load serial_port_base::stop_bits::load]
 
- typedef implementation_defined native_type;
+[indexterm2 load..serial_port_base::stop_bits]
 
+ boost::system::error_code load(
+ const BOOST_ASIO_OPTION_STORAGE & storage,
+ boost::system::error_code & ec);
 
 
 
@@ -43287,16 +49259,12 @@
 
 
 
-[section:read_some posix::stream_descriptor_service::read_some]
+[section:stop_bits serial_port_base::stop_bits::stop_bits]
 
-Read some data from the stream.
+[indexterm2 stop_bits..serial_port_base::stop_bits]
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- implementation_type & impl,
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+ stop_bits(
+ type t = one);
 
 
 
@@ -43304,11 +49272,13 @@
 
 
 
-[section:shutdown_service posix::stream_descriptor_service::shutdown_service]
+[section:store serial_port_base::stop_bits::store]
 
-Destroy all user-defined descriptorr objects owned by the service.
+[indexterm2 store..serial_port_base::stop_bits]
 
- void shutdown_service();
+ boost::system::error_code store(
+ BOOST_ASIO_OPTION_STORAGE & storage,
+ boost::system::error_code & ec) const;
 
 
 
@@ -43316,12 +49286,31 @@
 
 
 
-[section:stream_descriptor_service posix::stream_descriptor_service::stream_descriptor_service]
+[section:type serial_port_base::stop_bits::type]
 
-Construct a new stream descriptor service for the specified io_service.
+[indexterm2 type..serial_port_base::stop_bits]
 
- stream_descriptor_service(
- boost::asio::io_service & io_service);
+ enum type
+
+[heading Values]
+[variablelist
+
+ [
+ [one]
+ []
+ ]
+
+ [
+ [onepointfive]
+ []
+ ]
+
+ [
+ [two]
+ []
+ ]
+
+]
 
 
 
@@ -43329,16 +49318,11 @@
 
 
 
-[section:write_some posix::stream_descriptor_service::write_some]
+[section:value serial_port_base::stop_bits::value]
 
-Write the given data to the stream.
+[indexterm2 value..serial_port_base::stop_bits]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- implementation_type & impl,
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+ type value() const;
 
 
 
@@ -43348,13 +49332,11 @@
 
 [endsect]
 
-[section:raw_socket_service raw_socket_service]
+[section:serial_port_service serial_port_service]
 
-Default service implementation for a raw socket.
+Default service implementation for a serial port.
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``>
- class raw_socket_service :
+ class serial_port_service :
     public io_service::service
 
 
@@ -43364,29 +49346,15 @@
 
   [
 
- [[link boost_asio.reference.raw_socket_service.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.raw_socket_service.implementation_type [*implementation_type]]]
- [The type of a raw socket. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.raw_socket_service.native_type [*native_type]]]
- [The native socket type. ]
+ [[link boost_asio.reference.serial_port_service.implementation_type [*implementation_type]]]
+ [The type of a serial port implementation. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.raw_socket_service.protocol_type [*protocol_type]]]
- [The protocol type. ]
+ [[link boost_asio.reference.serial_port_service.native_type [*native_type]]]
+ [The native handle type. ]
   
   ]
 
@@ -43397,158 +49365,98 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.raw_socket_service.assign [*assign]]]
- [Assign an existing native socket to a raw socket. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.async_receive [*async_receive]]]
- [Start an asynchronous receive. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.async_receive_from [*async_receive_from]]]
- [Start an asynchronous receive that will get the endpoint of the sender. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.async_send [*async_send]]]
- [Start an asynchronous send. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.async_send_to [*async_send_to]]]
- [Start an asynchronous send. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.available [*available]]]
- [Determine the number of bytes available for reading. ]
+ [[link boost_asio.reference.serial_port_service.assign [*assign]]]
+ [Assign an existing native handle to a serial port. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.bind [*bind]]]
- []
+ [[link boost_asio.reference.serial_port_service.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
+ [[link boost_asio.reference.serial_port_service.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.close [*close]]]
- [Close a raw socket implementation. ]
+ [[link boost_asio.reference.serial_port_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.connect [*connect]]]
- [Connect the raw socket to the specified endpoint. ]
+ [[link boost_asio.reference.serial_port_service.close [*close]]]
+ [Close a serial port implementation. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.construct [*construct]]]
- [Construct a new raw socket implementation. ]
+ [[link boost_asio.reference.serial_port_service.construct [*construct]]]
+ [Construct a new serial port implementation. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.destroy [*destroy]]]
- [Destroy a raw socket implementation. ]
+ [[link boost_asio.reference.serial_port_service.destroy [*destroy]]]
+ [Destroy a serial port implementation. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.get_io_service [*get_io_service]]]
+ [[link boost_asio.reference.serial_port_service.get_io_service [*get_io_service]]]
     [Get the io_service object that owns the service. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.get_option [*get_option]]]
- [Get a socket option. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
+ [[link boost_asio.reference.serial_port_service.get_option [*get_option]]]
+ [Get a serial port option. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.io_service [*io_service]]]
+ [[link boost_asio.reference.serial_port_service.io_service [*io_service]]]
     [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.is_open [*is_open]]]
- [Determine whether the socket is open. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.local_endpoint [*local_endpoint]]]
- [Get the local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.native [*native]]]
- [Get the native socket implementation. ]
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.open [*open]]]
- []
- ]
-
- [
- [[link boost_asio.reference.raw_socket_service.raw_socket_service [*raw_socket_service]]]
- [Construct a new raw socket service for the specified io_service. ]
+ [[link boost_asio.reference.serial_port_service.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.receive [*receive]]]
- [Receive some data from the peer. ]
+ [[link boost_asio.reference.serial_port_service.native [*native]]]
+ [Get the native handle implementation. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.receive_from [*receive_from]]]
- [Receive raw data with the endpoint of the sender. ]
+ [[link boost_asio.reference.serial_port_service.open [*open]]]
+ [Open a serial port. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint. ]
+ [[link boost_asio.reference.serial_port_service.read_some [*read_some]]]
+ [Read some data from the stream. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.send [*send]]]
- [Send the given data to the peer. ]
+ [[link boost_asio.reference.serial_port_service.send_break [*send_break]]]
+ [Send a break sequence to the serial port. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.send_to [*send_to]]]
- [Send raw data to the specified endpoint. ]
+ [[link boost_asio.reference.serial_port_service.serial_port_service [*serial_port_service]]]
+ [Construct a new serial port service for the specified io_service. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.set_option [*set_option]]]
- [Set a socket option. ]
+ [[link boost_asio.reference.serial_port_service.set_option [*set_option]]]
+ [Set a serial port option. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
+ [[link boost_asio.reference.serial_port_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
   ]
   
   [
- [[link boost_asio.reference.raw_socket_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
+ [[link boost_asio.reference.serial_port_service.write_some [*write_some]]]
+ [Write the given data to the stream. ]
   ]
   
 ]
@@ -43558,21 +49466,20 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.raw_socket_service.id [*id]]]
+ [[link boost_asio.reference.serial_port_service.id [*id]]]
     [The unique service identifier. ]
   ]
 
 ]
 
 
-[section:assign raw_socket_service::assign]
+[section:assign serial_port_service::assign]
 
-Assign an existing native socket to a raw socket.
+[indexterm2 assign..serial_port_service] Assign an existing native handle to a serial port.
 
   boost::system::error_code assign(
       implementation_type & impl,
- const protocol_type & protocol,
- const native_type & native_socket,
+ const native_type & native_handle,
       boost::system::error_code & ec);
 
 
@@ -43581,54 +49488,16 @@
 
 
 
-[section:async_connect raw_socket_service::async_connect]
-
-Start an asynchronous connect.
-
- template<
- typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
- implementation_type & impl,
- const endpoint_type & peer_endpoint,
- ConnectHandler handler);
-
-
-
-[endsect]
-
-
-
-[section:async_receive raw_socket_service::async_receive]
-
-Start an asynchronous receive.
-
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
- implementation_type & impl,
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
- ReadHandler handler);
-
-
-
-[endsect]
-
-
-
-[section:async_receive_from raw_socket_service::async_receive_from]
+[section:async_read_some serial_port_service::async_read_some]
 
-Start an asynchronous receive that will get the endpoint of the sender.
+[indexterm2 async_read_some..serial_port_service] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive_from(
+ void async_read_some(
       implementation_type & impl,
       const MutableBufferSequence & buffers,
- endpoint_type & sender_endpoint,
- socket_base::message_flags flags,
       ReadHandler handler);
 
 
@@ -43637,37 +49506,16 @@
 
 
 
-[section:async_send raw_socket_service::async_send]
-
-Start an asynchronous send.
-
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
- implementation_type & impl,
- const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
- WriteHandler handler);
-
-
-
-[endsect]
-
-
-
-[section:async_send_to raw_socket_service::async_send_to]
+[section:async_write_some serial_port_service::async_write_some]
 
-Start an asynchronous send.
+[indexterm2 async_write_some..serial_port_service] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send_to(
+ void async_write_some(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
- const endpoint_type & destination,
- socket_base::message_flags flags,
       WriteHandler handler);
 
 
@@ -43676,52 +49524,9 @@
 
 
 
-[section:at_mark raw_socket_service::at_mark]
-
-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;
-
-
-
-[endsect]
-
-
-
-[section:available raw_socket_service::available]
-
-Determine the number of bytes available for reading.
-
- std::size_t available(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
-
-
-
-[endsect]
-
-
-
-[section:bind raw_socket_service::bind]
-
-
-
- boost::system::error_code bind(
- implementation_type & impl,
- const endpoint_type & endpoint,
- boost::system::error_code & ec);
-
-
-
-[endsect]
-
-
-
-[section:cancel raw_socket_service::cancel]
+[section:cancel serial_port_service::cancel]
 
-Cancel all asynchronous operations associated with the socket.
+[indexterm2 cancel..serial_port_service] Cancel all asynchronous operations associated with the handle.
 
   boost::system::error_code cancel(
       implementation_type & impl,
@@ -43733,9 +49538,9 @@
 
 
 
-[section:close raw_socket_service::close]
+[section:close serial_port_service::close]
 
-Close a raw socket implementation.
+[indexterm2 close..serial_port_service] Close a serial port implementation.
 
   boost::system::error_code close(
       implementation_type & impl,
@@ -43747,39 +49552,11 @@
 
 
 
-[section:connect raw_socket_service::connect]
-
-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);
-
-
-
-[endsect]
-
-
-
-[section:construct raw_socket_service::construct]
-
-Construct a new raw socket implementation.
-
- void construct(
- implementation_type & impl);
-
-
-
-[endsect]
-
-
-
-[section:destroy raw_socket_service::destroy]
+[section:construct serial_port_service::construct]
 
-Destroy a raw socket implementation.
+[indexterm2 construct..serial_port_service] Construct a new serial port implementation.
 
- void destroy(
+ void construct(
       implementation_type & impl);
 
 
@@ -43788,12 +49565,12 @@
 
 
 
-[section:endpoint_type raw_socket_service::endpoint_type]
-
-The endpoint type.
+[section:destroy serial_port_service::destroy]
 
- typedef Protocol::endpoint endpoint_type;
+[indexterm2 destroy..serial_port_service] Destroy a serial port implementation.
 
+ void destroy(
+ implementation_type & impl);
 
 
 
@@ -43801,12 +49578,12 @@
 
 
 
-[section:get_io_service raw_socket_service::get_io_service]
+[section:get_io_service serial_port_service::get_io_service]
 
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..serial_port_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -43816,15 +49593,15 @@
 
 
 
-[section:get_option raw_socket_service::get_option]
+[section:get_option serial_port_service::get_option]
 
-Get a socket option.
+[indexterm2 get_option..serial_port_service] Get a serial port option.
 
   template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ typename ``[link boost_asio.reference.GettableSerialPortOption GettableSerialPortOption]``>
   boost::system::error_code get_option(
       const implementation_type & impl,
- GettableSocketOption & option,
+ GettableSerialPortOption & option,
       boost::system::error_code & ec) const;
 
 
@@ -43833,9 +49610,9 @@
 
 
 
-[section:id raw_socket_service::id]
+[section:id serial_port_service::id]
 
-The unique service identifier.
+[indexterm2 id..serial_port_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -43845,9 +49622,9 @@
 
 
 
-[section:implementation_type raw_socket_service::implementation_type]
+[section:implementation_type serial_port_service::implementation_type]
 
-The type of a raw socket.
+[indexterm2 implementation_type..serial_port_service] The type of a serial port implementation.
 
   typedef implementation_defined implementation_type;
 
@@ -43858,29 +49635,12 @@
 
 
 
-[section:io_control raw_socket_service::io_control]
-
-Perform an IO control command on the socket.
-
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code io_control(
- implementation_type & impl,
- IoControlCommand & command,
- boost::system::error_code & ec);
-
-
-
-[endsect]
-
-
-
-[section:io_service raw_socket_service::io_service]
+[section:io_service serial_port_service::io_service]
 
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..serial_port_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -43890,9 +49650,9 @@
 
 
 
-[section:is_open raw_socket_service::is_open]
+[section:is_open serial_port_service::is_open]
 
-Determine whether the socket is open.
+[indexterm2 is_open..serial_port_service] Determine whether the handle is open.
 
   bool is_open(
       const implementation_type & impl) const;
@@ -43903,23 +49663,9 @@
 
 
 
-[section:local_endpoint raw_socket_service::local_endpoint]
-
-Get the local endpoint.
-
- endpoint_type local_endpoint(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
-
-
-
-[endsect]
-
-
-
-[section:native raw_socket_service::native]
+[section:native serial_port_service::native]
 
-Get the native socket implementation.
+[indexterm2 native..serial_port_service] Get the native handle implementation.
 
   native_type native(
       implementation_type & impl);
@@ -43930,9 +49676,9 @@
 
 
 
-[section:native_type raw_socket_service::native_type]
+[section:native_type serial_port_service::native_type]
 
-The native socket type.
+[indexterm2 native_type..serial_port_service] The native handle type.
 
   typedef implementation_defined native_type;
 
@@ -43943,13 +49689,13 @@
 
 
 
-[section:open raw_socket_service::open]
-
+[section:open serial_port_service::open]
 
+[indexterm2 open..serial_port_service] Open a serial port.
 
   boost::system::error_code open(
       implementation_type & impl,
- const protocol_type & protocol,
+ const std::string & device,
       boost::system::error_code & ec);
 
 
@@ -43958,12 +49704,16 @@
 
 
 
-[section:protocol_type raw_socket_service::protocol_type]
-
-The protocol type.
+[section:read_some serial_port_service::read_some]
 
- typedef Protocol protocol_type;
+[indexterm2 read_some..serial_port_service] Read some data from the stream.
 
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
 
@@ -43971,12 +49721,13 @@
 
 
 
-[section:raw_socket_service raw_socket_service::raw_socket_service]
+[section:send_break serial_port_service::send_break]
 
-Construct a new raw socket service for the specified io_service.
+[indexterm2 send_break..serial_port_service] Send a break sequence to the serial port.
 
- raw_socket_service(
- boost::asio::io_service & io_service);
+ boost::system::error_code send_break(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
 
 
@@ -43984,17 +49735,12 @@
 
 
 
-[section:receive raw_socket_service::receive]
+[section:serial_port_service serial_port_service::serial_port_service]
 
-Receive some data from the peer.
+[indexterm2 serial_port_service..serial_port_service] Construct a new serial port service for the specified io_service.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t receive(
- implementation_type & impl,
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
- boost::system::error_code & ec);
+ serial_port_service(
+ boost::asio::io_service & io_service);
 
 
 
@@ -44002,17 +49748,15 @@
 
 
 
-[section:receive_from raw_socket_service::receive_from]
+[section:set_option serial_port_service::set_option]
 
-Receive raw data with the endpoint of the sender.
+[indexterm2 set_option..serial_port_service] Set a serial port option.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t receive_from(
+ typename ``[link boost_asio.reference.SettableSerialPortOption SettableSerialPortOption]``>
+ boost::system::error_code set_option(
       implementation_type & impl,
- const MutableBufferSequence & buffers,
- endpoint_type & sender_endpoint,
- socket_base::message_flags flags,
+ const SettableSerialPortOption & option,
       boost::system::error_code & ec);
 
 
@@ -44021,13 +49765,11 @@
 
 
 
-[section:remote_endpoint raw_socket_service::remote_endpoint]
+[section:shutdown_service serial_port_service::shutdown_service]
 
-Get the remote endpoint.
+[indexterm2 shutdown_service..serial_port_service] Destroy all user-defined handler objects owned by the service.
 
- endpoint_type remote_endpoint(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
+ void shutdown_service();
 
 
 
@@ -44035,16 +49777,15 @@
 
 
 
-[section:send raw_socket_service::send]
+[section:write_some serial_port_service::write_some]
 
-Send the given data to the peer.
+[indexterm2 write_some..serial_port_service] Write the given data to the stream.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t send(
+ std::size_t write_some(
       implementation_type & impl,
       const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
       boost::system::error_code & ec);
 
 
@@ -44053,35 +49794,32 @@
 
 
 
-[section:send_to raw_socket_service::send_to]
+[endsect]
 
-Send raw data to the specified endpoint.
+[section:service_already_exists service_already_exists]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence 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);
+Exception thrown when trying to add a duplicate service to an io_service.
 
+ class service_already_exists
 
 
-[endsect]
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.service_already_exists.service_already_exists [*service_already_exists]]]
+ []
+ ]
+
+]
 
 
-[section:set_option raw_socket_service::set_option]
+[section:service_already_exists service_already_exists::service_already_exists]
 
-Set a socket option.
+[indexterm2 service_already_exists..service_already_exists]
 
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- boost::system::error_code set_option(
- implementation_type & impl,
- const SettableSocketOption & option,
- boost::system::error_code & ec);
+ service_already_exists();
 
 
 
@@ -44089,159 +49827,245 @@
 
 
 
-[section:shutdown raw_socket_service::shutdown]
+[endsect]
 
-Disable sends or receives on the socket.
+[section:socket_acceptor_service socket_acceptor_service]
 
- boost::system::error_code shutdown(
- implementation_type & impl,
- socket_base::shutdown_type what,
- boost::system::error_code & ec);
+Default service implementation for a socket acceptor.
 
+ template<
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ class socket_acceptor_service :
+ public io_service::service
 
 
-[endsect]
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
+ [[link boost_asio.reference.socket_acceptor_service.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
 
-[section:shutdown_service raw_socket_service::shutdown_service]
+ [
 
-Destroy all user-defined handler objects owned by the service.
+ [[link boost_asio.reference.socket_acceptor_service.implementation_type [*implementation_type]]]
+ [The native type of the socket acceptor. ]
+
+ ]
 
- void shutdown_service();
+ [
 
+ [[link boost_asio.reference.socket_acceptor_service.native_type [*native_type]]]
+ [The native acceptor type. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.socket_acceptor_service.protocol_type [*protocol_type]]]
+ [The protocol type. ]
+
+ ]
 
+]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[endsect]
+ [
+ [[link boost_asio.reference.socket_acceptor_service.accept [*accept]]]
+ [Accept a new connection. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.assign [*assign]]]
+ [Assign an existing native acceptor to a socket acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.async_accept [*async_accept]]]
+ [Start an asynchronous accept. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.bind [*bind]]]
+ [Bind the socket acceptor to the specified local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the acceptor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.close [*close]]]
+ [Close a socket acceptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.construct [*construct]]]
+ [Construct a new socket acceptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.destroy [*destroy]]]
+ [Destroy a socket acceptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.get_option [*get_option]]]
+ [Get a socket option. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.is_open [*is_open]]]
+ [Determine whether the acceptor is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.listen [*listen]]]
+ [Place the socket acceptor into the state where it will listen for new connections. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.native [*native]]]
+ [Get the native acceptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.open [*open]]]
+ [Open a new socket acceptor implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.set_option [*set_option]]]
+ [Set a socket option. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.socket_acceptor_service.socket_acceptor_service [*socket_acceptor_service]]]
+ [Construct a new socket acceptor service for the specified io_service. ]
+ ]
+
+]
 
-[section:read read]
+[heading Data Members]
+[table
+ [[Name][Description]]
 
-Attempt to read a certain amount of data from a stream before returning.
+ [
+ [[link boost_asio.reference.socket_acceptor_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.read.overload1 read]``(
- SyncReadStream & s,
- const MutableBufferSequence & buffers);
+]
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename CompletionCondition>
- std::size_t ``[link boost_asio.reference.read.overload2 read]``(
- SyncReadStream & s,
- const MutableBufferSequence & buffers,
- CompletionCondition completion_condition);
+
+[section:accept socket_acceptor_service::accept]
+
+[indexterm2 accept..socket_acceptor_service] Accept a new connection.
 
   template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename CompletionCondition>
- std::size_t ``[link boost_asio.reference.read.overload3 read]``(
- SyncReadStream & s,
- const MutableBufferSequence & buffers,
- CompletionCondition completion_condition,
+ typename ``[link boost_asio.reference.SocketService SocketService]``>
+ boost::system::error_code accept(
+ implementation_type & impl,
+ basic_socket< protocol_type, SocketService > & peer,
+ endpoint_type * peer_endpoint,
       boost::system::error_code & ec);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read.overload4 read]``(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator,
- typename CompletionCondition>
- std::size_t ``[link boost_asio.reference.read.overload5 read]``(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b,
- CompletionCondition completion_condition);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator,
- typename CompletionCondition>
- std::size_t ``[link boost_asio.reference.read.overload6 read]``(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b,
- CompletionCondition completion_condition,
- boost::system::error_code & ec);
+[endsect]
 
 
-[section:overload1 read (1 of 6 overloads)]
 
-Attempt to read a certain amount of data from a stream before returning.
+[section:assign socket_acceptor_service::assign]
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read(
- SyncReadStream & s,
- const MutableBufferSequence & buffers);
+[indexterm2 assign..socket_acceptor_service] 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);
 
-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:
 
 
-* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
+[endsect]
 
-* An error occurred.
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
+[section:async_accept socket_acceptor_service::async_accept]
 
-[heading Parameters]
-
+[indexterm2 async_accept..socket_acceptor_service] Start an asynchronous accept.
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+ template<
+ typename ``[link boost_asio.reference.SocketService SocketService]``,
+ typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
+ void async_accept(
+ implementation_type & impl,
+ basic_socket< protocol_type, SocketService > & peer,
+ endpoint_type * peer_endpoint,
+ AcceptHandler handler);
 
-[[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.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes transferred.
+[endsect]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
+[section:bind socket_acceptor_service::bind]
 
-[heading Example]
-
-To read into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
+[indexterm2 bind..socket_acceptor_service] Bind the socket acceptor to the specified local endpoint.
 
- boost::asio::read(s, boost::asio::buffer(data, size));
+ boost::system::error_code bind(
+ implementation_type & impl,
+ const endpoint_type & endpoint,
+ boost::system::error_code & ec);
 
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
-[heading Remarks]
-
-This overload is equivalent to calling:
+[endsect]
+
 
- boost::asio::read(
- s, buffers,
- boost::asio::transfer_all());
 
+[section:cancel socket_acceptor_service::cancel]
 
+[indexterm2 cancel..socket_acceptor_service] Cancel all asynchronous operations associated with the acceptor.
 
+ boost::system::error_code cancel(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
 
 
@@ -44249,78 +50073,52 @@
 
 
 
-[section:overload2 read (2 of 6 overloads)]
+[section:close socket_acceptor_service::close]
 
-Attempt to read a certain amount of data from a stream before returning.
+[indexterm2 close..socket_acceptor_service] Close a socket acceptor implementation.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename CompletionCondition>
- std::size_t read(
- SyncReadStream & s,
- const MutableBufferSequence & buffers,
- CompletionCondition completion_condition);
+ boost::system::error_code close(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
 
-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:
 
+[endsect]
 
-* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
 
-* The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
+[section:construct socket_acceptor_service::construct]
 
+[indexterm2 construct..socket_acceptor_service] Construct a new socket acceptor implementation.
 
-[heading Parameters]
-
+ void construct(
+ implementation_type & impl);
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[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.]]
 
-[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
-``
- bool completion_condition(
- const boost::system::error_code& error, // Result of latest read_some
- // operation.
+[endsect]
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
- );
 
-``
-A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
 
-]
+[section:destroy socket_acceptor_service::destroy]
 
-[heading Return Value]
-
-The number of bytes transferred.
+[indexterm2 destroy..socket_acceptor_service] Destroy a socket acceptor implementation.
 
-[heading Exceptions]
-
+ void destroy(
+ implementation_type & impl);
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
 
-[heading Example]
-
-To read into a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
+[endsect]
 
- boost::asio::read(s, boost::asio::buffer(data, size),
- boost::asio::transfer_at_least(32));
 
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+[section:endpoint_type socket_acceptor_service::endpoint_type]
+
+[indexterm2 endpoint_type..socket_acceptor_service] The endpoint type.
+
+ typedef protocol_type::endpoint endpoint_type;
+
 
 
 
@@ -44328,60 +50126,43 @@
 
 
 
-[section:overload3 read (3 of 6 overloads)]
+[section:get_io_service socket_acceptor_service::get_io_service]
 
-Attempt to read a certain amount of data from a stream before returning.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename CompletionCondition>
- std::size_t read(
- SyncReadStream & s,
- const MutableBufferSequence & buffers,
- CompletionCondition completion_condition,
- boost::system::error_code & ec);
+['Inherited from io_service.]
 
+[indexterm2 get_io_service..socket_acceptor_service] Get the io_service object that owns the service.
 
-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:
+ boost::asio::io_service & get_io_service();
 
 
-* The supplied buffers are full. That is, the bytes transferred is equal to the sum of the buffer sizes.
 
-* The completion_condition function object returns true.
+[endsect]
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
 
-[heading Parameters]
-
+[section:get_option socket_acceptor_service::get_option]
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+[indexterm2 get_option..socket_acceptor_service] Get a socket option.
 
-[[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.]]
+ template<
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ boost::system::error_code get_option(
+ const implementation_type & impl,
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
 
-[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
-``
- bool completion_condition(
- const boost::system::error_code& error, // Result of latest read_some
- // operation.
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
- );
 
-``
-A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
+[endsect]
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes read. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
+[section:id socket_acceptor_service::id]
+
+[indexterm2 id..socket_acceptor_service] The unique service identifier.
+
+ static boost::asio::io_service::id id;
 
 
 
@@ -44389,60 +50170,44 @@
 
 
 
-[section:overload4 read (4 of 6 overloads)]
+[section:implementation_type socket_acceptor_service::implementation_type]
 
-Attempt to read a certain amount of data from a stream before returning.
+[indexterm2 implementation_type..socket_acceptor_service] The native type of the socket acceptor.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b);
+ typedef implementation_defined implementation_type;
 
 
-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:
 
 
-* An error occurred.
+[endsect]
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
 
-[heading Parameters]
-
+[section:io_control socket_acceptor_service::io_control]
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+[indexterm2 io_control..socket_acceptor_service] Perform an IO control command on the socket.
 
-[[b][The basic\_streambuf object into which the data will be read.]]
+ template<
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ implementation_type & impl,
+ IoControlCommand & command,
+ boost::system::error_code & ec);
 
-]
 
-[heading Return Value]
-
-The number of bytes transferred.
 
-[heading Exceptions]
-
+[endsect]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
 
-[heading Remarks]
-
-This overload is equivalent to calling:
+[section:io_service socket_acceptor_service::io_service]
 
- boost::asio::read(
- s, b,
- boost::asio::transfer_all());
 
+['Inherited from io_service.]
 
+[indexterm2 io_service..socket_acceptor_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
+ boost::asio::io_service & io_service();
 
 
 
@@ -44450,64 +50215,41 @@
 
 
 
-[section:overload5 read (5 of 6 overloads)]
-
-Attempt to read a certain amount of data from a stream before returning.
+[section:is_open socket_acceptor_service::is_open]
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator,
- typename CompletionCondition>
- std::size_t read(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b,
- CompletionCondition completion_condition);
+[indexterm2 is_open..socket_acceptor_service] Determine whether the acceptor is open.
 
+ bool is_open(
+ const implementation_type & impl) const;
 
-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:
 
 
-* The completion_condition function object returns true.
+[endsect]
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
 
-[heading Parameters]
-
+[section:listen socket_acceptor_service::listen]
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+[indexterm2 listen..socket_acceptor_service] Place the socket acceptor into the state where it will listen for new connections.
 
-[[b][The basic\_streambuf object into which the data will be read.]]
+ boost::system::error_code listen(
+ implementation_type & impl,
+ int backlog,
+ boost::system::error_code & ec);
 
-[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
-``
- bool completion_condition(
- const boost::system::error_code& error, // Result of latest read_some
- // operation.
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
- );
 
-``
-A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
+[endsect]
 
-]
 
-[heading Return Value]
-
-The number of bytes transferred.
 
-[heading Exceptions]
-
+[section:local_endpoint socket_acceptor_service::local_endpoint]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+[indexterm2 local_endpoint..socket_acceptor_service] Get the local endpoint.
 
-]
+ endpoint_type local_endpoint(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
 
 
@@ -44515,414 +50257,360 @@
 
 
 
-[section:overload6 read (6 of 6 overloads)]
+[section:native socket_acceptor_service::native]
 
-Attempt to read a certain amount of data from a stream before returning.
+[indexterm2 native..socket_acceptor_service] Get the native acceptor implementation.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator,
- typename CompletionCondition>
- std::size_t read(
- SyncReadStream & s,
- basic_streambuf< Allocator > & b,
- CompletionCondition completion_condition,
- boost::system::error_code & ec);
+ native_type native(
+ implementation_type & impl);
 
 
-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:
 
+[endsect]
 
-* The completion_condition function object returns true.
 
-This operation is implemented in terms of one or more calls to the stream's read\_some function.
 
+[section:native_type socket_acceptor_service::native_type]
 
-[heading Parameters]
-
+[indexterm2 native_type..socket_acceptor_service] The native acceptor type.
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+ typedef implementation_defined native_type;
 
-[[b][The basic\_streambuf object into which the data will be read.]]
 
-[[completion_condition][The function object to be called to determine whether the read operation is complete. The signature of the function object must be:
-``
- bool completion_condition(
- const boost::system::error_code& error, // Result of latest read_some
- // operation.
 
- std::size_t bytes_transferred // Number of bytes transferred
- // so far.
- );
 
-``
-A return value of true indicates that the read operation is complete. False indicates that further calls to the stream's read\_some function are required.]]
+[endsect]
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes read. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
+[section:open socket_acceptor_service::open]
 
+[indexterm2 open..socket_acceptor_service] Open a new socket acceptor implementation.
 
+ boost::system::error_code open(
+ implementation_type & impl,
+ const protocol_type & protocol,
+ boost::system::error_code & ec);
 
-[endsect]
 
 
 [endsect]
 
-[section:read_until read_until]
 
-Read data into a streambuf until a delimiter is encountered.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload1 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- char delim);
+[section:protocol_type socket_acceptor_service::protocol_type]
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload2 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- char delim,
- boost::system::error_code & ec);
+[indexterm2 protocol_type..socket_acceptor_service] The protocol type.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload3 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const std::string & delim);
+ typedef Protocol protocol_type;
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload4 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const std::string & delim,
- boost::system::error_code & ec);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload5 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const boost::regex & expr);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t ``[link boost_asio.reference.read_until.overload6 read_until]``(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const boost::regex & expr,
- boost::system::error_code & ec);
 
+[endsect]
 
-[section:overload1 read_until (1 of 6 overloads)]
 
-Read data into a streambuf until a delimiter is encountered.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read_until(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- char delim);
+[section:set_option socket_acceptor_service::set_option]
 
+[indexterm2 set_option..socket_acceptor_service] Set a socket option.
 
-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:
+ template<
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ boost::system::error_code set_option(
+ implementation_type & impl,
+ const SettableSocketOption & option,
+ boost::system::error_code & ec);
 
 
-* The get area of the streambuf contains the specified delimiter.
 
-* An error occurred.
+[endsect]
 
-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.
 
 
-[heading Parameters]
-
+[section:shutdown_service socket_acceptor_service::shutdown_service]
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+[indexterm2 shutdown_service..socket_acceptor_service] Destroy all user-defined handler objects owned by the service.
 
-[[b][A streambuf object into which the data will be read.]]
+ void shutdown_service();
 
-[[delim][The delimiter character.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the delimiter.
+[endsect]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
+[section:socket_acceptor_service socket_acceptor_service::socket_acceptor_service]
 
-[heading Example]
-
-To read data into a streambuf until a newline is encountered:
+[indexterm2 socket_acceptor_service..socket_acceptor_service] Construct a new socket acceptor service for the specified io_service.
 
- boost::asio::streambuf b;
- boost::asio::read_until(s, b, '\n');
- std::istream is(&b);
- std::string line;
- std::getline(is, line);
+ socket_acceptor_service(
+ boost::asio::io_service & io_service);
 
 
 
+[endsect]
 
 
 
 [endsect]
 
+[section:socket_base socket_base]
 
+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.
 
-[section:overload2 read_until (2 of 6 overloads)]
-
-Read data into a streambuf until a delimiter is encountered.
+ class socket_base
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read_until(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- char delim,
- boost::system::error_code & ec);
 
+[heading Types]
+[table
+ [[Name][Description]]
 
-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:
+ [
 
+ [[link boost_asio.reference.socket_base.broadcast [*broadcast]]]
+ [Socket option to permit sending of broadcast messages. ]
+
+ ]
 
-* The get area of the streambuf contains the specified delimiter.
+ [
 
-* An error occurred.
+ [[link boost_asio.reference.socket_base.bytes_readable [*bytes_readable]]]
+ [IO control command to get the amount of data that can be read without blocking. ]
+
+ ]
 
-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.
+ [
 
+ [[link boost_asio.reference.socket_base.debug [*debug]]]
+ [Socket option to enable socket-level debugging. ]
+
+ ]
 
-[heading Parameters]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.socket_base.do_not_route [*do_not_route]]]
+ [Socket option to prevent routing, use local interfaces only. ]
   
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+ ]
 
-[[b][A streambuf object into which the data will be read.]]
+ [
 
-[[delim][The delimiter character.]]
+ [[link boost_asio.reference.socket_base.enable_connection_aborted [*enable_connection_aborted]]]
+ [Socket option to report aborted connections on accept. ]
+
+ ]
 
-[[ec][Set to indicate what error occurred, if any.]]
+ [
 
-]
+ [[link boost_asio.reference.socket_base.keep_alive [*keep_alive]]]
+ [Socket option to send keep-alives. ]
+
+ ]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
+ [
 
+ [[link boost_asio.reference.socket_base.linger [*linger]]]
+ [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.socket_base.message_flags [*message_flags]]]
+ [Bitmask type for flags that can be passed to send and receive operations. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.socket_base.non_blocking_io [*non_blocking_io]]]
+ [IO control command to set the blocking mode of the socket. ]
+
+ ]
 
-[section:overload3 read_until (3 of 6 overloads)]
+ [
 
-Read data into a streambuf until a delimiter is encountered.
+ [[link boost_asio.reference.socket_base.receive_buffer_size [*receive_buffer_size]]]
+ [Socket option for the receive buffer size of a socket. ]
+
+ ]
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read_until(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const std::string & delim);
+ [
 
+ [[link boost_asio.reference.socket_base.receive_low_watermark [*receive_low_watermark]]]
+ [Socket option for the receive low watermark. ]
+
+ ]
 
-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:
+ [
 
+ [[link boost_asio.reference.socket_base.reuse_address [*reuse_address]]]
+ [Socket option to allow the socket to be bound to an address that is already in use. ]
+
+ ]
 
-* The get area of the streambuf contains the specified delimiter.
+ [
 
-* An error occurred.
+ [[link boost_asio.reference.socket_base.send_buffer_size [*send_buffer_size]]]
+ [Socket option for the send buffer size of a socket. ]
+
+ ]
 
-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.
+ [
 
+ [[link boost_asio.reference.socket_base.send_low_watermark [*send_low_watermark]]]
+ [Socket option for the send low watermark. ]
+
+ ]
 
-[heading Parameters]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.socket_base.shutdown_type [*shutdown_type]]]
+ [Different ways a socket may be shutdown. ]
   
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+ ]
 
-[[b][A streambuf object into which the data will be read.]]
+]
 
-[[delim][The delimiter string.]]
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.socket_base._socket_base [*~socket_base]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
 ]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the delimiter.
+[heading Data Members]
+[table
+ [[Name][Description]]
 
-[heading Exceptions]
-
+ [
+ [[link boost_asio.reference.socket_base.max_connections [*max_connections]]]
+ [The maximum length of the queue of pending incoming connections. ]
+ ]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
+ [
+ [[link boost_asio.reference.socket_base.message_do_not_route [*message_do_not_route]]]
+ [Specify that the data should not be subject to routing. ]
+ ]
 
-]
+ [
+ [[link boost_asio.reference.socket_base.message_out_of_band [*message_out_of_band]]]
+ [Process out-of-band data. ]
+ ]
 
-[heading Example]
-
-To read data into a streambuf until a newline is encountered:
+ [
+ [[link boost_asio.reference.socket_base.message_peek [*message_peek]]]
+ [Peek at incoming data without removing it from the input queue. ]
+ ]
 
- boost::asio::streambuf b;
- boost::asio::read_until(s, b, "\r\n");
- std::istream is(&b);
- std::string line;
- std::getline(is, line);
+]
 
 
+[section:broadcast socket_base::broadcast]
 
+[indexterm2 broadcast..socket_base] Socket option to permit sending of broadcast messages.
 
+ typedef implementation_defined broadcast;
 
 
-[endsect]
 
+Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
 
 
-[section:overload4 read_until (4 of 6 overloads)]
+[heading Examples]
+
+Setting the option:
 
-Read data into a streambuf until a delimiter is encountered.
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::broadcast option(true);
+ socket.set_option(option);
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream 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);
 
 
-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:
 
+Getting the current option value:
 
-* The get area of the streambuf contains the specified delimiter.
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::broadcast option;
+ socket.get_option(option);
+ bool is_set = option.value();
 
-* 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.
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[b][A streambuf object into which the data will be read.]]
+[endsect]
 
-[[delim][The delimiter string.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
+[section:bytes_readable socket_base::bytes_readable]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the delimiter. Returns 0 if an error occurred.
+[indexterm2 bytes_readable..socket_base] IO control command to get the amount of data that can be read without blocking.
 
+ typedef implementation_defined bytes_readable;
 
 
-[endsect]
 
+Implements the FIONREAD IO control command.
 
 
-[section:overload5 read_until (5 of 6 overloads)]
+[heading Example]
+
 
-Read data into a streambuf until a regular expression is located.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream SyncReadStream]``,
- typename Allocator>
- std::size_t read_until(
- SyncReadStream & s,
- boost::asio::basic_streambuf< Allocator > & b,
- const boost::regex & expr);
+ 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();
 
 
-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:
 
 
-* A substring of the streambuf's get area matches the regular expression.
 
-* 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.
+[endsect]
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
+[section:debug socket_base::debug]
 
-[[b][A streambuf object into which the data will be read.]]
+[indexterm2 debug..socket_base] Socket option to enable socket-level debugging.
 
-[[expr][The regular expression.]]
+ typedef implementation_defined debug;
 
-]
 
-[heading Return Value]
-
-The number of bytes in the streambuf's get area up to and including the substring that matches the regular expression.
 
-[heading Exceptions]
-
+Implements the SOL\_SOCKET/SO\_DEBUG socket option.
 
-[variablelist
+
+[heading Examples]
   
-[[boost::system::system_error][Thrown on failure.]]
+Setting the option:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::debug option(true);
+ socket.set_option(option);
+
 
-]
 
-[heading Example]
-
-To read data into a streambuf until a CR-LF sequence is encountered:
 
- 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);
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::debug option;
+ socket.get_option(option);
+ bool is_set = option.value();
 
 
 
@@ -44933,297 +50621,160 @@
 
 
 
-[section:overload6 read_until (6 of 6 overloads)]
+[section:do_not_route socket_base::do_not_route]
 
-Read data into a streambuf until a regular expression is located.
+[indexterm2 do_not_route..socket_base] Socket option to prevent routing, use local interfaces only.
 
- template<
- typename ``[link boost_asio.reference.SyncReadStream 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);
+ typedef implementation_defined do_not_route;
 
 
-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:
 
+Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
 
-* A substring of the streambuf's get area matches the regular expression.
 
-* An error occurred.
+[heading Examples]
+
+Setting the option:
 
-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.
+ boost::asio::ip::udp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::do_not_route option(true);
+ socket.set_option(option);
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[s][The stream from which the data is to be read. The type must support the SyncReadStream concept.]]
 
-[[b][A streambuf object into which the data will be read.]]
+Getting the current option value:
 
-[[expr][The regular expression.]]
+ 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();
 
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
 
-[heading Return Value]
-
-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.
 
 
 
 [endsect]
 
 
-[endsect]
 
-[section:service_already_exists service_already_exists]
+[section:enable_connection_aborted socket_base::enable_connection_aborted]
 
-Exception thrown when trying to add a duplicate service to an io_service.
+[indexterm2 enable_connection_aborted..socket_base] Socket option to report aborted connections on accept.
 
- class service_already_exists
+ typedef implementation_defined enable_connection_aborted;
 
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.service_already_exists.service_already_exists [*service_already_exists]]]
- []
- ]
+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.
+
+
+[heading Examples]
   
-]
+Setting the option:
 
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::enable_connection_aborted option(true);
+ acceptor.set_option(option);
 
-[section:service_already_exists service_already_exists::service_already_exists]
 
 
 
- service_already_exists();
+Getting the current option value:
+
+ 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();
 
 
 
-[endsect]
 
 
 
 [endsect]
 
-[section:socket_acceptor_service socket_acceptor_service]
 
-Default service implementation for a socket acceptor.
 
- template<
- typename ``[link boost_asio.reference.Protocol Protocol]``>
- class socket_acceptor_service :
- public io_service::service
+[section:keep_alive socket_base::keep_alive]
 
+[indexterm2 keep_alive..socket_base] Socket option to send keep-alives.
 
-[heading Types]
-[table
- [[Name][Description]]
+ typedef implementation_defined keep_alive;
 
- [
 
- [[link boost_asio.reference.socket_acceptor_service.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
-
- ]
 
- [
+Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
 
- [[link boost_asio.reference.socket_acceptor_service.implementation_type [*implementation_type]]]
- [The native type of the socket acceptor. ]
+
+[heading Examples]
   
- ]
+Setting the option:
 
- [
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::keep_alive option(true);
+ socket.set_option(option);
 
- [[link boost_asio.reference.socket_acceptor_service.native_type [*native_type]]]
- [The native acceptor type. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.socket_acceptor_service.protocol_type [*protocol_type]]]
- [The protocol type. ]
-
- ]
 
-]
+Getting the current option value:
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::keep_alive option;
+ socket.get_option(option);
+ bool is_set = option.value();
 
- [
- [[link boost_asio.reference.socket_acceptor_service.accept [*accept]]]
- [Accept a new connection. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.assign [*assign]]]
- [Assign an existing native acceptor to a socket acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.async_accept [*async_accept]]]
- [Start an asynchronous accept. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.bind [*bind]]]
- [Bind the socket acceptor to the specified local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the acceptor. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.close [*close]]]
- [Close a socket acceptor implementation. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.construct [*construct]]]
- [Construct a new socket acceptor implementation. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.destroy [*destroy]]]
- [Destroy a socket acceptor implementation. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.get_option [*get_option]]]
- [Get a socket option. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.is_open [*is_open]]]
- [Determine whether the acceptor is open. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.listen [*listen]]]
- [Place the socket acceptor into the state where it will listen for new connections. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.local_endpoint [*local_endpoint]]]
- [Get the local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.native [*native]]]
- [Get the native acceptor implementation. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.open [*open]]]
- [Open a new socket acceptor implementation. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.set_option [*set_option]]]
- [Set a socket option. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
- ]
-
- [
- [[link boost_asio.reference.socket_acceptor_service.socket_acceptor_service [*socket_acceptor_service]]]
- [Construct a new socket acceptor service for the specified io_service. ]
- ]
-
-]
 
-[heading Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.socket_acceptor_service.id [*id]]]
- [The unique service identifier. ]
- ]
 
-]
 
 
-[section:accept socket_acceptor_service::accept]
+[endsect]
 
-Accept a new connection.
 
- template<
- typename ``[link boost_asio.reference.SocketService SocketService]``>
- boost::system::error_code accept(
- implementation_type & impl,
- basic_socket< protocol_type, SocketService > & peer,
- endpoint_type * peer_endpoint,
- boost::system::error_code & ec);
 
+[section:linger socket_base::linger]
+
+[indexterm2 linger..socket_base] Socket option to specify whether the socket lingers on close if unsent data is present.
 
+ typedef implementation_defined linger;
 
-[endsect]
 
 
+Implements the SOL\_SOCKET/SO\_LINGER socket option.
 
-[section:assign socket_acceptor_service::assign]
 
-Assign an existing native acceptor to a socket acceptor.
+[heading Examples]
+
+Setting the option:
 
- boost::system::error_code assign(
- implementation_type & impl,
- const protocol_type & protocol,
- const native_type & native_acceptor,
- boost::system::error_code & ec);
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::linger option(true, 30);
+ socket.set_option(option);
 
 
 
-[endsect]
 
+Getting the current option value:
 
+ 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();
 
-[section:async_accept socket_acceptor_service::async_accept]
 
-Start an asynchronous accept.
 
- template<
- typename ``[link boost_asio.reference.SocketService SocketService]``,
- typename ``[link boost_asio.reference.AcceptHandler AcceptHandler]``>
- void async_accept(
- implementation_type & impl,
- basic_socket< protocol_type, SocketService > & peer,
- endpoint_type * peer_endpoint,
- AcceptHandler handler);
 
 
 
@@ -45231,14 +50782,11 @@
 
 
 
-[section:bind socket_acceptor_service::bind]
+[section:max_connections socket_base::max_connections]
 
-Bind the socket acceptor to the specified local endpoint.
+[indexterm2 max_connections..socket_base] The maximum length of the queue of pending incoming connections.
 
- boost::system::error_code bind(
- implementation_type & impl,
- const endpoint_type & endpoint,
- boost::system::error_code & ec);
+ static const int max_connections = implementation_defined;
 
 
 
@@ -45246,13 +50794,11 @@
 
 
 
-[section:cancel socket_acceptor_service::cancel]
+[section:message_do_not_route socket_base::message_do_not_route]
 
-Cancel all asynchronous operations associated with the acceptor.
+[indexterm2 message_do_not_route..socket_base] Specify that the data should not be subject to routing.
 
- boost::system::error_code cancel(
- implementation_type & impl,
- boost::system::error_code & ec);
+ static const int message_do_not_route = implementation_defined;
 
 
 
@@ -45260,13 +50806,12 @@
 
 
 
-[section:close socket_acceptor_service::close]
+[section:message_flags socket_base::message_flags]
 
-Close a socket acceptor implementation.
+[indexterm2 message_flags..socket_base] Bitmask type for flags that can be passed to send and receive operations.
+
+ typedef int message_flags;
 
- boost::system::error_code close(
- implementation_type & impl,
- boost::system::error_code & ec);
 
 
 
@@ -45274,12 +50819,11 @@
 
 
 
-[section:construct socket_acceptor_service::construct]
+[section:message_out_of_band socket_base::message_out_of_band]
 
-Construct a new socket acceptor implementation.
+[indexterm2 message_out_of_band..socket_base] Process out-of-band data.
 
- void construct(
- implementation_type & impl);
+ static const int message_out_of_band = implementation_defined;
 
 
 
@@ -45287,12 +50831,11 @@
 
 
 
-[section:destroy socket_acceptor_service::destroy]
+[section:message_peek socket_base::message_peek]
 
-Destroy a socket acceptor implementation.
+[indexterm2 message_peek..socket_base] Peek at incoming data without removing it from the input queue.
 
- void destroy(
- implementation_type & impl);
+ static const int message_peek = implementation_defined;
 
 
 
@@ -45300,27 +50843,28 @@
 
 
 
-[section:endpoint_type socket_acceptor_service::endpoint_type]
-
-The endpoint type.
+[section:non_blocking_io socket_base::non_blocking_io]
 
- typedef protocol_type::endpoint endpoint_type;
+[indexterm2 non_blocking_io..socket_base] IO control command to set the blocking mode of the socket.
 
+ typedef implementation_defined non_blocking_io;
 
 
 
-[endsect]
+Implements the FIONBIO IO control command.
 
 
+[heading Example]
+
 
-[section:get_io_service socket_acceptor_service::get_io_service]
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::non_blocking_io command(true);
+ socket.io_control(command);
 
-['Inherited from io_service.]
 
-Get the io_service object that owns the service.
 
- boost::asio::io_service & get_io_service();
 
 
 
@@ -45328,73 +50872,79 @@
 
 
 
-[section:get_option socket_acceptor_service::get_option]
+[section:receive_buffer_size socket_base::receive_buffer_size]
 
-Get a socket option.
+[indexterm2 receive_buffer_size..socket_base] Socket option for the receive buffer size of a socket.
 
- template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- boost::system::error_code get_option(
- const implementation_type & impl,
- GettableSocketOption & option,
- boost::system::error_code & ec) const;
+ typedef implementation_defined receive_buffer_size;
 
 
 
-[endsect]
+Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
 
 
+[heading Examples]
+
+Setting the option:
 
-[section:id socket_acceptor_service::id]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option(8192);
+ socket.set_option(option);
 
-The unique service identifier.
 
- static boost::asio::io_service::id id;
 
 
+Getting the current option value:
 
-[endsect]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
 
 
 
-[section:implementation_type socket_acceptor_service::implementation_type]
 
-The native type of the socket acceptor.
 
- typedef implementation_defined implementation_type;
 
+[endsect]
 
 
 
-[endsect]
+[section:receive_low_watermark socket_base::receive_low_watermark]
 
+[indexterm2 receive_low_watermark..socket_base] Socket option for the receive low watermark.
 
+ typedef implementation_defined receive_low_watermark;
 
-[section:io_control socket_acceptor_service::io_control]
 
-Perform an IO control command on the socket.
 
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code io_control(
- implementation_type & impl,
- IoControlCommand & command,
- boost::system::error_code & ec);
+Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
 
 
+[heading Examples]
+
+Setting the option:
 
-[endsect]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_low_watermark option(1024);
+ socket.set_option(option);
 
 
 
-[section:io_service socket_acceptor_service::io_service]
 
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::receive_low_watermark option;
+ socket.get_option(option);
+ int size = option.value();
 
-['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
- boost::asio::io_service & io_service();
 
 
 
@@ -45402,66 +50952,78 @@
 
 
 
-[section:is_open socket_acceptor_service::is_open]
+[section:reuse_address socket_base::reuse_address]
 
-Determine whether the acceptor is open.
+[indexterm2 reuse_address..socket_base] Socket option to allow the socket to be bound to an address that is already in use.
 
- bool is_open(
- const implementation_type & impl) const;
+ typedef implementation_defined reuse_address;
 
 
 
-[endsect]
+Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
 
 
+[heading Examples]
+
+Setting the option:
 
-[section:listen socket_acceptor_service::listen]
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::reuse_address option(true);
+ acceptor.set_option(option);
 
-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);
 
 
+Getting the current option value:
 
-[endsect]
+ boost::asio::ip::tcp::acceptor acceptor(io_service);
+ ...
+ boost::asio::socket_base::reuse_address option;
+ acceptor.get_option(option);
+ bool is_set = option.value();
 
 
 
-[section:local_endpoint socket_acceptor_service::local_endpoint]
 
-Get the local endpoint.
 
- endpoint_type local_endpoint(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
 
+[endsect]
 
 
-[endsect]
 
+[section:send_buffer_size socket_base::send_buffer_size]
 
+[indexterm2 send_buffer_size..socket_base] Socket option for the send buffer size of a socket.
 
-[section:native socket_acceptor_service::native]
+ typedef implementation_defined send_buffer_size;
 
-Get the native acceptor implementation.
 
- native_type native(
- implementation_type & impl);
 
+Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
 
 
-[endsect]
+[heading Examples]
+
+Setting the option:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_buffer_size option(8192);
+ socket.set_option(option);
 
 
-[section:native_type socket_acceptor_service::native_type]
 
-The native acceptor type.
 
- typedef implementation_defined native_type;
+Getting the current option value:
+
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_buffer_size option;
+ socket.get_option(option);
+ int size = option.value();
+
+
 
 
 
@@ -45470,56 +51032,71 @@
 
 
 
-[section:open socket_acceptor_service::open]
+[section:send_low_watermark socket_base::send_low_watermark]
 
-Open a new socket acceptor implementation.
+[indexterm2 send_low_watermark..socket_base] Socket option for the send low watermark.
 
- boost::system::error_code open(
- implementation_type & impl,
- const protocol_type & protocol,
- boost::system::error_code & ec);
+ typedef implementation_defined send_low_watermark;
 
 
 
-[endsect]
+Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
 
 
+[heading Examples]
+
+Setting the option:
 
-[section:protocol_type socket_acceptor_service::protocol_type]
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option(1024);
+ socket.set_option(option);
 
-The protocol type.
 
- typedef Protocol protocol_type;
 
 
+Getting the current option value:
 
+ boost::asio::ip::tcp::socket socket(io_service);
+ ...
+ boost::asio::socket_base::send_low_watermark option;
+ socket.get_option(option);
+ int size = option.value();
 
-[endsect]
 
 
 
-[section:set_option socket_acceptor_service::set_option]
 
-Set a socket option.
 
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- boost::system::error_code set_option(
- implementation_type & impl,
- const SettableSocketOption & option,
- boost::system::error_code & ec);
+[endsect]
 
 
 
-[endsect]
+[section:shutdown_type socket_base::shutdown_type]
 
+[indexterm2 shutdown_type..socket_base] Different ways a socket may be shutdown.
 
+ enum shutdown_type
 
-[section:shutdown_service socket_acceptor_service::shutdown_service]
+[heading Values]
+[variablelist
+
+ [
+ [shutdown_receive]
+ [Shutdown the receive side of the socket. ]
+ ]
 
-Destroy all user-defined handler objects owned by the service.
+ [
+ [shutdown_send]
+ [Shutdown the send side of the socket. ]
+ ]
 
- void shutdown_service();
+ [
+ [shutdown_both]
+ [Shutdown both send and receive on the socket. ]
+ ]
+
+]
 
 
 
@@ -45527,12 +51104,11 @@
 
 
 
-[section:socket_acceptor_service socket_acceptor_service::socket_acceptor_service]
+[section:_socket_base socket_base::~socket_base]
 
-Construct a new socket acceptor service for the specified io_service.
+[indexterm2 ~socket_base..socket_base] Protected destructor to prevent deletion through this type.
 
- socket_acceptor_service(
- boost::asio::io_service & io_service);
+ ~socket_base();
 
 
 
@@ -45542,11 +51118,14 @@
 
 [endsect]
 
-[section:socket_base socket_base]
+[section:ssl__basic_context ssl::basic_context]
 
-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.
+SSL context.
 
- class socket_base
+ template<
+ typename ``[link boost_asio.reference.Service Service]``>
+ class basic_context :
+ public ssl::context_base
 
 
 [heading Types]
@@ -45555,182 +51134,217 @@
 
   [
 
- [[link boost_asio.reference.socket_base.broadcast [*broadcast]]]
- [Socket option to permit sending of broadcast messages. ]
+ [[link boost_asio.reference.ssl__basic_context.file_format [*file_format]]]
+ [File format types. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.socket_base.bytes_readable [*bytes_readable]]]
- [IO control command to get the amount of data that can be read without blocking. ]
+ [[link boost_asio.reference.ssl__basic_context.impl_type [*impl_type]]]
+ [The native implementation type of the locking dispatcher. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.socket_base.debug [*debug]]]
- [Socket option to enable socket-level debugging. ]
+ [[link boost_asio.reference.ssl__basic_context.method [*method]]]
+ [Different methods supported by a context. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.socket_base.do_not_route [*do_not_route]]]
- [Socket option to prevent routing, use local interfaces only. ]
+ [[link boost_asio.reference.ssl__basic_context.options [*options]]]
+ [Bitmask type for SSL options. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.socket_base.enable_connection_aborted [*enable_connection_aborted]]]
- [Socket option to report aborted connections on accept. ]
+ [[link boost_asio.reference.ssl__basic_context.password_purpose [*password_purpose]]]
+ [Purpose of PEM password. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.socket_base.keep_alive [*keep_alive]]]
- [Socket option to send keep-alives. ]
+ [[link boost_asio.reference.ssl__basic_context.service_type [*service_type]]]
+ [The type of the service that will be used to provide context operations. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.socket_base.linger [*linger]]]
- [Socket option to specify whether the socket lingers on close if unsent data is present. ]
+ [[link boost_asio.reference.ssl__basic_context.verify_mode [*verify_mode]]]
+ [Bitmask type for peer verification. ]
   
   ]
 
- [
+]
 
- [[link boost_asio.reference.socket_base.message_flags [*message_flags]]]
- [Bitmask type for flags that can be passed to send and receive operations. ]
-
- ]
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
   [
-
- [[link boost_asio.reference.socket_base.non_blocking_io [*non_blocking_io]]]
- [IO control command to set the blocking mode of the socket. ]
-
+ [[link boost_asio.reference.ssl__basic_context.add_verify_path [*add_verify_path]]]
+ [Add a directory containing certificate authority files to be used for performing verification. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.socket_base.receive_buffer_size [*receive_buffer_size]]]
- [Socket option for the receive buffer size of a socket. ]
+ [[link boost_asio.reference.ssl__basic_context.basic_context [*basic_context]]]
+ [Constructor. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ssl__basic_context.impl [*impl]]]
+ [Get the underlying implementation in the native type. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.socket_base.receive_low_watermark [*receive_low_watermark]]]
- [Socket option for the receive low watermark. ]
+ [[link boost_asio.reference.ssl__basic_context.load_verify_file [*load_verify_file]]]
+ [Load a certification authority file for performing verification. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ssl__basic_context.set_options [*set_options]]]
+ [Set options on the context. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.socket_base.reuse_address [*reuse_address]]]
- [Socket option to allow the socket to be bound to an address that is already in use. ]
+ [[link boost_asio.reference.ssl__basic_context.set_password_callback [*set_password_callback]]]
+ [Set the password callback. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ssl__basic_context.set_verify_mode [*set_verify_mode]]]
+ [Set the peer verification mode. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.socket_base.send_buffer_size [*send_buffer_size]]]
- [Socket option for the send buffer size of a socket. ]
+ [[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file [*use_certificate_chain_file]]]
+ [Use a certificate chain from a file. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ssl__basic_context.use_certificate_file [*use_certificate_file]]]
+ [Use a certificate from a file. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.socket_base.send_low_watermark [*send_low_watermark]]]
- [Socket option for the send low watermark. ]
+ [[link boost_asio.reference.ssl__basic_context.use_private_key_file [*use_private_key_file]]]
+ [Use a private key from a file. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file [*use_rsa_private_key_file]]]
+ [Use an RSA private key from a file. ]
   ]
-
+
   [
-
- [[link boost_asio.reference.socket_base.shutdown_type [*shutdown_type]]]
- [Different ways a socket may be shutdown. ]
+ [[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file [*use_tmp_dh_file]]]
+ [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
+ ]
   
+ [
+ [[link boost_asio.reference.ssl__basic_context._basic_context [*~basic_context]]]
+ [Destructor. ]
   ]
-
+
 ]
 
-[heading Protected Member Functions]
+[heading Data Members]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.socket_base._socket_base [*~socket_base]]]
- [Protected destructor to prevent deletion through this type. ]
+ [[link boost_asio.reference.ssl__basic_context.default_workarounds [*default_workarounds]]]
+ [Implement various bug workarounds. ]
   ]
-
-]
 
-[heading Data Members]
-[table
- [[Name][Description]]
+ [
+ [[link boost_asio.reference.ssl__basic_context.no_sslv2 [*no_sslv2]]]
+ [Disable SSL v2. ]
+ ]
 
   [
- [[link boost_asio.reference.socket_base.max_connections [*max_connections]]]
- [The maximum length of the queue of pending incoming connections. ]
+ [[link boost_asio.reference.ssl__basic_context.no_sslv3 [*no_sslv3]]]
+ [Disable SSL v3. ]
   ]
 
   [
- [[link boost_asio.reference.socket_base.message_do_not_route [*message_do_not_route]]]
- [Specify that the data should not be subject to routing. ]
+ [[link boost_asio.reference.ssl__basic_context.no_tlsv1 [*no_tlsv1]]]
+ [Disable TLS v1. ]
   ]
 
   [
- [[link boost_asio.reference.socket_base.message_out_of_band [*message_out_of_band]]]
- [Process out-of-band data. ]
+ [[link boost_asio.reference.ssl__basic_context.single_dh_use [*single_dh_use]]]
+ [Always create a new key when using tmp_dh parameters. ]
   ]
 
   [
- [[link boost_asio.reference.socket_base.message_peek [*message_peek]]]
- [Peek at incoming data without removing it from the input queue. ]
+ [[link boost_asio.reference.ssl__basic_context.verify_client_once [*verify_client_once]]]
+ [Do not request client certificate on renegotiation. Ignored unless verify_peer is set. ]
   ]
 
-]
+ [
+ [[link boost_asio.reference.ssl__basic_context.verify_fail_if_no_peer_cert [*verify_fail_if_no_peer_cert]]]
+ [Fail verification if the peer has no certificate. Ignored unless verify_peer is set. ]
+ ]
 
+ [
+ [[link boost_asio.reference.ssl__basic_context.verify_none [*verify_none]]]
+ [No verification. ]
+ ]
 
-[section:broadcast socket_base::broadcast]
+ [
+ [[link boost_asio.reference.ssl__basic_context.verify_peer [*verify_peer]]]
+ [Verify the peer. ]
+ ]
 
-Socket option to permit sending of broadcast messages.
+]
 
- typedef implementation_defined broadcast;
+[section:add_verify_path ssl::basic_context::add_verify_path]
 
+[indexterm2 add_verify_path..ssl::basic_context] Add a directory containing certificate authority files to be used for performing verification.
 
+ void ``[link boost_asio.reference.ssl__basic_context.add_verify_path.overload1 add_verify_path]``(
+ const std::string & path);
 
-Implements the SOL\_SOCKET/SO\_BROADCAST socket option.
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.add_verify_path.overload2 add_verify_path]``(
+ const std::string & path,
+ boost::system::error_code & ec);
 
 
-[heading Examples]
-
-Setting the option:
+[section:overload1 ssl::basic_context::add_verify_path (1 of 2 overloads)]
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::broadcast option(true);
- socket.set_option(option);
+Add a directory containing certificate authority files to be used for performing verification.
 
+ void add_verify_path(
+ const std::string & path);
 
 
+This function is used to specify the name of a directory containing certification authority certificates. Each file in the directory must contain a single certificate. The files must be named using the subject name's hash and an extension of ".0".
 
-Getting the current option value:
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::broadcast option;
- socket.get_option(option);
- bool is_set = option.value();
+[heading Parameters]
+
+
+[variablelist
+
+[[path][The name of a directory containing the certificates.]]
+
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -45738,29 +51352,44 @@
 
 
 
-[section:bytes_readable socket_base::bytes_readable]
+[section:overload2 ssl::basic_context::add_verify_path (2 of 2 overloads)]
 
-IO control command to get the amount of data that can be read without blocking.
+Add a directory containing certificate authority files to be used for performing verification.
 
- typedef implementation_defined bytes_readable;
+ boost::system::error_code add_verify_path(
+ const std::string & path,
+ boost::system::error_code & ec);
 
 
+This function is used to specify the name of a directory containing certification authority certificates. Each file in the directory must contain a single certificate. The files must be named using the subject name's hash and an extension of ".0".
 
-Implements the FIONREAD IO control command.
 
+[heading Parameters]
+
 
-[heading Example]
+[variablelist
   
+[[path][The name of a directory containing the certificates.]]
+
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
 
 
- 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();
 
+[endsect]
+
+
+[endsect]
 
 
+[section:basic_context ssl::basic_context::basic_context]
+
+[indexterm2 basic_context..ssl::basic_context] Constructor.
+
+ basic_context(
+ boost::asio::io_service & io_service,
+ method m);
 
 
 
@@ -45768,39 +51397,44 @@
 
 
 
-[section:debug socket_base::debug]
+[section:default_workarounds ssl::basic_context::default_workarounds]
 
-Socket option to enable socket-level debugging.
 
- typedef implementation_defined debug;
+['Inherited from ssl::context_base.]
 
+[indexterm2 default_workarounds..ssl::basic_context] Implement various bug workarounds.
 
+ static const int default_workarounds = implementation_defined;
 
-Implements the SOL\_SOCKET/SO\_DEBUG socket option.
 
 
-[heading Examples]
-
-Setting the option:
+[endsect]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::debug option(true);
- socket.set_option(option);
 
 
+[section:file_format ssl::basic_context::file_format]
 
 
-Getting the current option value:
+['Inherited from ssl::context_base.]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::debug option;
- socket.get_option(option);
- bool is_set = option.value();
+[indexterm2 file_format..ssl::basic_context] File format types.
 
+ enum file_format
+
+[heading Values]
+[variablelist
+
+ [
+ [asn1]
+ [ASN.1 file. ]
+ ]
 
+ [
+ [pem]
+ [PEM file. ]
+ ]
 
+]
 
 
 
@@ -45808,119 +51442,183 @@
 
 
 
-[section:do_not_route socket_base::do_not_route]
+[section:impl ssl::basic_context::impl]
 
-Socket option to prevent routing, use local interfaces only.
+[indexterm2 impl..ssl::basic_context] Get the underlying implementation in the native type.
 
- typedef implementation_defined do_not_route;
+ impl_type impl();
 
 
+This function may be used to obtain the underlying implementation of the context. This is intended to allow access to context functionality that is not otherwise provided.
 
-Implements the SOL\_SOCKET/SO\_DONTROUTE socket option.
 
+[endsect]
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::udp::socket socket(io_service);
- ...
- boost::asio::socket_base::do_not_route option(true);
- socket.set_option(option);
 
+[section:impl_type ssl::basic_context::impl_type]
 
+[indexterm2 impl_type..ssl::basic_context] The native implementation type of the locking dispatcher.
 
+ typedef service_type::impl_type impl_type;
 
-Getting the current option value:
 
- 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();
 
 
+[endsect]
 
 
+[section:load_verify_file ssl::basic_context::load_verify_file]
 
+[indexterm2 load_verify_file..ssl::basic_context] Load a certification authority file for performing verification.
 
-[endsect]
+ void ``[link boost_asio.reference.ssl__basic_context.load_verify_file.overload1 load_verify_file]``(
+ const std::string & filename);
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.load_verify_file.overload2 load_verify_file]``(
+ const std::string & filename,
+ boost::system::error_code & ec);
 
 
-[section:enable_connection_aborted socket_base::enable_connection_aborted]
+[section:overload1 ssl::basic_context::load_verify_file (1 of 2 overloads)]
 
-Socket option to report aborted connections on accept.
+Load a certification authority file for performing verification.
 
- typedef implementation_defined enable_connection_aborted;
+ void load_verify_file(
+ const std::string & filename);
 
 
+This function is used to load one or more trusted certification authorities from a file.
 
-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.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
+[[filename][The name of a file containing certification authority certificates in PEM format.]]
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::enable_connection_aborted option(true);
- acceptor.set_option(option);
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
-Getting the current option value:
 
- 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();
 
+[endsect]
+
+
+
+[section:overload2 ssl::basic_context::load_verify_file (2 of 2 overloads)]
+
+Load a certification authority file for performing verification.
+
+ boost::system::error_code load_verify_file(
+ const std::string & filename,
+ boost::system::error_code & ec);
+
+
+This function is used to load the certificates for one or more trusted certification authorities from a file.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[filename][The name of a file containing certification authority certificates in PEM format.]]
 
+[[ec][Set to indicate what error occurred, if any. ]]
 
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:keep_alive socket_base::keep_alive]
 
-Socket option to send keep-alives.
+[section:method ssl::basic_context::method]
 
- typedef implementation_defined keep_alive;
 
+['Inherited from ssl::context_base.]
 
+[indexterm2 method..ssl::basic_context] Different methods supported by a context.
 
-Implements the SOL\_SOCKET/SO\_KEEPALIVE socket option.
+ enum method
 
+[heading Values]
+[variablelist
 
-[heading Examples]
-
-Setting the option:
+ [
+ [sslv2]
+ [Generic SSL version 2. ]
+ ]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::keep_alive option(true);
- socket.set_option(option);
+ [
+ [sslv2_client]
+ [SSL version 2 client. ]
+ ]
 
+ [
+ [sslv2_server]
+ [SSL version 2 server. ]
+ ]
 
+ [
+ [sslv3]
+ [Generic SSL version 3. ]
+ ]
 
+ [
+ [sslv3_client]
+ [SSL version 3 client. ]
+ ]
 
-Getting the current option value:
+ [
+ [sslv3_server]
+ [SSL version 3 server. ]
+ ]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::keep_alive option;
- socket.get_option(option);
- bool is_set = option.value();
+ [
+ [tlsv1]
+ [Generic TLS version 1. ]
+ ]
+
+ [
+ [tlsv1_client]
+ [TLS version 1 client. ]
+ ]
+
+ [
+ [tlsv1_server]
+ [TLS version 1 server. ]
+ ]
+
+ [
+ [sslv23]
+ [Generic SSL/TLS. ]
+ ]
 
+ [
+ [sslv23_client]
+ [SSL/TLS client. ]
+ ]
 
+ [
+ [sslv23_server]
+ [SSL/TLS server. ]
+ ]
 
+]
 
 
 
@@ -45928,40 +51626,44 @@
 
 
 
-[section:linger socket_base::linger]
+[section:no_sslv2 ssl::basic_context::no_sslv2]
 
-Socket option to specify whether the socket lingers on close if unsent data is present.
 
- typedef implementation_defined linger;
+['Inherited from ssl::context_base.]
 
+[indexterm2 no_sslv2..ssl::basic_context] Disable SSL v2.
 
+ static const int no_sslv2 = implementation_defined;
 
-Implements the SOL\_SOCKET/SO\_LINGER socket option.
 
 
-[heading Examples]
-
-Setting the option:
+[endsect]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::linger option(true, 30);
- socket.set_option(option);
 
 
+[section:no_sslv3 ssl::basic_context::no_sslv3]
 
 
-Getting the current option value:
+['Inherited from ssl::context_base.]
+
+[indexterm2 no_sslv3..ssl::basic_context] Disable SSL v3.
+
+ static const int no_sslv3 = implementation_defined;
+
 
- 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();
 
+[endsect]
+
+
+
+[section:no_tlsv1 ssl::basic_context::no_tlsv1]
+
+
+['Inherited from ssl::context_base.]
 
+[indexterm2 no_tlsv1..ssl::basic_context] Disable TLS v1.
 
+ static const int no_tlsv1 = implementation_defined;
 
 
 
@@ -45969,11 +51671,15 @@
 
 
 
-[section:max_connections socket_base::max_connections]
+[section:options ssl::basic_context::options]
 
-The maximum length of the queue of pending incoming connections.
 
- static const int max_connections = implementation_defined;
+['Inherited from ssl::context_base.]
+
+[indexterm2 options..ssl::basic_context] Bitmask type for SSL options.
+
+ typedef int options;
+
 
 
 
@@ -45981,11 +51687,29 @@
 
 
 
-[section:message_do_not_route socket_base::message_do_not_route]
+[section:password_purpose ssl::basic_context::password_purpose]
 
-Specify that the data should not be subject to routing.
 
- static const int message_do_not_route = implementation_defined;
+['Inherited from ssl::context_base.]
+
+[indexterm2 password_purpose..ssl::basic_context] Purpose of PEM password.
+
+ enum password_purpose
+
+[heading Values]
+[variablelist
+
+ [
+ [for_reading]
+ [The password is needed for reading/decryption. ]
+ ]
+
+ [
+ [for_writing]
+ [The password is needed for writing/encryption. ]
+ ]
+
+]
 
 
 
@@ -45993,36 +51717,58 @@
 
 
 
-[section:message_flags socket_base::message_flags]
+[section:service_type ssl::basic_context::service_type]
+
+[indexterm2 service_type..ssl::basic_context] The type of the service that will be used to provide context operations.
+
+ typedef Service service_type;
 
-Bitmask type for flags that can be passed to send and receive operations.
 
- typedef int message_flags;
 
 
+[endsect]
+
+
+[section:set_options ssl::basic_context::set_options]
+
+[indexterm2 set_options..ssl::basic_context] Set options on the context.
 
+ void ``[link boost_asio.reference.ssl__basic_context.set_options.overload1 set_options]``(
+ options o);
 
-[endsect]
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_options.overload2 set_options]``(
+ options o,
+ boost::system::error_code & ec);
 
 
+[section:overload1 ssl::basic_context::set_options (1 of 2 overloads)]
 
-[section:message_out_of_band socket_base::message_out_of_band]
+Set options on the context.
 
-Process out-of-band data.
+ void set_options(
+ options o);
 
- static const int message_out_of_band = implementation_defined;
 
+This function may be used to configure the SSL options used by the context.
 
 
-[endsect]
+[heading Parameters]
+
 
+[variablelist
+
+[[o][A bitmask of options. The available option values are defined in the context\_base class. The options are bitwise-ored with any existing value for the options.]]
 
+]
 
-[section:message_peek socket_base::message_peek]
+[heading Exceptions]
+
 
-Peek at incoming data without removing it from the input queue.
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
- static const int message_peek = implementation_defined;
+]
 
 
 
@@ -46030,68 +51776,89 @@
 
 
 
-[section:non_blocking_io socket_base::non_blocking_io]
+[section:overload2 ssl::basic_context::set_options (2 of 2 overloads)]
 
-IO control command to set the blocking mode of the socket.
+Set options on the context.
 
- typedef implementation_defined non_blocking_io;
+ boost::system::error_code set_options(
+ options o,
+ boost::system::error_code & ec);
 
 
+This function may be used to configure the SSL options used by the context.
 
-Implements the FIONBIO IO control command.
 
+[heading Parameters]
+
 
-[heading Example]
+[variablelist
   
+[[o][A bitmask of options. The available option values are defined in the context\_base class. The options are bitwise-ored with any existing value for the options.]]
 
+[[ec][Set to indicate what error occurred, if any. ]]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::non_blocking_io command(true);
- socket.io_control(command);
-
-
-
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:receive_buffer_size socket_base::receive_buffer_size]
+[section:set_password_callback ssl::basic_context::set_password_callback]
 
-Socket option for the receive buffer size of a socket.
+[indexterm2 set_password_callback..ssl::basic_context] Set the password callback.
 
- typedef implementation_defined receive_buffer_size;
+ template<
+ typename PasswordCallback>
+ void ``[link boost_asio.reference.ssl__basic_context.set_password_callback.overload1 set_password_callback]``(
+ PasswordCallback callback);
 
+ template<
+ typename PasswordCallback>
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_password_callback.overload2 set_password_callback]``(
+ PasswordCallback callback,
+ boost::system::error_code & ec);
 
 
-Implements the SOL\_SOCKET/SO\_RCVBUF socket option.
+[section:overload1 ssl::basic_context::set_password_callback (1 of 2 overloads)]
 
+Set the password callback.
 
-[heading Examples]
-
-Setting the option:
+ template<
+ typename PasswordCallback>
+ void set_password_callback(
+ PasswordCallback callback);
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_buffer_size option(8192);
- socket.set_option(option);
 
+This function is used to specify a callback function to obtain password information about an encrypted key in PEM format.
 
 
+[heading Parameters]
+
 
-Getting the current option value:
+[variablelist
+
+[[callback][The function object to be used for obtaining the password. The function signature of the handler must be:
+``
+ std::string password_callback(
+ std::size_t max_length, // The maximum size for a password.
+ password_purpose purpose // Whether password is for reading or writing.
+ );
+``
+The return value of the callback is a string containing the password.]]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_buffer_size option;
- socket.get_option(option);
- int size = option.value();
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -46099,189 +51866,204 @@
 
 
 
-[section:receive_low_watermark socket_base::receive_low_watermark]
+[section:overload2 ssl::basic_context::set_password_callback (2 of 2 overloads)]
 
-Socket option for the receive low watermark.
+Set the password callback.
 
- typedef implementation_defined receive_low_watermark;
+ template<
+ typename PasswordCallback>
+ boost::system::error_code set_password_callback(
+ PasswordCallback callback,
+ boost::system::error_code & ec);
 
 
+This function is used to specify a callback function to obtain password information about an encrypted key in PEM format.
 
-Implements the SOL\_SOCKET/SO\_RCVLOWAT socket option.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
+[[callback][The function object to be used for obtaining the password. The function signature of the handler must be:
+``
+ std::string password_callback(
+ std::size_t max_length, // The maximum size for a password.
+ password_purpose purpose // Whether password is for reading or writing.
+ );
+``
+The return value of the callback is a string containing the password.]]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_low_watermark option(1024);
- socket.set_option(option);
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
 
 
 
+[endsect]
 
-Getting the current option value:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::receive_low_watermark option;
- socket.get_option(option);
- int size = option.value();
+[endsect]
 
+[section:set_verify_mode ssl::basic_context::set_verify_mode]
 
+[indexterm2 set_verify_mode..ssl::basic_context] Set the peer verification mode.
 
+ void ``[link boost_asio.reference.ssl__basic_context.set_verify_mode.overload1 set_verify_mode]``(
+ verify_mode v);
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_verify_mode.overload2 set_verify_mode]``(
+ verify_mode v,
+ boost::system::error_code & ec);
 
 
-[endsect]
+[section:overload1 ssl::basic_context::set_verify_mode (1 of 2 overloads)]
 
+Set the peer verification mode.
 
+ void set_verify_mode(
+ verify_mode v);
 
-[section:reuse_address socket_base::reuse_address]
 
-Socket option to allow the socket to be bound to an address that is already in use.
+This function may be used to configure the peer verification mode used by the context.
 
- typedef implementation_defined reuse_address;
 
+[heading Parameters]
+
 
+[variablelist
+
+[[v][A bitmask of peer verification modes. The available verify\_mode values are defined in the context\_base class.]]
 
-Implements the SOL\_SOCKET/SO\_REUSEADDR socket option.
+]
 
+[heading Exceptions]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
+[[boost::system::system_error][Thrown on failure. ]]
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::reuse_address option(true);
- acceptor.set_option(option);
+]
 
 
 
+[endsect]
 
-Getting the current option value:
 
- boost::asio::ip::tcp::acceptor acceptor(io_service);
- ...
- boost::asio::socket_base::reuse_address option;
- acceptor.get_option(option);
- bool is_set = option.value();
 
+[section:overload2 ssl::basic_context::set_verify_mode (2 of 2 overloads)]
 
+Set the peer verification mode.
 
+ boost::system::error_code set_verify_mode(
+ verify_mode v,
+ boost::system::error_code & ec);
 
 
+This function may be used to configure the peer verification mode used by the context.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[v][A bitmask of peer verification modes. The available verify\_mode values are defined in the context\_base class.]]
 
-[section:send_buffer_size socket_base::send_buffer_size]
+[[ec][Set to indicate what error occurred, if any. ]]
 
-Socket option for the send buffer size of a socket.
+]
 
- typedef implementation_defined send_buffer_size;
 
 
+[endsect]
 
-Implements the SOL\_SOCKET/SO\_SNDBUF socket option.
 
+[endsect]
 
-[heading Examples]
-
-Setting the option:
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_buffer_size option(8192);
- socket.set_option(option);
+[section:single_dh_use ssl::basic_context::single_dh_use]
 
 
+['Inherited from ssl::context_base.]
 
+[indexterm2 single_dh_use..ssl::basic_context] Always create a new key when using tmp_dh parameters.
 
-Getting the current option value:
+ static const int single_dh_use = implementation_defined;
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_buffer_size option;
- socket.get_option(option);
- int size = option.value();
 
 
+[endsect]
 
 
+[section:use_certificate_chain_file ssl::basic_context::use_certificate_chain_file]
 
+[indexterm2 use_certificate_chain_file..ssl::basic_context] Use a certificate chain from a file.
 
-[endsect]
+ void ``[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file.overload1 use_certificate_chain_file]``(
+ const std::string & filename);
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file.overload2 use_certificate_chain_file]``(
+ const std::string & filename,
+ boost::system::error_code & ec);
 
 
-[section:send_low_watermark socket_base::send_low_watermark]
+[section:overload1 ssl::basic_context::use_certificate_chain_file (1 of 2 overloads)]
 
-Socket option for the send low watermark.
+Use a certificate chain from a file.
 
- typedef implementation_defined send_low_watermark;
+ void use_certificate_chain_file(
+ const std::string & filename);
 
 
+This function is used to load a certificate chain into the context from a file.
 
-Implements the SOL\_SOCKET/SO\_SNDLOWAT socket option.
 
+[heading Parameters]
+
 
-[heading Examples]
+[variablelist
   
-Setting the option:
-
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_low_watermark option(1024);
- socket.set_option(option);
+[[filename][The name of the file containing the certificate. The file must use the PEM format.]]
 
+]
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
-Getting the current option value:
+]
 
- boost::asio::ip::tcp::socket socket(io_service);
- ...
- boost::asio::socket_base::send_low_watermark option;
- socket.get_option(option);
- int size = option.value();
 
 
+[endsect]
 
 
 
+[section:overload2 ssl::basic_context::use_certificate_chain_file (2 of 2 overloads)]
 
-[endsect]
+Use a certificate chain from a file.
 
+ boost::system::error_code use_certificate_chain_file(
+ const std::string & filename,
+ boost::system::error_code & ec);
 
 
-[section:shutdown_type socket_base::shutdown_type]
+This function is used to load a certificate chain into the context from a file.
 
-Different ways a socket may be shutdown.
 
- enum shutdown_type
+[heading Parameters]
+
 
-[heading Values]
 [variablelist
+
+[[filename][The name of the file containing the certificate. The file must use the PEM format.]]
 
- [
- [shutdown_receive]
- [Shutdown the receive side of the socket. ]
- ]
-
- [
- [shutdown_send]
- [Shutdown the send side of the socket. ]
- ]
-
- [
- [shutdown_both]
- [Shutdown both send and receive on the socket. ]
- ]
+[[ec][Set to indicate what error occurred, if any. ]]
 
 ]
 
@@ -46290,229 +52072,117 @@
 [endsect]
 
 
+[endsect]
 
-[section:_socket_base socket_base::~socket_base]
-
-Protected destructor to prevent deletion through this type.
-
- ~socket_base();
-
+[section:use_certificate_file ssl::basic_context::use_certificate_file]
 
+[indexterm2 use_certificate_file..ssl::basic_context] Use a certificate from a file.
 
-[endsect]
+ void ``[link boost_asio.reference.ssl__basic_context.use_certificate_file.overload1 use_certificate_file]``(
+ const std::string & filename,
+ file_format format);
 
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_certificate_file.overload2 use_certificate_file]``(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
 
 
-[endsect]
+[section:overload1 ssl::basic_context::use_certificate_file (1 of 2 overloads)]
 
-[section:ssl__basic_context ssl::basic_context]
+Use a certificate from a file.
 
-SSL context.
+ void use_certificate_file(
+ const std::string & filename,
+ file_format format);
 
- template<
- typename ``[link boost_asio.reference.Service Service]``>
- class basic_context :
- public ssl::context_base
 
+This function is used to load a certificate into the context from a file.
 
-[heading Types]
-[table
- [[Name][Description]]
 
- [
+[heading Parameters]
+
 
- [[link boost_asio.reference.ssl__basic_context.file_format [*file_format]]]
- [File format types. ]
+[variablelist
   
- ]
+[[filename][The name of the file containing the certificate.]]
 
- [
+[[format][The file format (ASN.1 or PEM).]]
 
- [[link boost_asio.reference.ssl__basic_context.impl_type [*impl_type]]]
- [The native implementation type of the locking dispatcher. ]
-
- ]
+]
 
- [
+[heading Exceptions]
+
 
- [[link boost_asio.reference.ssl__basic_context.method [*method]]]
- [Different methods supported by a context. ]
+[variablelist
   
- ]
+[[boost::system::system_error][Thrown on failure. ]]
 
- [
+]
 
- [[link boost_asio.reference.ssl__basic_context.options [*options]]]
- [Bitmask type for SSL options. ]
-
- ]
 
- [
 
- [[link boost_asio.reference.ssl__basic_context.password_purpose [*password_purpose]]]
- [Purpose of PEM password. ]
-
- ]
+[endsect]
 
- [
 
- [[link boost_asio.reference.ssl__basic_context.service_type [*service_type]]]
- [The type of the service that will be used to provide context operations. ]
-
- ]
 
- [
+[section:overload2 ssl::basic_context::use_certificate_file (2 of 2 overloads)]
 
- [[link boost_asio.reference.ssl__basic_context.verify_mode [*verify_mode]]]
- [Bitmask type for peer verification. ]
-
- ]
+Use a certificate from a file.
 
-]
+ boost::system::error_code use_certificate_file(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ssl__basic_context.add_verify_path [*add_verify_path]]]
- [Add a directory containing certificate authority files to be used for performing verification. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.basic_context [*basic_context]]]
- [Constructor. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.impl [*impl]]]
- [Get the underlying implementation in the native type. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.load_verify_file [*load_verify_file]]]
- [Load a certification authority file for performing verification. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.set_options [*set_options]]]
- [Set options on the context. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.set_password_callback [*set_password_callback]]]
- [Set the password callback. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.set_verify_mode [*set_verify_mode]]]
- [Set the peer verification mode. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file [*use_certificate_chain_file]]]
- [Use a certificate chain from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.use_certificate_file [*use_certificate_file]]]
- [Use a certificate from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.use_private_key_file [*use_private_key_file]]]
- [Use a private key from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file [*use_rsa_private_key_file]]]
- [Use an RSA private key from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file [*use_tmp_dh_file]]]
- [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__basic_context._basic_context [*~basic_context]]]
- [Destructor. ]
- ]
-
-]
+This function is used to load a certificate into the context from a file.
 
-[heading Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ssl__basic_context.default_workarounds [*default_workarounds]]]
- [Implement various bug workarounds. ]
- ]
+[heading Parameters]
+
 
- [
- [[link boost_asio.reference.ssl__basic_context.no_sslv2 [*no_sslv2]]]
- [Disable SSL v2. ]
- ]
+[variablelist
+
+[[filename][The name of the file containing the certificate.]]
 
- [
- [[link boost_asio.reference.ssl__basic_context.no_sslv3 [*no_sslv3]]]
- [Disable SSL v3. ]
- ]
+[[format][The file format (ASN.1 or PEM).]]
 
- [
- [[link boost_asio.reference.ssl__basic_context.no_tlsv1 [*no_tlsv1]]]
- [Disable TLS v1. ]
- ]
+[[ec][Set to indicate what error occurred, if any. ]]
 
- [
- [[link boost_asio.reference.ssl__basic_context.single_dh_use [*single_dh_use]]]
- [Always create a new key when using tmp_dh parameters. ]
- ]
+]
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_client_once [*verify_client_once]]]
- [Do not request client certificate on renegotiation. Ignored unless verify_peer is set. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_fail_if_no_peer_cert [*verify_fail_if_no_peer_cert]]]
- [Fail verification if the peer has no certificate. Ignored unless verify_peer is set. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_none [*verify_none]]]
- [No verification. ]
- ]
+[endsect]
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_peer [*verify_peer]]]
- [Verify the peer. ]
- ]
 
-]
+[endsect]
 
-[section:add_verify_path ssl::basic_context::add_verify_path]
+[section:use_private_key_file ssl::basic_context::use_private_key_file]
 
-Add a directory containing certificate authority files to be used for performing verification.
+[indexterm2 use_private_key_file..ssl::basic_context] Use a private key from a file.
 
- void ``[link boost_asio.reference.ssl__basic_context.add_verify_path.overload1 add_verify_path]``(
- const std::string & path);
+ void ``[link boost_asio.reference.ssl__basic_context.use_private_key_file.overload1 use_private_key_file]``(
+ const std::string & filename,
+ file_format format);
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.add_verify_path.overload2 add_verify_path]``(
- const std::string & path,
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_private_key_file.overload2 use_private_key_file]``(
+ const std::string & filename,
+ file_format format,
       boost::system::error_code & ec);
 
 
-[section:overload1 ssl::basic_context::add_verify_path (1 of 2 overloads)]
+[section:overload1 ssl::basic_context::use_private_key_file (1 of 2 overloads)]
 
-Add a directory containing certificate authority files to be used for performing verification.
+Use a private key from a file.
 
- void add_verify_path(
- const std::string & path);
+ void use_private_key_file(
+ const std::string & filename,
+ file_format format);
 
 
-This function is used to specify the name of a directory containing certification authority certificates. Each file in the directory must contain a single certificate. The files must be named using the subject name's hash and an extension of ".0".
+This function is used to load a private key into the context from a file.
 
 
 [heading Parameters]
@@ -46520,7 +52190,9 @@
 
 [variablelist
   
-[[path][The name of a directory containing the certificates.]]
+[[filename][The name of the file containing the private key.]]
+
+[[format][The file format (ASN.1 or PEM).]]
 
 ]
 
@@ -46539,16 +52211,17 @@
 
 
 
-[section:overload2 ssl::basic_context::add_verify_path (2 of 2 overloads)]
+[section:overload2 ssl::basic_context::use_private_key_file (2 of 2 overloads)]
 
-Add a directory containing certificate authority files to be used for performing verification.
+Use a private key from a file.
 
- boost::system::error_code add_verify_path(
- const std::string & path,
+ boost::system::error_code use_private_key_file(
+ const std::string & filename,
+ file_format format,
       boost::system::error_code & ec);
 
 
-This function is used to specify the name of a directory containing certification authority certificates. Each file in the directory must contain a single certificate. The files must be named using the subject name's hash and an extension of ".0".
+This function is used to load a private key into the context from a file.
 
 
 [heading Parameters]
@@ -46556,7 +52229,9 @@
 
 [variablelist
   
-[[path][The name of a directory containing the certificates.]]
+[[filename][The name of the file containing the private key.]]
+
+[[format][The file format (ASN.1 or PEM).]]
 
 [[ec][Set to indicate what error occurred, if any. ]]
 
@@ -46569,57 +52244,49 @@
 
 [endsect]
 
+[section:use_rsa_private_key_file ssl::basic_context::use_rsa_private_key_file]
 
-[section:basic_context ssl::basic_context::basic_context]
-
-Constructor.
-
- basic_context(
- boost::asio::io_service & io_service,
- method m);
-
-
-
-[endsect]
-
-
-
-[section:default_workarounds ssl::basic_context::default_workarounds]
+[indexterm2 use_rsa_private_key_file..ssl::basic_context] Use an RSA private key from a file.
 
+ void ``[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file.overload1 use_rsa_private_key_file]``(
+ const std::string & filename,
+ file_format format);
 
-['Inherited from ssl::context_base.]
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file.overload2 use_rsa_private_key_file]``(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
 
-Implement various bug workarounds.
 
- static const int default_workarounds = implementation_defined;
+[section:overload1 ssl::basic_context::use_rsa_private_key_file (1 of 2 overloads)]
 
+Use an RSA private key from a file.
 
+ void use_rsa_private_key_file(
+ const std::string & filename,
+ file_format format);
 
-[endsect]
 
+This function is used to load an RSA private key into the context from a file.
 
 
-[section:file_format ssl::basic_context::file_format]
+[heading Parameters]
+
 
+[variablelist
+
+[[filename][The name of the file containing the RSA private key.]]
 
-['Inherited from ssl::context_base.]
+[[format][The file format (ASN.1 or PEM).]]
 
-File format types.
+]
 
- enum file_format
+[heading Exceptions]
+
 
-[heading Values]
 [variablelist
-
- [
- [asn1]
- [ASN.1 file. ]
- ]
-
- [
- [pem]
- [PEM file. ]
- ]
+
+[[boost::system::system_error][Thrown on failure. ]]
 
 ]
 
@@ -46629,53 +52296,60 @@
 
 
 
-[section:impl ssl::basic_context::impl]
+[section:overload2 ssl::basic_context::use_rsa_private_key_file (2 of 2 overloads)]
 
-Get the underlying implementation in the native type.
+Use an RSA private key from a file.
 
- impl_type impl();
+ boost::system::error_code use_rsa_private_key_file(
+ const std::string & filename,
+ file_format format,
+ boost::system::error_code & ec);
 
 
-This function may be used to obtain the underlying implementation of the context. This is intended to allow access to context functionality that is not otherwise provided.
+This function is used to load an RSA private key into the context from a file.
 
 
-[endsect]
+[heading Parameters]
+
 
+[variablelist
+
+[[filename][The name of the file containing the RSA private key.]]
 
+[[format][The file format (ASN.1 or PEM).]]
 
-[section:impl_type ssl::basic_context::impl_type]
+[[ec][Set to indicate what error occurred, if any. ]]
 
-The native implementation type of the locking dispatcher.
+]
 
- typedef service_type::impl_type impl_type;
 
 
+[endsect]
 
 
 [endsect]
 
+[section:use_tmp_dh_file ssl::basic_context::use_tmp_dh_file]
 
-[section:load_verify_file ssl::basic_context::load_verify_file]
-
-Load a certification authority file for performing verification.
+[indexterm2 use_tmp_dh_file..ssl::basic_context] Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
- void ``[link boost_asio.reference.ssl__basic_context.load_verify_file.overload1 load_verify_file]``(
+ void ``[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file.overload1 use_tmp_dh_file]``(
       const std::string & filename);
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.load_verify_file.overload2 load_verify_file]``(
+ boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file.overload2 use_tmp_dh_file]``(
       const std::string & filename,
       boost::system::error_code & ec);
 
 
-[section:overload1 ssl::basic_context::load_verify_file (1 of 2 overloads)]
+[section:overload1 ssl::basic_context::use_tmp_dh_file (1 of 2 overloads)]
 
-Load a certification authority file for performing verification.
+Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
- void load_verify_file(
+ void use_tmp_dh_file(
       const std::string & filename);
 
 
-This function is used to load one or more trusted certification authorities from a file.
+This function is used to load Diffie-Hellman parameters into the context from a file.
 
 
 [heading Parameters]
@@ -46683,7 +52357,7 @@
 
 [variablelist
   
-[[filename][The name of a file containing certification authority certificates in PEM format.]]
+[[filename][The name of the file containing the Diffie-Hellman parameters. The file must use the PEM format.]]
 
 ]
 
@@ -46702,16 +52376,16 @@
 
 
 
-[section:overload2 ssl::basic_context::load_verify_file (2 of 2 overloads)]
+[section:overload2 ssl::basic_context::use_tmp_dh_file (2 of 2 overloads)]
 
-Load a certification authority file for performing verification.
+Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
- boost::system::error_code load_verify_file(
+ boost::system::error_code use_tmp_dh_file(
       const std::string & filename,
       boost::system::error_code & ec);
 
 
-This function is used to load the certificates for one or more trusted certification authorities from a file.
+This function is used to load Diffie-Hellman parameters into the context from a file.
 
 
 [heading Parameters]
@@ -46719,7 +52393,7 @@
 
 [variablelist
   
-[[filename][The name of a file containing certification authority certificates in PEM format.]]
+[[filename][The name of the file containing the Diffie-Hellman parameters. The file must use the PEM format.]]
 
 [[ec][Set to indicate what error occurred, if any. ]]
 
@@ -46733,79 +52407,29 @@
 [endsect]
 
 
-[section:method ssl::basic_context::method]
+[section:verify_client_once ssl::basic_context::verify_client_once]
 
 
 ['Inherited from ssl::context_base.]
 
-Different methods supported by a context.
-
- enum method
-
-[heading Values]
-[variablelist
-
- [
- [sslv2]
- [Generic SSL version 2. ]
- ]
-
- [
- [sslv2_client]
- [SSL version 2 client. ]
- ]
+[indexterm2 verify_client_once..ssl::basic_context] Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
 
- [
- [sslv2_server]
- [SSL version 2 server. ]
- ]
+ static const int verify_client_once = implementation_defined;
 
- [
- [sslv3]
- [Generic SSL version 3. ]
- ]
 
- [
- [sslv3_client]
- [SSL version 3 client. ]
- ]
 
- [
- [sslv3_server]
- [SSL version 3 server. ]
- ]
+[endsect]
 
- [
- [tlsv1]
- [Generic TLS version 1. ]
- ]
 
- [
- [tlsv1_client]
- [TLS version 1 client. ]
- ]
 
- [
- [tlsv1_server]
- [TLS version 1 server. ]
- ]
+[section:verify_fail_if_no_peer_cert ssl::basic_context::verify_fail_if_no_peer_cert]
 
- [
- [sslv23]
- [Generic SSL/TLS. ]
- ]
 
- [
- [sslv23_client]
- [SSL/TLS client. ]
- ]
+['Inherited from ssl::context_base.]
 
- [
- [sslv23_server]
- [SSL/TLS server. ]
- ]
+[indexterm2 verify_fail_if_no_peer_cert..ssl::basic_context] Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
 
-]
+ static const int verify_fail_if_no_peer_cert = implementation_defined;
 
 
 
@@ -46813,14 +52437,15 @@
 
 
 
-[section:no_sslv2 ssl::basic_context::no_sslv2]
+[section:verify_mode ssl::basic_context::verify_mode]
 
 
 ['Inherited from ssl::context_base.]
 
-Disable SSL v2.
+[indexterm2 verify_mode..ssl::basic_context] Bitmask type for peer verification.
+
+ typedef int verify_mode;
 
- static const int no_sslv2 = implementation_defined;
 
 
 
@@ -46828,14 +52453,14 @@
 
 
 
-[section:no_sslv3 ssl::basic_context::no_sslv3]
+[section:verify_none ssl::basic_context::verify_none]
 
 
 ['Inherited from ssl::context_base.]
 
-Disable SSL v3.
+[indexterm2 verify_none..ssl::basic_context] No verification.
 
- static const int no_sslv3 = implementation_defined;
+ static const int verify_none = implementation_defined;
 
 
 
@@ -46843,14 +52468,14 @@
 
 
 
-[section:no_tlsv1 ssl::basic_context::no_tlsv1]
+[section:verify_peer ssl::basic_context::verify_peer]
 
 
 ['Inherited from ssl::context_base.]
 
-Disable TLS v1.
+[indexterm2 verify_peer..ssl::basic_context] Verify the peer.
 
- static const int no_tlsv1 = implementation_defined;
+ static const int verify_peer = implementation_defined;
 
 
 
@@ -46858,102 +52483,202 @@
 
 
 
-[section:options ssl::basic_context::options]
+[section:_basic_context ssl::basic_context::~basic_context]
 
+[indexterm2 ~basic_context..ssl::basic_context] Destructor.
 
-['Inherited from ssl::context_base.]
+ ~basic_context();
 
-Bitmask type for SSL options.
 
- typedef int options;
 
+[endsect]
 
 
 
 [endsect]
 
 
+[section:ssl__context ssl::context]
 
-[section:password_purpose ssl::basic_context::password_purpose]
-
-
-['Inherited from ssl::context_base.]
+[indexterm1 ssl::context] Typedef for the typical usage of context.
 
-Purpose of PEM password.
+ typedef basic_context< context_service > context;
 
- enum password_purpose
 
-[heading Values]
-[variablelist
+[heading Types]
+[table
+ [[Name][Description]]
 
   [
- [for_reading]
- [The password is needed for reading/decryption. ]
- ]
 
- [
- [for_writing]
- [The password is needed for writing/encryption. ]
+ [[link boost_asio.reference.ssl__basic_context.file_format [*file_format]]]
+ [File format types. ]
+
   ]
 
-]
-
-
-
-[endsect]
-
-
+ [
 
-[section:service_type ssl::basic_context::service_type]
+ [[link boost_asio.reference.ssl__basic_context.impl_type [*impl_type]]]
+ [The native implementation type of the locking dispatcher. ]
+
+ ]
 
-The type of the service that will be used to provide context operations.
+ [
 
- typedef Service service_type;
+ [[link boost_asio.reference.ssl__basic_context.method [*method]]]
+ [Different methods supported by a context. ]
+
+ ]
 
+ [
 
+ [[link boost_asio.reference.ssl__basic_context.options [*options]]]
+ [Bitmask type for SSL options. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.ssl__basic_context.password_purpose [*password_purpose]]]
+ [Purpose of PEM password. ]
+
+ ]
 
+ [
 
-[section:set_options ssl::basic_context::set_options]
+ [[link boost_asio.reference.ssl__basic_context.service_type [*service_type]]]
+ [The type of the service that will be used to provide context operations. ]
+
+ ]
 
-Set options on the context.
+ [
 
- void ``[link boost_asio.reference.ssl__basic_context.set_options.overload1 set_options]``(
- options o);
+ [[link boost_asio.reference.ssl__basic_context.verify_mode [*verify_mode]]]
+ [Bitmask type for peer verification. ]
+
+ ]
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_options.overload2 set_options]``(
- options o,
- boost::system::error_code & ec);
+]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[section:overload1 ssl::basic_context::set_options (1 of 2 overloads)]
+ [
+ [[link boost_asio.reference.ssl__basic_context.add_verify_path [*add_verify_path]]]
+ [Add a directory containing certificate authority files to be used for performing verification. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.basic_context [*basic_context]]]
+ [Constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.impl [*impl]]]
+ [Get the underlying implementation in the native type. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.load_verify_file [*load_verify_file]]]
+ [Load a certification authority file for performing verification. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.set_options [*set_options]]]
+ [Set options on the context. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.set_password_callback [*set_password_callback]]]
+ [Set the password callback. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.set_verify_mode [*set_verify_mode]]]
+ [Set the peer verification mode. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file [*use_certificate_chain_file]]]
+ [Use a certificate chain from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.use_certificate_file [*use_certificate_file]]]
+ [Use a certificate from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.use_private_key_file [*use_private_key_file]]]
+ [Use a private key from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file [*use_rsa_private_key_file]]]
+ [Use an RSA private key from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file [*use_tmp_dh_file]]]
+ [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__basic_context._basic_context [*~basic_context]]]
+ [Destructor. ]
+ ]
+
+]
 
-Set options on the context.
+[heading Data Members]
+[table
+ [[Name][Description]]
 
- void set_options(
- options o);
+ [
+ [[link boost_asio.reference.ssl__basic_context.default_workarounds [*default_workarounds]]]
+ [Implement various bug workarounds. ]
+ ]
 
+ [
+ [[link boost_asio.reference.ssl__basic_context.no_sslv2 [*no_sslv2]]]
+ [Disable SSL v2. ]
+ ]
 
-This function may be used to configure the SSL options used by the context.
+ [
+ [[link boost_asio.reference.ssl__basic_context.no_sslv3 [*no_sslv3]]]
+ [Disable SSL v3. ]
+ ]
 
+ [
+ [[link boost_asio.reference.ssl__basic_context.no_tlsv1 [*no_tlsv1]]]
+ [Disable TLS v1. ]
+ ]
 
-[heading Parameters]
-
+ [
+ [[link boost_asio.reference.ssl__basic_context.single_dh_use [*single_dh_use]]]
+ [Always create a new key when using tmp_dh parameters. ]
+ ]
 
-[variablelist
-
-[[o][A bitmask of options. The available option values are defined in the context\_base class. The options are bitwise-ored with any existing value for the options.]]
+ [
+ [[link boost_asio.reference.ssl__basic_context.verify_client_once [*verify_client_once]]]
+ [Do not request client certificate on renegotiation. Ignored unless verify_peer is set. ]
+ ]
 
-]
+ [
+ [[link boost_asio.reference.ssl__basic_context.verify_fail_if_no_peer_cert [*verify_fail_if_no_peer_cert]]]
+ [Fail verification if the peer has no certificate. Ignored unless verify_peer is set. ]
+ ]
 
-[heading Exceptions]
-
+ [
+ [[link boost_asio.reference.ssl__basic_context.verify_none [*verify_none]]]
+ [No verification. ]
+ ]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+ [
+ [[link boost_asio.reference.ssl__basic_context.verify_peer [*verify_peer]]]
+ [Verify the peer. ]
+ ]
 
 ]
 
@@ -46962,128 +52687,147 @@
 [endsect]
 
 
+[section:ssl__context_base ssl::context_base]
 
-[section:overload2 ssl::basic_context::set_options (2 of 2 overloads)]
-
-Set options on the context.
-
- boost::system::error_code set_options(
- options o,
- boost::system::error_code & ec);
+The context_base class is used as a base for the basic_context class template so that we have a common place to define various enums.
 
+ class context_base
 
-This function may be used to configure the SSL options used by the context.
 
+[heading Types]
+[table
+ [[Name][Description]]
 
-[heading Parameters]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.ssl__context_base.file_format [*file_format]]]
+ [File format types. ]
   
-[[o][A bitmask of options. The available option values are defined in the context\_base class. The options are bitwise-ored with any existing value for the options.]]
-
-[[ec][Set to indicate what error occurred, if any. ]]
-
-]
-
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.ssl__context_base.method [*method]]]
+ [Different methods supported by a context. ]
+
+ ]
 
+ [
 
-[endsect]
+ [[link boost_asio.reference.ssl__context_base.options [*options]]]
+ [Bitmask type for SSL options. ]
+
+ ]
 
-[section:set_password_callback ssl::basic_context::set_password_callback]
+ [
 
-Set the password callback.
+ [[link boost_asio.reference.ssl__context_base.password_purpose [*password_purpose]]]
+ [Purpose of PEM password. ]
+
+ ]
 
- template<
- typename PasswordCallback>
- void ``[link boost_asio.reference.ssl__basic_context.set_password_callback.overload1 set_password_callback]``(
- PasswordCallback callback);
+ [
 
- template<
- typename PasswordCallback>
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_password_callback.overload2 set_password_callback]``(
- PasswordCallback callback,
- boost::system::error_code & ec);
+ [[link boost_asio.reference.ssl__context_base.verify_mode [*verify_mode]]]
+ [Bitmask type for peer verification. ]
+
+ ]
 
+]
 
-[section:overload1 ssl::basic_context::set_password_callback (1 of 2 overloads)]
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
-Set the password callback.
+ [
+ [[link boost_asio.reference.ssl__context_base._context_base [*~context_base]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
 
- template<
- typename PasswordCallback>
- void set_password_callback(
- PasswordCallback callback);
+[heading Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.ssl__context_base.default_workarounds [*default_workarounds]]]
+ [Implement various bug workarounds. ]
+ ]
 
-This function is used to specify a callback function to obtain password information about an encrypted key in PEM format.
+ [
+ [[link boost_asio.reference.ssl__context_base.no_sslv2 [*no_sslv2]]]
+ [Disable SSL v2. ]
+ ]
 
+ [
+ [[link boost_asio.reference.ssl__context_base.no_sslv3 [*no_sslv3]]]
+ [Disable SSL v3. ]
+ ]
 
-[heading Parameters]
-
+ [
+ [[link boost_asio.reference.ssl__context_base.no_tlsv1 [*no_tlsv1]]]
+ [Disable TLS v1. ]
+ ]
 
-[variablelist
-
-[[callback][The function object to be used for obtaining the password. The function signature of the handler must be:
-``
- std::string password_callback(
- std::size_t max_length, // The maximum size for a password.
- password_purpose purpose // Whether password is for reading or writing.
- );
+ [
+ [[link boost_asio.reference.ssl__context_base.single_dh_use [*single_dh_use]]]
+ [Always create a new key when using tmp_dh parameters. ]
+ ]
 
-``
-The return value of the callback is a string containing the password.]]
+ [
+ [[link boost_asio.reference.ssl__context_base.verify_client_once [*verify_client_once]]]
+ [Do not request client certificate on renegotiation. Ignored unless verify_peer is set. ]
+ ]
 
-]
+ [
+ [[link boost_asio.reference.ssl__context_base.verify_fail_if_no_peer_cert [*verify_fail_if_no_peer_cert]]]
+ [Fail verification if the peer has no certificate. Ignored unless verify_peer is set. ]
+ ]
 
-[heading Exceptions]
-
+ [
+ [[link boost_asio.reference.ssl__context_base.verify_none [*verify_none]]]
+ [No verification. ]
+ ]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+ [
+ [[link boost_asio.reference.ssl__context_base.verify_peer [*verify_peer]]]
+ [Verify the peer. ]
+ ]
 
 ]
 
 
+[section:default_workarounds ssl::context_base::default_workarounds]
 
-[endsect]
+[indexterm2 default_workarounds..ssl::context_base] Implement various bug workarounds.
 
+ static const int default_workarounds = implementation_defined;
 
 
-[section:overload2 ssl::basic_context::set_password_callback (2 of 2 overloads)]
 
-Set the password callback.
+[endsect]
 
- template<
- typename PasswordCallback>
- boost::system::error_code set_password_callback(
- PasswordCallback callback,
- boost::system::error_code & ec);
 
 
-This function is used to specify a callback function to obtain password information about an encrypted key in PEM format.
+[section:file_format ssl::context_base::file_format]
 
+[indexterm2 file_format..ssl::context_base] File format types.
 
-[heading Parameters]
-
+ enum file_format
 
+[heading Values]
 [variablelist
-
-[[callback][The function object to be used for obtaining the password. The function signature of the handler must be:
-``
- std::string password_callback(
- std::size_t max_length, // The maximum size for a password.
- password_purpose purpose // Whether password is for reading or writing.
- );
 
-``
-The return value of the callback is a string containing the password.]]
+ [
+ [asn1]
+ [ASN.1 file. ]
+ ]
 
-[[ec][Set to indicate what error occurred, if any. ]]
+ [
+ [pem]
+ [PEM file. ]
+ ]
 
 ]
 
@@ -47092,46 +52836,75 @@
 [endsect]
 
 
-[endsect]
 
-[section:set_verify_mode ssl::basic_context::set_verify_mode]
+[section:method ssl::context_base::method]
 
-Set the peer verification mode.
+[indexterm2 method..ssl::context_base] Different methods supported by a context.
 
- void ``[link boost_asio.reference.ssl__basic_context.set_verify_mode.overload1 set_verify_mode]``(
- verify_mode v);
+ enum method
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.set_verify_mode.overload2 set_verify_mode]``(
- verify_mode v,
- boost::system::error_code & ec);
+[heading Values]
+[variablelist
 
+ [
+ [sslv2]
+ [Generic SSL version 2. ]
+ ]
 
-[section:overload1 ssl::basic_context::set_verify_mode (1 of 2 overloads)]
+ [
+ [sslv2_client]
+ [SSL version 2 client. ]
+ ]
 
-Set the peer verification mode.
+ [
+ [sslv2_server]
+ [SSL version 2 server. ]
+ ]
 
- void set_verify_mode(
- verify_mode v);
+ [
+ [sslv3]
+ [Generic SSL version 3. ]
+ ]
 
+ [
+ [sslv3_client]
+ [SSL version 3 client. ]
+ ]
 
-This function may be used to configure the peer verification mode used by the context.
+ [
+ [sslv3_server]
+ [SSL version 3 server. ]
+ ]
 
+ [
+ [tlsv1]
+ [Generic TLS version 1. ]
+ ]
 
-[heading Parameters]
-
+ [
+ [tlsv1_client]
+ [TLS version 1 client. ]
+ ]
 
-[variablelist
-
-[[v][A bitmask of peer verification modes. The available verify\_mode values are defined in the context\_base class.]]
+ [
+ [tlsv1_server]
+ [TLS version 1 server. ]
+ ]
 
-]
+ [
+ [sslv23]
+ [Generic SSL/TLS. ]
+ ]
 
-[heading Exceptions]
-
+ [
+ [sslv23_client]
+ [SSL/TLS client. ]
+ ]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+ [
+ [sslv23_server]
+ [SSL/TLS server. ]
+ ]
 
 ]
 
@@ -47141,89 +52914,73 @@
 
 
 
-[section:overload2 ssl::basic_context::set_verify_mode (2 of 2 overloads)]
-
-Set the peer verification mode.
+[section:no_sslv2 ssl::context_base::no_sslv2]
 
- boost::system::error_code set_verify_mode(
- verify_mode v,
- boost::system::error_code & ec);
+[indexterm2 no_sslv2..ssl::context_base] Disable SSL v2.
 
+ static const int no_sslv2 = implementation_defined;
 
-This function may be used to configure the peer verification mode used by the context.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[v][A bitmask of peer verification modes. The available verify\_mode values are defined in the context\_base class.]]
 
-[[ec][Set to indicate what error occurred, if any. ]]
 
-]
+[section:no_sslv3 ssl::context_base::no_sslv3]
 
+[indexterm2 no_sslv3..ssl::context_base] Disable SSL v3.
 
+ static const int no_sslv3 = implementation_defined;
 
-[endsect]
 
 
 [endsect]
 
 
-[section:single_dh_use ssl::basic_context::single_dh_use]
-
 
-['Inherited from ssl::context_base.]
+[section:no_tlsv1 ssl::context_base::no_tlsv1]
 
-Always create a new key when using tmp_dh parameters.
+[indexterm2 no_tlsv1..ssl::context_base] Disable TLS v1.
 
- static const int single_dh_use = implementation_defined;
+ static const int no_tlsv1 = implementation_defined;
 
 
 
 [endsect]
 
 
-[section:use_certificate_chain_file ssl::basic_context::use_certificate_chain_file]
 
-Use a certificate chain from a file.
+[section:options ssl::context_base::options]
 
- void ``[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file.overload1 use_certificate_chain_file]``(
- const std::string & filename);
+[indexterm2 options..ssl::context_base] Bitmask type for SSL options.
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file.overload2 use_certificate_chain_file]``(
- const std::string & filename,
- boost::system::error_code & ec);
+ typedef int options;
 
 
-[section:overload1 ssl::basic_context::use_certificate_chain_file (1 of 2 overloads)]
 
-Use a certificate chain from a file.
 
- void use_certificate_chain_file(
- const std::string & filename);
+[endsect]
 
 
-This function is used to load a certificate chain into the context from a file.
 
+[section:password_purpose ssl::context_base::password_purpose]
 
-[heading Parameters]
-
+[indexterm2 password_purpose..ssl::context_base] Purpose of PEM password.
 
-[variablelist
-
-[[filename][The name of the file containing the certificate. The file must use the PEM format.]]
+ enum password_purpose
 
-]
+[heading Values]
+[variablelist
 
-[heading Exceptions]
-
+ [
+ [for_reading]
+ [The password is needed for reading/decryption. ]
+ ]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+ [
+ [for_writing]
+ [The password is needed for writing/encryption. ]
+ ]
 
 ]
 
@@ -47233,166 +52990,225 @@
 
 
 
-[section:overload2 ssl::basic_context::use_certificate_chain_file (2 of 2 overloads)]
+[section:single_dh_use ssl::context_base::single_dh_use]
 
-Use a certificate chain from a file.
+[indexterm2 single_dh_use..ssl::context_base] Always create a new key when using tmp_dh parameters.
 
- boost::system::error_code use_certificate_chain_file(
- const std::string & filename,
- boost::system::error_code & ec);
+ static const int single_dh_use = implementation_defined;
 
 
-This function is used to load a certificate chain into the context from a file.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[filename][The name of the file containing the certificate. The file must use the PEM format.]]
 
-[[ec][Set to indicate what error occurred, if any. ]]
+[section:verify_client_once ssl::context_base::verify_client_once]
 
-]
+[indexterm2 verify_client_once..ssl::context_base] Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
+
+ static const int verify_client_once = implementation_defined;
 
 
 
 [endsect]
 
 
-[endsect]
 
-[section:use_certificate_file ssl::basic_context::use_certificate_file]
+[section:verify_fail_if_no_peer_cert ssl::context_base::verify_fail_if_no_peer_cert]
 
-Use a certificate from a file.
+[indexterm2 verify_fail_if_no_peer_cert..ssl::context_base] Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
 
- void ``[link boost_asio.reference.ssl__basic_context.use_certificate_file.overload1 use_certificate_file]``(
- const std::string & filename,
- file_format format);
+ static const int verify_fail_if_no_peer_cert = implementation_defined;
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_certificate_file.overload2 use_certificate_file]``(
- const std::string & filename,
- file_format format,
- boost::system::error_code & ec);
 
 
-[section:overload1 ssl::basic_context::use_certificate_file (1 of 2 overloads)]
+[endsect]
 
-Use a certificate from a file.
 
- void use_certificate_file(
- const std::string & filename,
- file_format format);
 
+[section:verify_mode ssl::context_base::verify_mode]
 
-This function is used to load a certificate into the context from a file.
+[indexterm2 verify_mode..ssl::context_base] Bitmask type for peer verification.
 
+ typedef int verify_mode;
 
-[heading Parameters]
-
 
-[variablelist
-
-[[filename][The name of the file containing the certificate.]]
 
-[[format][The file format (ASN.1 or PEM).]]
 
-]
+[endsect]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+[section:verify_none ssl::context_base::verify_none]
 
+[indexterm2 verify_none..ssl::context_base] No verification.
 
+ static const int verify_none = implementation_defined;
 
-[endsect]
 
 
+[endsect]
 
-[section:overload2 ssl::basic_context::use_certificate_file (2 of 2 overloads)]
 
-Use a certificate from a file.
 
- boost::system::error_code use_certificate_file(
- const std::string & filename,
- file_format format,
- boost::system::error_code & ec);
+[section:verify_peer ssl::context_base::verify_peer]
 
+[indexterm2 verify_peer..ssl::context_base] Verify the peer.
 
-This function is used to load a certificate into the context from a file.
+ static const int verify_peer = implementation_defined;
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[filename][The name of the file containing the certificate.]]
+[endsect]
 
-[[format][The file format (ASN.1 or PEM).]]
 
-[[ec][Set to indicate what error occurred, if any. ]]
 
-]
+[section:_context_base ssl::context_base::~context_base]
 
+[indexterm2 ~context_base..ssl::context_base] Protected destructor to prevent deletion through this type.
 
+ ~context_base();
 
-[endsect]
 
 
 [endsect]
 
-[section:use_private_key_file ssl::basic_context::use_private_key_file]
 
-Use a private key from a file.
 
- void ``[link boost_asio.reference.ssl__basic_context.use_private_key_file.overload1 use_private_key_file]``(
- const std::string & filename,
- file_format format);
+[endsect]
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_private_key_file.overload2 use_private_key_file]``(
- const std::string & filename,
- file_format format,
- boost::system::error_code & ec);
+[section:ssl__context_service ssl::context_service]
 
+Default service implementation for a context.
 
-[section:overload1 ssl::basic_context::use_private_key_file (1 of 2 overloads)]
+ class context_service :
+ public io_service::service
 
-Use a private key from a file.
 
- void use_private_key_file(
- const std::string & filename,
- file_format format);
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
-This function is used to load a private key into the context from a file.
+ [[link boost_asio.reference.ssl__context_service.impl_type [*impl_type]]]
+ [The type of the context. ]
+
+ ]
 
+]
 
-[heading Parameters]
-
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
-[variablelist
+ [
+ [[link boost_asio.reference.ssl__context_service.add_verify_path [*add_verify_path]]]
+ [Add a directory containing certification authority files to be used for performing verification. ]
+ ]
   
-[[filename][The name of the file containing the private key.]]
+ [
+ [[link boost_asio.reference.ssl__context_service.context_service [*context_service]]]
+ [Constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.create [*create]]]
+ [Create a new context implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.destroy [*destroy]]]
+ [Destroy a context implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.load_verify_file [*load_verify_file]]]
+ [Load a certification authority file for performing verification. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.null [*null]]]
+ [Return a null context implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.set_options [*set_options]]]
+ [Set options on the context. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.set_password_callback [*set_password_callback]]]
+ [Set the password callback. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.set_verify_mode [*set_verify_mode]]]
+ [Set peer verification mode. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.use_certificate_chain_file [*use_certificate_chain_file]]]
+ [Use a certificate chain from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.use_certificate_file [*use_certificate_file]]]
+ [Use a certificate from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.use_private_key_file [*use_private_key_file]]]
+ [Use a private key from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.use_rsa_private_key_file [*use_rsa_private_key_file]]]
+ [Use an RSA private key from a file. ]
+ ]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.use_tmp_dh_file [*use_tmp_dh_file]]]
+ [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
+ ]
+
+]
 
-[[format][The file format (ASN.1 or PEM).]]
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.ssl__context_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
 
 ]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+[section:add_verify_path ssl::context_service::add_verify_path]
 
-]
+[indexterm2 add_verify_path..ssl::context_service] Add a directory containing certification authority files to be used for performing verification.
+
+ boost::system::error_code add_verify_path(
+ impl_type & impl,
+ const std::string & path,
+ boost::system::error_code & ec);
 
 
 
@@ -47400,84 +53216,66 @@
 
 
 
-[section:overload2 ssl::basic_context::use_private_key_file (2 of 2 overloads)]
+[section:context_service ssl::context_service::context_service]
 
-Use a private key from a file.
+[indexterm2 context_service..ssl::context_service] Constructor.
 
- boost::system::error_code use_private_key_file(
- const std::string & filename,
- file_format format,
- boost::system::error_code & ec);
+ context_service(
+ boost::asio::io_service & io_service);
 
 
-This function is used to load a private key into the context from a file.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[filename][The name of the file containing the private key.]]
 
-[[format][The file format (ASN.1 or PEM).]]
+[section:create ssl::context_service::create]
 
-[[ec][Set to indicate what error occurred, if any. ]]
+[indexterm2 create..ssl::context_service] Create a new context implementation.
 
-]
+ void create(
+ impl_type & impl,
+ context_base::method m);
 
 
 
 [endsect]
 
 
-[endsect]
 
-[section:use_rsa_private_key_file ssl::basic_context::use_rsa_private_key_file]
+[section:destroy ssl::context_service::destroy]
 
-Use an RSA private key from a file.
+[indexterm2 destroy..ssl::context_service] Destroy a context implementation.
 
- void ``[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file.overload1 use_rsa_private_key_file]``(
- const std::string & filename,
- file_format format);
+ void destroy(
+ impl_type & impl);
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file.overload2 use_rsa_private_key_file]``(
- const std::string & filename,
- file_format format,
- boost::system::error_code & ec);
 
 
-[section:overload1 ssl::basic_context::use_rsa_private_key_file (1 of 2 overloads)]
+[endsect]
 
-Use an RSA private key from a file.
 
- void use_rsa_private_key_file(
- const std::string & filename,
- file_format format);
 
+[section:get_io_service ssl::context_service::get_io_service]
 
-This function is used to load an RSA private key into the context from a file.
 
+['Inherited from io_service.]
 
-[heading Parameters]
-
+[indexterm2 get_io_service..ssl::context_service] Get the io_service object that owns the service.
 
-[variablelist
-
-[[filename][The name of the file containing the RSA private key.]]
+ boost::asio::io_service & get_io_service();
 
-[[format][The file format (ASN.1 or PEM).]]
 
-]
 
-[heading Exceptions]
-
+[endsect]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
+
+[section:id ssl::context_service::id]
+
+[indexterm2 id..ssl::context_service] The unique service identifier.
+
+ static boost::asio::io_service::id id;
 
 
 
@@ -47485,79 +53283,54 @@
 
 
 
-[section:overload2 ssl::basic_context::use_rsa_private_key_file (2 of 2 overloads)]
+[section:impl_type ssl::context_service::impl_type]
 
-Use an RSA private key from a file.
+[indexterm2 impl_type..ssl::context_service] The type of the context.
 
- boost::system::error_code use_rsa_private_key_file(
- const std::string & filename,
- file_format format,
- boost::system::error_code & ec);
+ typedef implementation_defined impl_type;
 
 
-This function is used to load an RSA private key into the context from a file.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[filename][The name of the file containing the RSA private key.]]
 
-[[format][The file format (ASN.1 or PEM).]]
 
-[[ec][Set to indicate what error occurred, if any. ]]
+[section:io_service ssl::context_service::io_service]
 
-]
+
+['Inherited from io_service.]
+
+[indexterm2 io_service..ssl::context_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
+
+ boost::asio::io_service & io_service();
 
 
 
 [endsect]
 
 
-[endsect]
-
-[section:use_tmp_dh_file ssl::basic_context::use_tmp_dh_file]
 
-Use the specified file to obtain the temporary Diffie-Hellman parameters.
+[section:load_verify_file ssl::context_service::load_verify_file]
 
- void ``[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file.overload1 use_tmp_dh_file]``(
- const std::string & filename);
+[indexterm2 load_verify_file..ssl::context_service] Load a certification authority file for performing verification.
 
- boost::system::error_code ``[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file.overload2 use_tmp_dh_file]``(
+ boost::system::error_code load_verify_file(
+ impl_type & impl,
       const std::string & filename,
       boost::system::error_code & ec);
 
 
-[section:overload1 ssl::basic_context::use_tmp_dh_file (1 of 2 overloads)]
-
-Use the specified file to obtain the temporary Diffie-Hellman parameters.
-
- void use_tmp_dh_file(
- const std::string & filename);
-
-
-This function is used to load Diffie-Hellman parameters into the context from a file.
-
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[filename][The name of the file containing the Diffie-Hellman parameters. The file must use the PEM format.]]
 
-]
 
-[heading Exceptions]
-
+[section:null ssl::context_service::null]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+[indexterm2 null..ssl::context_service] Return a null context implementation.
 
-]
+ impl_type null() const;
 
 
 
@@ -47565,45 +53338,46 @@
 
 
 
-[section:overload2 ssl::basic_context::use_tmp_dh_file (2 of 2 overloads)]
+[section:set_options ssl::context_service::set_options]
 
-Use the specified file to obtain the temporary Diffie-Hellman parameters.
+[indexterm2 set_options..ssl::context_service] Set options on the context.
 
- boost::system::error_code use_tmp_dh_file(
- const std::string & filename,
+ boost::system::error_code set_options(
+ impl_type & impl,
+ context_base::options o,
       boost::system::error_code & ec);
 
 
-This function is used to load Diffie-Hellman parameters into the context from a file.
-
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[filename][The name of the file containing the Diffie-Hellman parameters. The file must use the PEM format.]]
 
-[[ec][Set to indicate what error occurred, if any. ]]
 
-]
+[section:set_password_callback ssl::context_service::set_password_callback]
 
+[indexterm2 set_password_callback..ssl::context_service] Set the password callback.
 
+ template<
+ typename PasswordCallback>
+ boost::system::error_code set_password_callback(
+ impl_type & impl,
+ PasswordCallback callback,
+ boost::system::error_code & ec);
 
-[endsect]
 
 
 [endsect]
 
 
-[section:verify_client_once ssl::basic_context::verify_client_once]
-
 
-['Inherited from ssl::context_base.]
+[section:set_verify_mode ssl::context_service::set_verify_mode]
 
-Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
+[indexterm2 set_verify_mode..ssl::context_service] Set peer verification mode.
 
- static const int verify_client_once = implementation_defined;
+ boost::system::error_code set_verify_mode(
+ impl_type & impl,
+ context_base::verify_mode v,
+ boost::system::error_code & ec);
 
 
 
@@ -47611,14 +53385,11 @@
 
 
 
-[section:verify_fail_if_no_peer_cert ssl::basic_context::verify_fail_if_no_peer_cert]
-
-
-['Inherited from ssl::context_base.]
+[section:shutdown_service ssl::context_service::shutdown_service]
 
-Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
+[indexterm2 shutdown_service..ssl::context_service] Destroy all user-defined handler objects owned by the service.
 
- static const int verify_fail_if_no_peer_cert = implementation_defined;
+ void shutdown_service();
 
 
 
@@ -47626,45 +53397,62 @@
 
 
 
-[section:verify_mode ssl::basic_context::verify_mode]
+[section:use_certificate_chain_file ssl::context_service::use_certificate_chain_file]
 
+[indexterm2 use_certificate_chain_file..ssl::context_service] Use a certificate chain from a file.
 
-['Inherited from ssl::context_base.]
+ boost::system::error_code use_certificate_chain_file(
+ impl_type & impl,
+ const std::string & filename,
+ boost::system::error_code & ec);
 
-Bitmask type for peer verification.
 
- typedef int verify_mode;
 
+[endsect]
 
 
 
-[endsect]
+[section:use_certificate_file ssl::context_service::use_certificate_file]
 
+[indexterm2 use_certificate_file..ssl::context_service] Use a certificate from a file.
 
+ boost::system::error_code use_certificate_file(
+ impl_type & impl,
+ const std::string & filename,
+ context_base::file_format format,
+ boost::system::error_code & ec);
 
-[section:verify_none ssl::basic_context::verify_none]
 
 
-['Inherited from ssl::context_base.]
+[endsect]
 
-No verification.
 
- static const int verify_none = implementation_defined;
 
+[section:use_private_key_file ssl::context_service::use_private_key_file]
 
+[indexterm2 use_private_key_file..ssl::context_service] Use a private key from a file.
 
-[endsect]
+ boost::system::error_code use_private_key_file(
+ impl_type & impl,
+ const std::string & filename,
+ context_base::file_format format,
+ boost::system::error_code & ec);
 
 
 
-[section:verify_peer ssl::basic_context::verify_peer]
+[endsect]
 
 
-['Inherited from ssl::context_base.]
 
-Verify the peer.
+[section:use_rsa_private_key_file ssl::context_service::use_rsa_private_key_file]
+
+[indexterm2 use_rsa_private_key_file..ssl::context_service] Use an RSA private key from a file.
 
- static const int verify_peer = implementation_defined;
+ boost::system::error_code use_rsa_private_key_file(
+ impl_type & impl,
+ const std::string & filename,
+ context_base::file_format format,
+ boost::system::error_code & ec);
 
 
 
@@ -47672,11 +53460,14 @@
 
 
 
-[section:_basic_context ssl::basic_context::~basic_context]
+[section:use_tmp_dh_file ssl::context_service::use_tmp_dh_file]
 
-Destructor.
+[indexterm2 use_tmp_dh_file..ssl::context_service] Use the specified file to obtain the temporary Diffie-Hellman parameters.
 
- ~basic_context();
+ boost::system::error_code use_tmp_dh_file(
+ impl_type & impl,
+ const std::string & filename,
+ boost::system::error_code & ec);
 
 
 
@@ -47686,12 +53477,15 @@
 
 [endsect]
 
+[section:ssl__stream ssl::stream]
 
-[section:ssl__context ssl::context]
-
-Typedef for the typical usage of context.
+Provides stream-oriented functionality using SSL.
 
- typedef basic_context< context_service > context;
+ template<
+ typename Stream,
+ typename ``[link boost_asio.reference.Service Service]`` = stream_service>
+ class stream :
+ public ssl::stream_base
 
 
 [heading Types]
@@ -47700,50 +53494,36 @@
 
   [
 
- [[link boost_asio.reference.ssl__basic_context.file_format [*file_format]]]
- [File format types. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ssl__basic_context.impl_type [*impl_type]]]
- [The native implementation type of the locking dispatcher. ]
-
- ]
-
- [
-
- [[link boost_asio.reference.ssl__basic_context.method [*method]]]
- [Different methods supported by a context. ]
+ [[link boost_asio.reference.ssl__stream.handshake_type [*handshake_type]]]
+ [Different handshake types. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ssl__basic_context.options [*options]]]
- [Bitmask type for SSL options. ]
+ [[link boost_asio.reference.ssl__stream.impl_type [*impl_type]]]
+ [The native implementation type of the stream. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ssl__basic_context.password_purpose [*password_purpose]]]
- [Purpose of PEM password. ]
+ [[link boost_asio.reference.ssl__stream.lowest_layer_type [*lowest_layer_type]]]
+ [The type of the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ssl__basic_context.service_type [*service_type]]]
- [The type of the service that will be used to provide context operations. ]
+ [[link boost_asio.reference.ssl__stream.next_layer_type [*next_layer_type]]]
+ [The type of the next layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.ssl__basic_context.verify_mode [*verify_mode]]]
- [Bitmask type for peer verification. ]
+ [[link boost_asio.reference.ssl__stream.service_type [*service_type]]]
+ [The type of the service that will be used to provide stream operations. ]
   
   ]
 
@@ -47754,120 +53534,142 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ssl__basic_context.add_verify_path [*add_verify_path]]]
- [Add a directory containing certificate authority files to be used for performing verification. ]
+ [[link boost_asio.reference.ssl__stream.async_handshake [*async_handshake]]]
+ [Start an asynchronous SSL handshake. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.basic_context [*basic_context]]]
- [Constructor. ]
+ [[link boost_asio.reference.ssl__stream.async_read_some [*async_read_some]]]
+ [Start an asynchronous read. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.impl [*impl]]]
- [Get the underlying implementation in the native type. ]
+ [[link boost_asio.reference.ssl__stream.async_shutdown [*async_shutdown]]]
+ [Asynchronously shut down SSL on the stream. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.load_verify_file [*load_verify_file]]]
- [Load a certification authority file for performing verification. ]
+ [[link boost_asio.reference.ssl__stream.async_write_some [*async_write_some]]]
+ [Start an asynchronous write. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.set_options [*set_options]]]
- [Set options on the context. ]
+ [[link boost_asio.reference.ssl__stream.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.set_password_callback [*set_password_callback]]]
- [Set the password callback. ]
+ [[link boost_asio.reference.ssl__stream.handshake [*handshake]]]
+ [Perform SSL handshaking. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.set_verify_mode [*set_verify_mode]]]
- [Set the peer verification mode. ]
+ [[link boost_asio.reference.ssl__stream.impl [*impl]]]
+ [Get the underlying implementation in the native type. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.use_certificate_chain_file [*use_certificate_chain_file]]]
- [Use a certificate chain from a file. ]
+ [[link boost_asio.reference.ssl__stream.in_avail [*in_avail]]]
+ [Determine the amount of data that may be read without blocking. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.use_certificate_file [*use_certificate_file]]]
- [Use a certificate from a file. ]
+ [[link boost_asio.reference.ssl__stream.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.use_private_key_file [*use_private_key_file]]]
- [Use a private key from a file. ]
+ [[link boost_asio.reference.ssl__stream.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.use_rsa_private_key_file [*use_rsa_private_key_file]]]
- [Use an RSA private key from a file. ]
+ [[link boost_asio.reference.ssl__stream.next_layer [*next_layer]]]
+ [Get a reference to the next layer. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context.use_tmp_dh_file [*use_tmp_dh_file]]]
- [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
+ [[link boost_asio.reference.ssl__stream.peek [*peek]]]
+ [Peek at the incoming data on the stream. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__basic_context._basic_context [*~basic_context]]]
- [Destructor. ]
+ [[link boost_asio.reference.ssl__stream.read_some [*read_some]]]
+ [Read some data from the stream. ]
   ]
   
-]
-
-[heading Data Members]
-[table
- [[Name][Description]]
-
   [
- [[link boost_asio.reference.ssl__basic_context.default_workarounds [*default_workarounds]]]
- [Implement various bug workarounds. ]
+ [[link boost_asio.reference.ssl__stream.shutdown [*shutdown]]]
+ [Shut down SSL on the stream. ]
   ]
-
+
   [
- [[link boost_asio.reference.ssl__basic_context.no_sslv2 [*no_sslv2]]]
- [Disable SSL v2. ]
+ [[link boost_asio.reference.ssl__stream.stream [*stream]]]
+ [Construct a stream. ]
   ]
-
+
   [
- [[link boost_asio.reference.ssl__basic_context.no_sslv3 [*no_sslv3]]]
- [Disable SSL v3. ]
+ [[link boost_asio.reference.ssl__stream.write_some [*write_some]]]
+ [Write some data to the stream. ]
   ]
-
+
   [
- [[link boost_asio.reference.ssl__basic_context.no_tlsv1 [*no_tlsv1]]]
- [Disable TLS v1. ]
+ [[link boost_asio.reference.ssl__stream._stream [*~stream]]]
+ [Destructor. ]
   ]
+
+]
 
- [
- [[link boost_asio.reference.ssl__basic_context.single_dh_use [*single_dh_use]]]
- [Always create a new key when using tmp_dh parameters. ]
- ]
+The stream class template provides asynchronous and blocking stream-oriented functionality using SSL.
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_client_once [*verify_client_once]]]
- [Do not request client certificate on renegotiation. Ignored unless verify_peer is set. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_fail_if_no_peer_cert [*verify_fail_if_no_peer_cert]]]
- [Fail verification if the peer has no certificate. Ignored unless verify_peer is set. ]
- ]
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_none [*verify_none]]]
- [No verification. ]
- ]
+[*Shared] [*objects:] Unsafe.
 
- [
- [[link boost_asio.reference.ssl__basic_context.verify_peer [*verify_peer]]]
- [Verify the peer. ]
- ]
+[heading Example]
+
+To use the SSL stream template with an ip::tcp::socket, you would write:
+
+ boost::asio::io_service io_service;
+ boost::asio::ssl::context context(io_service, boost::asio::ssl::context::sslv23);
+ boost::asio::ssl::stream<boost::asio::ip::tcp::socket> sock(io_service, context);
+
+
+
+
+
+
+[section:async_handshake ssl::stream::async_handshake]
+
+[indexterm2 async_handshake..ssl::stream] Start an asynchronous SSL handshake.
+
+ template<
+ typename HandshakeHandler>
+ void async_handshake(
+ handshake_type type,
+ HandshakeHandler handler);
+
+
+This function is used to asynchronously perform an SSL handshake on the stream. This function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
+
+[[handler][The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error // Result of operation.
+ );
+``
+]]
 
 ]
 
@@ -47876,146 +53678,243 @@
 [endsect]
 
 
-[section:ssl__context_base ssl::context_base]
 
-The context_base class is used as a base for the basic_context class template so that we have a common place to define various enums.
+[section:async_read_some ssl::stream::async_read_some]
 
- class context_base
+[indexterm2 async_read_some..ssl::stream] Start an asynchronous read.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some(
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
 
 
-[heading Types]
-[table
- [[Name][Description]]
+This function is used to asynchronously read one or more bytes of data from the stream. The function call always returns immediately.
 
- [
 
- [[link boost_asio.reference.ssl__context_base.file_format [*file_format]]]
- [File format types. ]
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[buffers][The buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
 
- [
+[[handler][The handler to be called when the read operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes read.
+ );
+``
+]]
 
- [[link boost_asio.reference.ssl__context_base.method [*method]]]
- [Different methods supported by a context. ]
-
- ]
+]
 
- [
+[heading Remarks]
+
+The async\_read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
 
- [[link boost_asio.reference.ssl__context_base.options [*options]]]
- [Bitmask type for SSL options. ]
+
+
+[endsect]
+
+
+
+[section:async_shutdown ssl::stream::async_shutdown]
+
+[indexterm2 async_shutdown..ssl::stream] Asynchronously shut down SSL on the stream.
+
+ template<
+ typename ShutdownHandler>
+ void async_shutdown(
+ ShutdownHandler handler);
+
+
+This function is used to asynchronously shut down SSL on the stream. This function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[handler][The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error // Result of operation.
+ );
+``
+]]
 
- [
+]
 
- [[link boost_asio.reference.ssl__context_base.password_purpose [*password_purpose]]]
- [Purpose of PEM password. ]
+
+
+[endsect]
+
+
+
+[section:async_write_some ssl::stream::async_write_some]
+
+[indexterm2 async_write_some..ssl::stream] Start an asynchronous write.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some(
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
+
+
+This function is used to asynchronously write one or more bytes of data to the stream. The function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[buffers][The data to be written to the stream. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
 
- [
+[[handler][The handler to be called when the write operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes written.
+ );
+``
+]]
 
- [[link boost_asio.reference.ssl__context_base.verify_mode [*verify_mode]]]
- [Bitmask type for peer verification. ]
+]
+
+[heading Remarks]
+
+The async\_write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the blocking operation completes.
+
+
+
+[endsect]
+
+
+
+[section:get_io_service ssl::stream::get_io_service]
+
+[indexterm2 get_io_service..ssl::stream] Get the io_service associated with the object.
+
+ boost::asio::io_service & get_io_service();
+
+
+This function may be used to obtain the io_service object that the stream uses to dispatch handlers for asynchronous operations.
+
+
+[heading Return Value]
+
+A reference to the io_service object that stream will use to dispatch handlers. Ownership is not transferred to the caller.
+
+
+
+[endsect]
+
+
+[section:handshake ssl::stream::handshake]
+
+[indexterm2 handshake..ssl::stream] Perform SSL handshaking.
+
+ void ``[link boost_asio.reference.ssl__stream.handshake.overload1 handshake]``(
+ handshake_type type);
+
+ boost::system::error_code ``[link boost_asio.reference.ssl__stream.handshake.overload2 handshake]``(
+ handshake_type type,
+ boost::system::error_code & ec);
+
+
+[section:overload1 ssl::stream::handshake (1 of 2 overloads)]
+
+Perform SSL handshaking.
+
+ void handshake(
+ handshake_type type);
+
+
+This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
+
+
+[heading Parameters]
+
+
+[variablelist
   
- ]
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
 
 ]
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
+[heading Exceptions]
+
 
- [
- [[link boost_asio.reference.ssl__context_base._context_base [*~context_base]]]
- [Protected destructor to prevent deletion through this type. ]
- ]
+[variablelist
   
+[[boost::system::system_error][Thrown on failure. ]]
+
 ]
 
-[heading Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ssl__context_base.default_workarounds [*default_workarounds]]]
- [Implement various bug workarounds. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__context_base.no_sslv2 [*no_sslv2]]]
- [Disable SSL v2. ]
- ]
+[endsect]
 
- [
- [[link boost_asio.reference.ssl__context_base.no_sslv3 [*no_sslv3]]]
- [Disable SSL v3. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__context_base.no_tlsv1 [*no_tlsv1]]]
- [Disable TLS v1. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__context_base.single_dh_use [*single_dh_use]]]
- [Always create a new key when using tmp_dh parameters. ]
- ]
+[section:overload2 ssl::stream::handshake (2 of 2 overloads)]
 
- [
- [[link boost_asio.reference.ssl__context_base.verify_client_once [*verify_client_once]]]
- [Do not request client certificate on renegotiation. Ignored unless verify_peer is set. ]
- ]
+Perform SSL handshaking.
 
- [
- [[link boost_asio.reference.ssl__context_base.verify_fail_if_no_peer_cert [*verify_fail_if_no_peer_cert]]]
- [Fail verification if the peer has no certificate. Ignored unless verify_peer is set. ]
- ]
+ boost::system::error_code handshake(
+ handshake_type type,
+ boost::system::error_code & ec);
 
- [
- [[link boost_asio.reference.ssl__context_base.verify_none [*verify_none]]]
- [No verification. ]
- ]
 
- [
- [[link boost_asio.reference.ssl__context_base.verify_peer [*verify_peer]]]
- [Verify the peer. ]
- ]
+This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
 
-]
 
+[heading Parameters]
+
 
-[section:default_workarounds ssl::context_base::default_workarounds]
+[variablelist
+
+[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
 
-Implement various bug workarounds.
+[[ec][Set to indicate what error occurred, if any. ]]
 
- static const int default_workarounds = implementation_defined;
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:file_format ssl::context_base::file_format]
 
-File format types.
+[section:handshake_type ssl::stream::handshake_type]
 
- enum file_format
+[indexterm2 handshake_type..ssl::stream] Different handshake types.
+
+ enum handshake_type
 
 [heading Values]
 [variablelist
 
   [
- [asn1]
- [ASN.1 file. ]
+ [client]
+ [Perform handshaking as a client. ]
   ]
 
   [
- [pem]
- [PEM file. ]
+ [server]
+ [Perform handshaking as a server. ]
   ]
 
 ]
@@ -48026,100 +53925,64 @@
 
 
 
-[section:method ssl::context_base::method]
-
-Different methods supported by a context.
+[section:impl ssl::stream::impl]
 
- enum method
+[indexterm2 impl..ssl::stream] Get the underlying implementation in the native type.
 
-[heading Values]
-[variablelist
+ impl_type impl();
 
- [
- [sslv2]
- [Generic SSL version 2. ]
- ]
 
- [
- [sslv2_client]
- [SSL version 2 client. ]
- ]
+This function may be used to obtain the underlying implementation of the context. This is intended to allow access to stream functionality that is not otherwise provided.
 
- [
- [sslv2_server]
- [SSL version 2 server. ]
- ]
 
- [
- [sslv3]
- [Generic SSL version 3. ]
- ]
+[endsect]
 
- [
- [sslv3_client]
- [SSL version 3 client. ]
- ]
 
- [
- [sslv3_server]
- [SSL version 3 server. ]
- ]
 
- [
- [tlsv1]
- [Generic TLS version 1. ]
- ]
+[section:impl_type ssl::stream::impl_type]
 
- [
- [tlsv1_client]
- [TLS version 1 client. ]
- ]
+[indexterm2 impl_type..ssl::stream] The native implementation type of the stream.
 
- [
- [tlsv1_server]
- [TLS version 1 server. ]
- ]
+ typedef service_type::impl_type impl_type;
 
- [
- [sslv23]
- [Generic SSL/TLS. ]
- ]
 
- [
- [sslv23_client]
- [SSL/TLS client. ]
- ]
 
- [
- [sslv23_server]
- [SSL/TLS server. ]
- ]
 
-]
+[endsect]
 
 
+[section:in_avail ssl::stream::in_avail]
 
-[endsect]
+[indexterm2 in_avail..ssl::stream] Determine the amount of data that may be read without blocking.
 
+ std::size_t ``[link boost_asio.reference.ssl__stream.in_avail.overload1 in_avail]``();
 
+ std::size_t ``[link boost_asio.reference.ssl__stream.in_avail.overload2 in_avail]``(
+ boost::system::error_code & ec);
 
-[section:no_sslv2 ssl::context_base::no_sslv2]
 
-Disable SSL v2.
+[section:overload1 ssl::stream::in_avail (1 of 2 overloads)]
 
- static const int no_sslv2 = implementation_defined;
+Determine the amount of data that may be read without blocking.
 
+ std::size_t in_avail();
 
 
-[endsect]
+This function is used to determine the amount of data, in bytes, that may be read from the stream without blocking.
 
 
+[heading Return Value]
+
+The number of bytes of data that can be read without blocking.
 
-[section:no_sslv3 ssl::context_base::no_sslv3]
+[heading Exceptions]
+
 
-Disable SSL v3.
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
- static const int no_sslv3 = implementation_defined;
+]
 
 
 
@@ -48127,51 +53990,51 @@
 
 
 
-[section:no_tlsv1 ssl::context_base::no_tlsv1]
+[section:overload2 ssl::stream::in_avail (2 of 2 overloads)]
 
-Disable TLS v1.
+Determine the amount of data that may be read without blocking.
 
- static const int no_tlsv1 = implementation_defined;
+ std::size_t in_avail(
+ boost::system::error_code & ec);
 
 
+This function is used to determine the amount of data, in bytes, that may be read from the stream without blocking.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any.]]
 
-[section:options ssl::context_base::options]
+]
 
-Bitmask type for SSL options.
+[heading Return Value]
+
+The number of bytes of data that can be read without blocking.
 
- typedef int options;
 
 
+[endsect]
 
 
 [endsect]
 
 
+[section:io_service ssl::stream::io_service]
 
-[section:password_purpose ssl::context_base::password_purpose]
-
-Purpose of PEM password.
+[indexterm2 io_service..ssl::stream] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
- enum password_purpose
+ boost::asio::io_service & io_service();
 
-[heading Values]
-[variablelist
 
- [
- [for_reading]
- [The password is needed for reading/decryption. ]
- ]
+This function may be used to obtain the io_service object that the stream uses to dispatch handlers for asynchronous operations.
 
- [
- [for_writing]
- [The password is needed for writing/encryption. ]
- ]
 
-]
+[heading Return Value]
+
+A reference to the io_service object that stream will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -48179,48 +54042,52 @@
 
 
 
-[section:single_dh_use ssl::context_base::single_dh_use]
+[section:lowest_layer ssl::stream::lowest_layer]
 
-Always create a new key when using tmp_dh parameters.
+[indexterm2 lowest_layer..ssl::stream] Get a reference to the lowest layer.
 
- static const int single_dh_use = implementation_defined;
+ lowest_layer_type & lowest_layer();
 
 
+This function returns a reference to the lowest layer in a stack of stream layers.
 
-[endsect]
 
+[heading Return Value]
+
+A reference to the lowest layer in the stack of stream layers. Ownership is not transferred to the caller.
 
 
-[section:verify_client_once ssl::context_base::verify_client_once]
 
-Do not request client certificate on renegotiation. Ignored unless verify_peer is set.
+[endsect]
 
- static const int verify_client_once = implementation_defined;
 
 
+[section:lowest_layer_type ssl::stream::lowest_layer_type]
 
-[endsect]
+[indexterm2 lowest_layer_type..ssl::stream] The type of the lowest layer.
 
+ typedef next_layer_type::lowest_layer_type lowest_layer_type;
 
 
-[section:verify_fail_if_no_peer_cert ssl::context_base::verify_fail_if_no_peer_cert]
 
-Fail verification if the peer has no certificate. Ignored unless verify_peer is set.
 
- static const int verify_fail_if_no_peer_cert = implementation_defined;
+[endsect]
 
 
 
-[endsect]
+[section:next_layer ssl::stream::next_layer]
 
+[indexterm2 next_layer..ssl::stream] Get a reference to the next layer.
 
+ next_layer_type & next_layer();
 
-[section:verify_mode ssl::context_base::verify_mode]
 
-Bitmask type for peer verification.
+This function returns a reference to the next layer in a stack of stream layers.
 
- typedef int verify_mode;
 
+[heading Return Value]
+
+A reference to the next layer in the stack of stream layers. Ownership is not transferred to the caller.
 
 
 
@@ -48228,189 +54095,166 @@
 
 
 
-[section:verify_none ssl::context_base::verify_none]
+[section:next_layer_type ssl::stream::next_layer_type]
 
-No verification.
+[indexterm2 next_layer_type..ssl::stream] The type of the next layer.
+
+ typedef boost::remove_reference< Stream >::type next_layer_type;
 
- static const int verify_none = implementation_defined;
 
 
 
 [endsect]
 
 
+[section:peek ssl::stream::peek]
 
-[section:verify_peer ssl::context_base::verify_peer]
+[indexterm2 peek..ssl::stream] Peek at the incoming data on the stream.
 
-Verify the peer.
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.peek.overload1 peek]``(
+ const MutableBufferSequence & buffers);
 
- static const int verify_peer = implementation_defined;
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.peek.overload2 peek]``(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
+[section:overload1 ssl::stream::peek (1 of 2 overloads)]
 
-[endsect]
+Peek at the incoming data on the stream.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t peek(
+ const MutableBufferSequence & buffers);
 
 
+This function is used to peek at the incoming data on the stream, without removing it from the input queue. The function call will block until data has been read successfully or an error occurs.
 
-[section:_context_base ssl::context_base::~context_base]
 
-Protected destructor to prevent deletion through this type.
+[heading Parameters]
+
 
- ~context_base();
+[variablelist
+
+[[buffers][The buffers into which the data will be read.]]
 
+]
 
+[heading Return Value]
+
+The number of bytes read.
 
-[endsect]
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
 
 
 
 [endsect]
 
-[section:ssl__context_service ssl::context_service]
 
-Default service implementation for a context.
 
- class context_service :
- public io_service::service
+[section:overload2 ssl::stream::peek (2 of 2 overloads)]
 
+Peek at the incoming data on the stream.
 
-[heading Types]
-[table
- [[Name][Description]]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t peek(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
- [
 
- [[link boost_asio.reference.ssl__context_service.impl_type [*impl_type]]]
- [The type of the context. ]
-
- ]
+This function is used to peek at the incoming data on the stream, withoutxi removing it from the input queue. The function call will block until data has been read successfully or an error occurs.
 
-]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[heading Parameters]
+
 
- [
- [[link boost_asio.reference.ssl__context_service.add_verify_path [*add_verify_path]]]
- [Add a directory containing certification authority files to be used for performing verification. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.context_service [*context_service]]]
- [Constructor. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.create [*create]]]
- [Create a new context implementation. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.destroy [*destroy]]]
- [Destroy a context implementation. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.load_verify_file [*load_verify_file]]]
- [Load a certification authority file for performing verification. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.null [*null]]]
- [Return a null context implementation. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.set_options [*set_options]]]
- [Set options on the context. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.set_password_callback [*set_password_callback]]]
- [Set the password callback. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.set_verify_mode [*set_verify_mode]]]
- [Set peer verification mode. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.use_certificate_chain_file [*use_certificate_chain_file]]]
- [Use a certificate chain from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.use_certificate_file [*use_certificate_file]]]
- [Use a certificate from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.use_private_key_file [*use_private_key_file]]]
- [Use a private key from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.use_rsa_private_key_file [*use_rsa_private_key_file]]]
- [Use an RSA private key from a file. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__context_service.use_tmp_dh_file [*use_tmp_dh_file]]]
- [Use the specified file to obtain the temporary Diffie-Hellman parameters. ]
- ]
+[variablelist
   
+[[buffers][The buffers into which the data will be read.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
 ]
 
-[heading Data Members]
-[table
- [[Name][Description]]
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
 
- [
- [[link boost_asio.reference.ssl__context_service.id [*id]]]
- [The unique service identifier. ]
- ]
 
-]
+
+[endsect]
 
 
-[section:add_verify_path ssl::context_service::add_verify_path]
+[endsect]
 
-Add a directory containing certification authority files to be used for performing verification.
+[section:read_some ssl::stream::read_some]
 
- boost::system::error_code add_verify_path(
- impl_type & impl,
- const std::string & path,
+[indexterm2 read_some..ssl::stream] Read some data from the stream.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.read_some.overload1 read_some]``(
+ const MutableBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.read_some.overload2 read_some]``(
+ const MutableBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
+[section:overload1 ssl::stream::read_some (1 of 2 overloads)]
+
+Read some data from the stream.
 
-[endsect]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers);
 
 
+This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
 
-[section:context_service ssl::context_service::context_service]
 
-Constructor.
+[heading Parameters]
+
 
- context_service(
- boost::asio::io_service & io_service);
+[variablelist
+
+[[buffers][The buffers into which the data will be read.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes read.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
 
 
@@ -48418,66 +54262,88 @@
 
 
 
-[section:create ssl::context_service::create]
+[section:overload2 ssl::stream::read_some (2 of 2 overloads)]
 
-Create a new context implementation.
+Read some data from the stream.
 
- void create(
- impl_type & impl,
- context_base::method m);
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
+This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[buffers][The buffers into which the data will be read.]]
 
-[section:destroy ssl::context_service::destroy]
+[[ec][Set to indicate what error occurred, if any.]]
 
-Destroy a context implementation.
+]
 
- void destroy(
- impl_type & impl);
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:get_io_service ssl::context_service::get_io_service]
 
+[section:service_type ssl::stream::service_type]
 
-['Inherited from io_service.]
+[indexterm2 service_type..ssl::stream] The type of the service that will be used to provide stream operations.
 
-Get the io_service object that owns the service.
+ typedef Service service_type;
 
- boost::asio::io_service & get_io_service();
 
 
 
 [endsect]
 
 
+[section:shutdown ssl::stream::shutdown]
 
-[section:id ssl::context_service::id]
+[indexterm2 shutdown..ssl::stream] Shut down SSL on the stream.
 
-The unique service identifier.
+ void ``[link boost_asio.reference.ssl__stream.shutdown.overload1 shutdown]``();
 
- static boost::asio::io_service::id id;
+ boost::system::error_code ``[link boost_asio.reference.ssl__stream.shutdown.overload2 shutdown]``(
+ boost::system::error_code & ec);
 
 
+[section:overload1 ssl::stream::shutdown (1 of 2 overloads)]
 
-[endsect]
+Shut down SSL on the stream.
 
+ void shutdown();
 
 
-[section:impl_type ssl::context_service::impl_type]
+This function is used to shut down SSL on the stream. The function call will block until SSL has been shut down or an error occurs.
 
-The type of the context.
 
- typedef implementation_defined impl_type;
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -48485,88 +54351,120 @@
 
 
 
-[section:io_service ssl::context_service::io_service]
+[section:overload2 ssl::stream::shutdown (2 of 2 overloads)]
 
+Shut down SSL on the stream.
 
-['Inherited from io_service.]
+ boost::system::error_code shutdown(
+ boost::system::error_code & ec);
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
- boost::asio::io_service & io_service();
+This function is used to shut down SSL on the stream. The function call will block until SSL has been shut down or an error occurs.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
+
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:load_verify_file ssl::context_service::load_verify_file]
 
-Load a certification authority file for performing verification.
+[section:stream ssl::stream::stream]
 
- boost::system::error_code load_verify_file(
- impl_type & impl,
- const std::string & filename,
- boost::system::error_code & ec);
+[indexterm2 stream..ssl::stream] Construct a stream.
 
+ template<
+ typename Arg,
+ typename Context_Service>
+ stream(
+ Arg & arg,
+ basic_context< Context_Service > & context);
 
 
-[endsect]
+This constructor creates a stream and initialises the underlying stream object.
 
 
+[heading Parameters]
+
 
-[section:null ssl::context_service::null]
+[variablelist
+
+[[arg][The argument to be passed to initialise the underlying stream.]]
 
-Return a null context implementation.
+[[context][The SSL context to be used for the stream. ]]
 
- impl_type null() const;
+]
 
 
 
 [endsect]
 
 
+[section:write_some ssl::stream::write_some]
 
-[section:set_options ssl::context_service::set_options]
+[indexterm2 write_some..ssl::stream] Write some data to the stream.
 
-Set options on the context.
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.write_some.overload1 write_some]``(
+ const ConstBufferSequence & buffers);
 
- boost::system::error_code set_options(
- impl_type & impl,
- context_base::options o,
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.ssl__stream.write_some.overload2 write_some]``(
+ const ConstBufferSequence & buffers,
       boost::system::error_code & ec);
 
 
+[section:overload1 ssl::stream::write_some (1 of 2 overloads)]
 
-[endsect]
-
+Write some data to the stream.
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers);
 
-[section:set_password_callback ssl::context_service::set_password_callback]
 
-Set the password callback.
+This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
 
- template<
- typename PasswordCallback>
- boost::system::error_code set_password_callback(
- impl_type & impl,
- PasswordCallback callback,
- boost::system::error_code & ec);
 
+[heading Parameters]
+
 
+[variablelist
+
+[[buffers][The data to be written.]]
 
-[endsect]
+]
 
+[heading Return Value]
+
+The number of bytes written.
 
+[heading Exceptions]
+
 
-[section:set_verify_mode ssl::context_service::set_verify_mode]
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
 
-Set peer verification mode.
+]
 
- boost::system::error_code set_verify_mode(
- impl_type & impl,
- context_base::verify_mode v,
- boost::system::error_code & ec);
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
 
 
@@ -48574,42 +54472,53 @@
 
 
 
-[section:shutdown_service ssl::context_service::shutdown_service]
+[section:overload2 ssl::stream::write_some (2 of 2 overloads)]
 
-Destroy all user-defined handler objects owned by the service.
+Write some data to the stream.
 
- void shutdown_service();
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
+This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
 
-[endsect]
 
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][The data to be written to the stream.]]
 
+[[ec][Set to indicate what error occurred, if any.]]
 
-[section:use_certificate_chain_file ssl::context_service::use_certificate_chain_file]
+]
 
-Use a certificate chain from a file.
+[heading Return Value]
+
+The number of bytes written. Returns 0 if an error occurred.
 
- boost::system::error_code use_certificate_chain_file(
- impl_type & impl,
- const std::string & filename,
- boost::system::error_code & ec);
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:use_certificate_file ssl::context_service::use_certificate_file]
 
-Use a certificate from a file.
+[section:_stream ssl::stream::~stream]
 
- boost::system::error_code use_certificate_file(
- impl_type & impl,
- const std::string & filename,
- context_base::file_format format,
- boost::system::error_code & ec);
+[indexterm2 ~stream..ssl::stream] Destructor.
+
+ ~stream();
 
 
 
@@ -48617,46 +54526,60 @@
 
 
 
-[section:use_private_key_file ssl::context_service::use_private_key_file]
+[endsect]
 
-Use a private key from a file.
+[section:ssl__stream_base ssl::stream_base]
 
- boost::system::error_code use_private_key_file(
- impl_type & impl,
- const std::string & filename,
- context_base::file_format format,
- boost::system::error_code & ec);
+The stream_base class is used as a base for the boost::asio::ssl::stream class template so that we have a common place to define various enums.
 
+ class stream_base
 
 
-[endsect]
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
+ [[link boost_asio.reference.ssl__stream_base.handshake_type [*handshake_type]]]
+ [Different handshake types. ]
+
+ ]
 
-[section:use_rsa_private_key_file ssl::context_service::use_rsa_private_key_file]
+]
 
-Use an RSA private key from a file.
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
- boost::system::error_code use_rsa_private_key_file(
- impl_type & impl,
- const std::string & filename,
- context_base::file_format format,
- boost::system::error_code & ec);
+ [
+ [[link boost_asio.reference.ssl__stream_base._stream_base [*~stream_base]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
 
 
+[section:handshake_type ssl::stream_base::handshake_type]
 
-[endsect]
+[indexterm2 handshake_type..ssl::stream_base] Different handshake types.
 
+ enum handshake_type
 
+[heading Values]
+[variablelist
 
-[section:use_tmp_dh_file ssl::context_service::use_tmp_dh_file]
+ [
+ [client]
+ [Perform handshaking as a client. ]
+ ]
 
-Use the specified file to obtain the temporary Diffie-Hellman parameters.
+ [
+ [server]
+ [Perform handshaking as a server. ]
+ ]
 
- boost::system::error_code use_tmp_dh_file(
- impl_type & impl,
- const std::string & filename,
- boost::system::error_code & ec);
+]
 
 
 
@@ -48664,55 +54587,36 @@
 
 
 
-[endsect]
+[section:_stream_base ssl::stream_base::~stream_base]
 
-[section:ssl__stream ssl::stream]
+[indexterm2 ~stream_base..ssl::stream_base] Protected destructor to prevent deletion through this type.
 
-Provides stream-oriented functionality using SSL.
+ ~stream_base();
 
- template<
- typename Stream,
- typename ``[link boost_asio.reference.Service Service]`` = stream_service>
- class stream :
- public ssl::stream_base
 
 
-[heading Types]
-[table
- [[Name][Description]]
+[endsect]
 
- [
 
- [[link boost_asio.reference.ssl__stream.handshake_type [*handshake_type]]]
- [Different handshake types. ]
-
- ]
 
- [
+[endsect]
 
- [[link boost_asio.reference.ssl__stream.impl_type [*impl_type]]]
- [The native implementation type of the stream. ]
-
- ]
+[section:ssl__stream_service ssl::stream_service]
 
- [
+Default service implementation for an SSL stream.
 
- [[link boost_asio.reference.ssl__stream.lowest_layer_type [*lowest_layer_type]]]
- [The type of the lowest layer. ]
-
- ]
+ class stream_service :
+ public io_service::service
 
- [
 
- [[link boost_asio.reference.ssl__stream.next_layer_type [*next_layer_type]]]
- [The type of the next layer. ]
-
- ]
+[heading Types]
+[table
+ [[Name][Description]]
 
   [
 
- [[link boost_asio.reference.ssl__stream.service_type [*service_type]]]
- [The type of the service that will be used to provide stream operations. ]
+ [[link boost_asio.reference.ssl__stream_service.impl_type [*impl_type]]]
+ [The type of a stream implementation. ]
   
   ]
 
@@ -48723,336 +54627,192 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.ssl__stream.async_handshake [*async_handshake]]]
+ [[link boost_asio.reference.ssl__stream_service.async_handshake [*async_handshake]]]
     [Start an asynchronous SSL handshake. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.async_read_some [*async_read_some]]]
+ [[link boost_asio.reference.ssl__stream_service.async_read_some [*async_read_some]]]
     [Start an asynchronous read. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.async_shutdown [*async_shutdown]]]
+ [[link boost_asio.reference.ssl__stream_service.async_shutdown [*async_shutdown]]]
     [Asynchronously shut down SSL on the stream. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.async_write_some [*async_write_some]]]
+ [[link boost_asio.reference.ssl__stream_service.async_write_some [*async_write_some]]]
     [Start an asynchronous write. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.get_io_service [*get_io_service]]]
- [Get the io_service associated with the object. ]
+ [[link boost_asio.reference.ssl__stream_service.create [*create]]]
+ [Create a new stream implementation. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.handshake [*handshake]]]
- [Perform SSL handshaking. ]
+ [[link boost_asio.reference.ssl__stream_service.destroy [*destroy]]]
+ [Destroy a stream implementation. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.impl [*impl]]]
- [Get the underlying implementation in the native type. ]
+ [[link boost_asio.reference.ssl__stream_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.in_avail [*in_avail]]]
- [Determine the amount of data that may be read without blocking. ]
+ [[link boost_asio.reference.ssl__stream_service.handshake [*handshake]]]
+ [Perform SSL handshaking. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ [[link boost_asio.reference.ssl__stream_service.in_avail [*in_avail]]]
+ [Determine the amount of data that may be read without blocking. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.lowest_layer [*lowest_layer]]]
- [Get a reference to the lowest layer. ]
+ [[link boost_asio.reference.ssl__stream_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.next_layer [*next_layer]]]
- [Get a reference to the next layer. ]
+ [[link boost_asio.reference.ssl__stream_service.null [*null]]]
+ [Return a null stream implementation. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.peek [*peek]]]
+ [[link boost_asio.reference.ssl__stream_service.peek [*peek]]]
     [Peek at the incoming data on the stream. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.read_some [*read_some]]]
+ [[link boost_asio.reference.ssl__stream_service.read_some [*read_some]]]
     [Read some data from the stream. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.shutdown [*shutdown]]]
+ [[link boost_asio.reference.ssl__stream_service.shutdown [*shutdown]]]
     [Shut down SSL on the stream. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.stream [*stream]]]
- [Construct a stream. ]
+ [[link boost_asio.reference.ssl__stream_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream.write_some [*write_some]]]
- [Write some data to the stream. ]
+ [[link boost_asio.reference.ssl__stream_service.stream_service [*stream_service]]]
+ [Construct a new stream service for the specified io_service. ]
   ]
   
   [
- [[link boost_asio.reference.ssl__stream._stream [*~stream]]]
- [Destructor. ]
+ [[link boost_asio.reference.ssl__stream_service.write_some [*write_some]]]
+ [Write some data to the stream. ]
   ]
   
 ]
 
-The stream class template provides asynchronous and blocking stream-oriented functionality using SSL.
-
-
-[heading Thread Safety]
-
-[*Distinct] [*objects:] Safe.
-
-[*Shared] [*objects:] Unsafe.
-
-[heading Example]
-
-To use the SSL stream template with an ip::tcp::socket, you would write:
-
- boost::asio::io_service io_service;
- boost::asio::ssl::context context(io_service, boost::asio::ssl::context::sslv23);
- boost::asio::ssl::stream<boost::asio::ip::tcp::socket> sock(io_service, context);
-
-
+[heading Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.ssl__stream_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
 
+]
 
 
-[section:async_handshake ssl::stream::async_handshake]
+[section:async_handshake ssl::stream_service::async_handshake]
 
-Start an asynchronous SSL handshake.
+[indexterm2 async_handshake..ssl::stream_service] Start an asynchronous SSL handshake.
 
   template<
+ typename Stream,
       typename HandshakeHandler>
   void async_handshake(
- handshake_type type,
+ impl_type & impl,
+ Stream & next_layer,
+ stream_base::handshake_type type,
       HandshakeHandler handler);
 
 
-This function is used to asynchronously perform an SSL handshake on the stream. This function call always returns immediately.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
-
-[[handler][The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
-``
- void handler(
- const boost::system::error_code& error // Result of operation.
- );
-
-``
-]]
-
-]
-
-
 
 [endsect]
 
 
 
-[section:async_read_some ssl::stream::async_read_some]
+[section:async_read_some ssl::stream_service::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..ssl::stream_service] Start an asynchronous read.
 
   template<
+ typename Stream,
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
       typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
   void async_read_some(
+ impl_type & impl,
+ Stream & next_layer,
       const MutableBufferSequence & buffers,
       ReadHandler handler);
 
 
-This function is used to asynchronously read one or more bytes of data from the stream. The function call always returns immediately.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[buffers][The buffers into which the data will be read. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
-
-[[handler][The handler to be called when the read operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes read.
- );
-
-``
-]]
-
-]
-
-[heading Remarks]
-
-The async\_read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.async_read async_read] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
-
-
 
 [endsect]
 
 
 
-[section:async_shutdown ssl::stream::async_shutdown]
+[section:async_shutdown ssl::stream_service::async_shutdown]
 
-Asynchronously shut down SSL on the stream.
+[indexterm2 async_shutdown..ssl::stream_service] Asynchronously shut down SSL on the stream.
 
   template<
+ typename Stream,
       typename ShutdownHandler>
   void async_shutdown(
+ impl_type & impl,
+ Stream & next_layer,
       ShutdownHandler handler);
 
 
-This function is used to asynchronously shut down SSL on the stream. This function call always returns immediately.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[handler][The handler to be called when the handshake operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
-``
- void handler(
- const boost::system::error_code& error // Result of operation.
- );
-
-``
-]]
-
-]
-
-
 
 [endsect]
 
 
 
-[section:async_write_some ssl::stream::async_write_some]
+[section:async_write_some ssl::stream_service::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..ssl::stream_service] Start an asynchronous write.
 
   template<
+ typename Stream,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
       typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
   void async_write_some(
+ impl_type & impl,
+ Stream & next_layer,
       const ConstBufferSequence & buffers,
       WriteHandler handler);
 
 
-This function is used to asynchronously write one or more bytes of data to the stream. The function call always returns immediately.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[buffers][The data to be written to the stream. Although the buffers object may be copied as necessary, ownership of the underlying buffers is retained by the caller, which must guarantee that they remain valid until the handler is called.]]
-
-[[handler][The handler to be called when the write operation completes. Copies will be made of the handler as required. The equivalent function signature of the handler must be:
-``
- void handler(
- const boost::system::error_code& error, // Result of operation.
- std::size_t bytes_transferred // Number of bytes written.
- );
-
-``
-]]
-
-]
-
-[heading Remarks]
-
-The async\_write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.async_write async_write] function if you need to ensure that all data is written before the blocking operation completes.
-
-
-
-[endsect]
-
-
-
-[section:get_io_service ssl::stream::get_io_service]
-
-Get the io_service associated with the object.
-
- boost::asio::io_service & get_io_service();
-
-
-This function may be used to obtain the io_service object that the stream uses to dispatch handlers for asynchronous operations.
-
-
-[heading Return Value]
-
-A reference to the io_service object that stream will use to dispatch handlers. Ownership is not transferred to the caller.
-
-
 
 [endsect]
 
 
-[section:handshake ssl::stream::handshake]
-
-Perform SSL handshaking.
-
- void ``[link boost_asio.reference.ssl__stream.handshake.overload1 handshake]``(
- handshake_type type);
-
- boost::system::error_code ``[link boost_asio.reference.ssl__stream.handshake.overload2 handshake]``(
- handshake_type type,
- boost::system::error_code & ec);
-
-
-[section:overload1 ssl::stream::handshake (1 of 2 overloads)]
-
-Perform SSL handshaking.
-
- void handshake(
- handshake_type type);
-
-
-This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
-
-
-[heading Parameters]
-
-
-[variablelist
-
-[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
-
-]
 
-[heading Exceptions]
-
+[section:create ssl::stream_service::create]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+[indexterm2 create..ssl::stream_service] Create a new stream implementation.
 
-]
+ template<
+ typename Stream,
+ typename Context_Service>
+ void create(
+ impl_type & impl,
+ Stream & next_layer,
+ basic_context< Context_Service > & context);
 
 
 
@@ -49060,83 +54820,72 @@
 
 
 
-[section:overload2 ssl::stream::handshake (2 of 2 overloads)]
-
-Perform SSL handshaking.
-
- boost::system::error_code handshake(
- handshake_type type,
- boost::system::error_code & ec);
-
-
-This function is used to perform SSL handshaking on the stream. The function call will block until handshaking is complete or an error occurs.
+[section:destroy ssl::stream_service::destroy]
 
+[indexterm2 destroy..ssl::stream_service] Destroy a stream implementation.
 
-[heading Parameters]
-
+ template<
+ typename Stream>
+ void destroy(
+ impl_type & impl,
+ Stream & next_layer);
 
-[variablelist
-
-[[type][The type of handshaking to be performed, i.e. as a client or as a server.]]
 
-[[ec][Set to indicate what error occurred, if any. ]]
 
-]
+[endsect]
 
 
 
-[endsect]
+[section:get_io_service ssl::stream_service::get_io_service]
 
 
-[endsect]
+['Inherited from io_service.]
 
+[indexterm2 get_io_service..ssl::stream_service] Get the io_service object that owns the service.
 
-[section:handshake_type ssl::stream::handshake_type]
+ boost::asio::io_service & get_io_service();
 
-Different handshake types.
 
- enum handshake_type
 
-[heading Values]
-[variablelist
+[endsect]
 
- [
- [client]
- [Perform handshaking as a client. ]
- ]
 
- [
- [server]
- [Perform handshaking as a server. ]
- ]
 
-]
+[section:handshake ssl::stream_service::handshake]
+
+[indexterm2 handshake..ssl::stream_service] Perform SSL handshaking.
 
+ template<
+ typename Stream>
+ boost::system::error_code handshake(
+ impl_type & impl,
+ Stream & next_layer,
+ stream_base::handshake_type type,
+ boost::system::error_code & ec);
 
 
-[endsect]
 
+[endsect]
 
 
-[section:impl ssl::stream::impl]
 
-Get the underlying implementation in the native type.
+[section:id ssl::stream_service::id]
 
- impl_type impl();
+[indexterm2 id..ssl::stream_service] The unique service identifier.
 
+ static boost::asio::io_service::id id;
 
-This function may be used to obtain the underlying implementation of the context. This is intended to allow access to stream functionality that is not otherwise provided.
 
 
 [endsect]
 
 
 
-[section:impl_type ssl::stream::impl_type]
+[section:impl_type ssl::stream_service::impl_type]
 
-The native implementation type of the stream.
+[indexterm2 impl_type..ssl::stream_service] The type of a stream implementation.
 
- typedef service_type::impl_type impl_type;
+ typedef implementation_defined impl_type;
 
 
 
@@ -49144,38 +54893,32 @@
 [endsect]
 
 
-[section:in_avail ssl::stream::in_avail]
 
-Determine the amount of data that may be read without blocking.
+[section:in_avail ssl::stream_service::in_avail]
 
- std::size_t ``[link boost_asio.reference.ssl__stream.in_avail.overload1 in_avail]``();
+[indexterm2 in_avail..ssl::stream_service] Determine the amount of data that may be read without blocking.
 
- std::size_t ``[link boost_asio.reference.ssl__stream.in_avail.overload2 in_avail]``(
+ template<
+ typename Stream>
+ std::size_t in_avail(
+ impl_type & impl,
+ Stream & next_layer,
       boost::system::error_code & ec);
 
 
-[section:overload1 ssl::stream::in_avail (1 of 2 overloads)]
-
-Determine the amount of data that may be read without blocking.
 
- std::size_t in_avail();
+[endsect]
 
 
-This function is used to determine the amount of data, in bytes, that may be read from the stream without blocking.
 
+[section:io_service ssl::stream_service::io_service]
 
-[heading Return Value]
-
-The number of bytes of data that can be read without blocking.
 
-[heading Exceptions]
-
+['Inherited from io_service.]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
+[indexterm2 io_service..ssl::stream_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
-]
+ boost::asio::io_service & io_service();
 
 
 
@@ -49183,84 +54926,91 @@
 
 
 
-[section:overload2 ssl::stream::in_avail (2 of 2 overloads)]
-
-Determine the amount of data that may be read without blocking.
+[section:null ssl::stream_service::null]
 
- std::size_t in_avail(
- boost::system::error_code & ec);
+[indexterm2 null..ssl::stream_service] Return a null stream implementation.
 
+ impl_type null() const;
 
-This function is used to determine the amount of data, in bytes, that may be read from the stream without blocking.
 
 
-[heading Parameters]
-
+[endsect]
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes of data that can be read without blocking.
+[section:peek ssl::stream_service::peek]
 
+[indexterm2 peek..ssl::stream_service] Peek at the incoming data on the stream.
 
+ template<
+ typename Stream,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t peek(
+ impl_type & impl,
+ Stream & next_layer,
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-[endsect]
 
 
 [endsect]
 
 
-[section:io_service ssl::stream::io_service]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[section:read_some ssl::stream_service::read_some]
 
- boost::asio::io_service & io_service();
+[indexterm2 read_some..ssl::stream_service] Read some data from the stream.
 
+ template<
+ typename Stream,
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ impl_type & impl,
+ Stream & next_layer,
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-This function may be used to obtain the io_service object that the stream uses to dispatch handlers for asynchronous operations.
 
 
-[heading Return Value]
-
-A reference to the io_service object that stream will use to dispatch handlers. Ownership is not transferred to the caller.
+[endsect]
 
 
 
-[endsect]
+[section:shutdown ssl::stream_service::shutdown]
 
+[indexterm2 shutdown..ssl::stream_service] Shut down SSL on the stream.
 
+ template<
+ typename Stream>
+ boost::system::error_code shutdown(
+ impl_type & impl,
+ Stream & next_layer,
+ boost::system::error_code & ec);
 
-[section:lowest_layer ssl::stream::lowest_layer]
 
-Get a reference to the lowest layer.
 
- lowest_layer_type & lowest_layer();
+[endsect]
 
 
-This function returns a reference to the lowest layer in a stack of stream layers.
 
+[section:shutdown_service ssl::stream_service::shutdown_service]
 
-[heading Return Value]
-
-A reference to the lowest layer in the stack of stream layers. Ownership is not transferred to the caller.
+[indexterm2 shutdown_service..ssl::stream_service] Destroy all user-defined handler objects owned by the service.
 
+ void shutdown_service();
 
 
-[endsect]
 
+[endsect]
 
 
-[section:lowest_layer_type ssl::stream::lowest_layer_type]
 
-The type of the lowest layer.
+[section:stream_service ssl::stream_service::stream_service]
 
- typedef next_layer_type::lowest_layer_type lowest_layer_type;
+[indexterm2 stream_service..ssl::stream_service] Construct a new stream service for the specified io_service.
 
+ stream_service(
+ boost::asio::io_service & io_service);
 
 
 
@@ -49268,396 +55018,534 @@
 
 
 
-[section:next_layer ssl::stream::next_layer]
-
-Get a reference to the next layer.
+[section:write_some ssl::stream_service::write_some]
 
- next_layer_type & next_layer();
+[indexterm2 write_some..ssl::stream_service] Write some data to the stream.
 
+ template<
+ typename Stream,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ impl_type & impl,
+ Stream & next_layer,
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-This function returns a reference to the next layer in a stack of stream layers.
 
 
-[heading Return Value]
-
-A reference to the next layer in the stack of stream layers. Ownership is not transferred to the caller.
+[endsect]
 
 
 
 [endsect]
 
 
+[section:strand strand]
+
+[indexterm1 strand] Typedef for backwards compatibility.
 
-[section:next_layer_type ssl::stream::next_layer_type]
+ typedef boost::asio::io_service::strand strand;
 
-The type of the next layer.
 
- typedef boost::remove_reference< Stream >::type next_layer_type;
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.io_service__strand.dispatch [*dispatch]]]
+ [Request the strand to invoke the given handler. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the strand. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the strand. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.post [*post]]]
+ [Request the strand to invoke the given handler and return immediately. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.strand [*strand]]]
+ [Constructor. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand.wrap [*wrap]]]
+ [Create a new handler that automatically dispatches the wrapped handler on the strand. ]
+ ]
+
+ [
+ [[link boost_asio.reference.io_service__strand._strand [*~strand]]]
+ [Destructor. ]
+ ]
+
+]
 
+The io_service::strand class provides the ability to post and dispatch handlers with the guarantee that none of those handlers will execute concurrently.
 
 
-[endsect]
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
+[*Shared] [*objects:] Safe.
 
-[section:peek ssl::stream::peek]
 
-Peek at the incoming data on the stream.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.peek.overload1 peek]``(
- const MutableBufferSequence & buffers);
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.peek.overload2 peek]``(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+[endsect]
 
 
-[section:overload1 ssl::stream::peek (1 of 2 overloads)]
+[section:stream_socket_service stream_socket_service]
 
-Peek at the incoming data on the stream.
+Default service implementation for a stream socket.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t peek(
- const MutableBufferSequence & buffers);
+ typename ``[link boost_asio.reference.Protocol Protocol]``>
+ class stream_socket_service :
+ public io_service::service
 
 
-This function is used to peek at the incoming data on the stream, without removing it from the input queue. The function call will block until data has been read successfully or an error occurs.
+[heading Types]
+[table
+ [[Name][Description]]
 
+ [
 
-[heading Parameters]
-
+ [[link boost_asio.reference.stream_socket_service.endpoint_type [*endpoint_type]]]
+ [The endpoint type. ]
+
+ ]
 
-[variablelist
+ [
+
+ [[link boost_asio.reference.stream_socket_service.implementation_type [*implementation_type]]]
+ [The type of a stream socket implementation. ]
   
-[[buffers][The buffers into which the data will be read.]]
+ ]
 
-]
+ [
 
-[heading Return Value]
-
-The number of bytes read.
+ [[link boost_asio.reference.stream_socket_service.native_type [*native_type]]]
+ [The native socket type. ]
+
+ ]
 
-[heading Exceptions]
-
+ [
 
-[variablelist
+ [[link boost_asio.reference.stream_socket_service.protocol_type [*protocol_type]]]
+ [The protocol type. ]
   
-[[boost::system::system_error][Thrown on failure. ]]
+ ]
 
 ]
 
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.assign [*assign]]]
+ [Assign an existing native socket to a stream socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.async_connect [*async_connect]]]
+ [Start an asynchronous connect. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.async_receive [*async_receive]]]
+ [Start an asynchronous receive. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.async_send [*async_send]]]
+ [Start an asynchronous send. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.at_mark [*at_mark]]]
+ [Determine whether the socket is at the out-of-band data mark. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.available [*available]]]
+ [Determine the number of bytes available for reading. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.bind [*bind]]]
+ [Bind the stream socket to the specified local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.close [*close]]]
+ [Close a stream socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.connect [*connect]]]
+ [Connect the stream socket to the specified endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.construct [*construct]]]
+ [Construct a new stream socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.destroy [*destroy]]]
+ [Destroy a stream socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.get_option [*get_option]]]
+ [Get a socket option. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.io_control [*io_control]]]
+ [Perform an IO control command on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.is_open [*is_open]]]
+ [Determine whether the socket is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.local_endpoint [*local_endpoint]]]
+ [Get the local endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.native [*native]]]
+ [Get the native socket implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.open [*open]]]
+ [Open a stream socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.receive [*receive]]]
+ [Receive some data from the peer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.remote_endpoint [*remote_endpoint]]]
+ [Get the remote endpoint. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.send [*send]]]
+ [Send the given data to the peer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.set_option [*set_option]]]
+ [Set a socket option. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.shutdown [*shutdown]]]
+ [Disable sends or receives on the socket. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.stream_socket_service.stream_socket_service [*stream_socket_service]]]
+ [Construct a new stream socket service for the specified io_service. ]
+ ]
+
+]
 
+[heading Data Members]
+[table
+ [[Name][Description]]
 
-[endsect]
+ [
+ [[link boost_asio.reference.stream_socket_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
 
+]
 
 
-[section:overload2 ssl::stream::peek (2 of 2 overloads)]
+[section:assign stream_socket_service::assign]
 
-Peek at the incoming data on the stream.
+[indexterm2 assign..stream_socket_service] Assign an existing native socket to a stream socket.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t peek(
- const MutableBufferSequence & buffers,
+ boost::system::error_code assign(
+ implementation_type & impl,
+ const protocol_type & protocol,
+ const native_type & native_socket,
       boost::system::error_code & ec);
 
 
-This function is used to peek at the incoming data on the stream, withoutxi removing it from the input queue. The function call will block until data has been read successfully or an error occurs.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[buffers][The buffers into which the data will be read.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[section:async_connect stream_socket_service::async_connect]
 
-]
+[indexterm2 async_connect..stream_socket_service] Start an asynchronous connect.
 
-[heading Return Value]
-
-The number of bytes read. Returns 0 if an error occurred.
+ template<
+ typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
+ void async_connect(
+ implementation_type & impl,
+ const endpoint_type & peer_endpoint,
+ ConnectHandler handler);
 
 
 
 [endsect]
 
 
-[endsect]
-
-[section:read_some ssl::stream::read_some]
 
-Read some data from the stream.
+[section:async_receive stream_socket_service::async_receive]
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.read_some.overload1 read_some]``(
- const MutableBufferSequence & buffers);
+[indexterm2 async_receive..stream_socket_service] Start an asynchronous receive.
 
   template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.read_some.overload2 read_some]``(
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_receive(
+ implementation_type & impl,
       const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
-
-
-[section:overload1 ssl::stream::read_some (1 of 2 overloads)]
+ socket_base::message_flags flags,
+ ReadHandler handler);
 
-Read some data from the stream.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers);
 
+[endsect]
 
-This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
 
 
-[heading Parameters]
-
+[section:async_send stream_socket_service::async_send]
 
-[variablelist
-
-[[buffers][The buffers into which the data will be read.]]
+[indexterm2 async_send..stream_socket_service] Start an asynchronous send.
 
-]
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_send(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ WriteHandler handler);
 
-[heading Return Value]
-
-The number of bytes read.
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
+[endsect]
 
-]
 
-[heading Remarks]
-
-The read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
+[section:at_mark stream_socket_service::at_mark]
 
+[indexterm2 at_mark..stream_socket_service] Determine whether the socket is at the out-of-band data mark.
 
-[endsect]
+ bool at_mark(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
 
 
-[section:overload2 ssl::stream::read_some (2 of 2 overloads)]
+[endsect]
 
-Read some data from the stream.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
 
+[section:available stream_socket_service::available]
 
-This function is used to read data from the stream. The function call will block until one or more bytes of data has been read successfully, or until an error occurs.
+[indexterm2 available..stream_socket_service] Determine the number of bytes available for reading.
 
+ std::size_t available(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
-[heading Parameters]
-
 
-[variablelist
-
-[[buffers][The buffers into which the data will be read.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[endsect]
 
-]
 
-[heading Return Value]
-
-The number of bytes read. Returns 0 if an error occurred.
 
-[heading Remarks]
-
-The read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+[section:bind stream_socket_service::bind]
 
+[indexterm2 bind..stream_socket_service] 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);
 
-[endsect]
 
 
 [endsect]
 
 
-[section:service_type ssl::stream::service_type]
 
-The type of the service that will be used to provide stream operations.
+[section:cancel stream_socket_service::cancel]
 
- typedef Service service_type;
+[indexterm2 cancel..stream_socket_service] Cancel all asynchronous operations associated with the socket.
 
+ boost::system::error_code cancel(
+ implementation_type & impl,
+ boost::system::error_code & ec);
 
 
 
 [endsect]
 
 
-[section:shutdown ssl::stream::shutdown]
 
-Shut down SSL on the stream.
+[section:close stream_socket_service::close]
 
- void ``[link boost_asio.reference.ssl__stream.shutdown.overload1 shutdown]``();
+[indexterm2 close..stream_socket_service] Close a stream socket implementation.
 
- boost::system::error_code ``[link boost_asio.reference.ssl__stream.shutdown.overload2 shutdown]``(
+ boost::system::error_code close(
+ implementation_type & impl,
       boost::system::error_code & ec);
 
 
-[section:overload1 ssl::stream::shutdown (1 of 2 overloads)]
 
-Shut down SSL on the stream.
+[endsect]
 
- void shutdown();
 
 
-This function is used to shut down SSL on the stream. The function call will block until SSL has been shut down or an error occurs.
+[section:connect stream_socket_service::connect]
 
+[indexterm2 connect..stream_socket_service] Connect the stream socket to the specified endpoint.
 
-[heading Exceptions]
-
+ boost::system::error_code connect(
+ implementation_type & impl,
+ const endpoint_type & peer_endpoint,
+ boost::system::error_code & ec);
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. ]]
 
-]
 
+[endsect]
 
 
-[endsect]
 
+[section:construct stream_socket_service::construct]
 
+[indexterm2 construct..stream_socket_service] Construct a new stream socket implementation.
 
-[section:overload2 ssl::stream::shutdown (2 of 2 overloads)]
+ void construct(
+ implementation_type & impl);
 
-Shut down SSL on the stream.
 
- boost::system::error_code shutdown(
- boost::system::error_code & ec);
 
+[endsect]
 
-This function is used to shut down SSL on the stream. The function call will block until SSL has been shut down or an error occurs.
 
 
-[heading Parameters]
-
+[section:destroy stream_socket_service::destroy]
 
-[variablelist
-
-[[ec][Set to indicate what error occurred, if any. ]]
+[indexterm2 destroy..stream_socket_service] Destroy a stream socket implementation.
 
-]
+ void destroy(
+ implementation_type & impl);
 
 
 
 [endsect]
 
 
-[endsect]
 
+[section:endpoint_type stream_socket_service::endpoint_type]
 
-[section:stream ssl::stream::stream]
+[indexterm2 endpoint_type..stream_socket_service] The endpoint type.
 
-Construct a stream.
+ typedef Protocol::endpoint endpoint_type;
 
- template<
- typename Arg,
- typename Context_Service>
- stream(
- Arg & arg,
- basic_context< Context_Service > & context);
 
 
-This constructor creates a stream and initialises the underlying stream object.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[arg][The argument to be passed to initialise the underlying stream.]]
 
-[[context][The SSL context to be used for the stream. ]]
+[section:get_io_service stream_socket_service::get_io_service]
 
-]
+
+['Inherited from io_service.]
+
+[indexterm2 get_io_service..stream_socket_service] Get the io_service object that owns the service.
+
+ boost::asio::io_service & get_io_service();
 
 
 
 [endsect]
 
 
-[section:write_some ssl::stream::write_some]
 
-Write some data to the stream.
+[section:get_option stream_socket_service::get_option]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.write_some.overload1 write_some]``(
- const ConstBufferSequence & buffers);
+[indexterm2 get_option..stream_socket_service] Get a socket option.
 
   template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.ssl__stream.write_some.overload2 write_some]``(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+ typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
+ boost::system::error_code get_option(
+ const implementation_type & impl,
+ GettableSocketOption & option,
+ boost::system::error_code & ec) const;
 
 
-[section:overload1 ssl::stream::write_some (1 of 2 overloads)]
 
-Write some data to the stream.
+[endsect]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers);
 
 
-This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
+[section:id stream_socket_service::id]
 
+[indexterm2 id..stream_socket_service] The unique service identifier.
 
-[heading Parameters]
-
+ static boost::asio::io_service::id id;
 
-[variablelist
-
-[[buffers][The data to be written.]]
 
-]
 
-[heading Return Value]
-
-The number of bytes written.
+[endsect]
 
-[heading Exceptions]
-
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure.]]
 
-]
+[section:implementation_type stream_socket_service::implementation_type]
+
+[indexterm2 implementation_type..stream_socket_service] The type of a stream socket implementation.
+
+ typedef implementation_defined implementation_type;
 
-[heading Remarks]
-
-The write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
 
 
@@ -49665,53 +55553,58 @@
 
 
 
-[section:overload2 ssl::stream::write_some (2 of 2 overloads)]
+[section:io_control stream_socket_service::io_control]
 
-Write some data to the stream.
+[indexterm2 io_control..stream_socket_service] Perform an IO control command on the socket.
 
   template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers,
+ typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
+ boost::system::error_code io_control(
+ implementation_type & impl,
+ IoControlCommand & command,
       boost::system::error_code & ec);
 
 
-This function is used to write data on the stream. The function call will block until one or more bytes of data has been written successfully, or until an error occurs.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[buffers][The data to be written to the stream.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[section:io_service stream_socket_service::io_service]
 
-]
 
-[heading Return Value]
-
-The number of bytes written. Returns 0 if an error occurred.
+['Inherited from io_service.]
 
-[heading Remarks]
-
-The write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+[indexterm2 io_service..stream_socket_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
+
+ boost::asio::io_service & io_service();
 
 
 
 [endsect]
 
 
+
+[section:is_open stream_socket_service::is_open]
+
+[indexterm2 is_open..stream_socket_service] Determine whether the socket is open.
+
+ bool is_open(
+ const implementation_type & impl) const;
+
+
+
 [endsect]
 
 
-[section:_stream ssl::stream::~stream]
 
-Destructor.
+[section:local_endpoint stream_socket_service::local_endpoint]
+
+[indexterm2 local_endpoint..stream_socket_service] Get the local endpoint.
 
- ~stream();
+ endpoint_type local_endpoint(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
 
 
@@ -49719,60 +55612,40 @@
 
 
 
-[endsect]
+[section:native stream_socket_service::native]
 
-[section:ssl__stream_base ssl::stream_base]
+[indexterm2 native..stream_socket_service] Get the native socket implementation.
 
-The stream_base class is used as a base for the boost::asio::ssl::stream class template so that we have a common place to define various enums.
+ native_type native(
+ implementation_type & impl);
 
- class stream_base
 
 
-[heading Types]
-[table
- [[Name][Description]]
+[endsect]
 
- [
 
- [[link boost_asio.reference.ssl__stream_base.handshake_type [*handshake_type]]]
- [Different handshake types. ]
-
- ]
 
-]
+[section:native_type stream_socket_service::native_type]
 
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
+[indexterm2 native_type..stream_socket_service] The native socket type.
 
- [
- [[link boost_asio.reference.ssl__stream_base._stream_base [*~stream_base]]]
- [Protected destructor to prevent deletion through this type. ]
- ]
-
-]
+ typedef implementation_defined native_type;
 
 
-[section:handshake_type ssl::stream_base::handshake_type]
 
-Different handshake types.
 
- enum handshake_type
+[endsect]
 
-[heading Values]
-[variablelist
 
- [
- [client]
- [Perform handshaking as a client. ]
- ]
 
- [
- [server]
- [Perform handshaking as a server. ]
- ]
+[section:open stream_socket_service::open]
 
-]
+[indexterm2 open..stream_socket_service] Open a stream socket.
+
+ boost::system::error_code open(
+ implementation_type & impl,
+ const protocol_type & protocol,
+ boost::system::error_code & ec);
 
 
 
@@ -49780,11 +55653,12 @@
 
 
 
-[section:_stream_base ssl::stream_base::~stream_base]
+[section:protocol_type stream_socket_service::protocol_type]
 
-Protected destructor to prevent deletion through this type.
+[indexterm2 protocol_type..stream_socket_service] The protocol type.
+
+ typedef Protocol protocol_type;
 
- ~stream_base();
 
 
 
@@ -49792,144 +55666,49 @@
 
 
 
-[endsect]
+[section:receive stream_socket_service::receive]
 
-[section:ssl__stream_service ssl::stream_service]
+[indexterm2 receive..stream_socket_service] Receive some data from the peer.
 
-Default service implementation for an SSL stream.
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t receive(
+ implementation_type & impl,
+ const MutableBufferSequence & buffers,
+ socket_base::message_flags flags,
+ boost::system::error_code & ec);
 
- class stream_service :
- public io_service::service
 
 
-[heading Types]
-[table
- [[Name][Description]]
+[endsect]
 
- [
 
- [[link boost_asio.reference.ssl__stream_service.impl_type [*impl_type]]]
- [The type of a stream implementation. ]
-
- ]
 
-]
+[section:remote_endpoint stream_socket_service::remote_endpoint]
 
-[heading Member Functions]
-[table
- [[Name][Description]]
+[indexterm2 remote_endpoint..stream_socket_service] Get the remote endpoint.
 
- [
- [[link boost_asio.reference.ssl__stream_service.async_handshake [*async_handshake]]]
- [Start an asynchronous SSL handshake. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.async_read_some [*async_read_some]]]
- [Start an asynchronous read. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.async_shutdown [*async_shutdown]]]
- [Asynchronously shut down SSL on the stream. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.async_write_some [*async_write_some]]]
- [Start an asynchronous write. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.create [*create]]]
- [Create a new stream implementation. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.destroy [*destroy]]]
- [Destroy a stream implementation. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.handshake [*handshake]]]
- [Perform SSL handshaking. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.in_avail [*in_avail]]]
- [Determine the amount of data that may be read without blocking. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.null [*null]]]
- [Return a null stream implementation. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.peek [*peek]]]
- [Peek at the incoming data on the stream. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.read_some [*read_some]]]
- [Read some data from the stream. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.shutdown [*shutdown]]]
- [Shut down SSL on the stream. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.stream_service [*stream_service]]]
- [Construct a new stream service for the specified io_service. ]
- ]
-
- [
- [[link boost_asio.reference.ssl__stream_service.write_some [*write_some]]]
- [Write some data to the stream. ]
- ]
-
-]
+ endpoint_type remote_endpoint(
+ const implementation_type & impl,
+ boost::system::error_code & ec) const;
 
-[heading Data Members]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.ssl__stream_service.id [*id]]]
- [The unique service identifier. ]
- ]
 
-]
+[endsect]
 
 
-[section:async_handshake ssl::stream_service::async_handshake]
 
-Start an asynchronous SSL handshake.
+[section:send stream_socket_service::send]
+
+[indexterm2 send..stream_socket_service] Send the given data to the peer.
 
   template<
- typename Stream,
- typename HandshakeHandler>
- void async_handshake(
- impl_type & impl,
- Stream & next_layer,
- stream_base::handshake_type type,
- HandshakeHandler handler);
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t send(
+ implementation_type & impl,
+ const ConstBufferSequence & buffers,
+ socket_base::message_flags flags,
+ boost::system::error_code & ec);
 
 
 
@@ -49937,19 +55716,16 @@
 
 
 
-[section:async_read_some ssl::stream_service::async_read_some]
+[section:set_option stream_socket_service::set_option]
 
-Start an asynchronous read.
+[indexterm2 set_option..stream_socket_service] Set a socket option.
 
   template<
- typename Stream,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_read_some(
- impl_type & impl,
- Stream & next_layer,
- const MutableBufferSequence & buffers,
- ReadHandler handler);
+ typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
+ boost::system::error_code set_option(
+ implementation_type & impl,
+ const SettableSocketOption & option,
+ boost::system::error_code & ec);
 
 
 
@@ -49957,17 +55733,14 @@
 
 
 
-[section:async_shutdown ssl::stream_service::async_shutdown]
+[section:shutdown stream_socket_service::shutdown]
 
-Asynchronously shut down SSL on the stream.
+[indexterm2 shutdown..stream_socket_service] Disable sends or receives on the socket.
 
- template<
- typename Stream,
- typename ShutdownHandler>
- void async_shutdown(
- impl_type & impl,
- Stream & next_layer,
- ShutdownHandler handler);
+ boost::system::error_code shutdown(
+ implementation_type & impl,
+ socket_base::shutdown_type what,
+ boost::system::error_code & ec);
 
 
 
@@ -49975,19 +55748,11 @@
 
 
 
-[section:async_write_some ssl::stream_service::async_write_some]
+[section:shutdown_service stream_socket_service::shutdown_service]
 
-Start an asynchronous write.
+[indexterm2 shutdown_service..stream_socket_service] Destroy all user-defined handler objects owned by the service.
 
- template<
- typename Stream,
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_write_some(
- impl_type & impl,
- Stream & next_layer,
- const ConstBufferSequence & buffers,
- WriteHandler handler);
+ void shutdown_service();
 
 
 
@@ -49995,17 +55760,12 @@
 
 
 
-[section:create ssl::stream_service::create]
+[section:stream_socket_service stream_socket_service::stream_socket_service]
 
-Create a new stream implementation.
+[indexterm2 stream_socket_service..stream_socket_service] Construct a new stream socket service for the specified io_service.
 
- template<
- typename Stream,
- typename Context_Service>
- void create(
- impl_type & impl,
- Stream & next_layer,
- basic_context< Context_Service > & context);
+ stream_socket_service(
+ boost::asio::io_service & io_service);
 
 
 
@@ -50013,60 +55773,170 @@
 
 
 
-[section:destroy ssl::stream_service::destroy]
+[endsect]
 
-Destroy a stream implementation.
 
- template<
- typename Stream>
- void destroy(
- impl_type & impl,
- Stream & next_layer);
+[section:streambuf streambuf]
 
+[indexterm1 streambuf] Typedef for the typical usage of basic_streambuf.
 
+ typedef basic_streambuf streambuf;
 
-[endsect]
 
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.basic_streambuf.const_buffers_type [*const_buffers_type]]]
+ [The type used to represent the get area as a list of buffers. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.basic_streambuf.mutable_buffers_type [*mutable_buffers_type]]]
+ [The type used to represent the put area as a list of buffers. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.basic_streambuf [*basic_streambuf]]]
+ [Construct a buffer with a specified maximum size. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.commit [*commit]]]
+ [Move the start of the put area by the specified number of characters. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.consume [*consume]]]
+ [Move the start of the get area by the specified number of characters. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.data [*data]]]
+ [Get a list of buffers that represents the get area. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.max_size [*max_size]]]
+ [Return the maximum size of the buffer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.prepare [*prepare]]]
+ [Get a list of buffers that represents the put area, with the given size. ]
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.size [*size]]]
+ [Return the size of the get area in characters. ]
+ ]
+
+]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
-[section:get_io_service ssl::stream_service::get_io_service]
+ [
+ [[link boost_asio.reference.basic_streambuf.overflow [*overflow]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.reserve [*reserve]]]
+ []
+ ]
+
+ [
+ [[link boost_asio.reference.basic_streambuf.underflow [*underflow]]]
+ []
+ ]
+
+]
 
 
-['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[endsect]
 
- boost::asio::io_service & get_io_service();
 
+[section:time_traits_lt__ptime__gt_ time_traits< boost::posix_time::ptime >]
 
+Time traits specialised for posix_time.
 
-[endsect]
+ template<>
+ struct time_traits< boost::posix_time::ptime >
 
 
+[heading Types]
+[table
+ [[Name][Description]]
 
-[section:handshake ssl::stream_service::handshake]
+ [
 
-Perform SSL handshaking.
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.duration_type [*duration_type]]]
+ [The duration type. ]
+
+ ]
 
- template<
- typename Stream>
- boost::system::error_code handshake(
- impl_type & impl,
- Stream & next_layer,
- stream_base::handshake_type type,
- boost::system::error_code & ec);
+ [
 
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.time_type [*time_type]]]
+ [The time type. ]
+
+ ]
 
+]
 
-[endsect]
+[heading Member Functions]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.add [*add]]]
+ [Add a duration to a time. ]
+ ]
+
+ [
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.less_than [*less_than]]]
+ [Test whether one time is less than another. ]
+ ]
+
+ [
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.now [*now]]]
+ [Get the current time. ]
+ ]
+
+ [
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.subtract [*subtract]]]
+ [Subtract one time from another. ]
+ ]
+
+ [
+ [[link boost_asio.reference.time_traits_lt__ptime__gt_.to_posix_duration [*to_posix_duration]]]
+ [Convert to POSIX duration type. ]
+ ]
+
+]
 
 
-[section:id ssl::stream_service::id]
+[section:add time_traits< boost::posix_time::ptime >::add]
 
-The unique service identifier.
+[indexterm2 add..time_traits< boost::posix_time::ptime >] Add a duration to a time.
 
- static boost::asio::io_service::id id;
+ static time_type add(
+ const time_type & t,
+ const duration_type & d);
 
 
 
@@ -50074,11 +55944,11 @@
 
 
 
-[section:impl_type ssl::stream_service::impl_type]
+[section:duration_type time_traits< boost::posix_time::ptime >::duration_type]
 
-The type of a stream implementation.
+[indexterm2 duration_type..time_traits< boost::posix_time::ptime >] The duration type.
 
- typedef implementation_defined impl_type;
+ typedef boost::posix_time::time_duration duration_type;
 
 
 
@@ -50087,16 +55957,13 @@
 
 
 
-[section:in_avail ssl::stream_service::in_avail]
+[section:less_than time_traits< boost::posix_time::ptime >::less_than]
 
-Determine the amount of data that may be read without blocking.
+[indexterm2 less_than..time_traits< boost::posix_time::ptime >] Test whether one time is less than another.
 
- template<
- typename Stream>
- std::size_t in_avail(
- impl_type & impl,
- Stream & next_layer,
- boost::system::error_code & ec);
+ static bool less_than(
+ const time_type & t1,
+ const time_type & t2);
 
 
 
@@ -50104,14 +55971,11 @@
 
 
 
-[section:io_service ssl::stream_service::io_service]
-
-
-['Inherited from io_service.]
+[section:now time_traits< boost::posix_time::ptime >::now]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 now..time_traits< boost::posix_time::ptime >] Get the current time.
 
- boost::asio::io_service & io_service();
+ static time_type now();
 
 
 
@@ -50119,11 +55983,13 @@
 
 
 
-[section:null ssl::stream_service::null]
+[section:subtract time_traits< boost::posix_time::ptime >::subtract]
 
-Return a null stream implementation.
+[indexterm2 subtract..time_traits< boost::posix_time::ptime >] Subtract one time from another.
 
- impl_type null() const;
+ static duration_type subtract(
+ const time_type & t1,
+ const time_type & t2);
 
 
 
@@ -50131,18 +55997,12 @@
 
 
 
-[section:peek ssl::stream_service::peek]
+[section:time_type time_traits< boost::posix_time::ptime >::time_type]
 
-Peek at the incoming data on the stream.
+[indexterm2 time_type..time_traits< boost::posix_time::ptime >] The time type.
+
+ typedef boost::posix_time::ptime time_type;
 
- template<
- typename Stream,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t peek(
- impl_type & impl,
- Stream & next_layer,
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
 
 
 
@@ -50150,18 +56010,12 @@
 
 
 
-[section:read_some ssl::stream_service::read_some]
+[section:to_posix_duration time_traits< boost::posix_time::ptime >::to_posix_duration]
 
-Read some data from the stream.
+[indexterm2 to_posix_duration..time_traits< boost::posix_time::ptime >] Convert to POSIX duration type.
 
- template<
- typename Stream,
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- impl_type & impl,
- Stream & next_layer,
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+ static boost::posix_time::time_duration to_posix_duration(
+ const duration_type & d);
 
 
 
@@ -50169,141 +56023,123 @@
 
 
 
-[section:shutdown ssl::stream_service::shutdown]
-
-Shut down SSL on the stream.
+[endsect]
 
- template<
- typename Stream>
- boost::system::error_code shutdown(
- impl_type & impl,
- Stream & next_layer,
- boost::system::error_code & ec);
 
+[section:transfer_all transfer_all]
 
+[indexterm1 transfer_all] 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.
 
-[endsect]
+ unspecified transfer_all();
 
 
+This function is used to create an object, of unspecified type, that meets CompletionCondition requirements.
 
-[section:shutdown_service ssl::stream_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[heading Example]
+
+Reading until a buffer is full:
 
- void shutdown_service();
+ 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
+ }
 
 
 
-[endsect]
 
 
 
-[section:stream_service ssl::stream_service::stream_service]
+[endsect]
 
-Construct a new stream service for the specified io_service.
 
- stream_service(
- boost::asio::io_service & io_service);
 
+[section:transfer_at_least transfer_at_least]
 
+[indexterm1 transfer_at_least] 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.
 
-[endsect]
+ unspecified transfer_at_least(
+ std::size_t minimum);
 
 
+This function is used to create an object, of unspecified type, that meets CompletionCondition requirements.
 
-[section:write_some ssl::stream_service::write_some]
 
-Write some data to the stream.
+[heading Example]
+
+Reading until a buffer is full or contains at least 64 bytes:
 
- template<
- typename Stream,
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- impl_type & impl,
- Stream & next_layer,
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+ 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
+ }
 
 
 
-[endsect]
 
 
 
 [endsect]
 
 
-[section:strand strand]
 
-Typedef for backwards compatibility.
+[section:use_service use_service]
 
- typedef boost::asio::io_service::strand strand;
+[indexterm1 use_service]
 
+ template<
+ typename ``[link boost_asio.reference.Service Service]``>
+ Service & use_service(
+ io_service & ios);
 
-[heading Member Functions]
-[table
- [[Name][Description]]
 
- [
- [[link boost_asio.reference.io_service__strand.dispatch [*dispatch]]]
- [Request the strand to invoke the given handler. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.get_io_service [*get_io_service]]]
- [Get the io_service associated with the strand. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service associated with the strand. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.post [*post]]]
- [Request the strand to invoke the given handler and return immediately. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.strand [*strand]]]
- [Constructor. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand.wrap [*wrap]]]
- [Create a new handler that automatically dispatches the wrapped handler on the strand. ]
- ]
-
- [
- [[link boost_asio.reference.io_service__strand._strand [*~strand]]]
- [Destructor. ]
- ]
-
-]
+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.
 
-The io_service::strand class provides the ability to post and dispatch handlers with the guarantee that none of those handlers will execute concurrently.
 
+[heading Parameters]
+
 
-[heading Thread Safety]
+[variablelist
   
-[*Distinct] [*objects:] Safe.
+[[ios][The io\_service object that owns the service.]]
 
-[*Shared] [*objects:] Safe.
+]
 
+[heading Return Value]
+
+The service interface implementing the specified service type. Ownership of the service interface is not transferred to the caller.
 
 
 
 [endsect]
 
 
-[section:stream_socket_service stream_socket_service]
+[section:windows__basic_handle windows::basic_handle]
 
-Default service implementation for a stream socket.
+Provides Windows handle functionality.
 
   template<
- typename ``[link boost_asio.reference.Protocol Protocol]``>
- class stream_socket_service :
- public io_service::service
+ typename ``[link boost_asio.reference.HandleService HandleService]``>
+ class basic_handle :
+ public basic_io_object< HandleService >
 
 
 [heading Types]
@@ -50312,29 +56148,29 @@
 
   [
 
- [[link boost_asio.reference.stream_socket_service.endpoint_type [*endpoint_type]]]
- [The endpoint type. ]
+ [[link boost_asio.reference.windows__basic_handle.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.stream_socket_service.implementation_type [*implementation_type]]]
- [The type of a stream socket implementation. ]
+ [[link boost_asio.reference.windows__basic_handle.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_handle is always the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.stream_socket_service.native_type [*native_type]]]
- [The native socket type. ]
+ [[link boost_asio.reference.windows__basic_handle.native_type [*native_type]]]
+ [The native representation of a handle. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.stream_socket_service.protocol_type [*protocol_type]]]
- [The protocol type. ]
+ [[link boost_asio.reference.windows__basic_handle.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
   ]
 
@@ -50345,275 +56181,107 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.stream_socket_service.assign [*assign]]]
- [Assign an existing native socket to a stream socket. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.async_connect [*async_connect]]]
- [Start an asynchronous connect. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.async_receive [*async_receive]]]
- [Start an asynchronous receive. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.async_send [*async_send]]]
- [Start an asynchronous send. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.at_mark [*at_mark]]]
- [Determine whether the socket is at the out-of-band data mark. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.available [*available]]]
- [Determine the number of bytes available for reading. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.bind [*bind]]]
- [Bind the stream socket to the specified local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.cancel [*cancel]]]
- [Cancel all asynchronous operations associated with the socket. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.close [*close]]]
- [Close a stream socket implementation. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.connect [*connect]]]
- [Connect the stream socket to the specified endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.construct [*construct]]]
- [Construct a new stream socket implementation. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.destroy [*destroy]]]
- [Destroy a stream socket implementation. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.get_io_service [*get_io_service]]]
- [Get the io_service object that owns the service. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.get_option [*get_option]]]
- [Get a socket option. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.io_control [*io_control]]]
- [Perform an IO control command on the socket. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.io_service [*io_service]]]
- [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.is_open [*is_open]]]
- [Determine whether the socket is open. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.local_endpoint [*local_endpoint]]]
- [Get the local endpoint. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.native [*native]]]
- [Get the native socket implementation. ]
- ]
-
- [
- [[link boost_asio.reference.stream_socket_service.open [*open]]]
- [Open a stream socket. ]
+ [[link boost_asio.reference.windows__basic_handle.assign [*assign]]]
+ [Assign an existing native handle to the handle. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.receive [*receive]]]
- [Receive some data from the peer. ]
+ [[link boost_asio.reference.windows__basic_handle.basic_handle [*basic_handle]]]
+ [Construct a basic_handle without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.remote_endpoint [*remote_endpoint]]]
- [Get the remote endpoint. ]
+ [[link boost_asio.reference.windows__basic_handle.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.send [*send]]]
- [Send the given data to the peer. ]
+ [[link boost_asio.reference.windows__basic_handle.close [*close]]]
+ [Close the handle. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.set_option [*set_option]]]
- [Set a socket option. ]
+ [[link boost_asio.reference.windows__basic_handle.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.shutdown [*shutdown]]]
- [Disable sends or receives on the socket. ]
+ [[link boost_asio.reference.windows__basic_handle.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.shutdown_service [*shutdown_service]]]
- [Destroy all user-defined handler objects owned by the service. ]
+ [[link boost_asio.reference.windows__basic_handle.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
   ]
   
   [
- [[link boost_asio.reference.stream_socket_service.stream_socket_service [*stream_socket_service]]]
- [Construct a new stream socket service for the specified io_service. ]
+ [[link boost_asio.reference.windows__basic_handle.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
   ]
   
-]
-
-[heading Data Members]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.stream_socket_service.id [*id]]]
- [The unique service identifier. ]
- ]
-
-]
-
-
-[section:assign stream_socket_service::assign]
-
-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);
-
-
-
-[endsect]
-
-
-
-[section:async_connect stream_socket_service::async_connect]
-
-Start an asynchronous connect.
-
- template<
- typename ``[link boost_asio.reference.ConnectHandler ConnectHandler]``>
- void async_connect(
- implementation_type & impl,
- const endpoint_type & peer_endpoint,
- ConnectHandler handler);
-
-
-
-[endsect]
-
-
-
-[section:async_receive stream_socket_service::async_receive]
-
-Start an asynchronous receive.
-
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
- typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
- void async_receive(
- implementation_type & impl,
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
- ReadHandler handler);
-
-
-
-[endsect]
-
-
-
-[section:async_send stream_socket_service::async_send]
-
-Start an asynchronous send.
-
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
- typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
- void async_send(
- implementation_type & impl,
- const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
- WriteHandler handler);
-
-
-
-[endsect]
-
-
-
-[section:at_mark stream_socket_service::at_mark]
-
-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;
-
+ [
+ [[link boost_asio.reference.windows__basic_handle.native [*native]]]
+ [Get the native handle representation. ]
+ ]
+
+]
 
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
-[endsect]
+ [
+ [[link boost_asio.reference.windows__basic_handle._basic_handle [*~basic_handle]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.windows__basic_handle.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
 
-[section:available stream_socket_service::available]
+ [
+ [[link boost_asio.reference.windows__basic_handle.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
 
-Determine the number of bytes available for reading.
+]
 
- std::size_t available(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
+The windows::basic_handle class template provides the ability to wrap a Windows handle.
 
 
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
-[endsect]
+[*Shared] [*objects:] Unsafe.
 
 
+[section:assign windows::basic_handle::assign]
 
-[section:bind stream_socket_service::bind]
+[indexterm2 assign..windows::basic_handle] Assign an existing native handle to the handle.
 
-Bind the stream socket to the specified local endpoint.
+ void ``[link boost_asio.reference.windows__basic_handle.assign.overload1 assign]``(
+ const native_type & native_handle);
 
- boost::system::error_code bind(
- implementation_type & impl,
- const endpoint_type & endpoint,
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_handle.assign.overload2 assign]``(
+ const native_type & native_handle,
       boost::system::error_code & ec);
 
 
+[section:overload1 windows::basic_handle::assign (1 of 2 overloads)]
 
-[endsect]
-
-
-
-[section:cancel stream_socket_service::cancel]
-
-Cancel all asynchronous operations associated with the socket.
+Assign an existing native handle to the handle.
 
- boost::system::error_code cancel(
- implementation_type & impl,
- boost::system::error_code & ec);
+ void assign(
+ const native_type & native_handle);
 
 
 
@@ -50621,12 +56289,12 @@
 
 
 
-[section:close stream_socket_service::close]
+[section:overload2 windows::basic_handle::assign (2 of 2 overloads)]
 
-Close a stream socket implementation.
+Assign an existing native handle to the handle.
 
- boost::system::error_code close(
- implementation_type & impl,
+ boost::system::error_code assign(
+ const native_type & native_handle,
       boost::system::error_code & ec);
 
 
@@ -50634,41 +56302,39 @@
 [endsect]
 
 
-
-[section:connect stream_socket_service::connect]
-
-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);
-
-
-
 [endsect]
 
+[section:basic_handle windows::basic_handle::basic_handle]
 
+[indexterm2 basic_handle..windows::basic_handle] Construct a basic_handle without opening it.
 
-[section:construct stream_socket_service::construct]
+ ``[link boost_asio.reference.windows__basic_handle.basic_handle.overload1 basic_handle]``(
+ boost::asio::io_service & io_service);
 
-Construct a new stream socket implementation.
+ ``[link boost_asio.reference.windows__basic_handle.basic_handle.overload2 basic_handle]``(
+ boost::asio::io_service & io_service,
+ const native_type & native_handle);
 
- void construct(
- implementation_type & impl);
 
+[section:overload1 windows::basic_handle::basic_handle (1 of 2 overloads)]
 
+Construct a basic_handle without opening it.
 
-[endsect]
+ basic_handle(
+ boost::asio::io_service & io_service);
 
 
+This constructor creates a handle without opening it.
 
-[section:destroy stream_socket_service::destroy]
 
-Destroy a stream socket implementation.
+[heading Parameters]
+
 
- void destroy(
- implementation_type & impl);
+[variablelist
+
+[[io_service][The io\_service object that the handle will use to dispatch handlers for any asynchronous operations performed on the handle. ]]
+
+]
 
 
 
@@ -50676,69 +56342,73 @@
 
 
 
-[section:endpoint_type stream_socket_service::endpoint_type]
-
-The endpoint type.
+[section:overload2 windows::basic_handle::basic_handle (2 of 2 overloads)]
 
- typedef Protocol::endpoint endpoint_type;
+Construct a basic_handle on an existing native handle.
 
+ basic_handle(
+ boost::asio::io_service & io_service,
+ const native_type & native_handle);
 
 
+This constructor creates a handle object to hold an existing native handle.
 
-[endsect]
 
+[heading Parameters]
+
 
+[variablelist
+
+[[io_service][The io\_service object that the handle will use to dispatch handlers for any asynchronous operations performed on the handle.]]
 
-[section:get_io_service stream_socket_service::get_io_service]
+[[native_handle][A native handle.]]
 
+]
 
-['Inherited from io_service.]
+[heading Exceptions]
+
 
-Get the io_service object that owns the service.
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
- boost::asio::io_service & get_io_service();
+]
 
 
 
 [endsect]
 
 
-
-[section:get_option stream_socket_service::get_option]
-
-Get a socket option.
-
- template<
- typename ``[link boost_asio.reference.GettableSocketOption GettableSocketOption]``>
- boost::system::error_code get_option(
- const implementation_type & impl,
- GettableSocketOption & option,
- boost::system::error_code & ec) const;
-
-
-
 [endsect]
 
+[section:cancel windows::basic_handle::cancel]
 
+[indexterm2 cancel..windows::basic_handle] Cancel all asynchronous operations associated with the handle.
 
-[section:id stream_socket_service::id]
+ void ``[link boost_asio.reference.windows__basic_handle.cancel.overload1 cancel]``();
 
-The unique service identifier.
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_handle.cancel.overload2 cancel]``(
+ boost::system::error_code & ec);
 
- static boost::asio::io_service::id id;
 
+[section:overload1 windows::basic_handle::cancel (1 of 2 overloads)]
 
+Cancel all asynchronous operations associated with the handle.
 
-[endsect]
+ void cancel();
 
 
+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.
 
-[section:implementation_type stream_socket_service::implementation_type]
 
-The type of a stream socket implementation.
+[heading Exceptions]
+
 
- typedef implementation_defined implementation_type;
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
+]
 
 
 
@@ -50746,112 +56416,112 @@
 
 
 
-[section:io_control stream_socket_service::io_control]
+[section:overload2 windows::basic_handle::cancel (2 of 2 overloads)]
 
-Perform an IO control command on the socket.
+Cancel all asynchronous operations associated with the handle.
 
- template<
- typename ``[link boost_asio.reference.IoControlCommand IoControlCommand]``>
- boost::system::error_code io_control(
- implementation_type & impl,
- IoControlCommand & command,
+ boost::system::error_code cancel(
       boost::system::error_code & ec);
 
 
-
-[endsect]
-
-
-
-[section:io_service stream_socket_service::io_service]
+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.
 
 
-['Inherited from io_service.]
+[heading Parameters]
+
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
 
- boost::asio::io_service & io_service();
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:is_open stream_socket_service::is_open]
+[section:close windows::basic_handle::close]
 
-Determine whether the socket is open.
+[indexterm2 close..windows::basic_handle] Close the handle.
 
- bool is_open(
- const implementation_type & impl) const;
+ void ``[link boost_asio.reference.windows__basic_handle.close.overload1 close]``();
 
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_handle.close.overload2 close]``(
+ boost::system::error_code & ec);
 
 
-[endsect]
+[section:overload1 windows::basic_handle::close (1 of 2 overloads)]
 
+Close the handle.
 
+ void close();
 
-[section:local_endpoint stream_socket_service::local_endpoint]
 
-Get the local endpoint.
+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.
 
- endpoint_type local_endpoint(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
 
+[heading Exceptions]
+
 
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
 
-[endsect]
+]
 
 
 
-[section:native stream_socket_service::native]
+[endsect]
 
-Get the native socket implementation.
 
- native_type native(
- implementation_type & impl);
 
+[section:overload2 windows::basic_handle::close (2 of 2 overloads)]
 
+Close the handle.
 
-[endsect]
+ boost::system::error_code close(
+ boost::system::error_code & ec);
 
 
+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.
 
-[section:native_type stream_socket_service::native_type]
 
-The native socket type.
+[heading Parameters]
+
 
- typedef implementation_defined native_type;
+[variablelist
+
+[[ec][Set to indicate what error occurred, if any. ]]
 
+]
 
 
 
 [endsect]
 
 
+[endsect]
 
-[section:open stream_socket_service::open]
-
-Open a stream socket.
-
- boost::system::error_code open(
- implementation_type & impl,
- const protocol_type & protocol,
- boost::system::error_code & ec);
 
+[section:get_io_service windows::basic_handle::get_io_service]
 
 
-[endsect]
+['Inherited from basic_io_object.]
 
+[indexterm2 get_io_service..windows::basic_handle] Get the io_service associated with the object.
 
+ boost::asio::io_service & get_io_service();
 
-[section:protocol_type stream_socket_service::protocol_type]
 
-The protocol type.
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
- typedef Protocol protocol_type;
 
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -50859,49 +56529,30 @@
 
 
 
-[section:receive stream_socket_service::receive]
-
-Receive some data from the peer.
-
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t receive(
- implementation_type & impl,
- const MutableBufferSequence & buffers,
- socket_base::message_flags flags,
- boost::system::error_code & ec);
-
+[section:implementation windows::basic_handle::implementation]
 
 
-[endsect]
+['Inherited from basic_io_object.]
 
+[indexterm2 implementation..windows::basic_handle] The underlying implementation of the I/O object.
 
+ implementation_type implementation;
 
-[section:remote_endpoint stream_socket_service::remote_endpoint]
 
-Get the remote endpoint.
 
- endpoint_type remote_endpoint(
- const implementation_type & impl,
- boost::system::error_code & ec) const;
+[endsect]
 
 
 
-[endsect]
+[section:implementation_type windows::basic_handle::implementation_type]
 
 
+['Inherited from basic_io_object.]
 
-[section:send stream_socket_service::send]
+[indexterm2 implementation_type..windows::basic_handle] The underlying implementation type of I/O object.
 
-Send the given data to the peer.
+ typedef service_type::implementation_type implementation_type;
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t send(
- implementation_type & impl,
- const ConstBufferSequence & buffers,
- socket_base::message_flags flags,
- boost::system::error_code & ec);
 
 
 
@@ -50909,31 +56560,22 @@
 
 
 
-[section:set_option stream_socket_service::set_option]
-
-Set a socket option.
-
- template<
- typename ``[link boost_asio.reference.SettableSocketOption SettableSocketOption]``>
- boost::system::error_code set_option(
- implementation_type & impl,
- const SettableSocketOption & option,
- boost::system::error_code & ec);
+[section:io_service windows::basic_handle::io_service]
 
 
+['Inherited from basic_io_object.]
 
-[endsect]
+[indexterm2 io_service..windows::basic_handle] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
+ boost::asio::io_service & io_service();
 
 
-[section:shutdown stream_socket_service::shutdown]
+This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.
 
-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);
+[heading Return Value]
+
+A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.
 
 
 
@@ -50941,11 +56583,11 @@
 
 
 
-[section:shutdown_service stream_socket_service::shutdown_service]
+[section:is_open windows::basic_handle::is_open]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 is_open..windows::basic_handle] Determine whether the handle is open.
 
- void shutdown_service();
+ bool is_open() const;
 
 
 
@@ -50953,27 +56595,31 @@
 
 
 
-[section:stream_socket_service stream_socket_service::stream_socket_service]
+[section:lowest_layer windows::basic_handle::lowest_layer]
 
-Construct a new stream socket service for the specified io_service.
+[indexterm2 lowest_layer..windows::basic_handle] Get a reference to the lowest layer.
 
- stream_socket_service(
- boost::asio::io_service & io_service);
+ lowest_layer_type & 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.
 
-[endsect]
+
+[heading Return Value]
+
+A reference to the lowest layer in the stack of layers. Ownership is not transferred to the caller.
 
 
 
 [endsect]
 
 
-[section:streambuf streambuf]
 
-Typedef for the typical usage of basic_streambuf.
+[section:lowest_layer_type windows::basic_handle::lowest_layer_type]
+
+[indexterm2 lowest_layer_type..windows::basic_handle] A basic_handle is always the lowest layer.
 
- typedef basic_streambuf streambuf;
+ typedef basic_handle< HandleService > lowest_layer_type;
 
 
 [heading Types]
@@ -50982,233 +56628,121 @@
 
   [
 
- [[link boost_asio.reference.basic_streambuf.const_buffers_type [*const_buffers_type]]]
- [The type used to represent the get area as a list of buffers. ]
+ [[link boost_asio.reference.windows__basic_handle.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.basic_streambuf.mutable_buffers_type [*mutable_buffers_type]]]
- [The type used to represent the put area as a list of buffers. ]
+ [[link boost_asio.reference.windows__basic_handle.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_handle is always the lowest layer. ]
   
   ]
 
-]
-
-[heading Member Functions]
-[table
- [[Name][Description]]
-
- [
- [[link boost_asio.reference.basic_streambuf.basic_streambuf [*basic_streambuf]]]
- [Construct a buffer with a specified maximum size. ]
- ]
-
- [
- [[link boost_asio.reference.basic_streambuf.commit [*commit]]]
- [Move the start of the put area by the specified number of characters. ]
- ]
-
- [
- [[link boost_asio.reference.basic_streambuf.consume [*consume]]]
- [Move the start of the get area by the specified number of characters. ]
- ]
-
   [
- [[link boost_asio.reference.basic_streambuf.data [*data]]]
- [Get a list of buffers that represents the get area. ]
- ]
+
+ [[link boost_asio.reference.windows__basic_handle.native_type [*native_type]]]
+ [The native representation of a handle. ]
   
- [
- [[link boost_asio.reference.basic_streambuf.max_size [*max_size]]]
- [Return the maximum size of the buffer. ]
   ]
-
+
   [
- [[link boost_asio.reference.basic_streambuf.prepare [*prepare]]]
- [Get a list of buffers that represents the put area, with the given size. ]
- ]
+
+ [[link boost_asio.reference.windows__basic_handle.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
   
- [
- [[link boost_asio.reference.basic_streambuf.size [*size]]]
- [Return the size of the get area in characters. ]
   ]
-
+
 ]
 
-[heading Protected Member Functions]
+[heading Member Functions]
 [table
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.basic_streambuf.overflow [*overflow]]]
- []
+ [[link boost_asio.reference.windows__basic_handle.assign [*assign]]]
+ [Assign an existing native handle to the handle. ]
   ]
   
   [
- [[link boost_asio.reference.basic_streambuf.reserve [*reserve]]]
- []
+ [[link boost_asio.reference.windows__basic_handle.basic_handle [*basic_handle]]]
+ [Construct a basic_handle without opening it. ]
   ]
   
   [
- [[link boost_asio.reference.basic_streambuf.underflow [*underflow]]]
- []
+ [[link boost_asio.reference.windows__basic_handle.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
   ]
   
-]
-
-
-
-[endsect]
-
-
-[section:time_traits_lt__ptime__gt_ time_traits< boost::posix_time::ptime >]
-
-Time traits specialised for posix_time.
-
- template<>
- struct time_traits< boost::posix_time::ptime >
-
-
-[heading Types]
-[table
- [[Name][Description]]
-
   [
-
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.duration_type [*duration_type]]]
- [The duration type. ]
-
+ [[link boost_asio.reference.windows__basic_handle.close [*close]]]
+ [Close the handle. ]
   ]
-
- [
-
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.time_type [*time_type]]]
- [The time type. ]
   
- ]
-
-]
-
-[heading Member Functions]
-[table
- [[Name][Description]]
-
   [
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.add [*add]]]
- [Add a duration to a time. ]
+ [[link boost_asio.reference.windows__basic_handle.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.less_than [*less_than]]]
- [Test whether one time is less than another. ]
+ [[link boost_asio.reference.windows__basic_handle.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.now [*now]]]
- [Get the current time. ]
+ [[link boost_asio.reference.windows__basic_handle.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
   ]
   
   [
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.subtract [*subtract]]]
- [Subtract one time from another. ]
+ [[link boost_asio.reference.windows__basic_handle.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.time_traits_lt__ptime__gt_.to_posix_duration [*to_posix_duration]]]
- [Convert to POSIX duration type. ]
- ]
-
-]
-
-
-[section:add time_traits< boost::posix_time::ptime >::add]
-
-Add a duration to a time.
-
- static time_type add(
- const time_type & t,
- const duration_type & d);
-
-
-
-[endsect]
-
-
-
-[section:duration_type time_traits< boost::posix_time::ptime >::duration_type]
-
-The duration type.
-
- typedef boost::posix_time::time_duration duration_type;
-
-
-
-
-[endsect]
-
-
-
-[section:less_than time_traits< boost::posix_time::ptime >::less_than]
-
-Test whether one time is less than another.
-
- static bool less_than(
- const time_type & t1,
- const time_type & t2);
-
-
-
-[endsect]
-
-
-
-[section:now time_traits< boost::posix_time::ptime >::now]
-
-Get the current time.
-
- static time_type now();
-
-
-
-[endsect]
-
-
-
-[section:subtract time_traits< boost::posix_time::ptime >::subtract]
-
-Subtract one time from another.
-
- static duration_type subtract(
- const time_type & t1,
- const time_type & t2);
-
-
-
-[endsect]
-
-
-
-[section:time_type time_traits< boost::posix_time::ptime >::time_type]
+ [[link boost_asio.reference.windows__basic_handle.native [*native]]]
+ [Get the native handle representation. ]
+ ]
+
+]
 
-The time type.
+[heading Protected Member Functions]
+[table
+ [[Name][Description]]
 
- typedef boost::posix_time::ptime time_type;
+ [
+ [[link boost_asio.reference.windows__basic_handle._basic_handle [*~basic_handle]]]
+ [Protected destructor to prevent deletion through this type. ]
+ ]
+
+]
 
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
 
+ [
+ [[link boost_asio.reference.windows__basic_handle.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
 
+ [
+ [[link boost_asio.reference.windows__basic_handle.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
 
-[endsect]
+]
 
+The windows::basic_handle class template provides the ability to wrap a Windows handle.
 
 
-[section:to_posix_duration time_traits< boost::posix_time::ptime >::to_posix_duration]
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
 
-Convert to POSIX duration type.
+[*Shared] [*objects:] Unsafe.
 
- static boost::posix_time::time_duration to_posix_duration(
- const duration_type & d);
 
 
 
@@ -51216,38 +56750,25 @@
 
 
 
-[endsect]
+[section:native windows::basic_handle::native]
 
+[indexterm2 native..windows::basic_handle] Get the native handle representation.
 
-[section:transfer_all transfer_all]
+ native_type native();
 
-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.
 
- unspecified transfer_all();
+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.
 
 
-This function is used to create an object, of unspecified type, that meets CompletionCondition requirements.
+[endsect]
 
 
-[heading Example]
-
-Reading until a buffer is full:
 
- 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
- }
+[section:native_type windows::basic_handle::native_type]
 
+[indexterm2 native_type..windows::basic_handle] The native representation of a handle.
 
+ typedef HandleService::native_type native_type;
 
 
 
@@ -51256,83 +56777,59 @@
 
 
 
-[section:transfer_at_least transfer_at_least]
+[section:service windows::basic_handle::service]
 
-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.
 
- unspecified transfer_at_least(
- std::size_t minimum);
+['Inherited from basic_io_object.]
 
+[indexterm2 service..windows::basic_handle] The service associated with the I/O object.
 
-This function is used to create an object, of unspecified type, that meets CompletionCondition requirements.
+ service_type & service;
 
 
-[heading Example]
-
-Reading until a buffer is full or contains at least 64 bytes:
 
- 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
- }
+[endsect]
 
 
 
+[section:service_type windows::basic_handle::service_type]
 
 
+['Inherited from basic_io_object.]
 
-[endsect]
+[indexterm2 service_type..windows::basic_handle] The type of the service that will be used to provide I/O operations.
 
+ typedef HandleService service_type;
 
 
-[section:use_service use_service]
 
 
+[endsect]
 
- template<
- typename ``[link boost_asio.reference.Service Service]``>
- Service & use_service(
- io_service & ios);
 
 
-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.
+[section:_basic_handle windows::basic_handle::~basic_handle]
 
+[indexterm2 ~basic_handle..windows::basic_handle] Protected destructor to prevent deletion through this type.
 
-[heading Parameters]
-
+ ~basic_handle();
 
-[variablelist
-
-[[ios][The io\_service object that owns the service.]]
 
-]
 
-[heading Return Value]
-
-The service interface implementing the specified service type. Ownership of the service interface is not transferred to the caller.
+[endsect]
 
 
 
 [endsect]
 
+[section:windows__basic_random_access_handle windows::basic_random_access_handle]
 
-[section:windows__basic_handle windows::basic_handle]
-
-Provides Windows handle functionality.
+Provides random-access handle functionality.
 
   template<
- typename ``[link boost_asio.reference.HandleService HandleService]``>
- class basic_handle :
- public basic_io_object< HandleService >
+ typename ``[link boost_asio.reference.RandomAccessHandleService RandomAccessHandleService]`` = random_access_handle_service>
+ class basic_random_access_handle :
+ public windows::basic_handle< RandomAccessHandleService >
 
 
 [heading Types]
@@ -51341,28 +56838,28 @@
 
   [
 
- [[link boost_asio.reference.windows__basic_handle.implementation_type [*implementation_type]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.implementation_type [*implementation_type]]]
     [The underlying implementation type of I/O object. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.windows__basic_handle.lowest_layer_type [*lowest_layer_type]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.lowest_layer_type [*lowest_layer_type]]]
     [A basic_handle is always the lowest layer. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.windows__basic_handle.native_type [*native_type]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.native_type [*native_type]]]
     [The native representation of a handle. ]
   
   ]
 
   [
 
- [[link boost_asio.reference.windows__basic_handle.service_type [*service_type]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.service_type [*service_type]]]
     [The type of the service that will be used to provide I/O operations. ]
   
   ]
@@ -51374,59 +56871,68 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.windows__basic_handle.assign [*assign]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.assign [*assign]]]
     [Assign an existing native handle to the handle. ]
   ]
   
   [
- [[link boost_asio.reference.windows__basic_handle.basic_handle [*basic_handle]]]
- [Construct a basic_handle without opening it. ]
+ [[link boost_asio.reference.windows__basic_random_access_handle.async_read_some_at [*async_read_some_at]]]
+ [Start an asynchronous read at the specified offset. ]
   ]
   
   [
- [[link boost_asio.reference.windows__basic_handle.cancel [*cancel]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.async_write_some_at [*async_write_some_at]]]
+ [Start an asynchronous write at the specified offset. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.basic_random_access_handle [*basic_random_access_handle]]]
+ [Construct a basic_random_access_handle without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.cancel [*cancel]]]
     [Cancel all asynchronous operations associated with the handle. ]
   ]
   
   [
- [[link boost_asio.reference.windows__basic_handle.close [*close]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.close [*close]]]
     [Close the handle. ]
   ]
   
   [
- [[link boost_asio.reference.windows__basic_handle.get_io_service [*get_io_service]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.get_io_service [*get_io_service]]]
     [Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.windows__basic_handle.io_service [*io_service]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.io_service [*io_service]]]
     [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
   ]
   
   [
- [[link boost_asio.reference.windows__basic_handle.is_open [*is_open]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.is_open [*is_open]]]
     [Determine whether the handle is open. ]
   ]
   
   [
- [[link boost_asio.reference.windows__basic_handle.lowest_layer [*lowest_layer]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.lowest_layer [*lowest_layer]]]
     [Get a reference to the lowest layer. ]
   ]
   
   [
- [[link boost_asio.reference.windows__basic_handle.native [*native]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.native [*native]]]
     [Get the native handle representation. ]
   ]
   
-]
-
-[heading Protected Member Functions]
-[table
- [[Name][Description]]
-
   [
- [[link boost_asio.reference.windows__basic_handle._basic_handle [*~basic_handle]]]
- [Protected destructor to prevent deletion through this type. ]
+ [[link boost_asio.reference.windows__basic_random_access_handle.read_some_at [*read_some_at]]]
+ [Read some data from the handle at the specified offset. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.write_some_at [*write_some_at]]]
+ [Write some data to the handle at the specified offset. ]
   ]
   
 ]
@@ -51436,18 +56942,18 @@
   [[Name][Description]]
 
   [
- [[link boost_asio.reference.windows__basic_handle.implementation [*implementation]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.implementation [*implementation]]]
     [The underlying implementation of the I/O object. ]
   ]
 
   [
- [[link boost_asio.reference.windows__basic_handle.service [*service]]]
+ [[link boost_asio.reference.windows__basic_random_access_handle.service [*service]]]
     [The service associated with the I/O object. ]
   ]
 
 ]
 
-The windows::basic_handle class template provides the ability to wrap a Windows handle.
+The windows::basic_random_access_handle class template provides asynchronous and blocking random-access handle functionality.
 
 
 [heading Thread Safety]
@@ -51457,19 +56963,22 @@
 [*Shared] [*objects:] Unsafe.
 
 
-[section:assign windows::basic_handle::assign]
+[section:assign windows::basic_random_access_handle::assign]
 
-Assign an existing native handle to the handle.
+[indexterm2 assign..windows::basic_random_access_handle] Assign an existing native handle to the handle.
 
- void ``[link boost_asio.reference.windows__basic_handle.assign.overload1 assign]``(
+ void ``[link boost_asio.reference.windows__basic_random_access_handle.assign.overload1 assign]``(
       const native_type & native_handle);
 
- boost::system::error_code ``[link boost_asio.reference.windows__basic_handle.assign.overload2 assign]``(
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_random_access_handle.assign.overload2 assign]``(
       const native_type & native_handle,
       boost::system::error_code & ec);
 
 
-[section:overload1 windows::basic_handle::assign (1 of 2 overloads)]
+[section:overload1 windows::basic_random_access_handle::assign (1 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
 
 Assign an existing native handle to the handle.
 
@@ -51482,7 +56991,10 @@
 
 
 
-[section:overload2 windows::basic_handle::assign (2 of 2 overloads)]
+[section:overload2 windows::basic_random_access_handle::assign (2 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
 
 Assign an existing native handle to the handle.
 
@@ -51497,27 +57009,143 @@
 
 [endsect]
 
-[section:basic_handle windows::basic_handle::basic_handle]
 
-Construct a basic_handle without opening it.
+[section:async_read_some_at windows::basic_random_access_handle::async_read_some_at]
 
- ``[link boost_asio.reference.windows__basic_handle.basic_handle.overload1 basic_handle]``(
+[indexterm2 async_read_some_at..windows::basic_random_access_handle] Start an asynchronous read at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some_at(
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
+
+
+This function is used to asynchronously read data from the random-access handle. The function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[offset][The offset at which the data will be read.]]
+
+[[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.]]
+
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes read.
+ );
+``
+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().]]
+
+]
+
+[heading Remarks]
+
+The read operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.async_read_at async_read_at] function if you need to ensure that the requested amount of data is read before the asynchronous operation completes.
+
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ handle.async_read_some_at(42, boost::asio::buffer(data, size), handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:async_write_some_at windows::basic_random_access_handle::async_write_some_at]
+
+[indexterm2 async_write_some_at..windows::basic_random_access_handle] Start an asynchronous write at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some_at(
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
+
+
+This function is used to asynchronously write data to the random-access handle. The function call always returns immediately.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[offset][The offset at which the data will be written.]]
+
+[[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.]]
+
+[[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:
+``
+ void handler(
+ const boost::system::error_code& error, // Result of operation.
+ std::size_t bytes_transferred // Number of bytes written.
+ );
+``
+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().]]
+
+]
+
+[heading Remarks]
+
+The write operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.async_write_at async_write_at] function if you need to ensure that all data is written before the asynchronous operation completes.
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ handle.async_write_some_at(42, boost::asio::buffer(data, size), handler);
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+[section:basic_random_access_handle windows::basic_random_access_handle::basic_random_access_handle]
+
+[indexterm2 basic_random_access_handle..windows::basic_random_access_handle] Construct a basic_random_access_handle without opening it.
+
+ ``[link boost_asio.reference.windows__basic_random_access_handle.basic_random_access_handle.overload1 basic_random_access_handle]``(
       boost::asio::io_service & io_service);
 
- ``[link boost_asio.reference.windows__basic_handle.basic_handle.overload2 basic_handle]``(
+ ``[link boost_asio.reference.windows__basic_random_access_handle.basic_random_access_handle.overload2 basic_random_access_handle]``(
       boost::asio::io_service & io_service,
       const native_type & native_handle);
 
 
-[section:overload1 windows::basic_handle::basic_handle (1 of 2 overloads)]
+[section:overload1 windows::basic_random_access_handle::basic_random_access_handle (1 of 2 overloads)]
 
-Construct a basic_handle without opening it.
+Construct a basic_random_access_handle without opening it.
 
- basic_handle(
+ basic_random_access_handle(
       boost::asio::io_service & io_service);
 
 
-This constructor creates a 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.
 
 
 [heading Parameters]
@@ -51525,7 +57153,7 @@
 
 [variablelist
   
-[[io_service][The io\_service object that the handle will use to dispatch handlers for any asynchronous operations performed on the handle. ]]
+[[io_service][The io\_service object that the random-access handle will use to dispatch handlers for any asynchronous operations performed on the handle. ]]
 
 ]
 
@@ -51535,16 +57163,16 @@
 
 
 
-[section:overload2 windows::basic_handle::basic_handle (2 of 2 overloads)]
+[section:overload2 windows::basic_random_access_handle::basic_random_access_handle (2 of 2 overloads)]
 
-Construct a basic_handle on an existing native handle.
+Construct a basic_random_access_handle on an existing native handle.
 
- basic_handle(
+ basic_random_access_handle(
       boost::asio::io_service & io_service,
       const native_type & native_handle);
 
 
-This constructor creates a handle object to hold an existing native handle.
+This constructor creates a random-access handle object to hold an existing native handle.
 
 
 [heading Parameters]
@@ -51552,9 +57180,9 @@
 
 [variablelist
   
-[[io_service][The io\_service object that the handle will use to dispatch handlers for any asynchronous operations performed on the handle.]]
+[[io_service][The io\_service object that the random-access handle will use to dispatch handlers for any asynchronous operations performed on the handle.]]
 
-[[native_handle][A native handle.]]
+[[native_handle][The new underlying handle implementation.]]
 
 ]
 
@@ -51574,17 +57202,20 @@
 
 [endsect]
 
-[section:cancel windows::basic_handle::cancel]
+[section:cancel windows::basic_random_access_handle::cancel]
 
-Cancel all asynchronous operations associated with the handle.
+[indexterm2 cancel..windows::basic_random_access_handle] Cancel all asynchronous operations associated with the handle.
 
- void ``[link boost_asio.reference.windows__basic_handle.cancel.overload1 cancel]``();
+ void ``[link boost_asio.reference.windows__basic_random_access_handle.cancel.overload1 cancel]``();
 
- boost::system::error_code ``[link boost_asio.reference.windows__basic_handle.cancel.overload2 cancel]``(
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_random_access_handle.cancel.overload2 cancel]``(
       boost::system::error_code & ec);
 
 
-[section:overload1 windows::basic_handle::cancel (1 of 2 overloads)]
+[section:overload1 windows::basic_random_access_handle::cancel (1 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
 
 Cancel all asynchronous operations associated with the handle.
 
@@ -51609,7 +57240,10 @@
 
 
 
-[section:overload2 windows::basic_handle::cancel (2 of 2 overloads)]
+[section:overload2 windows::basic_random_access_handle::cancel (2 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
 
 Cancel all asynchronous operations associated with the handle.
 
@@ -51636,17 +57270,20 @@
 
 [endsect]
 
-[section:close windows::basic_handle::close]
+[section:close windows::basic_random_access_handle::close]
 
-Close the handle.
+[indexterm2 close..windows::basic_random_access_handle] Close the handle.
 
- void ``[link boost_asio.reference.windows__basic_handle.close.overload1 close]``();
+ void ``[link boost_asio.reference.windows__basic_random_access_handle.close.overload1 close]``();
 
- boost::system::error_code ``[link boost_asio.reference.windows__basic_handle.close.overload2 close]``(
+ boost::system::error_code ``[link boost_asio.reference.windows__basic_random_access_handle.close.overload2 close]``(
       boost::system::error_code & ec);
 
 
-[section:overload1 windows::basic_handle::close (1 of 2 overloads)]
+[section:overload1 windows::basic_random_access_handle::close (1 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
 
 Close the handle.
 
@@ -51671,7 +57308,10 @@
 
 
 
-[section:overload2 windows::basic_handle::close (2 of 2 overloads)]
+[section:overload2 windows::basic_random_access_handle::close (2 of 2 overloads)]
+
+
+['Inherited from windows::basic_handle.]
 
 Close the handle.
 
@@ -51699,12 +57339,12 @@
 [endsect]
 
 
-[section:get_io_service windows::basic_handle::get_io_service]
+[section:get_io_service windows::basic_random_access_handle::get_io_service]
 
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..windows::basic_random_access_handle] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -51722,12 +57362,12 @@
 
 
 
-[section:implementation windows::basic_handle::implementation]
+[section:implementation windows::basic_random_access_handle::implementation]
 
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..windows::basic_random_access_handle] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -51737,12 +57377,12 @@
 
 
 
-[section:implementation_type windows::basic_handle::implementation_type]
+[section:implementation_type windows::basic_random_access_handle::implementation_type]
 
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..windows::basic_random_access_handle] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -51753,12 +57393,12 @@
 
 
 
-[section:io_service windows::basic_handle::io_service]
+[section:io_service windows::basic_random_access_handle::io_service]
 
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..windows::basic_random_access_handle] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -51776,9 +57416,12 @@
 
 
 
-[section:is_open windows::basic_handle::is_open]
+[section:is_open windows::basic_random_access_handle::is_open]
+
+
+['Inherited from windows::basic_handle.]
 
-Determine whether the handle is open.
+[indexterm2 is_open..windows::basic_random_access_handle] Determine whether the handle is open.
 
   bool is_open() const;
 
@@ -51788,9 +57431,12 @@
 
 
 
-[section:lowest_layer windows::basic_handle::lowest_layer]
+[section:lowest_layer windows::basic_random_access_handle::lowest_layer]
+
+
+['Inherited from windows::basic_handle.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..windows::basic_random_access_handle] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -51808,11 +57454,14 @@
 
 
 
-[section:lowest_layer_type windows::basic_handle::lowest_layer_type]
+[section:lowest_layer_type windows::basic_random_access_handle::lowest_layer_type]
 
-A basic_handle is always the lowest layer.
 
- typedef basic_handle< HandleService > lowest_layer_type;
+['Inherited from windows::basic_handle.]
+
+[indexterm2 lowest_layer_type..windows::basic_random_access_handle] A basic_handle is always the lowest layer.
+
+ typedef basic_handle< RandomAccessHandleService > lowest_layer_type;
 
 
 [heading Types]
@@ -51943,9 +57592,12 @@
 
 
 
-[section:native windows::basic_handle::native]
+[section:native windows::basic_random_access_handle::native]
+
 
-Get the native handle representation.
+['Inherited from windows::basic_handle.]
+
+[indexterm2 native..windows::basic_random_access_handle] Get the native handle representation.
 
   native_type native();
 
@@ -51957,11 +57609,11 @@
 
 
 
-[section:native_type windows::basic_handle::native_type]
+[section:native_type windows::basic_random_access_handle::native_type]
 
-The native representation of a handle.
+[indexterm2 native_type..windows::basic_random_access_handle] The native representation of a handle.
 
- typedef HandleService::native_type native_type;
+ typedef RandomAccessHandleService::native_type native_type;
 
 
 
@@ -51969,13 +57621,135 @@
 [endsect]
 
 
+[section:read_some_at windows::basic_random_access_handle::read_some_at]
 
-[section:service windows::basic_handle::service]
+[indexterm2 read_some_at..windows::basic_random_access_handle] Read some data from the handle at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.windows__basic_random_access_handle.read_some_at.overload1 read_some_at]``(
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.windows__basic_random_access_handle.read_some_at.overload2 read_some_at]``(
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+[section:overload1 windows::basic_random_access_handle::read_some_at (1 of 2 overloads)]
+
+Read some data from the handle at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some_at(
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[offset][The offset at which the data will be read.]]
+
+[[buffers][One or more buffers into which the data will be read.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes read.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+
+]
+
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read_at read_at] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+
+[heading Example]
+
+To read into a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ handle.read_some_at(42, boost::asio::buffer(data, size));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on reading into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::basic_random_access_handle::read_some_at (2 of 2 overloads)]
+
+Read some data from the handle at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some_at(
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[offset][The offset at which the data will be read.]]
+
+[[buffers][One or more buffers into which the data will be read.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read_at read_at] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:service windows::basic_random_access_handle::service]
 
 
 ['Inherited from basic_io_object.]
 
-The service associated with the I/O object.
+[indexterm2 service..windows::basic_random_access_handle] The service associated with the I/O object.
 
   service_type & service;
 
@@ -51985,15 +57759,92 @@
 
 
 
-[section:service_type windows::basic_handle::service_type]
+[section:service_type windows::basic_random_access_handle::service_type]
 
 
 ['Inherited from basic_io_object.]
 
-The type of the service that will be used to provide I/O operations.
+[indexterm2 service_type..windows::basic_random_access_handle] The type of the service that will be used to provide I/O operations.
 
- typedef HandleService service_type;
+ typedef RandomAccessHandleService service_type;
+
+
+
+
+[endsect]
+
+
+[section:write_some_at windows::basic_random_access_handle::write_some_at]
+
+[indexterm2 write_some_at..windows::basic_random_access_handle] Write some data to the handle at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.windows__basic_random_access_handle.write_some_at.overload1 write_some_at]``(
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.windows__basic_random_access_handle.write_some_at.overload2 write_some_at]``(
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+[section:overload1 windows::basic_random_access_handle::write_some_at (1 of 2 overloads)]
+
+Write some data to the handle at the specified offset.
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some_at(
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[offset][The offset at which the data will be written.]]
+
+[[buffers][One or more data buffers to be written to the handle.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes written.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+
+]
+
+[heading Remarks]
+
+The write\_some\_at operation may not write all of the data. Consider using the
+[link boost_asio.reference.write_at write_at] function if you need to ensure that all data is written before the blocking operation completes.
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ handle.write_some_at(42, boost::asio::buffer(data, size));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
 
 
@@ -52001,18 +57852,51 @@
 
 
 
-[section:_basic_handle windows::basic_handle::~basic_handle]
+[section:overload2 windows::basic_random_access_handle::write_some_at (2 of 2 overloads)]
+
+Write some data to the handle at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some_at(
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[offset][The offset at which the data will be written.]]
+
+[[buffers][One or more data buffers to be written to the handle.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes written. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write_at write_at] function if you need to ensure that all data is written before the blocking operation completes.
 
-Protected destructor to prevent deletion through this type.
 
- ~basic_handle();
 
+[endsect]
 
 
 [endsect]
 
 
-
 [endsect]
 
 [section:windows__basic_stream_handle windows::basic_stream_handle]
@@ -52158,7 +58042,7 @@
 
 [section:assign windows::basic_stream_handle::assign]
 
-Assign an existing native handle to the handle.
+[indexterm2 assign..windows::basic_stream_handle] Assign an existing native handle to the handle.
 
   void ``[link boost_asio.reference.windows__basic_stream_handle.assign.overload1 assign]``(
       const native_type & native_handle);
@@ -52205,7 +58089,7 @@
 
 [section:async_read_some windows::basic_stream_handle::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..windows::basic_stream_handle] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -52231,7 +58115,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes read.
    );
-
 ``
 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().]]
 
@@ -52261,7 +58144,7 @@
 
 [section:async_write_some windows::basic_stream_handle::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..windows::basic_stream_handle] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -52287,7 +58170,6 @@
      const boost::system::error_code& error, // Result of operation.
      std::size_t bytes_transferred // Number of bytes written.
    );
-
 ``
 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().]]
 
@@ -52316,7 +58198,7 @@
 
 [section:basic_stream_handle windows::basic_stream_handle::basic_stream_handle]
 
-Construct a basic_stream_handle without opening it.
+[indexterm2 basic_stream_handle..windows::basic_stream_handle] Construct a basic_stream_handle without opening it.
 
   ``[link boost_asio.reference.windows__basic_stream_handle.basic_stream_handle.overload1 basic_stream_handle]``(
       boost::asio::io_service & io_service);
@@ -52393,7 +58275,7 @@
 
 [section:cancel windows::basic_stream_handle::cancel]
 
-Cancel all asynchronous operations associated with the handle.
+[indexterm2 cancel..windows::basic_stream_handle] Cancel all asynchronous operations associated with the handle.
 
   void ``[link boost_asio.reference.windows__basic_stream_handle.cancel.overload1 cancel]``();
 
@@ -52461,7 +58343,7 @@
 
 [section:close windows::basic_stream_handle::close]
 
-Close the handle.
+[indexterm2 close..windows::basic_stream_handle] Close the handle.
 
   void ``[link boost_asio.reference.windows__basic_stream_handle.close.overload1 close]``();
 
@@ -52533,7 +58415,7 @@
 
 ['Inherited from basic_io_object.]
 
-Get the io_service associated with the object.
+[indexterm2 get_io_service..windows::basic_stream_handle] Get the io_service associated with the object.
 
   boost::asio::io_service & get_io_service();
 
@@ -52556,7 +58438,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation of the I/O object.
+[indexterm2 implementation..windows::basic_stream_handle] The underlying implementation of the I/O object.
 
   implementation_type implementation;
 
@@ -52571,7 +58453,7 @@
 
 ['Inherited from basic_io_object.]
 
-The underlying implementation type of I/O object.
+[indexterm2 implementation_type..windows::basic_stream_handle] The underlying implementation type of I/O object.
 
   typedef service_type::implementation_type implementation_type;
 
@@ -52587,7 +58469,7 @@
 
 ['Inherited from basic_io_object.]
 
-(Deprecated: use get_io_service().) Get the io_service associated with the object.
+[indexterm2 io_service..windows::basic_stream_handle] (Deprecated: use get_io_service().) Get the io_service associated with the object.
 
   boost::asio::io_service & io_service();
 
@@ -52610,7 +58492,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-Determine whether the handle is open.
+[indexterm2 is_open..windows::basic_stream_handle] Determine whether the handle is open.
 
   bool is_open() const;
 
@@ -52625,7 +58507,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-Get a reference to the lowest layer.
+[indexterm2 lowest_layer..windows::basic_stream_handle] Get a reference to the lowest layer.
 
   lowest_layer_type & lowest_layer();
 
@@ -52648,7 +58530,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-A basic_handle is always the lowest layer.
+[indexterm2 lowest_layer_type..windows::basic_stream_handle] A basic_handle is always the lowest layer.
 
   typedef basic_handle< StreamHandleService > lowest_layer_type;
 
@@ -52786,7 +58668,7 @@
 
 ['Inherited from windows::basic_handle.]
 
-Get the native handle representation.
+[indexterm2 native..windows::basic_stream_handle] Get the native handle representation.
 
   native_type native();
 
@@ -52800,7 +58682,7 @@
 
 [section:native_type windows::basic_stream_handle::native_type]
 
-The native representation of a handle.
+[indexterm2 native_type..windows::basic_stream_handle] The native representation of a handle.
 
   typedef StreamHandleService::native_type native_type;
 
@@ -52812,7 +58694,7 @@
 
 [section:read_some windows::basic_stream_handle::read_some]
 
-Read some data from the handle.
+[indexterm2 read_some..windows::basic_stream_handle] Read some data from the handle.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -52883,56 +58765,615 @@
 
 
 
-[section:overload2 windows::basic_stream_handle::read_some (2 of 2 overloads)]
+[section:overload2 windows::basic_stream_handle::read_some (2 of 2 overloads)]
+
+Read some data from the handle.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some(
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more buffers into which the data will be read.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes read. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The read\_some operation may not read all of the requested number of bytes. Consider using the
+[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:service windows::basic_stream_handle::service]
+
+
+['Inherited from basic_io_object.]
+
+[indexterm2 service..windows::basic_stream_handle] The service associated with the I/O object.
+
+ service_type & service;
+
+
+
+[endsect]
+
+
+
+[section:service_type windows::basic_stream_handle::service_type]
+
+
+['Inherited from basic_io_object.]
+
+[indexterm2 service_type..windows::basic_stream_handle] The type of the service that will be used to provide I/O operations.
+
+ typedef StreamHandleService service_type;
+
+
+
+
+[endsect]
+
+
+[section:write_some windows::basic_stream_handle::write_some]
+
+[indexterm2 write_some..windows::basic_stream_handle] Write some data to the handle.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.windows__basic_stream_handle.write_some.overload1 write_some]``(
+ const ConstBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.windows__basic_stream_handle.write_some.overload2 write_some]``(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+[section:overload1 windows::basic_stream_handle::write_some (1 of 2 overloads)]
+
+Write some data to the handle.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more data buffers to be written to the handle.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes written.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+
+]
+
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ handle.write_some(boost::asio::buffer(data, size));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:overload2 windows::basic_stream_handle::write_some (2 of 2 overloads)]
+
+Write some data to the handle.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some(
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
+
+
+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.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[buffers][One or more data buffers to be written to the handle.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes written. Returns 0 if an error occurred.
+
+[heading Remarks]
+
+The write\_some operation may not transmit all of the data to the peer. Consider using the
+[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+
+
+
+[endsect]
+
+
+[endsect]
+
+
+[endsect]
+
+
+[section:windows__random_access_handle windows::random_access_handle]
+
+[indexterm1 windows::random_access_handle] Typedef for the typical usage of a random-access handle.
+
+ typedef basic_random_access_handle random_access_handle;
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_random_access_handle.implementation_type [*implementation_type]]]
+ [The underlying implementation type of I/O object. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_random_access_handle.lowest_layer_type [*lowest_layer_type]]]
+ [A basic_handle is always the lowest layer. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_random_access_handle.native_type [*native_type]]]
+ [The native representation of a handle. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.windows__basic_random_access_handle.service_type [*service_type]]]
+ [The type of the service that will be used to provide I/O operations. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.assign [*assign]]]
+ [Assign an existing native handle to the handle. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.async_read_some_at [*async_read_some_at]]]
+ [Start an asynchronous read at the specified offset. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.async_write_some_at [*async_write_some_at]]]
+ [Start an asynchronous write at the specified offset. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.basic_random_access_handle [*basic_random_access_handle]]]
+ [Construct a basic_random_access_handle without opening it. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.close [*close]]]
+ [Close the handle. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.get_io_service [*get_io_service]]]
+ [Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service associated with the object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.lowest_layer [*lowest_layer]]]
+ [Get a reference to the lowest layer. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.native [*native]]]
+ [Get the native handle representation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.read_some_at [*read_some_at]]]
+ [Read some data from the handle at the specified offset. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.write_some_at [*write_some_at]]]
+ [Write some data to the handle at the specified offset. ]
+ ]
+
+]
+
+[heading Protected Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.implementation [*implementation]]]
+ [The underlying implementation of the I/O object. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__basic_random_access_handle.service [*service]]]
+ [The service associated with the I/O object. ]
+ ]
+
+]
+
+The windows::basic_random_access_handle class template provides asynchronous and blocking random-access handle functionality.
+
+
+[heading Thread Safety]
+
+[*Distinct] [*objects:] Safe.
+
+[*Shared] [*objects:] Unsafe.
+
+
+
+
+[endsect]
+
+
+[section:windows__random_access_handle_service windows::random_access_handle_service]
+
+Default service implementation for a random-access handle.
+
+ class random_access_handle_service :
+ public io_service::service
+
+
+[heading Types]
+[table
+ [[Name][Description]]
+
+ [
+
+ [[link boost_asio.reference.windows__random_access_handle_service.implementation_type [*implementation_type]]]
+ [The type of a random-access handle implementation. ]
+
+ ]
+
+ [
+
+ [[link boost_asio.reference.windows__random_access_handle_service.native_type [*native_type]]]
+ [The native handle type. ]
+
+ ]
+
+]
+
+[heading Member Functions]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.assign [*assign]]]
+ [Assign an existing native handle to a random-access handle. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.async_read_some_at [*async_read_some_at]]]
+ [Start an asynchronous read at the specified offset. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.async_write_some_at [*async_write_some_at]]]
+ [Start an asynchronous write at the specified offset. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.cancel [*cancel]]]
+ [Cancel all asynchronous operations associated with the handle. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.close [*close]]]
+ [Close a random-access handle implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.construct [*construct]]]
+ [Construct a new random-access handle implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.destroy [*destroy]]]
+ [Destroy a random-access handle implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.get_io_service [*get_io_service]]]
+ [Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.io_service [*io_service]]]
+ [(Deprecated: use get_io_service().) Get the io_service object that owns the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.is_open [*is_open]]]
+ [Determine whether the handle is open. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.native [*native]]]
+ [Get the native handle implementation. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.random_access_handle_service [*random_access_handle_service]]]
+ [Construct a new random-access handle service for the specified io_service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.read_some_at [*read_some_at]]]
+ [Read some data from the specified offset. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.shutdown_service [*shutdown_service]]]
+ [Destroy all user-defined handler objects owned by the service. ]
+ ]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.write_some_at [*write_some_at]]]
+ [Write the given data at the specified offset. ]
+ ]
+
+]
+
+[heading Data Members]
+[table
+ [[Name][Description]]
+
+ [
+ [[link boost_asio.reference.windows__random_access_handle_service.id [*id]]]
+ [The unique service identifier. ]
+ ]
+
+]
+
+
+[section:assign windows::random_access_handle_service::assign]
+
+[indexterm2 assign..windows::random_access_handle_service] 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);
+
+
+
+[endsect]
+
+
+
+[section:async_read_some_at windows::random_access_handle_service::async_read_some_at]
+
+[indexterm2 async_read_some_at..windows::random_access_handle_service] Start an asynchronous read at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
+ typename ``[link boost_asio.reference.ReadHandler ReadHandler]``>
+ void async_read_some_at(
+ implementation_type & impl,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ ReadHandler handler);
+
+
+
+[endsect]
+
+
+
+[section:async_write_some_at windows::random_access_handle_service::async_write_some_at]
+
+[indexterm2 async_write_some_at..windows::random_access_handle_service] Start an asynchronous write at the specified offset.
+
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename ``[link boost_asio.reference.WriteHandler WriteHandler]``>
+ void async_write_some_at(
+ implementation_type & impl,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ WriteHandler handler);
+
+
+
+[endsect]
+
+
+
+[section:cancel windows::random_access_handle_service::cancel]
+
+[indexterm2 cancel..windows::random_access_handle_service] Cancel all asynchronous operations associated with the handle.
+
+ boost::system::error_code cancel(
+ implementation_type & impl,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:close windows::random_access_handle_service::close]
+
+[indexterm2 close..windows::random_access_handle_service] Close a random-access handle implementation.
+
+ boost::system::error_code close(
+ implementation_type & impl,
+ boost::system::error_code & ec);
+
+
+
+[endsect]
+
+
+
+[section:construct windows::random_access_handle_service::construct]
+
+[indexterm2 construct..windows::random_access_handle_service] Construct a new random-access handle implementation.
+
+ void construct(
+ implementation_type & impl);
+
+
+
+[endsect]
+
+
+
+[section:destroy windows::random_access_handle_service::destroy]
+
+[indexterm2 destroy..windows::random_access_handle_service] Destroy a random-access handle implementation.
+
+ void destroy(
+ implementation_type & impl);
+
+
+
+[endsect]
+
+
+
+[section:get_io_service windows::random_access_handle_service::get_io_service]
+
+
+['Inherited from io_service.]
+
+[indexterm2 get_io_service..windows::random_access_handle_service] Get the io_service object that owns the service.
+
+ boost::asio::io_service & get_io_service();
+
+
+
+[endsect]
+
+
+
+[section:id windows::random_access_handle_service::id]
 
-Read some data from the handle.
+[indexterm2 id..windows::random_access_handle_service] The unique service identifier.
 
- template<
- typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
- std::size_t read_some(
- const MutableBufferSequence & buffers,
- boost::system::error_code & ec);
+ static boost::asio::io_service::id id;
 
 
-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.
 
+[endsect]
 
-[heading Parameters]
-
 
-[variablelist
-
-[[buffers][One or more buffers into which the data will be read.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[section:implementation_type windows::random_access_handle_service::implementation_type]
 
-]
+[indexterm2 implementation_type..windows::random_access_handle_service] The type of a random-access handle implementation.
 
-[heading Return Value]
-
-The number of bytes read. Returns 0 if an error occurred.
+ typedef implementation_defined implementation_type;
 
-[heading Remarks]
-
-The read\_some operation may not read all of the requested number of bytes. Consider using the
-[link boost_asio.reference.read read] function if you need to ensure that the requested amount of data is read before the blocking operation completes.
 
 
 
 [endsect]
 
 
-[endsect]
-
 
-[section:service windows::basic_stream_handle::service]
+[section:io_service windows::random_access_handle_service::io_service]
 
 
-['Inherited from basic_io_object.]
+['Inherited from io_service.]
 
-The service associated with the I/O object.
+[indexterm2 io_service..windows::random_access_handle_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
- service_type & service;
+ boost::asio::io_service & io_service();
 
 
 
@@ -52940,142 +59381,112 @@
 
 
 
-[section:service_type windows::basic_stream_handle::service_type]
+[section:is_open windows::random_access_handle_service::is_open]
 
+[indexterm2 is_open..windows::random_access_handle_service] Determine whether the handle is open.
 
-['Inherited from basic_io_object.]
+ bool is_open(
+ const implementation_type & impl) const;
 
-The type of the service that will be used to provide I/O operations.
 
- typedef StreamHandleService service_type;
 
+[endsect]
 
 
 
-[endsect]
+[section:native windows::random_access_handle_service::native]
 
+[indexterm2 native..windows::random_access_handle_service] Get the native handle implementation.
 
-[section:write_some windows::basic_stream_handle::write_some]
+ native_type native(
+ implementation_type & impl);
 
-Write some data to the handle.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.windows__basic_stream_handle.write_some.overload1 write_some]``(
- const ConstBufferSequence & buffers);
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t ``[link boost_asio.reference.windows__basic_stream_handle.write_some.overload2 write_some]``(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
+[endsect]
 
 
-[section:overload1 windows::basic_stream_handle::write_some (1 of 2 overloads)]
 
-Write some data to the handle.
+[section:native_type windows::random_access_handle_service::native_type]
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers);
+[indexterm2 native_type..windows::random_access_handle_service] The native handle type.
 
+ typedef implementation_defined native_type;
 
-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.
 
 
-[heading Parameters]
-
 
-[variablelist
-
-[[buffers][One or more data buffers to be written to the handle.]]
+[endsect]
 
-]
 
-[heading Return Value]
-
-The number of bytes written.
 
-[heading Exceptions]
-
+[section:random_access_handle_service windows::random_access_handle_service::random_access_handle_service]
 
-[variablelist
-
-[[boost::system::system_error][Thrown on failure. An error code of boost::asio::error::eof indicates that the connection was closed by the peer.]]
+[indexterm2 random_access_handle_service..windows::random_access_handle_service] Construct a new random-access handle service for the specified io_service.
 
-]
+ random_access_handle_service(
+ boost::asio::io_service & io_service);
 
-[heading Remarks]
-
-The write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
 
-[heading Example]
-
-To write a single data buffer use the
-[link boost_asio.reference.buffer buffer] function as follows:
 
- handle.write_some(boost::asio::buffer(data, size));
+[endsect]
 
 
-See the
-[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
 
+[section:read_some_at windows::random_access_handle_service::read_some_at]
 
+[indexterm2 read_some_at..windows::random_access_handle_service] Read some data from the specified offset.
 
-[endsect]
+ template<
+ typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
+ std::size_t read_some_at(
+ implementation_type & impl,
+ boost::uint64_t offset,
+ const MutableBufferSequence & buffers,
+ boost::system::error_code & ec);
 
 
 
-[section:overload2 windows::basic_stream_handle::write_some (2 of 2 overloads)]
+[endsect]
 
-Write some data to the handle.
 
- template<
- typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
- std::size_t write_some(
- const ConstBufferSequence & buffers,
- boost::system::error_code & ec);
 
+[section:shutdown_service windows::random_access_handle_service::shutdown_service]
 
-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.
+[indexterm2 shutdown_service..windows::random_access_handle_service] Destroy all user-defined handler objects owned by the service.
 
+ void shutdown_service();
 
-[heading Parameters]
-
 
-[variablelist
-
-[[buffers][One or more data buffers to be written to the handle.]]
 
-[[ec][Set to indicate what error occurred, if any.]]
+[endsect]
 
-]
 
-[heading Return Value]
-
-The number of bytes written. Returns 0 if an error occurred.
 
-[heading Remarks]
-
-The write\_some operation may not transmit all of the data to the peer. Consider using the
-[link boost_asio.reference.write write] function if you need to ensure that all data is written before the blocking operation completes.
+[section:write_some_at windows::random_access_handle_service::write_some_at]
 
+[indexterm2 write_some_at..windows::random_access_handle_service] Write the given data at the specified offset.
 
+ template<
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_some_at(
+ implementation_type & impl,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ boost::system::error_code & ec);
 
-[endsect]
 
 
 [endsect]
 
 
+
 [endsect]
 
 
 [section:windows__stream_handle windows::stream_handle]
 
-Typedef for the typical usage of a stream-oriented handle.
+[indexterm1 windows::stream_handle] Typedef for the typical usage of a stream-oriented handle.
 
   typedef basic_stream_handle stream_handle;
 
@@ -53339,7 +59750,7 @@
 
 [section:assign windows::stream_handle_service::assign]
 
-Assign an existing native handle to a stream handle.
+[indexterm2 assign..windows::stream_handle_service] Assign an existing native handle to a stream handle.
 
   boost::system::error_code assign(
       implementation_type & impl,
@@ -53354,7 +59765,7 @@
 
 [section:async_read_some windows::stream_handle_service::async_read_some]
 
-Start an asynchronous read.
+[indexterm2 async_read_some..windows::stream_handle_service] Start an asynchronous read.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``,
@@ -53372,7 +59783,7 @@
 
 [section:async_write_some windows::stream_handle_service::async_write_some]
 
-Start an asynchronous write.
+[indexterm2 async_write_some..windows::stream_handle_service] Start an asynchronous write.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
@@ -53390,7 +59801,7 @@
 
 [section:cancel windows::stream_handle_service::cancel]
 
-Cancel all asynchronous operations associated with the handle.
+[indexterm2 cancel..windows::stream_handle_service] Cancel all asynchronous operations associated with the handle.
 
   boost::system::error_code cancel(
       implementation_type & impl,
@@ -53404,7 +59815,7 @@
 
 [section:close windows::stream_handle_service::close]
 
-Close a stream handle implementation.
+[indexterm2 close..windows::stream_handle_service] Close a stream handle implementation.
 
   boost::system::error_code close(
       implementation_type & impl,
@@ -53418,7 +59829,7 @@
 
 [section:construct windows::stream_handle_service::construct]
 
-Construct a new stream handle implementation.
+[indexterm2 construct..windows::stream_handle_service] Construct a new stream handle implementation.
 
   void construct(
       implementation_type & impl);
@@ -53431,7 +59842,7 @@
 
 [section:destroy windows::stream_handle_service::destroy]
 
-Destroy a stream handle implementation.
+[indexterm2 destroy..windows::stream_handle_service] Destroy a stream handle implementation.
 
   void destroy(
       implementation_type & impl);
@@ -53447,7 +59858,7 @@
 
 ['Inherited from io_service.]
 
-Get the io_service object that owns the service.
+[indexterm2 get_io_service..windows::stream_handle_service] Get the io_service object that owns the service.
 
   boost::asio::io_service & get_io_service();
 
@@ -53459,7 +59870,7 @@
 
 [section:id windows::stream_handle_service::id]
 
-The unique service identifier.
+[indexterm2 id..windows::stream_handle_service] The unique service identifier.
 
   static boost::asio::io_service::id id;
 
@@ -53471,7 +59882,7 @@
 
 [section:implementation_type windows::stream_handle_service::implementation_type]
 
-The type of a stream handle implementation.
+[indexterm2 implementation_type..windows::stream_handle_service] The type of a stream handle implementation.
 
   typedef implementation_defined implementation_type;
 
@@ -53487,7 +59898,7 @@
 
 ['Inherited from io_service.]
 
-(Deprecated: use get_io_service().) Get the io_service object that owns the service.
+[indexterm2 io_service..windows::stream_handle_service] (Deprecated: use get_io_service().) Get the io_service object that owns the service.
 
   boost::asio::io_service & io_service();
 
@@ -53499,7 +59910,7 @@
 
 [section:is_open windows::stream_handle_service::is_open]
 
-Determine whether the handle is open.
+[indexterm2 is_open..windows::stream_handle_service] Determine whether the handle is open.
 
   bool is_open(
       const implementation_type & impl) const;
@@ -53512,7 +59923,7 @@
 
 [section:native windows::stream_handle_service::native]
 
-Get the native handle implementation.
+[indexterm2 native..windows::stream_handle_service] Get the native handle implementation.
 
   native_type native(
       implementation_type & impl);
@@ -53525,7 +59936,7 @@
 
 [section:native_type windows::stream_handle_service::native_type]
 
-The native handle type.
+[indexterm2 native_type..windows::stream_handle_service] The native handle type.
 
   typedef implementation_defined native_type;
 
@@ -53538,7 +59949,7 @@
 
 [section:read_some windows::stream_handle_service::read_some]
 
-Read some data from the stream.
+[indexterm2 read_some..windows::stream_handle_service] Read some data from the stream.
 
   template<
       typename ``[link boost_asio.reference.MutableBufferSequence MutableBufferSequence]``>
@@ -53555,7 +59966,7 @@
 
 [section:shutdown_service windows::stream_handle_service::shutdown_service]
 
-Destroy all user-defined handler objects owned by the service.
+[indexterm2 shutdown_service..windows::stream_handle_service] Destroy all user-defined handler objects owned by the service.
 
   void shutdown_service();
 
@@ -53567,7 +59978,7 @@
 
 [section:stream_handle_service windows::stream_handle_service::stream_handle_service]
 
-Construct a new stream handle service for the specified io_service.
+[indexterm2 stream_handle_service..windows::stream_handle_service] Construct a new stream handle service for the specified io_service.
 
   stream_handle_service(
       boost::asio::io_service & io_service);
@@ -53580,7 +59991,7 @@
 
 [section:write_some windows::stream_handle_service::write_some]
 
-Write the given data to the stream.
+[indexterm2 write_some..windows::stream_handle_service] Write the given data to the stream.
 
   template<
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -53599,8 +60010,8 @@
 
 [section:write write]
 
-Write all of the supplied data to a stream before returning.
-
+[indexterm1 write] Write a certain amount of data to a stream before returning.
+
   template<
       typename ``[link boost_asio.reference.SyncWriteStream SyncWriteStream]``,
       typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
@@ -53770,7 +60181,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's write\_some function are required.]]
 
@@ -53850,7 +60260,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's write\_some function are required.]]
 
@@ -53870,7 +60279,7 @@
 
 [section:overload4 write (4 of 6 overloads)]
 
-Write a certain amount of data to a stream before returning.
+Write all of the supplied data to a stream before returning.
 
   template<
       typename ``[link boost_asio.reference.SyncWriteStream SyncWriteStream]``,
@@ -53973,7 +60382,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's write\_some function are required.]]
 
@@ -54041,7 +60449,6 @@
      std::size_t bytes_transferred // Number of bytes transferred
                                              // so far.
    );
-
 ``
 A return value of true indicates that the write operation is complete. False indicates that further calls to the stream's write\_some function are required.]]
 
@@ -54060,6 +60467,489 @@
 
 [endsect]
 
+[section:write_at write_at]
+
+[indexterm1 write_at] Write a certain amount of data at a specified offset before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t ``[link boost_asio.reference.write_at.overload1 write_at]``(
+ SyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers);
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.write_at.overload2 write_at]``(
+ SyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ CompletionCondition completion_condition);
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.write_at.overload3 write_at]``(
+ SyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename Allocator>
+ std::size_t ``[link boost_asio.reference.write_at.overload4 write_at]``(
+ SyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b);
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.write_at.overload5 write_at]``(
+ SyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition);
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t ``[link boost_asio.reference.write_at.overload6 write_at]``(
+ SyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition,
+ boost::system::error_code & ec);
+
+
+[section:overload1 write_at (1 of 6 overloads)]
+
+Write all of the supplied data at the specified offset before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``>
+ std::size_t write_at(
+ SyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers);
+
+
+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:
+
+
+* 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.
+
+* An error occurred.
+
+This operation is implemented in terms of one or more calls to the device's write\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device to which the data is to be written. The type must support the SyncRandomAccessWriteDevice concept.]]
+
+[[offset][The offset at which the data will be written.]]
+
+[[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.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes transferred.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ boost::asio::write_at(d, 42, boost::asio::buffer(data, size));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+[heading Remarks]
+
+This overload is equivalent to calling:
+
+ boost::asio::write_at(
+ d, offset, buffers,
+ boost::asio::transfer_all());
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload2 write_at (2 of 6 overloads)]
+
+Write a certain amount of data at a specified offset before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename ``[link boost_asio.reference.ConstBufferSequence ConstBufferSequence]``,
+ typename CompletionCondition>
+ std::size_t write_at(
+ SyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ const ConstBufferSequence & buffers,
+ CompletionCondition completion_condition);
+
+
+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:
+
+
+* 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.
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the device's write\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device to which the data is to be written. The type must support the SyncRandomAccessWriteDevice concept.]]
+
+[[offset][The offset at which the data will be written.]]
+
+[[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.]]
+
+[[completion_condition][The function object to be called to determine whether the write operation is complete. The signature of the function object must be:
+``
+ bool 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
+ );
+``
+A return value of true indicates that the write operation is complete. False indicates that further calls to the device's write\_some\_at function are required.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes transferred.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Example]
+
+To write a single data buffer use the
+[link boost_asio.reference.buffer buffer] function as follows:
+
+ boost::asio::write_at(d, 42, boost::asio::buffer(data, size),
+ boost::asio::transfer_at_least(32));
+
+
+See the
+[link boost_asio.reference.buffer buffer] documentation for information on writing multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.
+
+
+
+[endsect]
+
+
+
+[section:overload3 write_at (3 of 6 overloads)]
+
+Write a certain amount of data at a specified offset before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename ``[link boost_asio.reference.ConstBufferSequence 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);
+
+
+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:
+
+
+* 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.
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the device's write\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device to which the data is to be written. The type must support the SyncRandomAccessWriteDevice concept.]]
+
+[[offset][The offset at which the data will be written.]]
+
+[[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.]]
+
+[[completion_condition][The function object to be called to determine whether the write operation is complete. The signature of the function object must be:
+``
+ bool 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
+ );
+``
+A return value of true indicates that the write operation is complete. False indicates that further calls to the device's write\_some\_at function are required.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes written. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
+
+
+
+[endsect]
+
+
+
+[section:overload4 write_at (4 of 6 overloads)]
+
+Write all of the supplied data at the specified offset before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename Allocator>
+ std::size_t write_at(
+ SyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b);
+
+
+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:
+
+
+* All of the data in the supplied basic_streambuf has been written.
+
+* An error occurred.
+
+This operation is implemented in terms of one or more calls to the device's write\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device to which the data is to be written. The type must support the SyncRandomAccessWriteDevice concept.]]
+
+[[offset][The offset at which the data will be written.]]
+
+[[b][The basic\_streambuf object from which data will be written.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes transferred.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure.]]
+
+]
+
+[heading Remarks]
+
+This overload is equivalent to calling:
+
+ boost::asio::write_at(
+ d, 42, b,
+ boost::asio::transfer_all());
+
+
+
+
+
+
+[endsect]
+
+
+
+[section:overload5 write_at (5 of 6 overloads)]
+
+Write a certain amount of data at a specified offset before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice SyncRandomAccessWriteDevice]``,
+ typename Allocator,
+ typename CompletionCondition>
+ std::size_t write_at(
+ SyncRandomAccessWriteDevice & d,
+ boost::uint64_t offset,
+ basic_streambuf< Allocator > & b,
+ CompletionCondition completion_condition);
+
+
+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:
+
+
+* All of the data in the supplied basic_streambuf has been written.
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the device's write\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device to which the data is to be written. The type must support the SyncRandomAccessWriteDevice concept.]]
+
+[[offset][The offset at which the data will be written.]]
+
+[[b][The basic\_streambuf object from which data will be written.]]
+
+[[completion_condition][The function object to be called to determine whether the write operation is complete. The signature of the function object must be:
+``
+ bool 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
+ );
+``
+A return value of true indicates that the write operation is complete. False indicates that further calls to the device's write\_some\_at function are required.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes transferred.
+
+[heading Exceptions]
+
+
+[variablelist
+
+[[boost::system::system_error][Thrown on failure. ]]
+
+]
+
+
+
+[endsect]
+
+
+
+[section:overload6 write_at (6 of 6 overloads)]
+
+Write a certain amount of data at a specified offset before returning.
+
+ template<
+ typename ``[link boost_asio.reference.SyncRandomAccessWriteDevice 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);
+
+
+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:
+
+
+* All of the data in the supplied basic_streambuf has been written.
+
+* The completion_condition function object returns true.
+
+This operation is implemented in terms of one or more calls to the device's write\_some\_at function.
+
+
+[heading Parameters]
+
+
+[variablelist
+
+[[d][The device to which the data is to be written. The type must support the SyncRandomAccessWriteDevice concept.]]
+
+[[offset][The offset at which the data will be written.]]
+
+[[b][The basic\_streambuf object from which data will be written.]]
+
+[[completion_condition][The function object to be called to determine whether the write operation is complete. The signature of the function object must be:
+``
+ bool 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
+ );
+``
+A return value of true indicates that the write operation is complete. False indicates that further calls to the device's write\_some\_at function are required.]]
+
+[[ec][Set to indicate what error occurred, if any.]]
+
+]
+
+[heading Return Value]
+
+The number of bytes written. If an error occurs, returns the total number of bytes successfully transferred prior to the error.
+
+
+
+[endsect]
+
+
+[endsect]
+
 [section:is_error_code_enum_lt__addrinfo_errors__gt_ boost::system::is_error_code_enum< boost::asio::error::addrinfo_errors >]
 
 
@@ -54082,7 +60972,7 @@
 
 [section:value boost::system::is_error_code_enum< boost::asio::error::addrinfo_errors >::value]
 
-
+[indexterm2 value..boost::system::is_error_code_enum< boost::asio::error::addrinfo_errors >]
 
   static const bool value = true;
 
@@ -54116,7 +61006,7 @@
 
 [section:value boost::system::is_error_code_enum< boost::asio::error::basic_errors >::value]
 
-
+[indexterm2 value..boost::system::is_error_code_enum< boost::asio::error::basic_errors >]
 
   static const bool value = true;
 
@@ -54150,7 +61040,7 @@
 
 [section:value boost::system::is_error_code_enum< boost::asio::error::misc_errors >::value]
 
-
+[indexterm2 value..boost::system::is_error_code_enum< boost::asio::error::misc_errors >]
 
   static const bool value = true;
 
@@ -54184,7 +61074,7 @@
 
 [section:value boost::system::is_error_code_enum< boost::asio::error::netdb_errors >::value]
 
-
+[indexterm2 value..boost::system::is_error_code_enum< boost::asio::error::netdb_errors >]
 
   static const bool value = true;
 
@@ -54218,7 +61108,7 @@
 
 [section:value boost::system::is_error_code_enum< boost::asio::error::ssl_errors >::value]
 
-
+[indexterm2 value..boost::system::is_error_code_enum< boost::asio::error::ssl_errors >]
 
   static const bool value = true;
 

Modified: branches/proto/v4/libs/asio/doc/reference.xsl
==============================================================================
--- branches/proto/v4/libs/asio/doc/reference.xsl (original)
+++ branches/proto/v4/libs/asio/doc/reference.xsl 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -37,6 +37,8 @@
 
 [include requirements/asynchronous_operations.qbk]
 [include requirements/AcceptHandler.qbk]
+[include requirements/AsyncRandomAccessReadDevice.qbk]
+[include requirements/AsyncRandomAccessWriteDevice.qbk]
 [include requirements/AsyncReadStream.qbk]
 [include requirements/AsyncWriteStream.qbk]
 [include requirements/CompletionHandler.qbk]
@@ -47,6 +49,7 @@
 [include requirements/DatagramSocketService.qbk]
 [include requirements/DescriptorService.qbk]
 [include requirements/Endpoint.qbk]
+[include requirements/GettableSerialPortOption.qbk]
 [include requirements/GettableSocketOption.qbk]
 [include requirements/Handler.qbk]
 [include requirements/HandleService.qbk]
@@ -55,16 +58,22 @@
 [include requirements/IoObjectService.qbk]
 [include requirements/MutableBufferSequence.qbk]
 [include requirements/Protocol.qbk]
+[include requirements/RandomAccessHandleService.qbk]
+[include requirements/RawSocketService.qbk]
 [include requirements/ReadHandler.qbk]
 [include requirements/ResolveHandler.qbk]
 [include requirements/ResolverService.qbk]
+[include requirements/SerialPortService.qbk]
 [include requirements/Service.qbk]
+[include requirements/SettableSerialPortOption.qbk]
 [include requirements/SettableSocketOption.qbk]
 [include requirements/SocketAcceptorService.qbk]
 [include requirements/SocketService.qbk]
 [include requirements/StreamDescriptorService.qbk]
 [include requirements/StreamHandleService.qbk]
 [include requirements/StreamSocketService.qbk]
+[include requirements/SyncRandomAccessReadDevice.qbk]
+[include requirements/SyncRandomAccessWriteDevice.qbk]
 [include requirements/SyncReadStream.qbk]
 [include requirements/SyncWriteStream.qbk]
 [include requirements/TimeTraits.qbk]
@@ -271,7 +280,9 @@
   <xsl:text>``</xsl:text>
   <xsl:value-of select="$newline"/>
   <xsl:apply-templates mode="codeline"/>
- <xsl:value-of select="$newline"/>
+ <xsl:if test="substring(., string-length(.)) = $newline">
+ <xsl:value-of select="$newline"/>
+ </xsl:if>
   <xsl:text>``</xsl:text>
   <xsl:value-of select="$newline"/>
 </xsl:template>
@@ -315,6 +326,16 @@
 </xsl:template>
 
 
+<xsl:template match="computeroutput" mode="markup">
+<xsl:text>`</xsl:text><xsl:value-of select="."/><xsl:text>`</xsl:text>
+</xsl:template>
+
+
+<xsl:template match="computeroutput" mode="markup-nested">
+<xsl:text>`</xsl:text><xsl:value-of select="."/><xsl:text>`</xsl:text>
+</xsl:template>
+
+
 <xsl:template match="listitem" mode="markup">
 * <xsl:value-of select="."/><xsl:text>
 </xsl:text>
@@ -808,6 +829,12 @@
 [section:<xsl:value-of select="$id"/><xsl:text> </xsl:text>
 <xsl:value-of select="$class-name"/>::<xsl:value-of select="$name"/>]
 
+<xsl:text>[indexterm2 </xsl:text>
+<xsl:value-of select="$name"/>
+<xsl:text>..</xsl:text>
+<xsl:value-of select="$class-name"/>
+<xsl:text>] </xsl:text>
+
 <xsl:value-of select="briefdescription"/><xsl:text>
 </xsl:text>
 
@@ -838,6 +865,14 @@
 
 </xsl:text></xsl:if></xsl:if>
 
+<xsl:if test="$overload-count = 1">
+ <xsl:text>[indexterm2 </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>..</xsl:text>
+ <xsl:value-of select="$class-name"/>
+ <xsl:text>] </xsl:text>
+</xsl:if>
+
 <xsl:value-of select="briefdescription"/><xsl:text>
 </xsl:text>
 
@@ -956,18 +991,33 @@
         <xsl:when test="declname = 'Arg'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'BufferSequence'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
+ <xsl:when test="declname = 'ByteType'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
         <xsl:when test="declname = 'CompletionCondition'">
           <xsl:value-of select="declname"/>
         </xsl:when>
         <xsl:when test="declname = 'Context_Service'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'Elem'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
+ <xsl:when test="declname = 'ErrorEnum'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
         <xsl:when test="declname = 'Function'">
           <xsl:value-of select="declname"/>
         </xsl:when>
         <xsl:when test="declname = 'HandshakeHandler'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'MatchCondition'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
         <xsl:when test="declname = 'N'">
           <xsl:value-of select="declname"/>
         </xsl:when>
@@ -977,9 +1027,15 @@
         <xsl:when test="declname = 'PodType'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'PointerToPodType'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
         <xsl:when test="declname = 'ShutdownHandler'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'SocketService1' or declname = 'SocketService2'">
+ <xsl:value-of select="concat('``[link boost_asio.reference.SocketService ', declname, ']``')"/>
+ </xsl:when>
         <xsl:when test="declname = 'Stream'">
           <xsl:value-of select="declname"/>
         </xsl:when>
@@ -995,6 +1051,12 @@
         <xsl:when test="declname = 'Time'">
           <xsl:value-of select="declname"/>
         </xsl:when>
+ <xsl:when test="declname = 'TimeType'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
+ <xsl:when test="declname = 'Traits'">
+ <xsl:value-of select="declname"/>
+ </xsl:when>
         <xsl:when test="count(declname) = 0">
         </xsl:when>
         <xsl:otherwise>
@@ -1052,8 +1114,22 @@
 <xsl:if test="$overload-count &gt; 1 and $overload-position = 1">
 [section:<xsl:value-of select="$id"/><xsl:text> </xsl:text><xsl:value-of select="$name"/>]
 
-<xsl:value-of select="briefdescription"/><xsl:text>
-</xsl:text>
+<xsl:text>[indexterm1 </xsl:text>
+<xsl:value-of select="$name"/>
+<xsl:text>] </xsl:text>
+
+<xsl:choose>
+ <xsl:when test="count(/doxygen/compounddef[@kind='group' and compoundname=$name]) &gt; 0">
+ <xsl:for-each select="/doxygen/compounddef[@kind='group' and compoundname=$name]">
+ <xsl:value-of select="briefdescription"/><xsl:text>
+ </xsl:text>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="briefdescription"/><xsl:text>
+ </xsl:text>
+ </xsl:otherwise>
+</xsl:choose>
 
 <xsl:for-each select="../memberdef[name = $unqualified-name]">
 <xsl:text>
@@ -1076,6 +1152,12 @@
 <xsl:if test="$overload-count &gt; 1"> (<xsl:value-of
  select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>]
 
+<xsl:if test="$overload-count = 1">
+ <xsl:text>[indexterm1 </xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>] </xsl:text>
+</xsl:if>
+
 <xsl:value-of select="briefdescription"/><xsl:text>
 </xsl:text>
 

Modified: branches/proto/v4/libs/asio/doc/requirements/StreamDescriptorService.qbk
==============================================================================
--- branches/proto/v4/libs/asio/doc/requirements/StreamDescriptorService.qbk (original)
+++ branches/proto/v4/libs/asio/doc/requirements/StreamDescriptorService.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -29,7 +29,7 @@
     [
       pre: `a.is_open(b)`.\n
       \n
- Reads one or more bytes of data from a decsriptor `b`.\n
+ Reads one or more bytes of data from a descriptor `b`.\n
       \n
       The mutable buffer sequence `mb` specifies memory where the data should
       be placed. The operation shall always fill a buffer in the sequence
@@ -105,7 +105,7 @@
       pre: `a.is_open(b)`.\n
       \n
       Initiates an asynchronous operation to write one or more bytes of data to
- a decsriptor `b`. The operation is performed via the `io_service`
+ a descriptor `b`. The operation is performed via the `io_service`
       object `a.io_service()` and behaves according to [link
       boost_asio.reference.asynchronous_operations asynchronous operation]
       requirements.\n

Modified: branches/proto/v4/libs/asio/doc/requirements/StreamHandleService.qbk
==============================================================================
--- branches/proto/v4/libs/asio/doc/requirements/StreamHandleService.qbk (original)
+++ branches/proto/v4/libs/asio/doc/requirements/StreamHandleService.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -29,7 +29,7 @@
     [
       pre: `a.is_open(b)`.\n
       \n
- Reads one or more bytes of data from a decsriptor `b`.\n
+ Reads one or more bytes of data from a handle `b`.\n
       \n
       The mutable buffer sequence `mb` specifies memory where the data should
       be placed. The operation shall always fill a buffer in the sequence
@@ -105,7 +105,7 @@
       pre: `a.is_open(b)`.\n
       \n
       Initiates an asynchronous operation to write one or more bytes of data to
- a decsriptor `b`. The operation is performed via the `io_service`
+ a handle `b`. The operation is performed via the `io_service`
       object `a.io_service()` and behaves according to [link
       boost_asio.reference.asynchronous_operations asynchronous operation]
       requirements.\n

Modified: branches/proto/v4/libs/asio/doc/tutorial.dox
==============================================================================
--- branches/proto/v4/libs/asio/doc/tutorial.dox (original)
+++ branches/proto/v4/libs/asio/doc/tutorial.dox 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -188,7 +188,7 @@
 #---------------------------------------------------------------------------
 # Configuration::additions related to external references
 #---------------------------------------------------------------------------
-TAGFILES =
+TAGFILES = reference.tags
 GENERATE_TAGFILE =
 ALLEXTERNALS = NO
 EXTERNAL_GROUPS = YES

Modified: branches/proto/v4/libs/asio/doc/tutorial.qbk
==============================================================================
--- branches/proto/v4/libs/asio/doc/tutorial.qbk (original)
+++ branches/proto/v4/libs/asio/doc/tutorial.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -88,7 +88,8 @@
 
 
 
-All programs that use asio need to have at least one boost::asio::io\_service object. This class provides access to I/O functionality. We declare an object of this type first thing in the main function.
+All programs that use asio need to have at least one
+[link boost_asio.reference.io_service io_service] object. This class provides access to I/O functionality. We declare an object of this type first thing in the main function.
 
 
 
@@ -106,9 +107,9 @@
 
 
 
-In this simple example we perform a blocking wait on the timer. That is, the call to boost::asio::deadline\_timer::wait() will not return until the timer has expired, 5 seconds after it was created (i.e. not from when the wait starts).
+In this simple example we perform a blocking wait on the timer. That is, the call to [link boost_asio.reference.basic_deadline_timer.wait deadline_timer::wait()] will not return until the timer has expired, 5 seconds after it was created (i.e. not from when the wait starts).
 
-A deadline timer is always in one of two states: "expired" or "not expired". If the boost::asio::deadline\_timer::wait() function is called on an expired timer, it will return immediately.
+A deadline timer is always in one of two states: "expired" or "not expired". If the [link boost_asio.reference.basic_deadline_timer.wait deadline_timer::wait()] function is called on an expired timer, it will return immediately.
 
 
   ``''''''`` t.wait();
@@ -201,20 +202,20 @@
 
 
 
-Next, instead of doing a blocking wait as in tutorial Timer.1, we call the boost::asio::deadline\_timer::async\_wait() function to perform an asynchronous wait. When calling this function we pass the `print` callback handler that was defined above.
+Next, instead of doing a blocking wait as in tutorial Timer.1, we call the [link boost_asio.reference.basic_deadline_timer.async_wait deadline_timer::async_wait()] function to perform an asynchronous wait. When calling this function we pass the `print` callback handler that was defined above.
 
 
   ``''''''`` t.async_wait(print);
 
 
 
-Finally, we must call the boost::asio::io\_service::run() member function on the io\_service object.
+Finally, we must call the [link boost_asio.reference.io_service.run io_service::run()] member function on the io\_service object.
 
-The asio library provides a guarantee that callback handlers will only be called from threads that are currently calling boost::asio::io\_service::run(). Therefore unless the boost::asio::io\_service::run() function is called the callback for the asynchronous wait completion will never be invoked.
+The asio library provides a guarantee that callback handlers will only be called from threads that are currently calling [link boost_asio.reference.io_service.run io_service::run()]. Therefore unless the [link boost_asio.reference.io_service.run io_service::run()] function is called the callback for the asynchronous wait completion will never be invoked.
 
-The boost::asio::io\_service::run() function will also continue to run while there is still "work" to do. In this example, the work is the asynchronous wait on the timer, so the call will not return until the timer has expired and the callback has completed.
+The [link boost_asio.reference.io_service.run io_service::run()] function will also continue to run while there is still "work" to do. In this example, the work is the asynchronous wait on the timer, so the call will not return until the timer has expired and the callback has completed.
 
-It is important to remember to give the io\_service some work to do before calling boost::asio::io\_service::run(). For example, if we had omitted the above call to boost::asio::deadline\_timer::async\_wait(), the io\_service would not have had any work to do, and consequently boost::asio::io\_service::run() would have returned immediately.
+It is important to remember to give the io\_service some work to do before calling [link boost_asio.reference.io_service.run io_service::run()]. For example, if we had omitted the above call to [link boost_asio.reference.basic_deadline_timer.async_wait deadline_timer::async_wait()], the io\_service would not have had any work to do, and consequently [link boost_asio.reference.io_service.run io_service::run()] would have returned immediately.
 
 
   ``''''''`` io.run();
@@ -306,7 +307,7 @@
 
 
 
-As mentioned above, this tutorial program uses a counter to stop running when the timer fires for the sixth time. However you will observe that there is no explicit call to ask the io\_service to stop. Recall that in tutorial Timer.2 we learnt that the boost::asio::io\_service::run() function completes when there is no more "work" to do. By not starting a new asynchronous wait on the timer when `count` reaches 5, the io\_service will run out of work and stop running.
+As mentioned above, this tutorial program uses a counter to stop running when the timer fires for the sixth time. However you will observe that there is no explicit call to ask the io\_service to stop. Recall that in tutorial Timer.2 we learnt that the [link boost_asio.reference.io_service.run io_service::run()] function completes when there is no more "work" to do. By not starting a new asynchronous wait on the timer when `count` reaches 5, the io\_service will run out of work and stop running.
 
 
   ``''''''`` if (*count < 5)
@@ -324,7 +325,7 @@
 
 
 
-Then we start a new asynchronous wait on the timer. As you can see, the boost::bind() function is used to associate the extra parameters with your callback handler. The boost::asio::deadline\_timer::async\_wait() function expects a handler function (or function object) with the signature `void(const boost::system::error_code&)`. Binding the additional parameters converts your `print` function into a function object that matches the signature correctly.
+Then we start a new asynchronous wait on the timer. As you can see, the boost::bind() function is used to associate the extra parameters with your callback handler. The [link boost_asio.reference.basic_deadline_timer.async_wait deadline_timer::async_wait()] function expects a handler function (or function object) with the signature `void(const boost::system::error_code&)`. Binding the additional parameters converts your `print` function into a function object that matches the signature correctly.
 
 See the [@http://www.boost.org/libs/bind/bind.html Boost.Bind documentation] for more information on how to use boost::bind().
 
@@ -351,7 +352,7 @@
 
 
 
-As in Step 4, when making the call to boost::asio::deadline\_timer::async\_wait() from `main` we bind the additional parameters needed for the `print` function.
+As in Step 4, when making the call to [link boost_asio.reference.basic_deadline_timer.async_wait deadline_timer::async_wait()] from `main` we bind the additional parameters needed for the `print` function.
 
 
   ``''''''`` t.async_wait(boost::bind(print,
@@ -612,7 +613,7 @@
 
 This tutorial demonstrates the use of the boost::asio::strand class to synchronise callback handlers in a multithreaded program.
 
-The previous four tutorials avoided the issue of handler synchronisation by calling the boost::asio::io\_service::run() function from one thread only. As you already know, the asio library provides a guarantee that callback handlers will only be called from threads that are currently calling boost::asio::io\_service::run(). Consequently, calling boost::asio::io\_service::run() from only one thread ensures that callback handlers cannot run concurrently.
+The previous four tutorials avoided the issue of handler synchronisation by calling the [link boost_asio.reference.io_service.run io_service::run()] function from one thread only. As you already know, the asio library provides a guarantee that callback handlers will only be called from threads that are currently calling [link boost_asio.reference.io_service.run io_service::run()]. Consequently, calling [link boost_asio.reference.io_service.run io_service::run()] from only one thread ensures that callback handlers cannot run concurrently.
 
 The single threaded approach is usually the best place to start when developing applications using asio. The downside is the limitations it places on programs, particularly servers, including:
 
@@ -624,7 +625,7 @@
 
 
 
-If you find yourself running into these limitations, an alternative approach is to have a pool of threads calling boost::asio::io\_service::run(). However, as this allows handlers to execute concurrently, we need a method of synchronisation when handlers might be accessing a shared, thread-unsafe resource.
+If you find yourself running into these limitations, an alternative approach is to have a pool of threads calling [link boost_asio.reference.io_service.run io_service::run()]. However, as this allows handlers to execute concurrently, we need a method of synchronisation when handlers might be accessing a shared, thread-unsafe resource.
 
 
 
@@ -651,7 +652,7 @@
 
 In addition to initialising a pair of boost::asio::deadline\_timer members, the constructor initialises the `strand_` member, an object of type boost::asio::strand.
 
-An boost::asio::strand guarantees that, for those handlers that are dispatched through it, an executing handler will be allowed to complete before the next one is started. This is guaranteed irrespective of the number of threads that are calling boost::asio::io\_service::run(). Of course, the handlers may still execute concurrently with other handlers that were not dispatched through an boost::asio::strand, or were dispatched through a different boost::asio::strand object.
+An boost::asio::strand guarantees that, for those handlers that are dispatched through it, an executing handler will be allowed to complete before the next one is started. This is guaranteed irrespective of the number of threads that are calling [link boost_asio.reference.io_service.run io_service::run()]. Of course, the handlers may still execute concurrently with other handlers that were not dispatched through an boost::asio::strand, or were dispatched through a different boost::asio::strand object.
 
 
   ``''''''`` printer(boost::asio::io_service& io)
@@ -663,7 +664,7 @@
 
 
 
-When initiating the asynchronous operations, each callback handler is "wrapped" using the boost::asio::strand object. The boost::asio::strand::wrap() function returns a new handler that automatically dispatches its contained handler through the boost::asio::strand object. By wrapping the handlers using the same boost::asio::strand, we are ensuring that they cannot execute concurrently.
+When initiating the asynchronous operations, each callback handler is "wrapped" using the boost::asio::strand object. The [link boost_asio.reference.io_service__strand.wrap strand::wrap()] function returns a new handler that automatically dispatches its contained handler through the boost::asio::strand object. By wrapping the handlers using the same boost::asio::strand, we are ensuring that they cannot execute concurrently.
 
 
   ``''''''`` timer1_.async_wait(strand_.wrap(boost::bind(&printer::print1, this)));
@@ -714,9 +715,9 @@
 
 
 
-The `main` function now causes boost::asio::io\_service::run() to be called from two threads: the main thread and one additional thread. This is accomplished using an boost::thread object.
+The `main` function now causes [link boost_asio.reference.io_service.run io_service::run()] to be called from two threads: the main thread and one additional thread. This is accomplished using an boost::thread object.
 
-Just as it would with a call from a single thread, concurrent calls to boost::asio::io\_service::run() will continue to execute while there is "work" left to do. The background thread will not exit until all asynchronous operations have completed.
+Just as it would with a call from a single thread, concurrent calls to [link boost_asio.reference.io_service.run io_service::run()] will continue to execute while there is "work" left to do. The background thread will not exit until all asynchronous operations have completed.
 
 
 
@@ -863,7 +864,8 @@
 
 
 
-All programs that use asio need to have at least one boost::asio::io\_service object.
+All programs that use asio need to have at least one
+[link boost_asio.reference.io_service io_service] object.
 
 
 
@@ -871,7 +873,7 @@
 
 
 
-We need to turn the server name that was specified as a parameter to the application, into a TCP endpoint. To do this we use an boost::asio::ip::tcp::resolver object.
+We need to turn the server name that was specified as a parameter to the application, into a TCP endpoint. To do this we use an [link boost_asio.reference.ip__tcp.resolver ip::tcp::resolver] object.
 
 
 
@@ -886,7 +888,7 @@
 
 
 
-The list of endpoints is returned using an iterator of type boost::asio::ip::tcp::resolver::iterator. A default constructed boost::asio::ip::tcp::resolver::iterator object is used as the end iterator.
+The list of endpoints is returned using an iterator of type [link boost_asio.reference.ip__basic_resolver.iterator ip::tcp::resolver::iterator]. A default constructed [link boost_asio.reference.ip__basic_resolver.iterator ip::tcp::resolver::iterator] object is used as the end iterator.
 
 
   ``''''''`` tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
@@ -925,7 +927,7 @@
 
 
 
-When the server closes the connection, the boost::asio::ip::tcp::socket::read\_some() function will exit with the boost::asio::error::eof error, which is how we know to exit the loop.
+When the server closes the connection, the [link boost_asio.reference.basic_stream_socket.read_some ip::tcp::socket::read_some()] function will exit with the boost::asio::error::eof error, which is how we know to exit the loop.
 
 
 
@@ -1070,7 +1072,7 @@
 
 
 
-A boost::asio::ip::tcp::acceptor object needs to be created to listen for new connections. It is initialised to listen on TCP port 13, for IP version 4.
+A [link boost_asio.reference.ip__tcp.acceptor ip::tcp::acceptor] object needs to be created to listen for new connections. It is initialised to listen on TCP port 13, for IP version 4.
 
 
 
@@ -1199,7 +1201,8 @@
 
 
 
-We need to create a server object to accept incoming client connections. The boost::asio::io\_service object provides I/O services, such as sockets, that the server object will use.
+We need to create a server object to accept incoming client connections. The
+[link boost_asio.reference.io_service io_service] object provides I/O services, such as sockets, that the server object will use.
 
 
   ``''''''`` boost::asio::io_service io_service;
@@ -1207,7 +1210,8 @@
 
 
 
-Run the boost::asio::io\_service object so that it will perform asynchronous operations on your behalf.
+Run the
+[link boost_asio.reference.io_service io_service] object so that it will perform asynchronous operations on your behalf.
 
 
   ``''''''`` io_service.run();
@@ -1298,7 +1302,7 @@
 
 
 
-In the function `start()`, we call boost::asio::async\_write() to serve the data to the client. Note that we are using boost::asio::async\_write(), rather than boost::asio::ip::tcp::socket::async\_write\_some(), to ensure that the entire block of data is sent.
+In the function `start()`, we call boost::asio::async\_write() to serve the data to the client. Note that we are using boost::asio::async\_write(), rather than [link boost_asio.reference.basic_stream_socket.async_write_some ip::tcp::socket::async_write_some()], to ensure that the entire block of data is sent.
 
 
 
@@ -1533,7 +1537,7 @@
 
 
 
-We use an boost::asio::ip::udp::resolver object to find the correct remote endpoint to use based on the host and service names. The query is restricted to return only IPv4 endpoints by the boost::asio::ip::udp::v4() argument.
+We use an [link boost_asio.reference.ip__udp.resolver ip::udp::resolver] object to find the correct remote endpoint to use based on the host and service names. The query is restricted to return only IPv4 endpoints by the [link boost_asio.reference.ip__udp.v4 ip::udp::v4()] argument.
 
 
 
@@ -1542,14 +1546,14 @@
 
 
 
-The boost::asio::ip::udp::resolver::resolve() function is guaranteed to return at least one endpoint in the list if it does not fail. This means it is safe to dereference the return value directly.
+The [link boost_asio.reference.ip__basic_resolver.resolve ip::udp::resolver::resolve()] function is guaranteed to return at least one endpoint in the list if it does not fail. This means it is safe to dereference the return value directly.
 
 
   ``''''''`` udp::endpoint receiver_endpoint = *resolver.resolve(query);
 
 
 
-Since UDP is datagram-oriented, we will not be using a stream socket. Create an boost::asio::ip::udp::socket and initiate contact with the remote endpoint.
+Since UDP is datagram-oriented, we will not be using a stream socket. Create an [link boost_asio.reference.ip__udp.socket ip::udp::socket] and initiate contact with the remote endpoint.
 
 
 
@@ -1561,7 +1565,7 @@
 
 
 
-Now we need to be ready to accept whatever the server sends back to us. The endpoint on our side that receives the server's response will be initialised by boost::asio::ip::udp::socket::receive\_from().
+Now we need to be ready to accept whatever the server sends back to us. The endpoint on our side that receives the server's response will be initialised by [link boost_asio.reference.basic_datagram_socket.receive_from ip::udp::socket::receive_from()].
 
 
 
@@ -1671,7 +1675,7 @@
 
 
 
-Create an boost::asio::ip::udp::socket object to receive requests on UDP port 13.
+Create an [link boost_asio.reference.ip__udp.socket ip::udp::socket] object to receive requests on UDP port 13.
 
 
 
@@ -1679,7 +1683,7 @@
 
 
 
-Wait for a client to initiate contact with us. The remote\_endpoint object will be populated by boost::asio::ip::udp::socket::receive\_from().
+Wait for a client to initiate contact with us. The remote\_endpoint object will be populated by [link boost_asio.reference.basic_datagram_socket.receive_from ip::udp::socket::receive_from()].
 
 
 
@@ -1819,7 +1823,8 @@
 
 
 
-Create a server object to accept incoming client requests, and run the boost::asio::io\_service object.
+Create a server object to accept incoming client requests, and run the
+[link boost_asio.reference.io_service io_service] object.
 
 
   ``''''''`` boost::asio::io_service io_service;
@@ -1860,7 +1865,8 @@
 
 
 
-The function boost::asio::ip::udp::socket::async\_receive\_from() will cause the application to listen in the background for a new request. When such a request is received, the boost::asio::io\_service object will invoke the `handle_receive()` function with two arguments: a value of type boost::system::error\_code indicating whether the operation succeeded or failed, and a `size_t` value `bytes_transferred` specifying the number of bytes received.
+The function [link boost_asio.reference.basic_datagram_socket.async_receive_from ip::udp::socket::async_receive_from()] will cause the application to listen in the background for a new request. When such a request is received, the
+[link boost_asio.reference.io_service io_service] object will invoke the `handle_receive()` function with two arguments: a value of type boost::system::error\_code indicating whether the operation succeeded or failed, and a `size_t` value `bytes_transferred` specifying the number of bytes received.
 
 
   ``''''''`` socket_.async_receive_from(
@@ -1882,7 +1888,8 @@
 
 
 
-The `error` parameter contains the result of the asynchronous operation. Since we only provide the 1-byte `recv_buffer_` to contain the client's request, the boost::asio::io\_service object would return an error if the client sent anything larger. We can ignore such an error if it comes up.
+The `error` parameter contains the result of the asynchronous operation. Since we only provide the 1-byte `recv_buffer_` to contain the client's request, the
+[link boost_asio.reference.io_service io_service] object would return an error if the client sent anything larger. We can ignore such an error if it comes up.
 
 
   ``''''''`` if (!error || error == boost::asio::error::message_size)
@@ -1898,7 +1905,7 @@
 
 
 
-We now call boost::asio::ip::udp::socket::async\_send\_to() to serve the data to the client.
+We now call [link boost_asio.reference.basic_datagram_socket.async_send_to ip::udp::socket::async_send_to()] to serve the data to the client.
 
 
 
@@ -2082,7 +2089,8 @@
 
 
 
-We have created two lots of work for the boost::asio::io\_service object to do.
+We have created two lots of work for the
+[link boost_asio.reference.io_service io_service] object to do.
 
 
   ``''''''`` io_service.run();

Modified: branches/proto/v4/libs/asio/doc/tutorial.xsl
==============================================================================
--- branches/proto/v4/libs/asio/doc/tutorial.xsl (original)
+++ branches/proto/v4/libs/asio/doc/tutorial.xsl 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -70,6 +70,115 @@
 </xsl:template>
 
 
+<!--========== Utilities ==========-->
+
+<xsl:template name="strip-asio-ns">
+ <xsl:param name="name"/>
+ <xsl:choose>
+ <xsl:when test="contains($name, 'boost::system::is_error_code_enum')">
+ <xsl:value-of select="$name"/>
+ </xsl:when>
+ <xsl:when test="contains($name, 'asio::')">
+ <xsl:value-of select="substring-after($name, 'asio::')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="make-id">
+ <xsl:param name="name"/>
+ <xsl:choose>
+ <xsl:when test="contains($name, '::')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '::'), '__', substring-after($name, '::'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, '=')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '='), '_eq_', substring-after($name, '='))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, '!')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '!'), '_not_', substring-after($name, '!'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, '&lt;')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '&lt;'), '_lt_', substring-after($name, '&lt;'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, '&gt;')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '&gt;'), '_gt_', substring-after($name, '&gt;'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, '+')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '+'), '_plus_', substring-after($name, '+'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, '~')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, '~'), '_', substring-after($name, '~'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, ' ')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, ' '), '_', substring-after($name, ' '))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, 'boost__posix_time__ptime')">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name"
+ select="concat(substring-before($name, 'boost__posix_time__ptime'), 'ptime', substring-after($name, 'boost__posix_time__ptime'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="replace-scope-marker">
+ <xsl:param name="text"/>
+ <xsl:choose>
+ <xsl:when test="contains($text, '_1_1')">
+ <xsl:call-template name="replace-scope-marker">
+ <xsl:with-param name="text"
+ select="concat(substring-before($text, '_1_1'), '::', substring-after($text, '_1_1'))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template name="refid-to-anchor">
+ <xsl:param name="text"/>
+ <xsl:variable name="scoped-text">
+ <xsl:call-template name="replace-scope-marker">
+ <xsl:with-param name="text" select="$text"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="substring-after($scoped-text, '_1')"/>
+</xsl:template>
+
+
 <!--========== Markup ==========-->
 
 <xsl:template match="para">
@@ -217,6 +326,9 @@
 
 
 <xsl:template match="ref[@kindref='compound']">
+ <xsl:variable name="name">
+ <xsl:value-of select="."/>
+ </xsl:variable>
   <xsl:variable name="refid">
     <xsl:value-of select="@refid"/>
   </xsl:variable>
@@ -235,6 +347,19 @@
       <xsl:value-of select="concat(' ', .)"/>
       <xsl:text>]</xsl:text>
     </xsl:when>
+ <xsl:when test="contains($name, 'asio::')">
+ <xsl:variable name="ref-name">
+ <xsl:call-template name="strip-asio-ns">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="ref-id">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name" select="$ref-name"/>
+ </xsl:call-template>
+ </xsl:variable>
+[link boost_asio.reference.<xsl:value-of select="$ref-id"/><xsl:text> </xsl:text><xsl:value-of
+ select="$ref-name"/>]</xsl:when>
     <xsl:otherwise>
       <xsl:apply-templates/>
     </xsl:otherwise>
@@ -246,12 +371,53 @@
   <xsl:variable name="refid">
     <xsl:value-of select="@refid"/>
   </xsl:variable>
+ <xsl:variable name="text">
+ <xsl:call-template name="strip-asio-ns">
+ <xsl:with-param name="name" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
   <xsl:choose>
     <xsl:when test="$refid='index_1index'">
       <xsl:text>[link boost_asio.tutorial </xsl:text>
- <xsl:value-of select="."/>
+ <xsl:value-of select="$text"/>
       <xsl:text>]</xsl:text>
     </xsl:when>
+ <xsl:when test="@external='reference.tags'">
+ <xsl:variable name="anchor">
+ <xsl:call-template name="refid-to-anchor">
+ <xsl:with-param name="text" select="$refid"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="count(document('reference.tags')/tagfile/compound[@kind='class']/member[anchor=$anchor]) &gt; 0">
+ <xsl:for-each select="document('reference.tags')/tagfile/compound[@kind='class']/member[anchor=$anchor]">
+ <xsl:variable name="scope">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name">
+ <xsl:call-template name="strip-asio-ns">
+ <xsl:with-param name="name" select="../name"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="name">
+ <xsl:call-template name="make-id">
+ <xsl:with-param name="name" select="name"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:text>[link boost_asio.reference.</xsl:text>
+ <xsl:if test="string-length($scope) &gt; 0">
+ <xsl:value-of select="$scope"/><xsl:text>.</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$name"/>
+ <xsl:text> </xsl:text><xsl:value-of select="$text"/><xsl:text>]</xsl:text>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
     <xsl:otherwise>
       <xsl:apply-templates/>
     </xsl:otherwise>

Modified: branches/proto/v4/libs/asio/doc/using.qbk
==============================================================================
--- branches/proto/v4/libs/asio/doc/using.qbk (original)
+++ branches/proto/v4/libs/asio/doc/using.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -264,4 +264,11 @@
   ]
 ]
 
+[heading Mailing List]
+
+A mailing list specifically for Boost.Asio may be found on
+[@http://sourceforge.net/mail/?group_id=122478 SourceForge.net]. Newsgroup
+access is provided via [@http://dir.gmane.org/gmane.comp.lib.boost.asio.user
+Gmane].
+
 [endsect]

Modified: branches/proto/v4/libs/asio/example/porthopper/client.cpp
==============================================================================
--- branches/proto/v4/libs/asio/example/porthopper/client.cpp (original)
+++ branches/proto/v4/libs/asio/example/porthopper/client.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,13 @@
+//
+// client.cpp
+// ~~~~~~~~~~
+//
+// 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)
+//
+
 #include <boost/asio.hpp>
 #include <boost/lambda/lambda.hpp>
 #include <boost/lambda/bind.hpp>

Modified: branches/proto/v4/libs/asio/example/porthopper/protocol.hpp
==============================================================================
--- branches/proto/v4/libs/asio/example/porthopper/protocol.hpp (original)
+++ branches/proto/v4/libs/asio/example/porthopper/protocol.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,13 @@
+//
+// 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 PORTHOPPER_PROTOCOL_HPP
 #define PORTHOPPER_PROTOCOL_HPP
 

Modified: branches/proto/v4/libs/asio/example/porthopper/server.cpp
==============================================================================
--- branches/proto/v4/libs/asio/example/porthopper/server.cpp (original)
+++ branches/proto/v4/libs/asio/example/porthopper/server.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,13 @@
+//
+// server.cpp
+// ~~~~~~~~~~
+//
+// 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)
+//
+
 #include <boost/asio.hpp>
 #include <boost/bind.hpp>
 #include <boost/shared_ptr.hpp>

Modified: branches/proto/v4/libs/asio/test/Jamfile
==============================================================================
--- branches/proto/v4/libs/asio/test/Jamfile (original)
+++ branches/proto/v4/libs/asio/test/Jamfile 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -45,6 +45,7 @@
   [ run buffered_read_stream.cpp <template>asio_unit_test ]
   [ run buffered_stream.cpp <template>asio_unit_test ]
   [ run buffered_write_stream.cpp <template>asio_unit_test ]
+ [ run buffers_iterator.cpp <template>asio_unit_test ]
   [ run completion_condition.cpp <template>asio_unit_test ]
   [ run datagram_socket_service.cpp <template>asio_unit_test ]
   [ run deadline_timer_service.cpp <template>asio_unit_test ]
@@ -87,7 +88,10 @@
   [ run stream_socket_service.cpp <template>asio_unit_test ]
   [ run time_traits.cpp <template>asio_unit_test ]
   [ run windows/basic_handle.cpp <template>asio_unit_test ]
+ [ run windows/basic_random_access_handle.cpp <template>asio_unit_test ]
   [ run windows/basic_stream_handle.cpp <template>asio_unit_test ]
+ [ run windows/random_access_handle.cpp <template>asio_unit_test ]
+ [ run windows/random_access_handle_service.cpp <template>asio_unit_test ]
   [ run windows/stream_handle.cpp <template>asio_unit_test ]
   [ run windows/stream_handle_service.cpp <template>asio_unit_test ]
   [ run write.cpp <template>asio_unit_test ]

Modified: branches/proto/v4/libs/asio/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/asio/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/asio/test/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -37,6 +37,8 @@
     <library>/boost/thread//boost_thread
     <define>BOOST_ALL_NO_LIB=1
     <threading>multi
+ <os>LINUX:<define>_XOPEN_SOURCE=600
+ <os>LINUX:<define>_GNU_SOURCE=1
     <os>SOLARIS:<define>_XOPEN_SOURCE=500
     <os>SOLARIS:<define>__EXTENSIONS__
     <os>SOLARIS:<library>socket
@@ -68,6 +70,8 @@
   [ run buffered_stream.cpp : : : $(USE_SELECT) : buffered_stream_select ]
   [ run buffered_write_stream.cpp ]
   [ run buffered_write_stream.cpp : : : $(USE_SELECT) : buffered_write_stream_select ]
+ [ run buffers_iterator.cpp ]
+ [ run buffers_iterator.cpp : : : $(USE_SELECT) : buffers_iterator_select ]
   [ link completion_condition.cpp ]
   [ link completion_condition.cpp : $(USE_SELECT) : completion_condition_select ]
   [ link datagram_socket_service.cpp ]
@@ -152,8 +156,14 @@
   [ link time_traits.cpp : $(USE_SELECT) : time_traits_select ]
   [ link windows/basic_handle.cpp : : windows_basic_handle ]
   [ link windows/basic_handle.cpp : $(USE_SELECT) : windows_basic_handle_select ]
+ [ link windows/basic_random_access_handle.cpp : : windows_basic_random_access_handle ]
+ [ link windows/basic_random_access_handle.cpp : $(USE_SELECT) : windows_basic_random_access_handle_select ]
   [ link windows/basic_stream_handle.cpp : : windows_basic_stream_handle ]
   [ link windows/basic_stream_handle.cpp : $(USE_SELECT) : windows_basic_stream_handle_select ]
+ [ link windows/random_access_handle.cpp : : windows_random_access_handle ]
+ [ link windows/random_access_handle.cpp : $(USE_SELECT) : windows_random_access_handle_select ]
+ [ link windows/random_access_handle_service.cpp : : windows_random_access_handle_service ]
+ [ link windows/random_access_handle_service.cpp : $(USE_SELECT) : windows_random_access_handle_service_select ]
   [ link windows/stream_handle.cpp : : windows_stream_handle ]
   [ link windows/stream_handle.cpp : $(USE_SELECT) : windows_stream_handle_select ]
   [ link windows/stream_handle_service.cpp : : windows_stream_handle_service ]

Modified: branches/proto/v4/libs/asio/test/read_until.cpp
==============================================================================
--- branches/proto/v4/libs/asio/test/read_until.cpp (original)
+++ branches/proto/v4/libs/asio/test/read_until.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -226,6 +226,90 @@
   BOOST_CHECK(length == 0);
 }
 
+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 boost {
+namespace asio {
+ template <> struct is_match_condition<match_char>
+ : public boost::true_type {};
+} // namespace asio
+} // namespace boost
+
+void test_match_condition_read_until()
+{
+ boost::asio::io_service ios;
+ test_stream s(ios);
+ boost::asio::streambuf sb1;
+ boost::asio::streambuf sb2(25);
+ boost::system::error_code ec;
+
+ s.reset(read_data, sizeof(read_data));
+ std::size_t length = boost::asio::read_until(s, sb1, match_char('Z'));
+ BOOST_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ length = boost::asio::read_until(s, sb1, match_char('Z'));
+ BOOST_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ length = boost::asio::read_until(s, sb1, match_char('Z'));
+ BOOST_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ length = boost::asio::read_until(s, sb1, match_char('Z'), ec);
+ BOOST_CHECK(!ec);
+ BOOST_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ length = boost::asio::read_until(s, sb1, match_char('Z'), ec);
+ BOOST_CHECK(!ec);
+ BOOST_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ length = boost::asio::read_until(s, sb1, match_char('Z'), ec);
+ BOOST_CHECK(!ec);
+ BOOST_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ length = boost::asio::read_until(s, sb2, match_char('Z'), ec);
+ BOOST_CHECK(ec == boost::asio::error::not_found);
+ BOOST_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ length = boost::asio::read_until(s, sb2, match_char('Z'), ec);
+ BOOST_CHECK(ec == boost::asio::error::not_found);
+ BOOST_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ length = boost::asio::read_until(s, sb2, match_char('Z'), ec);
+ BOOST_CHECK(ec == boost::asio::error::not_found);
+ BOOST_CHECK(length == 0);
+}
+
 void async_read_handler(
     const boost::system::error_code& err, boost::system::error_code* err_out,
     std::size_t bytes_transferred, std::size_t* bytes_out, bool* called)
@@ -421,12 +505,107 @@
   BOOST_CHECK(length == 0);
 }
 
+void test_match_condition_async_read_until()
+{
+ boost::asio::io_service ios;
+ test_stream s(ios);
+ boost::asio::streambuf sb1;
+ boost::asio::streambuf sb2(25);
+ boost::system::error_code ec;
+ std::size_t length;
+ bool called;
+
+ s.reset(read_data, sizeof(read_data));
+ ec = boost::system::error_code();
+ length = 0;
+ called = false;
+ boost::asio::async_read_until(s, sb1, match_char('Z'),
+ boost::bind(async_read_handler, boost::asio::placeholders::error, &ec,
+ boost::asio::placeholders::bytes_transferred, &length, &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(!ec);
+ BOOST_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = boost::system::error_code();
+ length = 0;
+ called = false;
+ boost::asio::async_read_until(s, sb1, match_char('Z'),
+ boost::bind(async_read_handler, boost::asio::placeholders::error, &ec,
+ boost::asio::placeholders::bytes_transferred, &length, &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(!ec);
+ BOOST_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = boost::system::error_code();
+ length = 0;
+ called = false;
+ boost::asio::async_read_until(s, sb1, match_char('Z'),
+ boost::bind(async_read_handler, boost::asio::placeholders::error, &ec,
+ boost::asio::placeholders::bytes_transferred, &length, &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(!ec);
+ BOOST_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ ec = boost::system::error_code();
+ length = 0;
+ called = false;
+ boost::asio::async_read_until(s, sb2, match_char('Z'),
+ boost::bind(async_read_handler, boost::asio::placeholders::error, &ec,
+ boost::asio::placeholders::bytes_transferred, &length, &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(ec == boost::asio::error::not_found);
+ BOOST_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = boost::system::error_code();
+ length = 0;
+ called = false;
+ boost::asio::async_read_until(s, sb2, match_char('Z'),
+ boost::bind(async_read_handler, boost::asio::placeholders::error, &ec,
+ boost::asio::placeholders::bytes_transferred, &length, &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(ec == boost::asio::error::not_found);
+ BOOST_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = boost::system::error_code();
+ length = 0;
+ called = false;
+ boost::asio::async_read_until(s, sb2, match_char('Z'),
+ boost::bind(async_read_handler, boost::asio::placeholders::error, &ec,
+ boost::asio::placeholders::bytes_transferred, &length, &called));
+ ios.reset();
+ ios.run();
+ BOOST_CHECK(called);
+ BOOST_CHECK(ec == boost::asio::error::not_found);
+ BOOST_CHECK(length == 0);
+}
+
 test_suite* init_unit_test_suite(int, char*[])
 {
   test_suite* test = BOOST_TEST_SUITE("read_until");
   test->add(BOOST_TEST_CASE(&test_char_read_until));
   test->add(BOOST_TEST_CASE(&test_string_read_until));
+ test->add(BOOST_TEST_CASE(&test_match_condition_read_until));
   test->add(BOOST_TEST_CASE(&test_char_async_read_until));
   test->add(BOOST_TEST_CASE(&test_string_async_read_until));
+ test->add(BOOST_TEST_CASE(&test_match_condition_async_read_until));
   return test;
 }

Modified: branches/proto/v4/libs/assign/doc/index.html
==============================================================================
--- branches/proto/v4/libs/assign/doc/index.html (original)
+++ branches/proto/v4/libs/assign/doc/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -37,7 +37,7 @@
             <li>Function list_of()
             <li>Function map_list_of()
             <li>Function tuple_list_of()
- <li>Functions repeat(), repeat_fun() and range()
+ <li>Functions repeat(), repeat_fun() and range()
             <li>Functions ref_list_of() and cref_list_of()
             <li>A "complicated" example
             <li>Functions <a href="#ptr_push_back"><code>ptr_push_back(), ptr_push_front()</code>,
@@ -51,7 +51,7 @@
         <li>Standard containers </li>
         <li>Functions list_of() and map_list_of()</li>
         <li>Functions <a href="#repeat_ref"><code>repeat()</code>,
- <code>repeat_fun()</code> and <code>range()</code> </a> </li>
+ <code>repeat_fun()</code> and <code>range()</code> </a> </li>
         <li>Class list_inserter</li>
         <li>Function make_list_inserter()</li>
         <li> Customizing argument list sizes</li>
@@ -285,7 +285,15 @@
  Please notice that <code>list_of()</code> can even convert to a
  <code>boost::<a
 href="../../array/index.html">array</a>&lt;T,sz></code> and see also the list
-of supported libraries .
+of supported libraries . </p>
+ <p>
+ Note that the type returned by
+ <code>list_of()</code> (and its variants) has overloaded comparison operators. This allows you to
+ write test code such as
+ <code>
+ BOOST_CHECK_EQUAL( my_container, list_of(2)(3)(4)(5) );.
+ </code>
+ </p>
  
  <h3>Function <code>map_list_of()</code> <a name="map_list_of"></h3>
  This function is defined for pure convenience when working with
@@ -720,8 +728,8 @@
         <li>Standard containers </li>
         <li>Functions list_of() and map_list_of()</li>
         <li>Functions <a href="#repeat_ref"><code>repeat()</code>,<code>repeat_fun()</code> and
- <code>range()</code>
- </a></li>
+ <code>range()</code>
+ </a></li>
         <li>Class list_inserter</li>
         <li>Function make_list_inserter()</li>
         <li>Customizing argument list sizes </li>
@@ -926,9 +934,17 @@
         //
         </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>template </span><span class=special>&lt;</span><span class=keyword>class</span><span class=special>,</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>size_t</span><span class=special>&gt; </span><span class=keyword>class </span><span class=identifier>Array</span><span class=special>, </span><span class=keyword>class </span><span class=identifier>U</span><span class=special>, </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>size_t </span><span class=identifier>sz </span><span class=special>&gt;
         </span><span class=keyword>operator </span><span class=identifier>Array</span><span class=special>&lt;</span><span class=identifier>U</span><span class=special>,</span><span class=identifier>sz</span><span class=special>&gt;() </span><span class=keyword>const</span><span class=special>;
- </span><span class=special>};
+ </span><span class=special>};</span>
     
- </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
+ <span class=comment>//
+ // Comparison operators. 'op' can be &lt;,&gt;,&lt;=,&gt;=,==,!=
+ //</span>
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>Range</span> <span class=special>&gt;</span>
+ <span class=keyword>bool</span> <span class=identifier>op</span><span class=special>(</span> <span class=keyword>const</span> <span class=identifier>Implementation</span><span class=special>-</span><span class=identifier>defined</span><span class=special>&amp;,</span> <span class=keyword>const</span> <span class=identifier>Range</span><span class=special>&amp;</span> <span class=special>);</span>
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>Range</span> <span class=special>&gt;</span>
+ <span class=keyword>bool</span> <span class=identifier>op</span><span class=special>(</span> <span class=keyword>const</span> <span class=identifier>Range</span><span class=special>&amp;,</span> <span class=keyword>const</span> <span class=identifier>Implementation</span><span class=special>-</span><span class=identifier>defined</span><span class=special>&amp;</span> <span class=special>);</span>
+
+ <span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
     </span><span class=identifier>Implementation</span><span class=special>-</span><span class=identifier>defined</span> </span><span class=identifier>list_of</span><span class=special>(</span><span class=special>);
 
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
@@ -969,7 +985,7 @@
           <li> the argument list of <code>repeat_fun()</code> is <code>(std::size_t,Nullary_function)</code>
       </ul>
       
- </p>
+ </p>
   <p>
   The function <code>range()</code> only exists as a member function. The following two overloads are provided:
   <blockquote>

Modified: branches/proto/v4/libs/bind/doc/ref.xml
==============================================================================
--- branches/proto/v4/libs/bind/doc/ref.xml (original)
+++ branches/proto/v4/libs/bind/doc/ref.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -59,10 +59,13 @@
   references to function templates (algorithms) that would usually
   take copies of their arguments. It defines the class template
   <code><classname>boost::reference_wrapper&lt;T&gt;</classname></code>,
- the two functions
+ two functions
   <code><functionname>boost::ref</functionname></code> and
   <code><functionname>boost::cref</functionname></code> that return
- instances of <code>boost::reference_wrapper&lt;T&gt;</code>, and the
+ instances of <code>boost::reference_wrapper&lt;T&gt;</code>,
+ a function <code><functionname>boost::unwrap_ref</functionname></code>
+ that unwraps a <code>boost::reference_wrapper&lt;T&gt;</code> or
+ returns a reference to any other type of object, and the
   two traits classes
   <code><classname>boost::is_reference_wrapper&lt;T&gt;</classname></code>
   and
@@ -90,6 +93,11 @@
   <code>boost::cref(x)</code> returns a
   <code>boost::reference_wrapper&lt;X const&gt;(x)</code>.</para>
 
+ <para>The expression <code>boost::unwrap_ref(x)</code>
+ returns a
+ <code>boost::unwrap_reference&lt;X&gt;::type&amp;</code> where X
+ is the type of x.</para>
+
   <para>The expression
   <code>boost::is_reference_wrapper&lt;T&gt;::value</code>
   is true if T is a <code>reference_wrapper</code>, and
@@ -180,6 +188,19 @@
           <throws><simpara>Does not throw.</simpara></throws>
         </function>
       </free-function-group>
+
+ <free-function-group name="access">
+ <function name="unwrap_ref">
+ <type>unwrap_reference&lt;T&gt;::type&amp;</type>
+ <parameter name="t">
+ <paramtype>T&amp;</paramtype>
+ </parameter>
+
+ <returns><simpara><computeroutput><classname>unwrap_reference</classname>&lt;T&gt;::type&amp;(t)</computeroutput></simpara></returns>
+
+ <throws><simpara>Does not throw.</simpara></throws>
+ </function>
+ </free-function-group>
     </class>
 
     <class name="is_reference_wrapper">
@@ -234,7 +255,8 @@
   Peter Dimov because they are generally useful. Douglas Gregor and
   Dave Abrahams contributed
   <classname>is_reference_wrapper</classname> and
- <classname>unwrap_reference</classname>.</para>
+ <classname>unwrap_reference</classname>. Frank Mori Hess and Ronald
+ Garcia contributed <functionname>boost::unwrap_ref</functionname></para>
 </section>
 
-</library>
\ No newline at end of file
+</library>

Modified: branches/proto/v4/libs/circular_buffer/doc/Doxyfile
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/Doxyfile (original)
+++ branches/proto/v4/libs/circular_buffer/doc/Doxyfile 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 # Doxygen configuration file.
 #
-# Copyright (c) 2003-2007 Jan Gaspar
+# Copyright (c) 2003-2008 Jan Gaspar
 #
 # Distributed under the Boost Software License, Version 1.0. (See
 # accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/doc/HOWTO-srcdoc
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/HOWTO-srcdoc (original)
+++ branches/proto/v4/libs/circular_buffer/doc/HOWTO-srcdoc 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 # HOW-TO documentation about generating/updating source code documentation for #
 # the Circular Buffer library. #
 # #
-# Copyright (c) 2007 Jan Gaspar #
+# Copyright (c) 2003-2008 Jan Gaspar #
 # #
 # Use, modification, and distribution is subject to the Boost Software #
 # License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at #

Modified: branches/proto/v4/libs/circular_buffer/doc/Tidy.conf
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/Tidy.conf (original)
+++ branches/proto/v4/libs/circular_buffer/doc/Tidy.conf 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 # HTML Tidy configuration file.
 #
-# Copyright (c) 2003-2007 Jan Gaspar
+# Copyright (c) 2003-2008 Jan Gaspar
 #
 # Distributed under the Boost Software License, Version 1.0. (See
 # accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/doc/circular_buffer.html
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/circular_buffer.html (original)
+++ branches/proto/v4/libs/circular_buffer/doc/circular_buffer.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,29 +26,82 @@
     </table>
     <h2>
       Contents
- </h2>Description<br>
- Introductory Example<br>
- Synopsis<br>
- Rationale<br>
- - Thread-Safety<br>
- - Overwrite Operation<br>
- - Writing to a Full Buffer<br>
- - Reading/Removing from an Empty Buffer<br>
- - Iterator Invalidation<br>
- Caveats<br>
- Debug Support<br>
- More Examples<br>
- Header Files<br>
- Modelled Concepts<br>
- Template Parameters<br>
- Public Types<br>
- Constructors and Destructor<br>
- Public Member Functions<br>
- Standalone Functions<br>
- Notes<br>
- See also<br>
- Acknowledgements<br>
- Release Notes
+ </h2>
+ <dl>
+ <dt>
+ Description
+ </dt>
+ <dt>
+ Introductory Example
+ </dt>
+ <dt>
+ Synopsis
+ </dt>
+ <dt>
+ Rationale
+ </dt>
+ <dd>
+ <ul>
+ <li>
+ Thread-Safety
+ </li>
+ <li>
+ Overwrite Operation
+ </li>
+ <li>
+ Writing to a Full Buffer
+ </li>
+ <li>
+ Reading/Removing from an Empty Buffer
+ </li>
+ <li>
+ Iterator Invalidation
+ </li>
+ </ul>
+ </dd>
+ <dt>
+ Caveats
+ </dt>
+ <dt>
+ Debug Support
+ </dt>
+ <dt>
+ More Examples
+ </dt>
+ <dt>
+ Header Files
+ </dt>
+ <dt>
+ Modelled Concepts
+ </dt>
+ <dt>
+ Template Parameters
+ </dt>
+ <dt>
+ Public Types
+ </dt>
+ <dt>
+ Constructors and Destructor
+ </dt>
+ <dt>
+ Public Member Functions
+ </dt>
+ <dt>
+ Standalone Functions
+ </dt>
+ <dt>
+ Notes
+ </dt>
+ <dt>
+ See also
+ </dt>
+ <dt>
+ Acknowledgements
+ </dt>
+ <dt>
+ Release Notes
+ </dt>
+ </dl>
     <table id="table_figure" align="right" border="0">
       <tr>
         <td>
@@ -228,6 +281,9 @@
    const_array_range array_one() const;
    const_array_range array_two() const;
    pointer linearize();
+ bool is_linearized() const;
+ void <a href=
+"#classboost_1_1circular__buffer_1c591bb9e271b10b5240afcff3bd2c619">rotate</a>(const_iterator new_begin);
    size_type size() const;
    size_type max_size() const;
    bool empty() const;
@@ -589,9 +645,9 @@
 </pre>
     <p>
       The <code>circular_buffer</code> has a capacity of three <code>int</code>. Therefore, the size of the buffer will
- not exceed three. The <code>accumulate</code> algorithm
- evaluates the sum of the stored elements. The semantics of the <code>circular_buffer</code> can be inferred from
- the assertions.
+ not exceed three. The <code>std::accumulate</code>
+ algorithm evaluates the sum of the stored elements. The semantics of the <code>circular_buffer</code> can be
+ inferred from the assertions.
     </p>
     <h4>
       <a name="boundedbuffer" id="boundedbuffer">Bounded Buffer Example</a>
@@ -997,6 +1053,27 @@
                 value_type)</a></code>) nothing will be inserted and the size (as well as capacity) remains zero.
               </dd>
             </dl>
+ <dl>
+ <dt>
+ <b>Note:</b>
+ </dt>
+ <dd>
+ You can explicitly set the capacity by calling the <code><a href=
+ "#classboost_1_1circular__buffer_161714204ef5172d156e2c7eccd04998f">set_capacity(capacity_type)</a></code>
+ method or you can use the other constructor with the capacity specified.
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>See Also:</b>
+ </dt>
+ <dd>
+ <code><a href=
+ "#classboost_1_1circular__buffer_1862a64cbc6a49376ecbb8321c3b44974">circular_buffer(capacity_type,
+ const allocator_type&amp; alloc)</a></code>, <code><a href=
+ "#classboost_1_1circular__buffer_161714204ef5172d156e2c7eccd04998f">set_capacity(capacity_type)</a></code>
+ </dd>
+ </dl>
           </td>
         </tr>
         <tr>
@@ -3175,7 +3252,183 @@
                 "#classboost_1_1circular__buffer_1957cccdcb0c4ef7d80a34a990065818d">array_one()</a></code> and
                 <code><a href=
                 "#classboost_1_1circular__buffer_1f5081a54afbc2dfc1a7fb20329df7d5b">array_two()</a></code> for the
- other option how to pass data into a legacy C API.
+ other option how to pass data into a legacy C API; <code><a href=
+ "#classboost_1_1circular__buffer_120f64448dc0723cc68c1096f6b00bc0a">is_linearized()</a></code>,
+ <code><a href=
+ "#classboost_1_1circular__buffer_1c591bb9e271b10b5240afcff3bd2c619">rotate(const_iterator)</a></code>
+ </dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a id="classboost_1_1circular__buffer_120f64448dc0723cc68c1096f6b00bc0a" name=
+ "classboost_1_1circular__buffer_120f64448dc0723cc68c1096f6b00bc0a"></a><code><b>bool is_linearized()
+ const;</b></code><br>
+ <br>
+ Is the <code>circular_buffer</code> linearized?
+ <dl>
+ <dt>
+ <b>Returns:</b>
+ </dt>
+ <dd>
+ <code>true</code> if the internal buffer is linearized into a continuous array (i.e. the
+ <code>circular_buffer</code> meets a condition <code>&amp;(*this)[0] &lt; &amp;(*this)[1] &lt; ... &lt;
+ &amp;(*this)[size() -
+ 1]</code>); <code>false</code> otherwise.
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>Throws:</b>
+ </dt>
+ <dd>
+ Nothing.
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>Exception Safety:</b>
+ </dt>
+ <dd>
+ No-throw.
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>Iterator Invalidation:</b>
+ </dt>
+ <dd>
+ Does not invalidate any iterators.
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>Complexity:</b>
+ </dt>
+ <dd>
+ Constant (in the size of the <code>circular_buffer</code>).
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>See Also:</b>
+ </dt>
+ <dd>
+ <code><a href=
+ "#classboost_1_1circular__buffer_1ea728bf57f91aa8946eddf76ce816a4e">linearize()</a></code>,
+ <code><a href=
+ "#classboost_1_1circular__buffer_1957cccdcb0c4ef7d80a34a990065818d">array_one()</a></code>,
+ <code><a href=
+ "#classboost_1_1circular__buffer_1f5081a54afbc2dfc1a7fb20329df7d5b">array_two()</a></code>
+ </dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a id="classboost_1_1circular__buffer_1c591bb9e271b10b5240afcff3bd2c619" name=
+ "classboost_1_1circular__buffer_1c591bb9e271b10b5240afcff3bd2c619"></a><code><b>void rotate(<a href=
+ "#classboost_1_1circular__buffer_15cab6d46f03c40d1e52d41843319ddb9">const_iterator</a>
+ new_begin);</b></code><br>
+ <br>
+ Rotate elements in the <code>circular_buffer</code>.
+ <p>
+ A more effective implementation of <code><a href=
+ "http://www.sgi.com/tech/stl/rotate.html">std::rotate</a></code>.
+ </p>
+ <dl>
+ <dt>
+ <b>Precondition:</b>
+ </dt>
+ <dd>
+ <code>new_begin</code> is a valid iterator pointing to the <code>circular_buffer</code> <b>except</b>
+ its end.
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>Effect:</b>
+ </dt>
+ <dd>
+ Before calling the method suppose:<br>
+ <br>
+ <code>m == std::distance(new_begin, <a href=
+ "#classboost_1_1circular__buffer_1babfa093dad7801223b80626b598dee1">end()</a>)</code><br>
+ <code>n == std::distance(<a href=
+ "#classboost_1_1circular__buffer_158d1ede2e85f5d46eda8db3f0c4efef0">begin()</a>, new_begin)</code><br>
+ <code>val_0 == *new_begin, val_1 == *(new_begin + 1), ... val_m == *(new_begin + m)</code><br>
+ <code>val_r1 == *(new_begin - 1), val_r2 == *(new_begin - 2), ... val_rn == *(new_begin - n)</code><br>
+ <br>
+ then after call to the method:<br>
+ <br>
+ <code>val_0 == (*this)[0] &amp;&amp; val_1 == (*this)[1] &amp;&amp; ... &amp;&amp; val_m == (*this)[m -
+ 1] &amp;&amp; val_r1 == (*this)[m + n - 1] &amp;&amp; val_r2 == (*this)[m + n - 2] &amp;&amp; ...
+ &amp;&amp; val_rn == (*this)[m]</code>
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>Parameter(s):</b>
+ </dt>
+ <dd>
+ <dl compact>
+ <dt>
+ <code>new_begin</code>
+ </dt>
+ <dd>
+ The new beginning.
+ </dd>
+ </dl>
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>Throws:</b>
+ </dt>
+ <dd>
+ Whatever <code>T::T(const T&amp;)</code> throws.
+ </dd>
+ <dd>
+ Whatever <code>T::operator = (const T&amp;)</code> throws.
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>Exception Safety:</b>
+ </dt>
+ <dd>
+ Basic; no-throw if the <code>circular_buffer</code> is full or <code>new_begin</code> points to
+ <code>begin()</code> or
+ if the operations in the <i>Throws</i> section do not throw anything.
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>Iterator Invalidation:</b>
+ </dt>
+ <dd>
+ If <code>m &lt; n</code> invalidates iterators pointing to the last <code>m</code> elements
+ (<b>including</b> <code>new_begin</code>, but not iterators equal to <code><a href=
+ "#classboost_1_1circular__buffer_1babfa093dad7801223b80626b598dee1">end()</a></code>) else invalidates
+ iterators pointing to the first <code>n</code> elements; does not invalidate any iterators if the
+ <code>circular_buffer</code> is full.
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>Complexity:</b>
+ </dt>
+ <dd>
+ Linear (in <code>std::min(m, n)</code>); constant if the <code>circular_buffer</code> is full.
+ </dd>
+ </dl>
+ <dl>
+ <dt>
+ <b>See Also:</b>
+ </dt>
+ <dd>
+ <code>std::rotate</code>
               </dd>
             </dl>
           </td>
@@ -4618,6 +4871,9 @@
               <dd>
                 Whatever <code>T::T(const T&amp;)</code> throws.
               </dd>
+ <dd>
+ Whatever <code>T::operator = (const T&amp;)</code> throws.
+ </dd>
             </dl>
             <dl>
               <dt>
@@ -4700,6 +4956,9 @@
               <dd>
                 Whatever <code>T::T(const T&amp;)</code> throws.
               </dd>
+ <dd>
+ Whatever <code>T::operator = (const T&amp;)</code> throws.
+ </dd>
             </dl>
             <dl>
               <dt>
@@ -6856,9 +7115,41 @@
     <h2>
       <a name="relnotes" id="relnotes">Release Notes</a>
     </h2>
+ <dl>
+ <dd>
+ <h3>
+ Boost 1.36
+ </h3>
+ </dd>
+ <dd>
+ <ul>
+ <li>Changed behaviour of the <code>circular_buffer(const allocator_type&amp;)</code> constructor. Since this
+ version the constructor does not allocate any memory and both capacity and size are set to zero.
+ </li>
+ <li>Added new methods <code>is_linearized()</code> and <code>rotate(const_iterator)</code>.
+ </li>
+ <li>Fixed bugs:<br>
+ #1987 Patch to make <code>circular_buffer.hpp</code> #includes absolute.<br>
+ #1919 Default constructed circular buffer throws <code>std::bad_alloc</code>.<br>
+ #1852 Copy constructor does not copy capacity.
+ </li>
+ </ul>
+ </dd>
+ <dd>
+ <h3>
+ Boost 1.35
+ </h3>
+ </dd>
+ <dd>
+ <ul>
+ <li>Initial release.
+ </li>
+ </ul>
+ </dd>
+ </dl>
     <hr size="1">
     <p>
- <small>Copyright © 2003-2007 Jan Gaspar</small>
+ <small>Copyright © 2003-2008 Jan Gaspar</small>
     </p>
     <p>
       <small>Use, modification, and distribution is subject to the Boost Software License, Version 1.0.<br>

Modified: branches/proto/v4/libs/circular_buffer/doc/circular_buffer.xslt
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/circular_buffer.xslt (original)
+++ branches/proto/v4/libs/circular_buffer/doc/circular_buffer.xslt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 XSL transformation from the XML files generated by Doxygen into XHTML source
 code documentation of the circular_buffer.
 
-Copyright (c) 2007 Jan Gaspar
+Copyright (c) 2003-2008 Jan Gaspar
 
 Use, modification, and distribution is subject to the Boost Software
 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/doc/copy.xslt
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/copy.xslt (original)
+++ branches/proto/v4/libs/circular_buffer/doc/copy.xslt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <!--
 Helper XSL transformation making plain copy of an XML tree.
 
-Copyright (c) 2007 Jan Gaspar
+Copyright (c) 2003-2008 Jan Gaspar
 
 Use, modification, and distribution is subject to the Boost Software
 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/doc/doxygen2html.xslt
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/doxygen2html.xslt (original)
+++ branches/proto/v4/libs/circular_buffer/doc/doxygen2html.xslt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 Generic XSL transformation from the XML files generated by Doxygen into XHTML
 source code documentation.
 
-Copyright (c) 2007 Jan Gaspar
+Copyright (c) 2003-2008 Jan Gaspar
 
 Use, modification, and distribution is subject to the Boost Software
 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/doc/html2xhtml.xslt
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/html2xhtml.xslt (original)
+++ branches/proto/v4/libs/circular_buffer/doc/html2xhtml.xslt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <!--
 Helper XSL transformation which converts HTML into XHTML.
 
-Copyright (c) 2007 Jan Gaspar
+Copyright (c) 2003-2008 Jan Gaspar
 
 Use, modification, and distribution is subject to the Boost Software
 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/doc/space_optimized.html
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/space_optimized.html (original)
+++ branches/proto/v4/libs/circular_buffer/doc/space_optimized.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -181,6 +181,10 @@
 "circular_buffer.html#classboost_1_1circular__buffer_1bb8eb0f298ad2012c55c5303e1f174d5">array_two</a>() const;
    pointer <a href=
 "circular_buffer.html#classboost_1_1circular__buffer_1ea728bf57f91aa8946eddf76ce816a4e">linearize</a>();
+ bool <a href=
+"circular_buffer.html#classboost_1_1circular__buffer_120f64448dc0723cc68c1096f6b00bc0a">is_linearized</a>() const;
+ void <a href=
+"circular_buffer.html#classboost_1_1circular__buffer_1c591bb9e271b10b5240afcff3bd2c619">rotate</a>(const_iterator new_begin);
    size_type <a href=
 "circular_buffer.html#classboost_1_1circular__buffer_15fa0edd153e2591dd6bf070eb663ee32">size</a>() const;
    size_type <a href=
@@ -4172,9 +4176,39 @@
     <p>
       The idea of the space optimized circular buffer has been introduced by Pavel Vozenilek.
     </p>
+ <h2>
+ <a name="relnotes" id="relnotes">Release Notes</a>
+ </h2>
+ <dl>
+ <dd>
+ <h3>
+ Boost 1.36
+ </h3>
+ </dd>
+ <dd>
+ <ul>
+ <li>Changed behaviour of the <code>circular_buffer_space_optimized(const allocator_type&amp;)</code>
+ constructor. Since this version the constructor sets the capacity to zero.
+ </li>
+ <li>Added new methods <code>is_linearized()</code> and <code>rotate(const_iterator)</code>.
+ </li>
+ </ul>
+ </dd>
+ <dd>
+ <h3>
+ Boost 1.35
+ </h3>
+ </dd>
+ <dd>
+ <ul>
+ <li>Initial release.
+ </li>
+ </ul>
+ </dd>
+ </dl>
     <hr size="1">
     <p>
- <small>Copyright © 2003-2007 Jan Gaspar</small>
+ <small>Copyright © 2003-2008 Jan Gaspar</small>
     </p>
     <p>
       <small>Use, modification, and distribution is subject to the Boost Software License, Version 1.0.<br>

Modified: branches/proto/v4/libs/circular_buffer/doc/space_optimized.xslt
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/space_optimized.xslt (original)
+++ branches/proto/v4/libs/circular_buffer/doc/space_optimized.xslt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 XSL transformation from the XML files generated by Doxygen into XHTML source
 code documentation of the circular_buffer_space_optimized.
 
-Copyright (c) 2007 Jan Gaspar
+Copyright (c) 2003-2008 Jan Gaspar
 
 Use, modification, and distribution is subject to the Boost Software
 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/doc/update_srcdoc.sh
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/update_srcdoc.sh (original)
+++ branches/proto/v4/libs/circular_buffer/doc/update_srcdoc.sh 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 # Shell script which updates the Circular Buffer library documentation with #
 # the latest source code documentation (which is in the source files). #
 # #
-# Copyright (c) 2007 Jan Gaspar #
+# Copyright (c) 2003-2008 Jan Gaspar #
 # #
 # Use, modification, and distribution is subject to the Boost Software #
 # License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at #

Modified: branches/proto/v4/libs/circular_buffer/doc/update_srcdoc.xslt
==============================================================================
--- branches/proto/v4/libs/circular_buffer/doc/update_srcdoc.xslt (original)
+++ branches/proto/v4/libs/circular_buffer/doc/update_srcdoc.xslt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 Helper XSL transformation updating source code documentation sections
 in the specified HTML file.
 
-Copyright (c) 2007 Jan Gaspar
+Copyright (c) 2003-2008 Jan Gaspar
 
 Use, modification, and distribution is subject to the Boost Software
 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/index.html
==============================================================================
--- branches/proto/v4/libs/circular_buffer/index.html (original)
+++ branches/proto/v4/libs/circular_buffer/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,7 +11,7 @@
   <body>
     Automatic redirection failed, please go to circular_buffer.html.
     <p>
- <small>Copyright © 2003-2007 Jan Gaspar</small>
+ <small>Copyright © 2003-2008 Jan Gaspar</small>
     </p>
     <p>
       <small>Use, modification, and distribution is subject to the Boost Software License, Version 1.0.<br>

Modified: branches/proto/v4/libs/circular_buffer/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/circular_buffer/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/circular_buffer/test/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 # Boost circular_buffer test Jamfile.
 #
-# Copyright (c) 2003-2007 Jan Gaspar
+# Copyright (c) 2003-2008 Jan Gaspar
 #
 # Distributed under the Boost Software License, Version 1.0. (See
 # accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/test/base_test.cpp
==============================================================================
--- branches/proto/v4/libs/circular_buffer/test/base_test.cpp (original)
+++ branches/proto/v4/libs/circular_buffer/test/base_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Test of the base circular buffer container.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -61,6 +61,7 @@
     BOOST_CHECK(end - end == 0);
     BOOST_CHECK(begin - cb.end() == -5);
     BOOST_CHECK(it1 - cb.begin() == 2);
+ BOOST_CHECK(it1 - begin == 2);
     BOOST_CHECK(end - it1 == 3);
     BOOST_CHECK(it2 - it1 == 1);
     BOOST_CHECK(it1 - it2 == -1);
@@ -505,6 +506,62 @@
     BOOST_CHECK(!it3.is_valid(&cb13));
     BOOST_CHECK(!it4.is_valid(&cb13));
 
+ circular_buffer<MyInteger> cb14(10);
+ cb14.push_back(1);
+ cb14.push_back(2);
+ cb14.push_back(3);
+ cb14.push_back(4);
+ cb14.push_back(5);
+ cb14.push_back(6);
+ cb14.push_back(7);
+ it1 = cb14.end();
+ it2 = cb14.begin() + 2;
+ it3 = cb14.begin() + 1;
+ it4 = cb14.begin() + 5;
+ cb14.rotate(it2);
+ BOOST_CHECK(it1.is_valid(&cb14));
+ BOOST_CHECK(it2.is_valid(&cb14));
+ BOOST_CHECK(!it3.is_valid(&cb14));
+ BOOST_CHECK(it4.is_valid(&cb14));
+
+ circular_buffer<MyInteger> cb15(7);
+ cb15.push_back(1);
+ cb15.push_back(2);
+ cb15.push_back(3);
+ cb15.push_back(4);
+ cb15.push_back(5);
+ cb15.push_back(6);
+ cb15.push_back(7);
+ cb15.push_back(8);
+ cb15.push_back(9);
+ it1 = cb15.end();
+ it2 = cb15.begin() + 2;
+ it3 = cb15.begin() + 1;
+ it4 = cb15.begin() + 5;
+ cb15.rotate(it3);
+ BOOST_CHECK(it1.is_valid(&cb15));
+ BOOST_CHECK(it2.is_valid(&cb15));
+ BOOST_CHECK(it3.is_valid(&cb15));
+ BOOST_CHECK(it4.is_valid(&cb15));
+
+ circular_buffer<MyInteger> cb16(10);
+ cb16.push_back(1);
+ cb16.push_back(2);
+ cb16.push_back(3);
+ cb16.push_back(4);
+ cb16.push_back(5);
+ cb16.push_back(6);
+ cb16.push_back(7);
+ it1 = cb16.end();
+ it2 = cb16.begin() + 6;
+ it3 = cb16.begin();
+ it4 = cb16.begin() + 5;
+ cb16.rotate(it4);
+ BOOST_CHECK(it1.is_valid(&cb16));
+ BOOST_CHECK(!it2.is_valid(&cb16));
+ BOOST_CHECK(it3.is_valid(&cb16));
+ BOOST_CHECK(!it4.is_valid(&cb16));
+
 #endif // #if !defined(NDEBUG) && !defined(BOOST_CB_DISABLE_DEBUG)
 }
 

Modified: branches/proto/v4/libs/circular_buffer/test/bounded_buffer_comparison.cpp
==============================================================================
--- branches/proto/v4/libs/circular_buffer/test/bounded_buffer_comparison.cpp (original)
+++ branches/proto/v4/libs/circular_buffer/test/bounded_buffer_comparison.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Comparison of bounded buffers based on different containers.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/test/common.ipp
==============================================================================
--- branches/proto/v4/libs/circular_buffer/test/common.ipp (original)
+++ branches/proto/v4/libs/circular_buffer/test/common.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Common tests for the circular buffer and its adaptor.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -328,8 +328,16 @@
     cb6.push_back(5);
     cb6.push_back(6);
     cb6.pop_back();
+ CB_CONTAINER<MyInteger> cb7(6);
+ cb7.push_back(0);
+ cb7.push_back(1);
+ cb7.push_back(2);
+ cb7.push_back(3);
+ cb7.push_back(4);
 
+ BOOST_CHECK(!cb1.is_linearized());
     BOOST_CHECK(*cb1.linearize() == 4);
+ BOOST_CHECK(cb1.is_linearized());
     BOOST_CHECK(cb1.linearize() == cb1.array_one().first);
     BOOST_CHECK(&cb1[0] < &cb1[1]
         && &cb1[1] < &cb1[2]
@@ -349,7 +357,9 @@
     BOOST_CHECK(*(cb1.linearize() + 7) == 11);
     BOOST_CHECK(*(cb1.linearize() + 8) == 12);
     BOOST_CHECK(*(cb1.linearize() + 9) == 13);
+ BOOST_CHECK(!cb2.is_linearized());
     BOOST_CHECK(*cb2.linearize() == 8);
+ BOOST_CHECK(cb2.is_linearized());
     BOOST_CHECK(&cb2[0] < &cb2[1]
         && &cb2[1] < &cb2[2]
         && &cb2[2] < &cb2[3]
@@ -368,7 +378,9 @@
     BOOST_CHECK(*(cb2.linearize() + 7) == 15);
     BOOST_CHECK(*(cb2.linearize() + 8) == 16);
     BOOST_CHECK(*(cb2.linearize() + 9) == 17);
+ BOOST_CHECK(cb2.is_linearized());
     BOOST_CHECK(*cb3.linearize() == 6);
+ BOOST_CHECK(cb3.is_linearized());
     BOOST_CHECK(&cb3[0] < &cb3[1]
         && &cb3[1] < &cb3[2]
         && &cb3[2] < &cb3[3]
@@ -384,7 +396,9 @@
     BOOST_CHECK(*(cb3.linearize() + 6) == 12);
     BOOST_CHECK(*(cb3.linearize() + 7) == 13);
     BOOST_CHECK(cb4.linearize() == 0);
+ BOOST_CHECK(cb4.is_linearized());
     BOOST_CHECK(*cb5.linearize() == 10);
+ BOOST_CHECK(cb5.is_linearized());
     BOOST_CHECK(&cb5[0] < &cb5[1]
         && &cb5[1] < &cb5[2]
         && &cb5[2] < &cb5[3]
@@ -396,6 +410,7 @@
     BOOST_CHECK(*(cb5.linearize() + 4) == 14);
     BOOST_CHECK(*(cb5.linearize() + 5) == 15);
     BOOST_CHECK(*cb6.linearize() == 1);
+ BOOST_CHECK(cb6.is_linearized());
     BOOST_CHECK(&cb6[0] < &cb6[1]
         && &cb6[1] < &cb6[2]
         && &cb6[2] < &cb6[3]
@@ -404,6 +419,7 @@
     BOOST_CHECK(*(cb6.linearize() + 2) == 3);
     BOOST_CHECK(*(cb6.linearize() + 3) == 4);
     BOOST_CHECK(*(cb6.linearize() + 4) == 5);
+ BOOST_CHECK(cb7.is_linearized());
 
     generic_test(cb1);
     generic_test(cb2);
@@ -411,6 +427,7 @@
     generic_test(cb4);
     generic_test(cb5);
     generic_test(cb6);
+ generic_test(cb7);
 }
 
 void array_range_test() {
@@ -1813,6 +1830,122 @@
     BOOST_CHECK(cb.back() == 5);
 }
 
+void rotate_test() {
+
+ CB_CONTAINER<MyInteger> cb1(10);
+ cb1.push_back(1);
+ cb1.push_back(2);
+ cb1.push_back(3);
+ cb1.push_back(4);
+ cb1.push_back(5);
+ cb1.push_back(6);
+ cb1.push_back(7);
+ CB_CONTAINER<MyInteger> cb2 = cb1;
+ CB_CONTAINER<MyInteger>::iterator it1 = cb1.begin() + 2;
+ int v1_0 = *it1;
+ int v1_1 = *(it1 + 1);
+ int v1_2 = *(it1 + 2);
+ int v1_3 = *(it1 + 3);
+ int v1_4 = *(it1 + 4);
+ int v1_r1 = *(it1 - 1);
+ int v1_r2 = *(it1 - 2);
+ cb1.rotate(it1);
+ rotate(cb2.begin(), cb2.begin() + 2, cb2.end());
+
+ CB_CONTAINER<MyInteger> cb3(7);
+ cb3.push_back(1);
+ cb3.push_back(2);
+ cb3.push_back(3);
+ cb3.push_back(4);
+ cb3.push_back(5);
+ cb3.push_back(6);
+ cb3.push_back(7);
+ cb3.push_back(8);
+ cb3.push_back(9);
+ CB_CONTAINER<MyInteger> cb4 = cb3;
+ CB_CONTAINER<MyInteger>::iterator it2 = cb3.begin() + 1;
+ int v2_0 = *it2;
+ int v2_1 = *(it2 + 1);
+ int v2_2 = *(it2 + 2);
+ int v2_3 = *(it2 + 3);
+ int v2_4 = *(it2 + 4);
+ int v2_5 = *(it2 + 5);
+ int v2_r1 = *(it2 - 1);
+ cb3.rotate(it2);
+ rotate(cb4.begin(), cb4.begin() + 1, cb4.end());
+
+ CB_CONTAINER<MyInteger> cb5(10);
+ cb5.push_back(1);
+ cb5.push_back(2);
+ cb5.push_back(3);
+ cb5.push_back(4);
+ cb5.push_back(5);
+ cb5.push_back(6);
+ cb5.push_back(7);
+ CB_CONTAINER<MyInteger> cb6 = cb5;
+ CB_CONTAINER<MyInteger>::iterator it3 = cb5.begin() + 5;
+ int v3_0 = *it3;
+ int v3_1 = *(it3 + 1);
+ int v3_r1 = *(it3 - 1);
+ int v3_r2 = *(it3 - 2);
+ int v3_r3 = *(it3 - 3);
+ int v3_r4 = *(it3 - 4);
+ int v3_r5 = *(it3 - 5);
+ cb5.rotate(it3);
+ rotate(cb6.begin(), cb6.begin() + 5, cb6.end());
+
+ BOOST_CHECK(!cb1.full());
+ BOOST_CHECK(cb1 == cb2);
+ BOOST_CHECK(v1_0 == *it1);
+ BOOST_CHECK(v1_1 == *(it1 + 1));
+ BOOST_CHECK(v1_2 == *(it1 + 2));
+ BOOST_CHECK(v1_3 == *(it1 + 3));
+ BOOST_CHECK(v1_4 == *(it1 + 4));
+ BOOST_CHECK(v1_r1 == *(it1 + 6));
+ BOOST_CHECK(v1_r2 == *(it1 + 5));
+ BOOST_CHECK(cb1.begin() == it1);
+ BOOST_CHECK(v1_0 == cb1[0]);
+ BOOST_CHECK(v1_1 == cb1[1]);
+ BOOST_CHECK(v1_2 == cb1[2]);
+ BOOST_CHECK(v1_3 == cb1[3]);
+ BOOST_CHECK(v1_4 == cb1[4]);
+ BOOST_CHECK(v1_r1 == cb1[6]);
+ BOOST_CHECK(v1_r2 == cb1[5]);
+ BOOST_CHECK(cb3.full());
+ BOOST_CHECK(cb3 == cb4);
+ BOOST_CHECK(v2_0 == *it2);
+ BOOST_CHECK(v2_1 == *(it2 + 1));
+ BOOST_CHECK(v2_2 == *(it2 + 2));
+ BOOST_CHECK(v2_3 == *(it2 + 3));
+ BOOST_CHECK(v2_4 == *(it2 + 4));
+ BOOST_CHECK(v2_5 == *(it2 + 5));
+ BOOST_CHECK(v2_r1 == *(it2 + 6));
+ BOOST_CHECK(cb3.begin() == it2);
+ BOOST_CHECK(v2_0 == cb3[0]);
+ BOOST_CHECK(v2_1 == cb3[1]);
+ BOOST_CHECK(v2_2 == cb3[2]);
+ BOOST_CHECK(v2_3 == cb3[3]);
+ BOOST_CHECK(v2_4 == cb3[4]);
+ BOOST_CHECK(v2_5 == cb3[5]);
+ BOOST_CHECK(v2_r1 == cb3[6]);
+ BOOST_CHECK(!cb5.full());
+ BOOST_CHECK(cb5 == cb6);
+ BOOST_CHECK(v3_0 == cb5[0]);
+ BOOST_CHECK(v3_1 == cb5[1]);
+ BOOST_CHECK(v3_r1 == cb5[6]);
+ BOOST_CHECK(v3_r2 == cb5[5]);
+ BOOST_CHECK(v3_r3 == cb5[4]);
+ BOOST_CHECK(v3_r4 == cb5[3]);
+ BOOST_CHECK(v3_r5 == cb5[2]);
+
+ generic_test(cb1);
+ generic_test(cb2);
+ generic_test(cb3);
+ generic_test(cb4);
+ generic_test(cb5);
+ generic_test(cb6);
+}
+
 int MyInteger::ms_exception_trigger = 0;
 int InstanceCounter::ms_count = 0;
 
@@ -1860,4 +1993,5 @@
     tests->add(BOOST_TEST_CASE(&example_test));
     tests->add(BOOST_TEST_CASE(&element_destruction_test));
     tests->add(BOOST_TEST_CASE(&const_methods_test));
+ tests->add(BOOST_TEST_CASE(&rotate_test));
 }

Modified: branches/proto/v4/libs/circular_buffer/test/soft_iterator_invalidation.cpp
==============================================================================
--- branches/proto/v4/libs/circular_buffer/test/soft_iterator_invalidation.cpp (original)
+++ branches/proto/v4/libs/circular_buffer/test/soft_iterator_invalidation.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 // Note: The soft iterator invalidation definition CAN NOT be applied
 // to the space optimized circular buffer.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/test/space_optimized_test.cpp
==============================================================================
--- branches/proto/v4/libs/circular_buffer/test/space_optimized_test.cpp (original)
+++ branches/proto/v4/libs/circular_buffer/test/space_optimized_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Test of the space optimized adaptor of the circular buffer.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/circular_buffer/test/test.hpp
==============================================================================
--- branches/proto/v4/libs/circular_buffer/test/test.hpp (original)
+++ branches/proto/v4/libs/circular_buffer/test/test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Header file for the test of the circular buffer library.
 
-// Copyright (c) 2003-2007 Jan Gaspar
+// Copyright (c) 2003-2008 Jan Gaspar
 
 // Use, modification, and distribution is subject to the Boost Software
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/config/doc/guidelines.qbk
==============================================================================
--- branches/proto/v4/libs/config/doc/guidelines.qbk (original)
+++ branches/proto/v4/libs/config/doc/guidelines.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -129,12 +129,12 @@
 * cd into `libs/config/tools` and run `bjam` : this generates the `.cpp`
 file test cases from the `.ipp` file, updates the
 libs/config/test/all/Jamfile.v2, `config_test.cpp` and `config_info.cpp`.
-* cd into `libs/config/test/all` and run `bjam `['MACRONAME]` compiler-list` : where
-['MACRONAME] is the name of the new macro, and `compiler-list` is the list of
+* cd into `libs/config/test/all` and run `bjam `['MACRONAME` compiler-list`] : where
+['MACRONAME] is the name of the new macro, and ['`compiler-list`] is a space separated list of
 compilers to test with. You should see the tests pass with those compilers
 that don't have the defect, and fail with those that do.
-* cd into `libs/config/test` and run `bjam config_info config_test compiler-list` :
-`config_info` should build and run cleanly for all the compilers in `compiler-list`
+* cd into `libs/config/test` and run `bjam config_info config_test `['`compiler-list`] :
+`config_info` should build and run cleanly for all the compilers in ['`compiler-list`]
 while `config_test` should fail for those that have the defect, and pass for those
 that do not.
 

Modified: branches/proto/v4/libs/config/doc/html/boost_config/acknowledgements.html
==============================================================================
--- branches/proto/v4/libs/config/doc/html/boost_config/acknowledgements.html (original)
+++ branches/proto/v4/libs/config/doc/html/boost_config/acknowledgements.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Acknowledgements</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Boost.Config">
 <link rel="up" href="../index.html" title="Boost.Config">
 <link rel="prev" href="rationale.html" title="Rationale">
@@ -23,14 +23,14 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_config.acknowledgements"></a>Acknowledgements
+<a name="boost_config.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
 </h2></div></div></div>
 <p>
       Beman Dawes provided the original <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code> and
       part of this document.
     </p>
 <p>
- Vesa Karvonen provided a description of the principles (see rationale)
+ Vesa Karvonen provided a description of the principles (see <a class="link" href="../index.html#config_rationale">rationale</a>)
       and put together an early version of the current configuration setup.
     </p>
 <p>

Modified: branches/proto/v4/libs/config/doc/html/boost_config/boost_macro_reference.html
==============================================================================
--- branches/proto/v4/libs/config/doc/html/boost_config/boost_macro_reference.html (original)
+++ branches/proto/v4/libs/config/doc/html/boost_config/boost_macro_reference.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Boost Macro Reference</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Boost.Config">
 <link rel="up" href="../index.html" title="Boost.Config">
 <link rel="prev" href="../index.html" title="Boost.Config">
@@ -24,15 +24,17 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_config.boost_macro_reference"></a>Boost Macro Reference
+<a name="boost_config.boost_macro_reference"></a><a class="link" href="boost_macro_reference.html" title="Boost Macro Reference">Boost Macro Reference</a>
 </h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_defects">Macros
       that describe defects</a></span></dt>
 <dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros
       that describe optional features</a></span></dt>
-<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__0x_features">Macros
- that describe C++0x features</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c__0x_features">Macros
+ that describe possible C++0x features</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__0x_features_not_supported">Macros
+ that describe C++0x features not supported</a></span></dt>
 <dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost
       Helper Macros</a></span></dt>
 <dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
@@ -44,7 +46,7 @@
     </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.boost_macro_reference.macros_that_describe_defects"></a><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_defects" title="Macros that describe defects">Macros
+<a name="boost_config.boost_macro_reference.macros_that_describe_defects"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_defects" title="Macros that describe defects">Macros
       that describe defects</a>
 </h3></div></div></div>
 <p>
@@ -1202,7 +1204,7 @@
     </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.boost_macro_reference.macros_that_describe_optional_features"></a><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features" title="Macros that describe optional features">Macros
+<a name="boost_config.boost_macro_reference.macros_that_describe_optional_features"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features" title="Macros that describe optional features">Macros
       that describe optional features</a>
 </h3></div></div></div>
 <p>
@@ -2110,12 +2112,13 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.boost_macro_reference.macros_that_describe_c__0x_features"></a><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__0x_features" title="Macros that describe C++0x features">Macros
- that describe C++0x features</a>
+<a name="boost_config.boost_macro_reference.macros_that_describe_possible_c__0x_features"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c__0x_features" title="Macros that describe possible C++0x features">Macros
+ that describe possible C++0x features</a>
 </h3></div></div></div>
 <p>
         The following macros describe features that are likely to be included in
- the upcoming ISO C++ standard, C++0x.
+ the upcoming ISO C++ standard, C++0x, but have not yet been approved for
+ inclusion in the language.
       </p>
 <div class="informaltable"><table class="table">
 <colgroup>
@@ -2134,77 +2137,230 @@
               </p>
               </th>
 </tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_CONCEPTS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler supports concepts.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_c__0x_features_not_supported"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__0x_features_not_supported" title="Macros that describe C++0x features not supported">Macros
+ that describe C++0x features not supported</a>
+</h3></div></div></div>
+<p>
+ The following macros describe features in the upcoming ISO C++ standard,
+ C++0x, that are not yet supported by a particular compiler.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<td class="auto-generated"> </td>
+</tr></thead>
 <tbody>
 <tr>
 <td>
               <p>
- <code class="computeroutput"><span class="identifier">BOOST_HAS_CONCEPTS</span></code>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CHAR16_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support type <code class="computeroutput"><span class="identifier">char16_t</span></code>.
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CHAR32_T</span></code>
               </p>
               </td>
 <td>
               <p>
- The compiler supports concepts. Note: concepts have been proposed
- for C++0x, but have not yet been approved for inclusion in the language.
+ The compiler does not support type <code class="computeroutput"><span class="identifier">char32_t</span></code>.
               </p>
               </td>
+<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
               <p>
- <code class="computeroutput"><span class="identifier">BOOST_HAS_DECLTYPE</span></code>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CONSTEXPR</span></code>
               </p>
               </td>
 <td>
               <p>
- The compiler supports decltype.
+ The compiler does not support <code class="computeroutput"><span class="identifier">constexpr</span></code>.
               </p>
               </td>
+<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
               <p>
- <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_DECLTYPE</span></code>
               </p>
               </td>
 <td>
               <p>
- The compiler supports the long long data type.
+ The compiler does not support <code class="computeroutput"><span class="identifier">decltype</span></code>.
               </p>
               </td>
+<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
               <p>
- <code class="computeroutput"><span class="identifier">BOOST_HAS_RVALUE_REFS</span></code>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_DEFAULTED_FUNCTIONS</span></code>
               </p>
               </td>
 <td>
               <p>
- The compiler supports rvalue references.
+ The compiler does not support defaulted (<code class="computeroutput"><span class="special">=</span>
+ <span class="keyword">default</span></code>) functions. [[<code class="computeroutput"><span class="identifier">BOOST_NO_DELETED_FUNCTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support deleted (<code class="computeroutput"><span class="special">=</span>
+ <span class="keyword">delete</span></code>) functions.
               </p>
               </td>
 </tr>
 <tr>
 <td>
               <p>
- <code class="computeroutput"><span class="identifier">BOOST_HAS_STATIC_ASSERT</span></code>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_CONVERSION_OPERATIONS</span></code>
               </p>
               </td>
 <td>
               <p>
- The compiler supports static assertions.
+ The compiler does not support explicit conversion operators (<code class="computeroutput"><span class="keyword">explicit</span> <span class="keyword">operator</span>
+ <span class="identifier">T</span><span class="special">()</span></code>).
               </p>
               </td>
+<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
               <p>
- <code class="computeroutput"><span class="identifier">BOOST_HAS_VARIADIC_TMPL</span></code>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_EXTERN_TEMPLATE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support explicit instantiation declarations
+ for templates (<code class="computeroutput"><span class="keyword">explicit</span> <span class="keyword">template</span></code>).
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_LONG_LONG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">long</span></code>.
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_RAW_LITERALS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support raw string literals.
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_RVALUE_REFERENCES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support r-value references.
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_SCOPED_ENUMS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support scoped enumerations (<code class="computeroutput"><span class="keyword">enum</span> <span class="keyword">class</span></code>).
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STATIC_ASSERT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="identifier">static_assert</span></code>.
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_UNICODE_LITERALS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support Unicode (<code class="computeroutput"><span class="identifier">u8</span></code>,
+ <code class="computeroutput"><span class="identifier">u</span></code>, <code class="computeroutput"><span class="identifier">U</span>#<span class="special">)</span> <span class="identifier">literals</span><span class="special">.</span>
+ <span class="special">]]</span> <span class="special">[[</span></code>BOOST_NO_VARIADIC_TEMPLATES`
               </p>
               </td>
 <td>
               <p>
- The compiler supports variadic templates.
+ The compiler does not support variadic templates.
               </p>
               </td>
 </tr>
@@ -2215,7 +2371,7 @@
     </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.boost_macro_reference.boost_helper_macros"></a><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros" title="Boost Helper Macros">Boost
+<a name="boost_config.boost_macro_reference.boost_helper_macros"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros" title="Boost Helper Macros">Boost
       Helper Macros</a>
 </h3></div></div></div>
 <p>
@@ -2508,7 +2664,7 @@
     </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.boost_macro_reference.boost_informational_macros"></a><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros" title="Boost Informational Macros">Boost
+<a name="boost_config.boost_macro_reference.boost_informational_macros"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros" title="Boost Informational Macros">Boost
       Informational Macros</a>
 </h3></div></div></div>
 <p>
@@ -2747,7 +2903,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code"></a><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code" title="Macros for libraries with separate source code">Macros
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code" title="Macros for libraries with separate source code">Macros
       for libraries with separate source code</a>
 </h3></div></div></div>
 <div class="toc"><dl>
@@ -2764,7 +2920,7 @@
       </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing"></a><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing" title="ABI Fixing">ABI
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing" title="ABI Fixing">ABI
         Fixing</a>
 </h4></div></div></div>
 <p>
@@ -2822,7 +2978,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection"></a><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection" title="Automatic library selection">Automatic
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection" title="Automatic library selection">Automatic
         library selection</a>
 </h4></div></div></div>
 <p>

Modified: branches/proto/v4/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html
==============================================================================
--- branches/proto/v4/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html (original)
+++ branches/proto/v4/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Guidelines for Boost Authors</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Boost.Config">
 <link rel="up" href="../index.html" title="Boost.Config">
 <link rel="prev" href="boost_macro_reference.html" title="Boost Macro Reference">
@@ -24,7 +24,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_config.guidelines_for_boost_authors"></a><a href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">Guidelines for
+<a name="boost_config.guidelines_for_boost_authors"></a><a class="link" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">Guidelines for
     Boost Authors</a>
 </h2></div></div></div>
 <div class="toc"><dl>
@@ -105,7 +105,7 @@
 </ul></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.guidelines_for_boost_authors.warnings"></a><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings" title="Disabling Compiler Warnings">
+<a name="boost_config.guidelines_for_boost_authors.warnings"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings" title="Disabling Compiler Warnings">
       Disabling Compiler Warnings</a>
 </h3></div></div></div>
 <p>
@@ -184,7 +184,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.guidelines_for_boost_authors.adding_new_defect_macros"></a><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros" title="Adding New Defect Macros">Adding
+<a name="boost_config.guidelines_for_boost_authors.adding_new_defect_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros" title="Adding New Defect Macros">Adding
       New Defect Macros</a>
 </h3></div></div></div>
 <p>
@@ -243,17 +243,18 @@
         </li>
 <li>
           cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">all</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span>
- </code><span class="emphasis"><em>MACRONAME</em></span><code class="computeroutput"> <span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code>
+ </code><span class="emphasis"><em>MACRONAME<code class="computeroutput"> <span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>
           : where <span class="emphasis"><em>MACRONAME</em></span> is the name of the new macro, and
- <code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code> is the list of compilers to test
- with. You should see the tests pass with those compilers that don't have
- the defect, and fail with those that do.
+ <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span> is a space separated
+ list of compilers to test with. You should see the tests pass with those
+ compilers that don't have the defect, and fail with those that do.
         </li>
 <li>
           cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span>
           <span class="identifier">config_info</span> <span class="identifier">config_test</span>
- <span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code> : <code class="computeroutput"><span class="identifier">config_info</span></code>
- should build and run cleanly for all the compilers in <code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code>
+ </code><span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>
+ : <code class="computeroutput"><span class="identifier">config_info</span></code> should build
+ and run cleanly for all the compilers in <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>
           while <code class="computeroutput"><span class="identifier">config_test</span></code> should
           fail for those that have the defect, and pass for those that do not.
         </li>
@@ -282,7 +283,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros"></a><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros" title="Adding New Feature Test Macros">Adding
+<a name="boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros" title="Adding New Feature Test Macros">Adding
       New Feature Test Macros</a>
 </h3></div></div></div>
 <p>
@@ -306,7 +307,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers"></a><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers" title="Modifying the Boost Configuration Headers">Modifying
+<a name="boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers" title="Modifying the Boost Configuration Headers">Modifying
       the Boost Configuration Headers</a>
 </h3></div></div></div>
 <p>

Modified: branches/proto/v4/libs/config/doc/html/boost_config/rationale.html
==============================================================================
--- branches/proto/v4/libs/config/doc/html/boost_config/rationale.html (original)
+++ branches/proto/v4/libs/config/doc/html/boost_config/rationale.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Rationale</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Boost.Config">
 <link rel="up" href="../index.html" title="Boost.Config">
 <link rel="prev" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">
@@ -24,7 +24,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_config.rationale"></a>Rationale
+<a name="boost_config.rationale"></a><a class="link" href="rationale.html" title="Rationale">Rationale</a>
 </h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">The problem</span></dt>
@@ -41,7 +41,7 @@
     </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.rationale.the_problem"></a>The problem
+<a name="boost_config.rationale.the_problem"></a><a class="link" href="rationale.html#boost_config.rationale.the_problem" title="The problem">The problem</a>
 </h3></div></div></div>
 <p>
         Consider a situation in which you are concurrently developing on multiple
@@ -104,7 +104,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.rationale.the_solution"></a>The solution
+<a name="boost_config.rationale.the_solution"></a><a class="link" href="rationale.html#boost_config.rationale.the_solution" title="The solution">The solution</a>
 </h3></div></div></div>
 <p>
         The approach taken by boost's configuration headers is to separate configuration

Modified: branches/proto/v4/libs/config/doc/html/index.html
==============================================================================
--- branches/proto/v4/libs/config/doc/html/index.html (original)
+++ branches/proto/v4/libs/config/doc/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Boost.Config</title>
 <link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="index.html" title="Boost.Config">
 <link rel="next" href="boost_config/boost_macro_reference.html" title="Boost Macro Reference">
 </head>
@@ -28,7 +28,7 @@
 </h3></div></div></div>
 <div><p class="copyright">Copyright © 2001 -2007 Beman Dawes, Vesa Karvonen, John Maddock</p></div>
 <div><div class="legalnotice">
-<a name="id447424"></a><p>
+<a name="id464982"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -61,8 +61,10 @@
       that describe defects</a></span></dt>
 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros
       that describe optional features</a></span></dt>
-<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__0x_features">Macros
- that describe C++0x features</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c__0x_features">Macros
+ that describe possible C++0x features</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__0x_features_not_supported">Macros
+ that describe C++0x features not supported</a></span></dt>
 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost
       Helper Macros</a></span></dt>
 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
@@ -92,7 +94,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_config.configuring_boost_for_your_platform"></a><a href="index.html#boost_config.configuring_boost_for_your_platform" title="Configuring Boost for Your Platform">Configuring
+<a name="boost_config.configuring_boost_for_your_platform"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform" title="Configuring Boost for Your Platform">Configuring
     Boost for Your Platform</a>
 </h2></div></div></div>
 <div class="toc"><dl>
@@ -111,7 +113,7 @@
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration"></a><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration" title="Using the default boost configuration">Using
+<a name="boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration" title="Using the default boost configuration">Using
       the default boost configuration</a>
 </h3></div></div></div>
 <p>
@@ -135,7 +137,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header"></a><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header" title="The &lt;boost/config.hpp&gt; header">The
+<a name="boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header" title="The &lt;boost/config.hpp&gt; header">The
       &lt;boost/config.hpp&gt; header</a>
 </h3></div></div></div>
 <p>
@@ -150,10 +152,10 @@
         them usable by both Boost library and user code.
       </p>
 <p>
- Boost informational or helper
+ Boost <a class="link" href="boost_config/boost_macro_reference.html#config_info_macros">informational</a> or <a class="link" href="boost_config/boost_macro_reference.html#config_helpers">helper</a>
         macros are designed for use by Boost users as well as for our own internal
- use. Note however, that the feature test
- and defect test macros were designed
+ use. Note however, that the <a class="link" href="boost_config/boost_macro_reference.html#config_features">feature test</a>
+ and <a class="link" href="boost_config/boost_macro_reference.html#config_defects">defect test</a> macros were designed
         for internal use by Boost libraries, not user code, so they can change at
         any time (though no gratuitous changes are made to them). Boost library problems
         resulting from changes to the configuration macros are caught by the Boost
@@ -168,7 +170,7 @@
     </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.configuring_boost_for_your_platform.using_the_configure_script"></a><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script" title="Using the configure script">Using
+<a name="boost_config.configuring_boost_for_your_platform.using_the_configure_script"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script" title="Using the configure script">Using
       the configure script</a>
 </h3></div></div></div>
 <div class="important"><table border="0" summary="Important">
@@ -318,7 +320,7 @@
     </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.configuring_boost_for_your_platform.user_settable_options"></a><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options" title="User settable options">User
+<a name="boost_config.configuring_boost_for_your_platform.user_settable_options"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options" title="User settable options">User
       settable options</a>
 </h3></div></div></div>
 <p>
@@ -682,7 +684,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage"></a><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage" title="Advanced configuration usage">Advanced
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage" title="Advanced configuration usage">Advanced
       configuration usage</a>
 </h3></div></div></div>
 <div class="toc"><dl>
@@ -707,13 +709,13 @@
 <p>
         Next the compiler, standard library, and platform configuration files are
         included. These are included via macros (<code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code>
- etc, see user settable macros),
+ etc, <a class="link" href="index.html#config_user_settable">see user settable macros</a>),
         and if the corresponding macro is undefined then a separate header that detects
         which compiler/standard library/platform is in use is included in order to
         set these. The config can be told to ignore these headers altogether if the
         corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
         macro is set (for example <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
- to disable including any compiler configuration file - <a href="index.html#config_user_settable">see
+ to disable including any compiler configuration file - <a class="link" href="index.html#config_user_settable">see
         user settable macros</a>).
       </p>
 <p>
@@ -726,7 +728,7 @@
       </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration"></a><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration" title="Example 1, creating our own frozen configuration">Example
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration" title="Example 1, creating our own frozen configuration">Example
         1, creating our own frozen configuration</a>
 </h4></div></div></div>
 <p>
@@ -758,7 +760,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need"></a><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need" title="Example 2: skipping files that you don't need">Example
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need" title="Example 2: skipping files that you don't need">Example
         2: skipping files that you don't need</a>
 </h4></div></div></div>
 <p>
@@ -777,20 +779,20 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration"></a><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration" title="Example 3: using configure script to freeze the boost configuration">Example
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration" title="Example 3: using configure script to freeze the boost configuration">Example
         3: using configure script to freeze the boost configuration</a>
 </h4></div></div></div>
 <p>
           If you are working on a unix-like platform then you can use the configure
           script to generate a "frozen" configuration based on your current
- compiler setup - <a href="index.html#config_config_script">see using the configure
+ compiler setup - <a class="link" href="index.html#config_config_script">see using the configure
           script for more details</a>.
         </p>
 </div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration"></a><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration" title="Testing the boost configuration">Testing
+<a name="boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration" title="Testing the boost configuration">Testing
       the boost configuration</a>
 </h3></div></div></div>
 <p>
@@ -960,7 +962,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: May 27, 2008 at 16:07:04 GMT</small></p></td>
+<td align="left"><p><small>Last revised: June 20, 2008 at 00:19:08 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/config/doc/macro_reference.qbk
==============================================================================
--- branches/proto/v4/libs/config/doc/macro_reference.qbk (original)
+++ branches/proto/v4/libs/config/doc/macro_reference.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -487,36 +487,75 @@
 
 [endsect]
 
-[section Macros that describe C++0x features]
+[section Macros that describe possible C++0x features]
 
 The following macros describe features that are likely to be included in the
-upcoming ISO C++ standard, C++0x.
+upcoming ISO C++ standard, C++0x, but have not yet been approved for inclusion
+in the language.
 
 
 [table
 [[Macro ][Description ]]
 
 [[`BOOST_HAS_CONCEPTS`][
-The compiler supports concepts. Note: concepts have been proposed for C++0x,
-but have not yet been approved for inclusion in the language.
-]]
-[[`BOOST_HAS_DECLTYPE`][
-The compiler supports decltype.
-]]
-[[`BOOST_HAS_LONG_LONG`][
-The compiler supports the long long data type.
-]]
-[[`BOOST_HAS_RVALUE_REFS`][
-The compiler supports rvalue references.
-]]
-[[`BOOST_HAS_STATIC_ASSERT`][
-The compiler supports static assertions.
-]]
-[[`BOOST_HAS_VARIADIC_TMPL`][
-The compiler supports variadic templates.
+The compiler supports concepts.
 ]]
 ]
 
+[endsect]
+
+[section Macros that describe C++0x features not supported]
+
+The following macros describe features in the upcoming ISO C++ standard, C++0x,
+that are not yet supported by a particular compiler.
+
+[table
+[[Macro ][Description ]]
+
+[[`BOOST_NO_CHAR16_T`][The compiler does not support
+type `char16_t`.
+]]
+[[`BOOST_NO_CHAR32_T`][The compiler does not support
+type `char32_t`.
+]]
+[[`BOOST_NO_CONSTEXPR`][The compiler does not support
+`constexpr`.
+]]
+[[`BOOST_NO_DECLTYPE`][The compiler does not support
+`decltype`.
+]]
+[[`BOOST_NO_DEFAULTED_FUNCTIONS`][The compiler does not support
+defaulted (`= default`) functions.
+[[`BOOST_NO_DELETED_FUNCTIONS`][The compiler does not support
+deleted (`= delete`) functions.
+]]
+[[`BOOST_NO_EXPLICIT_CONVERSION_OPERATIONS`][The compiler does not support
+explicit conversion operators (`explicit operator T()`).
+]]
+[[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support
+explicit instantiation declarations for templates (`explicit template`).
+]]
+[[`BOOST_NO_LONG_LONG`][The compiler does not support `long long`.
+]]
+[[`BOOST_NO_RAW_LITERALS`][The compiler does not support
+raw string literals.
+]]
+[[`BOOST_NO_RVALUE_REFERENCES`][The compiler does not support
+r-value references.
+]]
+[[`BOOST_NO_SCOPED_ENUMS`][The compiler does not support
+scoped enumerations (`enum class`).
+]]
+[[`BOOST_NO_STATIC_ASSERT`][The compiler does not support
+`static_assert`.
+]]
+[[`BOOST_NO_UNICODE_LITERALS`][The compiler does not support
+Unicode (`u8`, `u`, `U') literals.
+]]
+[[`BOOST_NO_VARIADIC_TEMPLATES`][The compiler does not support
+variadic templates.
+]]
+]
 
 [endsect]
 

Modified: branches/proto/v4/libs/config/test/all/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/config/test/all/Jamfile.v2 (original)
+++ branches/proto/v4/libs/config/test/all/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 #
 # Regression test Jamfile for boost configuration setup.
 # *** DO NOT EDIT THIS FILE BY HAND ***
-# This file was automatically generated on Mon Apr 21 12:40:41 2008
+# This file was automatically generated on Sat Jul 12 12:39:35 2008
 # by libs/config/tools/generate.cpp
 # Copyright John Maddock.
 # Use, modification and distribution are subject to the

Modified: branches/proto/v4/libs/config/test/boost_has_tr1_result_of.ipp
==============================================================================
--- branches/proto/v4/libs/config/test/boost_has_tr1_result_of.ipp (original)
+++ branches/proto/v4/libs/config/test/boost_has_tr1_result_of.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,7 @@
 namespace boost_has_tr1_result_of{
 
 typedef std::tr1::result_of<int*(int)> r;
-typedef typename r::type rr;
+typedef r::type rr;
 
 int test()
 {

Modified: branches/proto/v4/libs/config/test/boost_no_bcb_partial_spec.ipp
==============================================================================
--- branches/proto/v4/libs/config/test/boost_no_bcb_partial_spec.ipp (original)
+++ branches/proto/v4/libs/config/test/boost_no_bcb_partial_spec.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Terje Slettebø 2002.
+// (C) Copyright Terje Slettebo 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)

Modified: branches/proto/v4/libs/config/test/boost_no_mem_tem_pnts.ipp
==============================================================================
--- branches/proto/v4/libs/config/test/boost_no_mem_tem_pnts.ipp (original)
+++ branches/proto/v4/libs/config/test/boost_no_mem_tem_pnts.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// Copyright (C) Joaquín M López Muñoz 2004.
+// Copyright (C) Joaquin M Lopez Munoz 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)

Modified: branches/proto/v4/libs/config/test/boost_no_sfinae.ipp
==============================================================================
--- branches/proto/v4/libs/config/test/boost_no_sfinae.ipp (original)
+++ branches/proto/v4/libs/config/test/boost_no_sfinae.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 // (C) Copyright Eric Friedman 2003.
-// Some modifications by Jeremiah Willcock and Jaakko Järvi.
+// Some modifications by Jeremiah Willcock and Jaakko Jarvi.
 // 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)

Modified: branches/proto/v4/libs/config/test/config_info.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/config_info.cpp (original)
+++ branches/proto/v4/libs/config/test/config_info.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1034,6 +1034,7 @@
 
 
 
+
    // END GENERATED BLOCK
 
    PRINT_MACRO(BOOST_INTEL);

Modified: branches/proto/v4/libs/config/test/config_test.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/config_test.cpp (original)
+++ branches/proto/v4/libs/config/test/config_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// This file was automatically generated on Mon Apr 21 12:40:41 2008
+// This file was automatically generated on Sat Jul 12 12:39:34 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // Use, modification and distribution are subject to the

Modified: branches/proto/v4/libs/config/test/has_tr1_array_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_array_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_array_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Feb 19 12:29:54 2005
+// This file was automatically generated on Sat Jul 12 12:39:31 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_ARRAY
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_ARRAY

Modified: branches/proto/v4/libs/config/test/has_tr1_array_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_array_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_array_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Feb 19 12:29:54 2005
+// This file was automatically generated on Sat Jul 12 12:39:31 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_ARRAY
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_ARRAY

Modified: branches/proto/v4/libs/config/test/has_tr1_bind_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_bind_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_bind_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Mon Jan 24 16:31:49 2005
+// This file was automatically generated on Sat Jul 12 12:39:31 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_BIND
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_BIND

Modified: branches/proto/v4/libs/config/test/has_tr1_bind_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_bind_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_bind_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Mon Jan 24 16:31:49 2005
+// This file was automatically generated on Sat Jul 12 12:39:31 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_BIND
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_BIND

Modified: branches/proto/v4/libs/config/test/has_tr1_complex_over_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_complex_over_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_complex_over_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Apr 02 11:49:11 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_COMPLEX_OVERLOADS
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_COMPLEX_OVERLOADS

Modified: branches/proto/v4/libs/config/test/has_tr1_complex_over_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_complex_over_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_complex_over_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Apr 02 11:49:11 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_COMPLEX_OVERLOADS
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_COMPLEX_OVERLOADS

Modified: branches/proto/v4/libs/config/test/has_tr1_complex_trig_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_complex_trig_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_complex_trig_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Apr 02 11:49:12 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG

Modified: branches/proto/v4/libs/config/test/has_tr1_complex_trig_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_complex_trig_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_complex_trig_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Apr 02 11:49:12 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG

Modified: branches/proto/v4/libs/config/test/has_tr1_function_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_function_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_function_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Tue Jan 25 15:52:52 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_FUNCTION
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_FUNCTION

Modified: branches/proto/v4/libs/config/test/has_tr1_function_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_function_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_function_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Tue Jan 25 15:52:52 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_FUNCTION
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_FUNCTION

Modified: branches/proto/v4/libs/config/test/has_tr1_hash_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_hash_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_hash_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Feb 19 12:29:55 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_HASH
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_HASH

Modified: branches/proto/v4/libs/config/test/has_tr1_hash_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_hash_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_hash_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Feb 19 12:29:55 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_HASH
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_HASH

Modified: branches/proto/v4/libs/config/test/has_tr1_mem_fn_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_mem_fn_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_mem_fn_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Mon Jan 24 16:31:49 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_MEM_FN
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_MEM_FN

Modified: branches/proto/v4/libs/config/test/has_tr1_mem_fn_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_mem_fn_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_mem_fn_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Mon Jan 24 16:31:49 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_MEM_FN
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_MEM_FN

Modified: branches/proto/v4/libs/config/test/has_tr1_random_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_random_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_random_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Tue Feb 15 17:34:12 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_RANDOM
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_RANDOM

Modified: branches/proto/v4/libs/config/test/has_tr1_random_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_random_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_random_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Tue Feb 15 17:34:12 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_RANDOM
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_RANDOM

Modified: branches/proto/v4/libs/config/test/has_tr1_ref_wrap_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_ref_wrap_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_ref_wrap_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sun Jan 16 16:06:37 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_REFERENCE_WRAPPER
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_REFERENCE_WRAPPER

Modified: branches/proto/v4/libs/config/test/has_tr1_ref_wrap_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_ref_wrap_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_ref_wrap_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sun Jan 16 16:06:37 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_REFERENCE_WRAPPER
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_REFERENCE_WRAPPER

Modified: branches/proto/v4/libs/config/test/has_tr1_regex_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_regex_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_regex_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// This file was automatically generated on Wed Apr 09 16:30:13 2008
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // Use, modification and distribution are subject to the
@@ -22,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_REGEX

Modified: branches/proto/v4/libs/config/test/has_tr1_regex_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_regex_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_regex_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// This file was automatically generated on Wed Apr 09 16:30:13 2008
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // Use, modification and distribution are subject to the
@@ -22,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_REGEX

Modified: branches/proto/v4/libs/config/test/has_tr1_result_of_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_result_of_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_result_of_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Mon Jan 24 16:31:49 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_RESULT_OF
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_RESULT_OF

Modified: branches/proto/v4/libs/config/test/has_tr1_result_of_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_result_of_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_result_of_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Mon Jan 24 16:31:49 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_RESULT_OF
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_RESULT_OF

Modified: branches/proto/v4/libs/config/test/has_tr1_shared_ptr_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_shared_ptr_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_shared_ptr_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Mon Jan 17 10:49:50 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_SHARED_PTR
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_SHARED_PTR

Modified: branches/proto/v4/libs/config/test/has_tr1_shared_ptr_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_shared_ptr_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_shared_ptr_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Mon Jan 17 10:49:50 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_SHARED_PTR
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_SHARED_PTR

Modified: branches/proto/v4/libs/config/test/has_tr1_tuple_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_tuple_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_tuple_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Tue Feb 15 17:34:12 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_TUPLE
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_TUPLE

Modified: branches/proto/v4/libs/config/test/has_tr1_tuple_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_tuple_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_tuple_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Tue Feb 15 17:34:12 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_TUPLE
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_TUPLE

Modified: branches/proto/v4/libs/config/test/has_tr1_type_traits_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_type_traits_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_type_traits_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Tue Feb 15 17:34:12 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_TYPE_TRAITS
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_TYPE_TRAITS

Modified: branches/proto/v4/libs/config/test/has_tr1_type_traits_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_type_traits_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_type_traits_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Tue Feb 15 17:34:12 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_TYPE_TRAITS
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_TYPE_TRAITS

Modified: branches/proto/v4/libs/config/test/has_tr1_unordered_map_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_unordered_map_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_unordered_map_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Feb 19 12:29:55 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_UNORDERED_MAP
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_UNORDERED_MAP

Modified: branches/proto/v4/libs/config/test/has_tr1_unordered_map_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_unordered_map_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_unordered_map_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Feb 19 12:29:55 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_UNORDERED_MAP
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_UNORDERED_MAP

Modified: branches/proto/v4/libs/config/test/has_tr1_unordered_set_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_unordered_set_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_unordered_set_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Feb 19 12:29:55 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_UNORDERED_SET
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_UNORDERED_SET

Modified: branches/proto/v4/libs/config/test/has_tr1_unordered_set_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_unordered_set_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_unordered_set_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Sat Feb 19 12:29:55 2005
+// This file was automatically generated on Sat Jul 12 12:39:32 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_UNORDERED_SET
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_UNORDERED_SET

Modified: branches/proto/v4/libs/config/test/has_tr1_utility_fail.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_utility_fail.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_utility_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Tue Feb 15 17:34:13 2005
+// This file was automatically generated on Sat Jul 12 12:39:33 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_UTILITY
 // This file should not compile, if it does then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifndef BOOST_HAS_TR1_UTILITY

Modified: branches/proto/v4/libs/config/test/has_tr1_utility_pass.cpp
==============================================================================
--- branches/proto/v4/libs/config/test/has_tr1_utility_pass.cpp (original)
+++ branches/proto/v4/libs/config/test/has_tr1_utility_pass.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,14 @@
-// This file was automatically generated on Tue Feb 15 17:34:13 2005
+// This file was automatically generated on Sat Jul 12 12:39:33 2008
 // by libs/config/tools/generate.cpp
 // Copyright John Maddock 2002-4.
 // 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 the most recent version.
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
 
 // Test file for macro BOOST_HAS_TR1_UTILITY
 // This file should compile, if it does not then
@@ -19,6 +22,7 @@
 #endif
 
 #include <boost/config.hpp>
+#include <boost/tr1/detail/config.hpp>
 #include "test.hpp"
 
 #ifdef BOOST_HAS_TR1_UTILITY

Modified: branches/proto/v4/libs/config/tools/generate.cpp
==============================================================================
--- branches/proto/v4/libs/config/tools/generate.cpp (original)
+++ branches/proto/v4/libs/config/tools/generate.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -156,8 +156,14 @@
          "# undef BOOST_ASSERT_CONFIG\n"
          "#endif\n\n";
 
- ofs << "#include <boost/config.hpp>\n"
- "#include \"test.hpp\"\n\n"
+ static const boost::regex tr1_exp("BOOST_HAS_TR1.*");
+
+ ofs << "#include <boost/config.hpp>\n";
+
+ if(regex_match(macro_name, tr1_exp))
+ ofs << "#include <boost/tr1/detail/config.hpp>\n";
+
+ ofs << "#include \"test.hpp\"\n\n"
          "#if";
       if(positive_test != expect_success)
          ofs << "n";
@@ -270,7 +276,7 @@
    fs::directory_iterator i(config_path), j;
    while(i != j)
    {
- if(boost::regex_match(i->leaf(), ipp_match, ipp_mask))
+ if(boost::regex_match(i->path().leaf(), ipp_match, ipp_mask))
       {
          process_ipp_file(*i, ipp_match[1].matched);
       }

Modified: branches/proto/v4/libs/dynamic_bitset/bitset_test.hpp
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/bitset_test.hpp (original)
+++ branches/proto/v4/libs/dynamic_bitset/bitset_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,14 +1,12 @@
-// --------------------------------------------------
-// (C) Copyright Jeremy Siek 2001.
-// (C) Copyright Gennaro Prota 2003 - 2006.
+// -----------------------------------------------------------
+// Copyright (c) 2001 Jeremy Siek
+// Copyright (c) 2003-2006 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)
 //
 // -----------------------------------------------------------
-//
-// $Id$
 
 #ifndef BOOST_BITSET_TEST_HPP_GP_20040319
 #define BOOST_BITSET_TEST_HPP_GP_20040319

Modified: branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests1.cpp
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests1.cpp (original)
+++ branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,14 +1,12 @@
-// --------------------------------------------------------
-// (C) Copyright Jeremy Siek 2001.
-// (C) Copyright Gennaro Prota 2003 - 2006.
+// -----------------------------------------------------------
+// Copyright (c) 2001 Jeremy Siek
+// Copyright (c) 2003-2006 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)
 //
 // -----------------------------------------------------------
-//
-// $Id$
 
 #include "bitset_test.hpp"
 #include "boost/dynamic_bitset/dynamic_bitset.hpp"

Modified: branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests2.cpp
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests2.cpp (original)
+++ branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,14 +1,12 @@
-// --------------------------------------------------------
-// (C) Copyright Jeremy Siek 2001.
-// (C) Copyright Gennaro Prota 2003 - 2006.
+// -----------------------------------------------------------
+// Copyright (c) 2001 Jeremy Siek
+// Copyright (c) 2003-2006 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)
 //
 // -----------------------------------------------------------
-//
-// $Id$
 
 #include "bitset_test.hpp"
 #include "boost/dynamic_bitset/dynamic_bitset.hpp"

Modified: branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests3.cpp
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests3.cpp (original)
+++ branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests3.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,14 +1,12 @@
-// --------------------------------------------------------
-// (C) Copyright Jeremy Siek 2001.
-// (C) Copyright Gennaro Prota 2003 - 2006.
+// -----------------------------------------------------------
+// Copyright (c) 2001 Jeremy Siek
+// Copyright (c) 2003-2006 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)
 //
 // -----------------------------------------------------------
-//
-// $Id$
 
 #include <assert.h>
 #include "bitset_test.hpp"

Modified: branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests4.cpp
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests4.cpp (original)
+++ branches/proto/v4/libs/dynamic_bitset/dyn_bitset_unit_tests4.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,14 +1,12 @@
-// --------------------------------------------------------
-// (C) Copyright Jeremy Siek 2001.
-// (C) Copyright Gennaro Prota 2003 - 2006.
+// -----------------------------------------------------------
+// Copyright (c) 2001 Jeremy Siek
+// Copyright (c) 2003-2006 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)
 //
 // -----------------------------------------------------------
-//
-// $Id$
 
 #include <fstream>
 #include <string>

Modified: branches/proto/v4/libs/dynamic_bitset/dynamic_bitset.html
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/dynamic_bitset.html (original)
+++ branches/proto/v4/libs/dynamic_bitset/dynamic_bitset.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,14 +1,16 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
 
 <!--
- (C) Jeremy Siek 2001.
- (C) Gennaro Prota 2003-2004.
+ Copyright (c) 2001 Jeremy Siek
+ Copyright (c) 2003-2004, 2008 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)
- -->
+-->
 
 <!--
    Copyright (c) 1996-1999
@@ -36,64 +38,46 @@
   -->
 <head>
 <title>dynamic_bitset&lt;Block, Allocator&gt;</title>
+<link rel="stylesheet" type="text/css" href="../../rst.css" />
 </head>
-<body text="#000000" link="#006600" alink="#003300"
- vlink="#7C7F87" bgcolor="#FFFFFF">
-<img src="../../boost.png" alt="boost.png (6897 bytes)"
-align="middle" width="277" height="86">
 
-<p><!--end header-->
-<br>
-</p>
+<body>
+<div id="body">
+<div id="body-inner">
+<div id="content">
+<div class="section" id="docs">
+<div class="section-0">
+<div class="section-body">
 
+<div id="boost-logo"><img src="../../boost.png" alt="Boost C++ Libraries" /></div>
 <h1>dynamic_bitset&lt;Block, Allocator&gt;</h1>
-
 <h2>Contents</h2>
 
 <dl class="index">
 <dt>Description</dt>
-
 <dt>Synopsis</dt>
-
 <dt>Definitions</dt>
-
 <dt>Examples</dt>
-
 <dt>Rationale</dt>
-
 <dt>Header Files</dt>
-
 <dt>Template Parameters</dt>
-
 <dt>Concepts modeled</dt>
 
 <dt>Type requirements</dt>
-
 <dt>Public base classes</dt>
-
 <dt>Nested type names</dt>
-
 <dt>Public data members</dt>
-
 <dt>Constructors</dt>
-
 <dt>Destructor</dt>
-
 <dt>Member functions</dt>
-
 <dt>Non-member functions</dt>
-
 <dt>Exception guarantees</dt>
 
 <dt>Changes from previous version(s)</dt>
-
 <dt>See also</dt>
-
 <dt>Acknowledgements</dt>
 </dl>
-
-<h3><a name="description">Description</a></h3>
-
+<h3><a id="description">Description</a></h3>
 <p>The <tt>dynamic_bitset</tt> class represents a set of bits. It
 provides accesses to the value of individual bits via an
 <tt>operator[]</tt> and provides all of the bitwise operators
@@ -118,9 +102,7 @@
 <tt>dynamic_bitset</tt>, such as <tt>operator&amp;</tt> and
 <tt>operator|</tt>, correspond to set operations, such as
 intersection and union.</p>
-
-<h3><a name="synopsis">Synopsis</a></h3>
-
+<h3><a id ="synopsis">Synopsis</a></h3>
 <pre>
 namespace boost {
 
@@ -140,6 +122,7 @@
     class reference
     {
         void operator&amp;(); // not defined
+
     public:
         // An automatically generated copy constructor.
 
@@ -155,6 +138,7 @@
         operator bool() const;
         reference&amp; flip();
     };
+
     typedef bool const_reference;
 
     explicit <a href=
@@ -191,29 +175,20 @@
     void clear();
     void push_back(bool bit);
     void append(Block block);
+
     template &lt;typename BlockInputIterator&gt;
- void <a href=
-"#append2">append</a>(BlockInputIterator first, BlockInputIterator last);
+ void append(BlockInputIterator first, BlockInputIterator last);
 
- dynamic_bitset&amp; <a href=
-"#op-and-assign">operator&amp;=</a>(const dynamic_bitset&amp; b);
- dynamic_bitset&amp; <a href=
-"#op-or-assign">operator|=</a>(const dynamic_bitset&amp; b);
- dynamic_bitset&amp; <a href=
-"#op-xor-assign">operator^=</a>(const dynamic_bitset&amp; b);
- dynamic_bitset&amp; <a href=
-"#op-sub-assign">operator-=</a>(const dynamic_bitset&amp; b);
- dynamic_bitset&amp; <a href=
-"#op-sl-assign">operator&lt;&lt;=</a>(size_type n);
- dynamic_bitset&amp; <a href=
-"#op-sr-assign">operator&gt;&gt;=</a>(size_type n);
- dynamic_bitset <a href=
-"#op-sl">operator&lt;&lt;</a>(size_type n) const;
- dynamic_bitset <a href=
-"#op-sr">operator&gt;&gt;</a>(size_type n) const;
+ dynamic_bitset&amp; operator&=(const dynamic_bitset&amp; b);
+ dynamic_bitset&amp; operator|=(const dynamic_bitset&amp; b);
+ dynamic_bitset&amp; operator^=(const dynamic_bitset&amp; b);
+ dynamic_bitset&amp; operator-=(const dynamic_bitset&amp; b);
+ dynamic_bitset&amp; operator<<=(size_type n);
+ dynamic_bitset&amp; operator>>=(size_type n);
+ dynamic_bitset operator<<(size_type n) const;
+ dynamic_bitset operator>>(size_type n) const;
 
- dynamic_bitset&amp; <a href=
-"#set2">set</a>(size_type n, bool val = true);
+ dynamic_bitset&amp; set(size_type n, bool val = true);
     dynamic_bitset&amp; set();
     dynamic_bitset&amp; reset(size_type n);
     dynamic_bitset&amp; reset();
@@ -225,10 +200,8 @@
     dynamic_bitset operator~() const;
     size_type count() const;
 
- reference <a href=
-"#bracket">operator[]</a>(size_type pos);
- bool <a href=
-"#const-bracket">operator[]</a>(size_type pos) const;
+ reference operator[](size_type pos);
+ bool operator[](size_type pos) const;
 
     unsigned long to_ulong() const;
 
@@ -237,18 +210,15 @@
     size_type max_size() const;
     bool empty() const;
 
- bool <a href=
-"#is_subset_of">is_subset_of</a>(const dynamic_bitset&amp; a) const;
- bool <a href=
-"#is_proper_subset_of">is_proper_subset_of</a>(const dynamic_bitset&amp; a) const;
+ bool is_subset_of(const dynamic_bitset&amp; a) const;
+ bool is_proper_subset_of(const dynamic_bitset&amp; a) const;
 
     size_type find_first() const;
     size_type find_next(size_type pos) const;
 
-
-
 };
 
+
 template &lt;typename B, typename A&gt;
 bool <a href=
 "#op-equal">operator==</a>(const dynamic_bitset&lt;B, A&gt;&amp; a, const dynamic_bitset&lt;B, A&gt;&amp; b);
@@ -316,7 +286,7 @@
 } // namespace boost
 </pre>
 
-<h3><a name="definitions">Definitions</a></h3>
+<h3><a id="definitions">Definitions</a></h3>
 
 <p>Each bit represents either the Boolean value true or false (1
 or 0). To <i>set</i> a bit is to assign it 1. To <i>clear</i> or
@@ -331,135 +301,31 @@
 unsigned long <tt>n</tt>, the bit at position <tt>i</tt> of the
 bitset has the same value as <tt>(n &gt;&gt; i) &amp; 1</tt>.</p>
 
-<h3><a name="examples">Examples</a></h3>
-
-<p>An example of setting and reading some bits. Note that
-<tt>operator[]</tt> goes from the least-significant bit at
-<tt>0</tt> to the most significant bit at <tt>size()-1</tt>. The
-<tt>operator&lt;&lt;</tt> for <tt>dynamic_bitset</tt> prints the
-bitset from most-significant to least-significant, since that is
-the format most people are use to reading.</p>
-
-<blockquote>
-<pre>
-#include &lt;iostream&gt;
-#include &lt;boost/dynamic_bitset.hpp&gt;
-int main(int, char*[]) {
- boost::dynamic_bitset&lt;&gt; x(5); // all 0's by default
- x[0] = 1;
- x[1] = 1;
- x[4] = 1;
- for (boost::dynamic_bitset&lt;&gt;::size_type i = 0; i &lt; x.size(); ++i)
- std::cout &lt;&lt; x[i];
- std::cout &lt;&lt; "\n";
- std::cout &lt;&lt; x &lt;&lt; "\n";
- return EXIT_SUCCESS;
-}
-</pre>
-</blockquote>
-
-<p>The output is</p>
-
-<blockquote>
-<pre>
-11001
-10011
-</pre>
-</blockquote>
-
-<p>An example of creating some bitsets from integers (unsigned
-longs).</p>
-
-<blockquote>
-<pre>
-#include &lt;iostream&gt;
-#include &lt;boost/dynamic_bitset.hpp&gt;
-int main(int, char*[])
-{
- const boost::dynamic_bitset&lt;&gt; b0(2, 0ul);
- std::cout &lt;&lt; "bits(0) = " &lt;&lt; b0 &lt;&lt; std::endl;
-
- const boost::dynamic_bitset&lt;&gt; b1(2, 1ul);
- std::cout &lt;&lt; "bits(1) = " &lt;&lt; b1 &lt;&lt; std::endl;
-
- const boost::dynamic_bitset&lt;&gt; b2(2, 2ul);
- std::cout &lt;&lt; "bits(2) = " &lt;&lt; b2 &lt;&lt; std::endl;
-
- const boost::dynamic_bitset&lt;&gt; b3(2, 3ul);
- std::cout &lt;&lt; "bits(3) = " &lt;&lt; b3 &lt;&lt; std::endl;
-
- return EXIT_SUCCESS;
-}
-</pre>
-</blockquote>
-
-<p>The output is</p>
-
-<blockquote>
-<pre>
-bits(0) = 00
-bits(1) = 01
-bits(2) = 10
-bits(3) = 11
-</pre>
-</blockquote>
-
-<p>An example of performing some bitwise operations.</p>
-
-<blockquote>
-<pre>
-#include &lt;iostream&gt;
-#include &lt;boost/dynamic_bitset.hpp&gt;
-int main(int, char*[]) {
- const boost::dynamic_bitset&lt;&gt; mask(12, 2730ul);
- std::cout &lt;&lt; "mask = " &lt;&lt; mask &lt;&lt; std::endl;
-
- boost::dynamic_bitset&lt;&gt; x(12);
-
- std::cout &lt;&lt; "Enter a 12-bit bitset in binary: " &lt;&lt; std::flush;
- if (std::cin &gt;&gt; x) {
- std::cout &lt;&lt; "input number: " &lt;&lt; x &lt;&lt; std::endl;
- std::cout &lt;&lt; "As unsigned long: " &lt;&lt; x.to_ulong() &lt;&lt; std::endl;
- std::cout &lt;&lt; "And with mask: " &lt;&lt; (x &amp; mask) &lt;&lt; std::endl;
- std::cout &lt;&lt; "Or with mask: " &lt;&lt; (x | mask) &lt;&lt; std::endl;
- std::cout &lt;&lt; "Shifted left: " &lt;&lt; (x &lt;&lt; 1) &lt;&lt; std::endl;
- std::cout &lt;&lt; "Shifted right: " &lt;&lt; (x &gt;&gt; 1) &lt;&lt; std::endl;
- }
- return EXIT_SUCCESS;
-}
-</pre>
-</blockquote>
-
-<p>The output is</p>
-
-<blockquote>
-<pre>
-mask = 101010101010
-Enter a 12-bit bitset in binary: 100110101101
-input number = 100110101101
-As unsigned long: 2477
-And with mask: 100010101000
-Or with mask: 101110101111
-Shifted left: 001101011010
-Shifted right: 010011010110
-</pre>
-</blockquote>
+<h3><a id="examples">Examples</a></h3>
 
-<h3><a name="rationale">Rationale</a></h3>
+<p>
+Example 1 (setting
+and reading some bits)
+</p>
+<p>
+Example 2 (creating
+some bitsets from integers)
+</p>
 
-The <tt>dynamic_bitset</tt> does not provide iterators (and
-therefore is not a <a href=
-"http://www.sgi.com/tech/stl/Container.html">Container</a>) for
-the following reasons:
+<p>
+Example 3 (performing
+input/output and some bitwise operations).
+</p>
 
-<ol>
-<li><tt>std::bitset</tt> does not have iterators, and
-<tt>dynamic_bitset</tt> is meant to be a run-time sized version
-of <tt>std::bitset</tt>.</li>
 
-<li>The <tt>dynamic_bitset</tt> is not designed to be a <a href=
-"http://www.sgi.com/tech/stl/Container.html">Container</a>.</li>
+<h3><a id="rationale">Rationale</a></h3>
+<p>
+<tt>dynamic_bitset</tt> is not a <a href=
+"http://www.sgi.com/tech/stl/Container.html">Container</a> and
+does not provide iterators for the following reason:
+</p>
 
+<ul>
 <li>A container with a proxy <tt>reference</tt> type can not
 fulfill the container requirements as specified in the C++
 standard (unless one resorts to strange iterator semantics).
@@ -478,7 +344,7 @@
 discussion of the problem see <i>Effective STL</i> by Scott
 Meyers). So <tt>dynamic_bitset</tt> tries to avoid these problems
 by not pretending to be a container.</li>
-</ol>
+</ul>
 
 <p>Some people prefer the name "toggle" to "flip". The name
 "flip" was chosen because that is the name used in <a href=
@@ -492,7 +358,7 @@
 "http://www.boost.org/more/error_handling.html">Error and Exception Handling</a>
 for the explanation.</p>
 
-<h3><a name="header-files">Header Files</a></h3>
+<h3><a id="header-files">Header Files</a></h3>
 
 <p>The class <tt>dynamic_bitset</tt> is defined in the header <a
 href=
@@ -501,33 +367,28 @@
 in the header <a href=
 "../../boost/dynamic_bitset_fwd.hpp">boost/dynamic_bitset_fwd.hpp</a>.</p>
 
-<h3><a name="template-parameters">Template parameters</a></h3>
+<h3><a id="template-parameters">Template parameters</a></h3>
 
-<table border summary=
+<table summary=
 "Describes the meaning of the template parameters and lists their corresponding default arguments">
 <tr>
 <th>Parameter</th>
 <th>Description</th>
 <th>Default</th>
 </tr>
-
 <tr>
-<td valign="top"><tt>Block</tt> </td>
-<td valign="top">The integer type in which the bits are
-stored.</td>
-<td valign="top"><tt>unsigned long</tt> </td>
+<td><tt>Block</tt></td>
+<td>The integer type in which the bits are stored.</td>
+<td><tt>unsigned long</tt></td>
 </tr>
-
 <tr>
-<td valign="top"><tt>Allocator</tt> </td>
-<td valign="top">The allocator type used for all internal memory
-management.</td>
-<td valign="top"><tt>std::allocator&lt;Block&gt;</tt> </td>
+
+<td><tt>Allocator</tt></td>
+<td>The allocator type used for all internal memory management.</td>
+<td><tt>std::allocator&lt;Block&gt;</tt></td>
 </tr>
 </table>
-
-<h3><a name="concepts-modeled">Concepts Modeled</a></h3>
-
+<h3><a id="concepts-modeled">Concepts Modeled</a></h3>
 <a href=
 "http://www.sgi.com/tech/stl/Assignable.html">Assignable</a>, <a
 href=
@@ -538,20 +399,19 @@
 "http://www.sgi.com/tech/stl/LessThanComparable.html">LessThan
 Comparable</a>.
 
-<h3><a name="type-requirements">Type requirements</a></h3>
+<h3><a id="type-requirements">Type requirements</a></h3>
 
 <tt>Block</tt> is an unsigned integer type. <tt>Allocator</tt>
 satisfies the Standard requirements for an allocator.
 
-<h3><a name="public-base-classes">Public base classes</a></h3>
+<h3><a id="public-base-classes">Public base classes</a></h3>
 
 None.
+<h3><a id="nested-type-names">Nested type names</a></h3>
+<hr />
 
-<h3><a name="nested-type-names">Nested type names</a></h3>
-
-<hr>
 <pre>
-<a name="reference">dynamic_bitset::reference</a>
+<a id="reference">dynamic_bitset::reference</a>
 </pre>
 
 <p>A proxy class that acts as a reference to a single bit. It
@@ -572,29 +432,24 @@
 <th>Expression</th>
 <th>Semantics</th>
 </tr>
-
 <tr>
 <td><tt>x = b[i]</tt></td>
 <td>Assign the ith bit of <tt>b</tt> to <tt>x</tt>.</td>
 </tr>
-
 <tr>
 <td><tt>(bool)b[i]</tt></td>
 <td>Return the ith bit of <tt>b</tt>.</td>
 </tr>
-
 <tr>
 <td><tt>b[i] = x</tt></td>
 <td>Set the ith bit of <tt>b</tt> to the value of <tt>x</tt> and
 return <tt>b[i]</tt>.</td>
 </tr>
-
 <tr>
 <td><tt>b[i] |= x</tt></td>
 <td>Or the ith bit of <tt>b</tt> with the value of <tt>x</tt> and
 return <tt>b[i]</tt>.</td>
 </tr>
-
 <tr>
 <td><tt>b[i] &amp;= x</tt></td>
 <td>And the ith bit of <tt>b</tt> with the value of <tt>x</tt>
@@ -627,109 +482,92 @@
 
 <tr>
 <td><tt>b[i] &amp;= b[j]</tt></td>
-<td>And the ith bit of <tt>b</tt> with the jth bit of <tt>b</tt>
-and return <tt>b[i]</tt>.</td>
+<td>And the ith bit of <tt>b</tt> with the jth bit of <tt>b</tt> and return <tt>b[i]</tt>.</td>
 </tr>
-
 <tr>
 <td><tt>b[i] ^= b[j]</tt></td>
-<td>Exclusive-Or the ith bit of <tt>b</tt> with the jth bit of
-<tt>b</tt> and return <tt>b[i]</tt>.</td>
-</tr>
+<td>Exclusive-Or the ith bit of <tt>b</tt> with the jth bit of <tt>b</tt> and return <tt>b[i]</tt>.</td>
 
+</tr>
 <tr>
 <td><tt>b[i] -= b[j]</tt></td>
-<td>If the jth bit of <tt>b</tt> is set, clear the ith bit of
-<tt>b</tt>. Returns <tt>b[i]</tt>.</td>
+<td>If the jth bit of <tt>b</tt> is set, clear the ith bit of <tt>b</tt>. Returns <tt>b[i]</tt>.</td>
 </tr>
-
 <tr>
 <td><tt>x = ~b[i]</tt></td>
-<td>Assign the opposite of the ith bit of <tt>b</tt> to
-<tt>x</tt>.</td>
-</tr>
 
+<td>Assign the opposite of the ith bit of <tt>b</tt> to <tt>x</tt>.</td>
+</tr>
 <tr>
 <td><tt>(bool)~b[i]</tt></td>
 <td>Return the opposite of the ith bit of <tt>b</tt>.</td>
 </tr>
-
 <tr>
-<td><tt>b[i].flip()</tt> </td>
+
+<td><tt>b[i].flip()</tt></td>
 <td>Flip the ith bit of <tt>b</tt> and return <tt>b[i]</tt>.</td>
 </tr>
 </table>
-
-<hr>
+<hr />
 <pre>
-<a name="const_reference">dynamic_bitset::const_reference</a>
+<a id="const_reference">dynamic_bitset::const_reference</a>
 </pre>
-
 The type <tt>bool</tt>.
 
-<hr>
 <pre>
-<a name="size_type">dynamic_bitset::size_type</a>
+<a id="size_type">dynamic_bitset::size_type</a>
 </pre>
-
 The unsigned integer type for representing the size of the bit set.
 
-<hr>
 <pre>
-<a name="block_type">dynamic_bitset::block_type</a>
+<a id="block_type">dynamic_bitset::block_type</a>
 </pre>
-
 The same type as <tt>Block</tt>.
 
-<hr>
 <pre>
-<a name="allocator_type">dynamic_bitset::allocator_type;</a>
+<a id="allocator_type">dynamic_bitset::allocator_type;</a>
 </pre>
-
 The same type as <tt>Allocator</tt>.
 
-<hr>
-<h3><a name="public-data-members">Public data members</a></h3>
 
-<hr>
+<hr />
+<h3><a id="public-data-members">Public data members</a></h3>
+
 <pre>
-<a name="bits_per_block">dynamic_bitset::bits_per_block</a>
+<a id="bits_per_block">dynamic_bitset::bits_per_block</a>
 </pre>
-
 The number of bits the type <tt>Block</tt> uses to represent values,
 excluding any padding bits. Numerically equal
 to <tt>std::numeric_limits&lt;Block&gt;::digits</tt>.
 
-<hr>
 <pre>
-<a name="npos">dynamic_bitset::npos</a>
+<a id="npos">dynamic_bitset::npos</a>
 </pre>
-
 The maximum value of <tt>size_type</tt>.
 
-<hr>
-<h3><a name="constructors">Constructors</a></h3>
+<hr />
+<h3><a id="constructors">Constructors</a></h3>
 
-<hr>
+<hr />
 <pre>
-<a name=
+<a id=
 "cons1">dynamic_bitset</a>(const Allocator&amp; alloc = Allocator())
 </pre>
 
 <b>Effects:</b> Constructs a bitset of size zero. A copy of the
 <tt>alloc</tt> object will be used in subsequent bitset
-operations such as <tt>resize</tt> to allocate memory.<br>
- <b>Postconditions:</b> <tt>this-&gt;size() == 0</tt>.<br>
+operations such as <tt>resize</tt> to allocate memory.<br />
+ <b>Postconditions:</b> <tt>this-&gt;size() == 0</tt>.<br />
  <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if
-<tt>Allocator=std::allocator</tt>).<br>
+<tt>Allocator=std::allocator</tt>).<br />
  (Required by <a href=
 "http://www.sgi.com/tech/stl/DefaultConstructible.html">Default
 Constructible</a>.)
 
-<hr>
+<hr />
 <pre>
-<a name="cons2">dynamic_bitset</a>(size_type num_bits,
+<a id="cons2">dynamic_bitset</a>(size_type num_bits,
                unsigned long value = 0,
                const Allocator&amp; alloc = Allocator())
 </pre>
@@ -739,7 +577,7 @@
 <tt>val</tt> and all other bits, if any, to zero (where <tt>M =
 min(num_bits, std::numeric_limits&lt;unsigned long&gt;::digits)</tt>). A copy of
 the <tt>alloc</tt> object will be used in subsequent bitset
-operations such as <tt>resize</tt> to allocate memory.<br>
+operations such as <tt>resize</tt> to allocate memory.<br />
  <b>Postconditions:</b>
 
 <ul>
@@ -754,30 +592,30 @@
 
 <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if
-<tt>Allocator=std::allocator</tt>).<br>
+<tt>Allocator=std::allocator</tt>).<br />
 
 
-<hr>
+<hr />
 <pre>
-<a name="cons5">dynamic_bitset</a>(const dynamic_bitset&amp; x)
+<a id="cons5">dynamic_bitset</a>(const dynamic_bitset&amp; x)
 </pre>
 
 <b>Effects:</b> Constructs a bitset that is a copy of the bitset
 <tt>x</tt>. The allocator for this bitset is a copy of the
-allocator in <tt>x</tt>. <br>
+allocator in <tt>x</tt>. <br />
  <b>Postconditions:</b> For all <tt>i</tt> in the range
-<tt>[0,x.size())</tt>, <tt>(*this)[i] == x[i]</tt>.<br>
+<tt>[0,x.size())</tt>, <tt>(*this)[i] == x[i]</tt>.<br />
  <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if
-<tt>Allocator=std::allocator</tt>).<br>
+<tt>Allocator=std::allocator</tt>).<br />
  (Required by <a href=
 "http://www.sgi.com/tech/stl/Assignable.html">Assignable</a>.)
 
-<hr>
+<hr />
 <pre>
 template &lt;typename BlockInputIterator&gt;
 explicit
-<a name=
+<a id=
 "cons4">dynamic_bitset</a>(BlockInputIterator first, BlockInputIterator last,
                const Allocator&amp; alloc = Allocator());
 </pre>
@@ -790,22 +628,22 @@
 number <tt>b</tt> with value <tt>bval</tt>, the bit <tt>(bval
 &gt;&gt; i) &amp; 1</tt> corresponds to the bit at position
 <tt>(b * bits_per_block + i)</tt> in the bitset (where <tt>i</tt>
-goes through the range <tt>[0, bits_per_block)</tt>).<br>
+goes through the range <tt>[0, bits_per_block)</tt>).<br />
  <b>Requires:</b> The type <tt>BlockInputIterator</tt> must be a
 model of <a href=
 "http://www.sgi.com/tech/stl/InputIterator.html">Input
 Iterator</a> and its <tt>value_type</tt> must be the same type as
-<tt>Block</tt>.<br>
+<tt>Block</tt>.<br />
  <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if
-<tt>Allocator=std::allocator</tt>).<br>
+<tt>Allocator=std::allocator</tt>).<br />
 
 
-<hr>
+<hr />
 <pre>
 template&lt;typename Char, typename Traits, typename Alloc&gt;
 explicit
-<a name="cons3">dynamic_bitset</a>(const <a href=
+<a id="cons3">dynamic_bitset</a>(const <a href=
 "http://www.sgi.com/tech/stl/basic_string.html">std::basic_string</a>&lt;Char,Traits,Alloc&gt;&amp; s,
                typename std::basic_string&lt;CharT, Traits, Alloc&gt;::size_type pos = 0,
                typename std::basic_string&lt;CharT, Traits, Alloc&gt;::size_type n = <a
@@ -816,7 +654,7 @@
 
 <b>Precondition:</b> <tt>pos &lt;= s.size()</tt> and the
 characters used to initialize the bits must be <tt>0</tt> or
-<tt>1</tt>.<br>
+<tt>1</tt>.<br />
  <b>Effects:</b> Constructs a bitset from a string of 0's and
 1's. The first <tt>M</tt> bits are initialized to the
 corresponding characters in <tt>s</tt>, where <tt>M =
@@ -825,61 +663,61 @@
 the least significant bit. That is, character position <tt>pos +
 M - 1 - i</tt> corresponds to bit <tt>i</tt>. So, for example,
 <tt>dynamic_bitset(string("1101"))</tt> is the same as
-<tt>dynamic_bitset(13ul)</tt>.<br>
+<tt>dynamic_bitset(13ul)</tt>.<br />
  <b>Throws:</b> an allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if <tt>Allocator=std::allocator</tt>).
 
-<hr>
-<h3><a name="destructor">Destructor</a></h3>
+<hr />
+<h3><a id="destructor">Destructor</a></h3>
 
-<hr>
+<hr />
 <pre>
 ~dynamic_bitset()
 </pre>
 
 <b>Effects:</b> Releases the memory associated with this bitset
-and destroys the bitset object itself.<br>
+and destroys the bitset object itself.<br />
  <b>Throws:</b> nothing.
 
-<hr>
-<h3><a name="member-functions">Member Functions</a></h3>
+<hr />
+<h3><a id="member-functions">Member Functions</a></h3>
 
-<hr>
+<hr />
 <pre>
-void <a name="swap">swap</a>(dynamic_bitset&amp; b);
+void <a id="swap">swap</a>(dynamic_bitset&amp; b);
 </pre>
 
 <b>Effects:</b> The contents of this bitset and bitset <tt>b</tt>
-are exchanged.<br>
+are exchanged.<br />
 <b>Postconditions:</b> This bitset is equal to the original
 <tt>b</tt>, and <tt>b</tt> is equal to the previous version of
-this bitset.<br>
+this bitset.<br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name=
+dynamic_bitset&amp; <a id=
 "assign">operator=</a>(const dynamic_bitset&amp; x)
 </pre>
 
 <b>Effects:</b> This bitset becomes a copy of the bitset
-<tt>x</tt>.<br>
+<tt>x</tt>.<br />
  <b>Postconditions:</b> For all <tt>i</tt> in the range
-<tt>[0,x.size())</tt>, <tt>(*this)[i] == x[i]</tt>.<br>
- <b>Returns:</b> <tt>*this</tt>.<br>
- <b>Throws:</b> nothing. <br>
+<tt>[0,x.size())</tt>, <tt>(*this)[i] == x[i]</tt>.<br />
+ <b>Returns:</b> <tt>*this</tt>.<br />
+ <b>Throws:</b> nothing. <br />
 (Required by <a href=
 "http://www.sgi.com/tech/stl/Assignable.html">Assignable</a>.)
 
-<hr>
+<hr />
 <pre>
-allocator_type <a name="get_allocator">get_allocator()</a> const;
+allocator_type <a id="get_allocator">get_allocator()</a> const;
 </pre>
  <b>Returns:</b> A copy of the allocator object used to construct <tt>*this</tt>.
 
-<hr>
+<hr />
 <pre>
-void <a name=
+void <a id=
 "resize">resize</a>(size_type num_bits, bool value = false);
 </pre>
 
@@ -889,36 +727,36 @@
 <tt>[size(),num_bits)</tt> are all set to <tt>value</tt>. If
 <tt>num_bits &lt; size()</tt> then the bits in the range
 <tt>[0,num_bits)</tt> stay the same (and the remaining bits are
-discarded).<br>
- <b>Postconditions:</b> <tt>this-&gt;size() == num_bits</tt>.<br>
+discarded).<br />
+ <b>Postconditions:</b> <tt>this-&gt;size() == num_bits</tt>.<br />
  <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if
-<tt>Allocator=std::allocator</tt>).<br>
+<tt>Allocator=std::allocator</tt>).<br />
 
 
-<hr>
+<hr />
 <pre>
-void <a name="clear">clear</a>()
+void <a id="clear">clear</a>()
 </pre>
 
-<b>Effects:</b> The size of the bitset becomes zero.<br>
+<b>Effects:</b> The size of the bitset becomes zero.<br />
  <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-void <a name="push_back">push_back</a>(bool value);
+void <a id="push_back">push_back</a>(bool value);
 </pre>
 
 <b>Effects:</b> Increases the size of the bitset by one, and sets
-the value of the new most-significant bit to <tt>value</tt>.<br>
+the value of the new most-significant bit to <tt>value</tt>.<br />
  <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if
-<tt>Allocator=std::allocator</tt>).<br>
+<tt>Allocator=std::allocator</tt>).<br />
 
 
-<hr>
+<hr />
 <pre>
-void <a name="append1">append</a>(Block value);
+void <a id="append1">append</a>(Block value);
 </pre>
 
 <b>Effects:</b> Appends the bits in <tt>value</tt> to the bitset
@@ -926,16 +764,16 @@
 the bitset by <tt>bits_per_block</tt>. Let <tt>s</tt> be the old
 size of the bitset, then for <tt>i</tt> in the range
 <tt>[0,bits_per_block)</tt>, the bit at position <tt>(s + i)</tt>
-is set to <tt>((value &gt;&gt; i) &amp; 1)</tt>.<br>
+is set to <tt>((value &gt;&gt; i) &amp; 1)</tt>.<br />
  <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if
-<tt>Allocator=std::allocator</tt>).<br>
+<tt>Allocator=std::allocator</tt>).<br />
 
 
-<hr>
+<hr />
 <pre>
 template &lt;typename BlockInputIterator&gt;
-void <a name=
+void <a id=
 "append2">append</a>(BlockInputIterator first, BlockInputIterator last);
 </pre>
 
@@ -951,19 +789,19 @@
 model of <a href=
 "http://www.sgi.com/tech/stl/InputIterator.html">Input
 Iterator</a> and the <tt>value_type</tt> must be the same type as
-<tt>Block</tt>.<br>
+<tt>Block</tt>.<br />
  <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if
-<tt>Allocator=std::allocator</tt>).<br>
+<tt>Allocator=std::allocator</tt>).<br />
 
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name=
+dynamic_bitset&amp; <a id=
 "op-and-assign">operator&amp;=</a>(const dynamic_bitset&amp; rhs)
 </pre>
 
-<b>Requires:</b> <tt>this-&gt;size() == rhs.size()</tt>.<br>
+<b>Requires:</b> <tt>this-&gt;size() == rhs.size()</tt>.<br />
  <b>Effects:</b> Bitwise-AND all the bits in <tt>rhs</tt> with
 the bits in this bitset. This is equivalent to:
 
@@ -972,16 +810,16 @@
   (*this)[i] = (*this)[i] &amp; rhs[i];
 </pre>
 
-<b>Returns:</b> <tt>*this</tt>.<br>
+<b>Returns:</b> <tt>*this</tt>.<br />
  <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name=
+dynamic_bitset&amp; <a id=
 "op-or-assign">operator|=</a>(const dynamic_bitset&amp; rhs)
 </pre>
 
-<b>Requires:</b> <tt>this-&gt;size() == rhs.size()</tt>.<br>
+<b>Requires:</b> <tt>this-&gt;size() == rhs.size()</tt>.<br />
  <b>Effects:</b> Bitwise-OR's all the bits in <tt>rhs</tt> with
 the bits in this bitset. This is equivalent to:
 
@@ -990,16 +828,16 @@
   (*this)[i] = (*this)[i] | rhs[i];
 </pre>
 
-<b>Returns:</b> <tt>*this</tt>.<br>
+<b>Returns:</b> <tt>*this</tt>.<br />
  <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name=
+dynamic_bitset&amp; <a id=
 "op-xor-assign">operator^=</a>(const dynamic_bitset&amp; rhs)
 </pre>
 
-<b>Requires:</b> <tt>this-&gt;size() == rhs.size()</tt>.<br>
+<b>Requires:</b> <tt>this-&gt;size() == rhs.size()</tt>.<br />
  <b>Effects:</b> Bitwise-XOR's all the bits in <tt>rhs</tt> with
 the bits in this bitset. This is equivalent to:
 
@@ -1008,16 +846,16 @@
   (*this)[i] = (*this)[i] ^ rhs[i];
 </pre>
 
-<b>Returns:</b> <tt>*this</tt>.<br>
+<b>Returns:</b> <tt>*this</tt>.<br />
  <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name=
+dynamic_bitset&amp; <a id=
 "op-sub-assign">operator-=</a>(const dynamic_bitset&amp; rhs)
 </pre>
 
-<b>Requires:</b> <tt>this-&gt;size() == rhs.size()</tt>.<br>
+<b>Requires:</b> <tt>this-&gt;size() == rhs.size()</tt>.<br />
  <b>Effects:</b> Computes the set difference of this bitset and
 the <tt>rhs</tt> bitset. This is equivalent to:
 
@@ -1026,213 +864,207 @@
   (*this)[i] = (*this)[i] &amp;&amp; !rhs[i];
 </pre>
 
-<b>Returns:</b> <tt>*this</tt>.<br>
+<b>Returns:</b> <tt>*this</tt>.<br />
  <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name=
+dynamic_bitset&amp; <a id=
 "op-sl-assign">operator&lt;&lt;=</a>(size_type n)
 </pre>
 
 <b>Effects:</b> Shifts the bits in this bitset to the left by
 <tt>n</tt> bits. For each bit in the bitset, the bit at position
 pos takes on the previous value of the bit at position <tt>pos -
-n</tt>, or zero if no such bit exists.<br>
- <b>Returns:</b> <tt>*this</tt>.<br>
+n</tt>, or zero if no such bit exists.<br />
+ <b>Returns:</b> <tt>*this</tt>.<br />
  <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name=
+dynamic_bitset&amp; <a id=
 "op-sr-assign">operator&gt;&gt;=</a>(size_type n)
 </pre>
 
 <b>Effects:</b> Shifts the bits in this bitset to the right by
 <tt>n</tt> bits. For each bit in the bitset, the bit at position
 <tt>pos</tt> takes on the previous value of bit <tt>pos + n</tt>,
-or zero if no such bit exists.<br>
- <b>Returns:</b> <tt>*this</tt>.<br>
+or zero if no such bit exists.<br />
+ <b>Returns:</b> <tt>*this</tt>.<br />
  <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset <a name=
+dynamic_bitset <a id=
 "op-sl">operator&lt;&lt;</a>(size_type n) const
 </pre>
 
 <b>Returns:</b> a copy of <tt>*this</tt> shifted to the left by
 <tt>n</tt> bits. For each bit in the returned bitset, the bit at
 position pos takes on the value of the bit at position <tt>pos -
-n</tt> of this bitset, or zero if no such bit exists. Note that
-the expression <tt>b &lt;&lt; n</tt> is equivalent to
-constructing a temporary copy of <tt>b</tt> and then using
-<tt>operator&lt;&lt;=</tt>.<br>
+n</tt> of this bitset, or zero if no such bit exists.<br />
  <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if <tt>Allocator=std::allocator</tt>).
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset <a name=
+dynamic_bitset <a id=
 "op-sr">operator&gt;&gt;</a>(size_type n) const
 </pre>
 
 <b>Returns:</b> a copy of <tt>*this</tt> shifted to the right by
 <tt>n</tt> bits. For each bit in the returned bitset, the bit at
 position pos takes on the value of the bit at position <tt>pos +
-n</tt> of this bitset, or zero if no such bit exists. Note that
-the expression <tt>b &gt;&gt; n</tt> is equivalent to
-constructing a temporary copy of <tt>b</tt> and then using
-<tt>operator&gt;&gt;=</tt>.<br>
+n</tt> of this bitset, or zero if no such bit exists.<br />
  <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if <tt>Allocator=std::allocator</tt>).
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name="set1">set</a>()
+dynamic_bitset&amp; <a id="set1">set</a>()
 </pre>
 
-<b>Effects:</b> Sets every bit in this bitset to 1.<br>
-<b>Returns:</b> <tt>*this</tt><br>
+<b>Effects:</b> Sets every bit in this bitset to 1.<br />
+<b>Returns:</b> <tt>*this</tt><br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name="flip1">flip</a>()
+dynamic_bitset&amp; <a id="flip1">flip</a>()
 </pre>
 
-<b>Effects:</b> Flips the value of every bit in this bitset.<br>
-<b>Returns:</b> <tt>*this</tt><br>
+<b>Effects:</b> Flips the value of every bit in this bitset.<br />
+<b>Returns:</b> <tt>*this</tt><br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset <a name="op-not">operator~</a>() const
+dynamic_bitset <a id="op-not">operator~</a>() const
 </pre>
 
 <b>Returns:</b> a copy of <tt>*this</tt> with all of its bits
-flipped.<br>
+flipped.<br />
 <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if <tt>Allocator=std::allocator</tt>).
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name="reset1">reset</a>()
+dynamic_bitset&amp; <a id="reset1">reset</a>()
 </pre>
 
-<b>Effects:</b> Clears every bit in this bitset.<br>
-<b>Returns:</b> <tt>*this</tt><br>
+<b>Effects:</b> Clears every bit in this bitset.<br />
+<b>Returns:</b> <tt>*this</tt><br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name=
+dynamic_bitset&amp; <a id=
 "set2">set</a>(size_type n, bool val = true)
 </pre>
 
-<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br>
+<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br />
  <b>Effects:</b> Sets bit <tt>n</tt> if <tt>val</tt> is
 <tt>true</tt>, and clears bit <tt>n</tt> if <tt>val</tt> is
-<tt>false</tt>. <br>
+<tt>false</tt>. <br />
  <b>Returns:</b> <tt>*this</tt>
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name="reset2">reset</a>(size_type n)
+dynamic_bitset&amp; <a id="reset2">reset</a>(size_type n)
 </pre>
 
-<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br>
-<b>Effects:</b> Clears bit <tt>n</tt>.<br>
+<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br />
+<b>Effects:</b> Clears bit <tt>n</tt>.<br />
 <b>Returns:</b> <tt>*this</tt>
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset&amp; <a name="flip2">flip</a>(size_type n)
+dynamic_bitset&amp; <a id="flip2">flip</a>(size_type n)
 </pre>
 
-<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br>
-<b>Effects:</b> Flips bit <tt>n</tt>.<br>
+<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br />
+<b>Effects:</b> Flips bit <tt>n</tt>.<br />
 <b>Returns:</b> <tt>*this</tt>
 
-<hr>
+<hr />
 <pre>
-size_type <a name="size">size</a>() const
+size_type <a id="size">size</a>() const
 </pre>
 
-<b>Returns:</b> the number of bits in this bitset.<br>
+<b>Returns:</b> the number of bits in this bitset.<br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-size_type <a name="num_blocks">num_blocks</a>() const
+size_type <a id="num_blocks">num_blocks</a>() const
 </pre>
 
-<b>Returns:</b> the number of blocks in this bitset.<br>
+<b>Returns:</b> the number of blocks in this bitset.<br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-size_type <a name="max_size">max_size</a>() const;
+size_type <a id="max_size">max_size</a>() const;
 </pre>
 
 <b>Returns:</b> the maximum size of a <tt>dynamic_bitset</tt>
 object having the same type as <tt>*this</tt>. Note that if
 any <tt>dynamic_bitset</tt> operation causes <tt>size()</tt> to
 exceed <tt>max_size()</tt> then the <i>behavior is undefined</i>.
-<br><br>[The semantics of this function could change slightly
-when lib issue 197 will be closed]<br>
+<br /><br />[The semantics of this function could change slightly
+when lib issue 197 will be closed]<br />
 
-<hr>
+<hr />
 <pre>
-bool <a name="empty">empty</a>() const;
+bool <a id="empty">empty</a>() const;
 </pre>
 
 <b>Returns:</b> <tt>true</tt> if <tt>this->size() == 0</tt>, <tt>false</tt>
 otherwise. <i>Note</i>: not to be confused with <tt>none()</tt>, that has
 different semantics.
 
-<hr>
+<hr />
 <pre>
-size_type <a name="count">count</a>() const
+size_type <a id="count">count</a>() const
 </pre>
 
 <b>Returns:</b> the number of bits in this bitset that are
-set.<br>
+set.<br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-bool <a name="any">any</a>() const
+bool <a id="any">any</a>() const
 </pre>
 
 <b>Returns:</b> <tt>true</tt> if any bits in this bitset are set,
-and otherwise returns <tt>false</tt>.<br>
+and otherwise returns <tt>false</tt>.<br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-bool <a name="none">none</a>() const
+bool <a id="none">none</a>() const
 </pre>
 
 <b>Returns:</b> <tt>true</tt> if no bits are set, and otherwise
-returns <tt>false</tt>.<br>
+returns <tt>false</tt>.<br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-bool <a name="test">test</a>(size_type n) const
+bool <a id="test">test</a>(size_type n) const
 </pre>
 
-<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br>
+<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br />
  <b>Returns:</b> <tt>true</tt> if bit <tt>n</tt> is set and
 <tt>false</tt> is bit <tt>n</tt> is 0.
 
-<hr>
+<hr />
 <pre>
-reference <a name="bracket">operator[]</a>(size_type n)
+reference <a id="bracket">operator[]</a>(size_type n)
 </pre>
 
-<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br>
+<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br />
  <b>Returns:</b> a <tt>reference</tt> to bit <tt>n</tt>. Note
 that <tt>reference</tt> is a proxy class with an assignment
 operator and a conversion to <tt>bool</tt>, which allows you to
@@ -1241,100 +1073,100 @@
 other respects the proxy is not the same as the true reference
 type <tt>bool&amp;</tt>.
 
-<hr>
+<hr />
 <pre>
-bool <a name="const-bracket">operator[]</a>(size_type n) const
+bool <a id="const-bracket">operator[]</a>(size_type n) const
 </pre>
 
-<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br>
+<b>Precondition:</b> <tt>n &lt; this-&gt;size()</tt>.<br />
 <b>Returns:</b> The same as <tt>test(n)</tt>.
 
-<hr>
+<hr />
 <pre>
-unsigned long <a name="to_ulong">to_ulong</a>() const
+unsigned long <a id="to_ulong">to_ulong</a>() const
 </pre>
 
 <b>Returns:</b> The numeric value corresponding to the bits in <tt>*this</tt>.
-<br>
+<br />
 <b>Throws:</b> <tt>std::overflow_error</tt> if that value is too large to
 be represented in an <tt>unsigned long</tt>, i.e. if <tt>*this</tt> has
 any non-zero bit at a position <tt>&gt;=
 std::numeric_limits&lt;unsigned long&gt;::digits</tt>.
 
-<hr>
+<hr />
 <pre>
-bool <a name=
+bool <a id=
 "is_subset_of">is_subset_of</a>(const dynamic_bitset&amp; a) const
 </pre>
 
-<b>Requires:</b> <tt>this-&gt;size() == a.size()</tt><br>
+<b>Requires:</b> <tt>this-&gt;size() == a.size()</tt><br />
 <b>Returns:</b> true if this bitset is a subset of bitset
 <tt>a</tt>. That is, it returns true if, for every bit that is
 set in this bitset, the corresponding bit in bitset <tt>a</tt> is
-also set. Otherwise this function returns false.<br>
+also set. Otherwise this function returns false.<br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-bool <a name=
+bool <a id=
 "is_proper_subset_of">is_proper_subset_of</a>(const dynamic_bitset&amp; a) const
 </pre>
 
-<b>Requires:</b> <tt>this-&gt;size() == a.size()</tt><br>
+<b>Requires:</b> <tt>this-&gt;size() == a.size()</tt><br />
 <b>Returns:</b> true if this bitset is a proper subset of bitset
 <tt>a</tt>. That is, it returns true if, for every bit that is
 set in this bitset, the corresponding bit in bitset <tt>a</tt> is
 also set and if <tt>this-&gt;count() &lt; a.count()</tt>.
-Otherwise this function returns false.<br>
+Otherwise this function returns false.<br />
 <b>Throws:</b> nothing.
 
-<hr>
+<hr />
 <pre>
-size_type <a name = "find_first">find_first</a>() const;
+size_type <a id = "find_first">find_first</a>() const;
 </pre>
 
 <b>Returns:</b> the lowest index <tt>i</tt> such as bit <tt>i</tt>
 is set, or <tt>npos</tt> if <tt>*this</tt> has no on bits.
 
-<hr>
+<hr />
 <pre>
-size_type <a name="find_next">find_next</a>(size_type pos) const;
+size_type <a id="find_next">find_next</a>(size_type pos) const;
 </pre>
 
 <b>Returns:</b> the lowest index <tt>i</tt> greater than
 <tt>pos</tt> such as bit <tt>i</tt> is set, or <tt>npos</tt> if
 no such index exists.
 
-<hr>
+<hr />
 <pre>
-bool <a name=
+bool <a id=
 "op-equal">operator==</a>(const dynamic_bitset&amp; rhs) const
 </pre>
 
 <b>Returns:</b> <tt>true</tt> if <tt>this-&gt;size() ==
 rhs.size()</tt> and if for all <tt>i</tt> in the range
 <tt>[0,rhs.size())</tt>, <tt>(*this)[i] == rhs[i]</tt>. Otherwise
-returns <tt>false</tt>.<br>
- <b>Throws:</b> nothing.<br>
+returns <tt>false</tt>.<br />
+ <b>Throws:</b> nothing.<br />
  (Required by <a href=
 "http://www.sgi.com/tech/stl/EqualityComparable.html">Equality
 Comparable</a>.)
 
-<hr>
+<hr />
 <pre>
-bool <a name=
+bool <a id=
 "op-not-equal">operator!=</a>(const dynamic_bitset&amp; rhs) const
 </pre>
 
-<b>Returns:</b> <tt>!((*this) == rhs)</tt><br>
-<b>Throws:</b> nothing.<br>
+<b>Returns:</b> <tt>!((*this) == rhs)</tt><br />
+<b>Throws:</b> nothing.<br />
 (Required by <a href=
 "http://www.sgi.com/tech/stl/EqualityComparable.html">Equality
 Comparable</a>.)
 
-<hr>
+<hr />
 <pre>
-bool <a name=
+bool <a id=
 "op-less">operator&lt;</a>(const dynamic_bitset&amp; rhs) const
 </pre>
 
@@ -1342,116 +1174,104 @@
 less than <tt>rhs</tt>, and returns <tt>false</tt> otherwise.
 (See the description of <a href=
 "http://www.sgi.com/tech/stl/lexicographical_compare.html">lexicographical_compare</a>
-for a definition of lexicographic ordering). <br>
-<b>Throws:</b> nothing.<br>
+for a definition of lexicographic ordering). <br />
+<b>Throws:</b> nothing.<br />
 (Required by <a href=
 "http://www.sgi.com/tech/stl/LessThanComparable.html">Less Than
 Comparable</a>.)
 
-<hr>
+<hr />
 <pre>
-bool <a name=
+bool <a id=
 "op-greater">operator&gt;</a>(const dynamic_bitset&amp; rhs) const
 </pre>
 
 <b>Returns:</b> <tt>!((*this) &lt; rhs || (*this) ==
-rhs)</tt><br>
-<b>Throws:</b> nothing.<br>
+rhs)</tt><br />
+<b>Throws:</b> nothing.<br />
 (Required by <a href=
 "http://www.sgi.com/tech/stl/LessThanComparable.html">Less Than
 Comparable</a>.)
 
-<hr>
+<hr />
 <pre>
-bool <a name=
+bool <a id=
 "op-less-equal">operator&lt;=</a>(const dynamic_bitset&amp; rhs) const
 </pre>
 
-<b>Returns:</b> <tt>(*this) &lt; rhs || (*this) == rhs</tt><br>
-<b>Throws:</b> nothing.<br>
+<b>Returns:</b> <tt>(*this) &lt; rhs || (*this) == rhs</tt><br />
+<b>Throws:</b> nothing.<br />
 (Required by <a href=
 "http://www.sgi.com/tech/stl/LessThanComparable.html">Less Than
 Comparable</a>.)
 
-<hr>
+<hr />
 <pre>
-bool <a name=
+bool <a id=
 "op-greater-equal">operator&gt;=</a>(const dynamic_bitset&amp; rhs) const
 </pre>
 
-<b>Returns:</b> <tt>(*this) &gt; rhs || (*this) == rhs</tt><br>
-<b>Throws:</b> nothing.<br>
+<b>Returns:</b> <tt>(*this) &gt; rhs || (*this) == rhs</tt><br />
+<b>Throws:</b> nothing.<br />
 (Required by <a href=
 "http://www.sgi.com/tech/stl/LessThanComparable.html">Less Than
 Comparable</a>.)
 
-<hr>
-<h3><a name="non-member-functions">Non-Member Functions</a></h3>
+<hr />
+<h3><a id="non-member-functions">Non-Member Functions</a></h3>
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset <a name=
+dynamic_bitset <a id=
 "op-and">operator&amp;</a>(const dynamic_bitset&amp; a, const dynamic_bitset&amp; b)
 </pre>
 
-<b>Requires:</b> <tt>a.size() == b.size()</tt><br>
+<b>Requires:</b> <tt>a.size() == b.size()</tt><br />
 <b>Returns:</b> A new bitset that is the bitwise-AND of the
-bitsets <tt>a</tt> and <tt>b</tt>. Note that the expression
-<tt>b1 &amp; b2</tt> is equivalent to creating a temporary copy
-of <tt>b1</tt>, using <tt>operator&amp;=</tt>, and returning the
-temporary copy.<br>
+bitsets <tt>a</tt> and <tt>b</tt>.<br />
 <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if <tt>Allocator=std::allocator</tt>).
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset <a name=
+dynamic_bitset <a id=
 "op-or">operator|</a>(const dynamic_bitset&amp; a, const dynamic_bitset&amp; b)
 </pre>
 
-<b>Requires:</b> <tt>a.size() == b.size()</tt><br>
+<b>Requires:</b> <tt>a.size() == b.size()</tt><br />
 <b>Returns:</b> A new bitset that is the bitwise-OR of the
-bitsets <tt>a</tt> and <tt>b</tt>. Note that the expression
-<tt>b1 &amp; b2</tt> is equivalent to creating a temporary copy
-of <tt>b1</tt>, using <tt>operator&amp;=</tt>, and returning the
-temporary copy.<br>
+bitsets <tt>a</tt> and <tt>b</tt>.<br />
 <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if <tt>Allocator=std::allocator</tt>).
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset <a name=
+dynamic_bitset <a id=
 "op-xor">operator^</a>(const dynamic_bitset&amp; a, const dynamic_bitset&amp; b)
 </pre>
 
-<b>Requires:</b> <tt>a.size() == b.size()</tt><br>
+<b>Requires:</b> <tt>a.size() == b.size()</tt><br />
 <b>Returns:</b> A new bitset that is the bitwise-XOR of the
-bitsets <tt>a</tt> and <tt>b</tt>. Note that the expression
-<tt>b1 &amp; b2</tt> is equivalent to creating a temporary copy
-of <tt>b1</tt>, using <tt>operator&amp;=</tt>, and returning the
-temporary copy.<br>
+bitsets <tt>a</tt> and <tt>b</tt>.<br />
 <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if <tt>Allocator=std::allocator</tt>).
 
-<hr>
+<hr />
 <pre>
-dynamic_bitset <a name=
+dynamic_bitset <a id=
 "op-sub">operator-</a>(const dynamic_bitset&amp; a, const dynamic_bitset&amp; b)
 </pre>
 
-<b>Requires:</b> <tt>a.size() == b.size()</tt><br>
+<b>Requires:</b> <tt>a.size() == b.size()</tt><br />
 <b>Returns:</b> A new bitset that is the set difference of the
-bitsets <tt>a</tt> and <tt>b</tt>. Note that the expression
-<tt>b1 - b2</tt> is equivalent to creating a temporary copy of
-<tt>b1</tt>, using <tt>operator-=</tt>, and returning the
-temporary copy.<br>
+bitsets <tt>a</tt> and <tt>b</tt>.<br />
 <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if <tt>Allocator=std::allocator</tt>).
 
-<hr>
+<hr />
 <pre>
 template &lt;typename CharT, typename Alloc&gt;
-void <a name=
+void <a id=
 "to_string">to_string</a>(const dynamic_bitset&lt;Block, Allocator&gt;&amp; b,
                <a href=
 "http://www.sgi.com/tech/stl/basic_string.html">std::basic_string</a>&lt;Char,Traits,Alloc&gt;&amp; s)
@@ -1461,9 +1281,9 @@
 string <tt>s</tt>. A character in the string is <tt>'1'</tt> if
 the corresponding bit is set, and <tt>'0'</tt> if it is not.
 Character position <tt>i</tt> in the string corresponds to bit
-position <tt>b.size() - 1 - i</tt>. <br>
+position <tt>b.size() - 1 - i</tt>. <br />
  <b>Throws:</b> If memory is exhausted, the string will throw an
-allocation error.<br>
+allocation error.<br />
  <b>Rationale:</b> This function is not a member function taking
 zero arguments and returning a string for a couple reasons.
 First, this version can be slighly more efficient because the
@@ -1474,10 +1294,10 @@
 are familiar with explicit template parameters, and some C++
 compilers do not handle them properly.
 
-<hr>
+<hr />
 <pre>
 template &lt;typename Block, typename Alloc, typename BlockOutputIterator&gt;
-void <a name=
+void <a id=
 "to_block_range">to_block_range</a>(const dynamic_bitset&lt;Block, Alloc&gt;&amp; b, BlockOutputIterator result)
 </pre>
 
@@ -1489,7 +1309,7 @@
 <tt>[bits_pre_block,2*bits_per_block)</tt>, and so on. For each
 block <tt>bval</tt> written, the bit <tt>(bval &gt;&gt; i) &amp;
 1</tt> corresponds to the bit at position <tt>(b * bits_per_block
-+ i)</tt> in the bitset.<br>
++ i)</tt> in the bitset.<br />
  <b>Requires:</b> The type <tt>BlockOutputIterator</tt> must be a
 model of <a href=
 "http://www.sgi.com/tech/stl/OutputIterator.html">Output
@@ -1497,27 +1317,27 @@
 <tt>Block</tt>. Further, the size of the output range must be
 greater or equal <tt>b.num_blocks()</tt>.
 
-<hr>
+<hr />
 <pre>
 template &lt;typename BlockIterator, typename Block, typename Alloc&gt;
-void <a name=
+void <a id=
 "from_block_range">from_block_range</a>(BlockIterator first,
     BlockIterator last, const dynamic_bitset&lt;Block, Alloc&gt;&amp; b)
 </pre>
 
 <b>Effects:</b> Reads blocks from the iterator range into the
-bitset. <br>
+bitset. <br />
  <b>Requires:</b> The type <tt>BlockIterator</tt> must be a model
 of <a href="http://www.sgi.com/tech/stl/InputIterator.html">Input
 Iterator</a> and its <tt>value_type</tt> must be the same type as
 <tt>Block</tt>. The size of the iterator range must be less or
 equal to <tt>b.num_blocks()</tt>.
 
-<hr>
+<hr />
 <pre>
 template &lt;typename Char, typename Traits, typename Block, typename Alloc&gt;
 basic_ostream&lt;Char, Traits&gt;&amp;
-<a name=
+<a id=
 "op-out">operator&lt;&lt;</a>(basic_ostream&lt;Char, Traits&gt;&amp; os, const dynamic_bitset&lt;Block, Alloc&gt;&amp; b)
 </pre>
 
@@ -1527,7 +1347,7 @@
 <pre>
 std::basic_string&lt;Char, Traits&gt; s;
 boost::to_string(x, s):
-os << s;
+os &lt;&lt; s;
 </pre>
 
 except that the stream inserter takes into accout the locale imbued into
@@ -1546,22 +1366,22 @@
 Then, the output, the effects on <tt>os</tt> and the exception behavior
 is the same as outputting the object <tt>s</tt> to <tt>os</tt> (same
 width, same exception mask, same padding, same setstate() logic)
-<br>
-<b>Returns:</b> os <br>
+<br />
+<b>Returns:</b> os <br />
 <b>Throws:</b> <tt>std::ios_base::failure</tt> if there is a
 problem writing to the stream.
 
-<hr>
+<hr />
 <pre>
 template &lt;typename Char, typename Traits, typename Block, typename Alloc&gt;
 std::basic_istream&lt;Char,Traits&gt;&amp;
-<a name=
+<a id=
 "op-in">operator&gt;&gt;</a>(std::basic_istream&lt;Char,Traits&gt;&amp; is, dynamic_bitset&lt;Block, Alloc&gt;&amp; b)
 </pre>
 
 <b>Effects:</b> Extracts a <tt>dynamic_bitset</tt> from an input stream.
-<br><br>
- <i>Definitions:</i><br><br>
+<br /><br />
+ <i>Definitions:</i><br /><br />
  Let <i>Tr</i> be the traits_type of <i>is</i>. Then:
  <ol>
  <li>
@@ -1588,46 +1408,38 @@
 otherwise <tt>n</tt> = <tt>b.max_size()</tt>.
 
 Unless the extractor is exited via an exception, characters are extracted (and
-corresponding bits appended) until any of the following occurs:<br>
+corresponding bits appended) until any of the following occurs:<br />
 
 <ul>
 <li> <tt>n</tt> bits are stored into the bitset;</li>
 <li> end-of-file, or an error, occurs on the input sequence;</li>
 <li> the next available input character isn't a bitset digit</li>
 </ul>
-<br> If no exception caused the function to exit then <tt>is.width(0)</tt> is
+<br /> If no exception caused the function to exit then <tt>is.width(0)</tt> is
      called, regardless of how many characters were actually extracted. The
      sentry object k is destroyed.
-<br>
-<br>If the function extracts no characters[???], it calls is.setstate(std::ios::failbit),
+<br />
+<br />If the function extracts no characters[???], it calls is.setstate(std::ios::failbit),
      which may throw <tt>std::ios_base::failure</tt>.
 
 
-<br>------
+<br />------
 
 
-<br>
+<br />
 <b>Throws:</b> An allocation error if memory is exhausted
 (<tt>std::bad_alloc</tt> if <tt>Allocator=std::allocator</tt>).
 A <tt>std::ios_base::failure</tt> if there is a problem reading
 from the stream.
 
-<hr>
-<h3><a name="exception-guarantees">Exception guarantees</a></h3>
+<hr />
+<h3><a id="exception-guarantees">Exception guarantees</a></h3>
 
 All of <tt>dynamic_bitset</tt> functions offer at least the basic
-guarantee. In addition some functions offer the strong or the nothrow
-guarantee as summarized in the table below (the destructor, as usual,
-doesn't throw):
-<table summary="" border>
-<tr><td>-</td><td><i>strong</i></td><td><i>nothrow</i></td></tr>
-<tr><td>f</td><td> </td><td><b> x </b></td></tr>
-</table>
-
-
+exception guarantee.
 
-<hr>
-<h3><a name="changes-from-previous-ver">Changes from previous version(s)</a></h3>
+<hr />
+<h3><a id="changes-from-previous-ver">Changes from previous version(s)</a></h3>
 
 <!-- Changes from Boost 1.31.0 -->
 <h4><i>Changes from Boost 1.31.0</i></h4>
@@ -1639,15 +1451,15 @@
 extractor but there are some differences the user should be aware
 of; so, please, look at the documentation.
 (One of the differences concerns the case where
- stream.width() > bitset.max_size() > 0;
-in that circumstance the extractor of dynamic_bitset never attempts to
+<code>stream.width() > bitset.max_size() > 0</code>
+In that circumstance the extractor of dynamic_bitset never attempts to
 extract more than max_size() characters, whereas the extractor of
 basic_string goes on and, on conforming implementations, eventually
 throws a length_error. Note: That's what the standard mandates -see
 especially library issue 83- but not all implementations conform)
-<br><br>
+<br /><br />
 The stream extractor is now also 'exception-aware' in the sense that
-it works correctly when setting exception masks on the stream.<br><br>
+it works correctly when setting exception masks on the stream.<br /><br />
 </li>
 <li>
 Several member functions (<tt>empty()</tt>, <tt>find_first()</tt>
@@ -1672,19 +1484,19 @@
 </li>
 </ul>
 <i>General improvements</i>
-<br><br>
+<br /><br />
 Several optimizations to member and non-member functions and to the
 nested class <tt>reference</tt>.
 
-<hr>
-<h3><a name="see-also">See also</a></h3>
+<hr />
+<h3><a id="see-also">See also</a></h3>
 
 <tt><a href=
 "http://www.sgi.com/tech/stl/bitset.html">std::bitset</a></tt>,
 <tt><a href=
 "http://www.sgi.com/tech/stl/Vector.html">std::vector</a></tt>,
 
-<h3><a name="acknowledgements">Acknowledgements</a></h3>
+<h3><a id="acknowledgements">Acknowledgements</a></h3>
 
 <p>We would like to thank the Boost community for putting in the
 time to review and accept this library. This library is much
@@ -1694,37 +1506,27 @@
 James Kanze for his invaluable help with the internationalization
 issues.</p>
 
-<hr>
-<table summary="">
-<tr>
-<td></td>
-</tr>
-
-<tr valign="top">
-<td nowrap>Copyright &copy; 2001</td>
-<td>Jeremy Siek,
-Indiana University (<a href=
-"mailto:jsiek_at_[hidden]">jsiek_at_[hidden]</a>)<br>
-Chuck Allison, Senior
-Editor, C/C++ Users Journal (<a href=
-"mailto:cda_at_[hidden]">cda_at_[hidden]</a>)<br>
-</td>
-</tr>
-
-<tr valign="top">
-<td nowrap>Copyright &copy; 2003-2004</td>
-<td>Gennaro Prota</td>
+<table summary="Copyright"> <tr> <td>Copyright &copy; 2001</td>
+<td><a href="http://www.boost.org/people/jeremy_siek.htm">Jeremy
+Siek</a>, Indiana University (<a
+href="mailto:jsiek_at_[hidden]">jsiek_at_[hidden]</a>)<br /> <a
+href="http://freshsources.com">Chuck Allison</a>, Senior Editor,
+C/C++ Users Journal (<a
+href="mailto:cda_at_[hidden]">cda_at_[hidden]</a>)<br
+/></td> </tr> <tr>
+<td>Copyright &copy; 2003-2004, 2008</td> <td>Gennaro Prota</td>
 </tr>
 </table>
 
-<!-- LocalWords: dynamic bitset alt gif iostream hpp int bitsets const ul ulong
- -->
-<!-- LocalWords: STL LessThan alloc num typename BlockInputIterator html pos
- -->
-<!-- LocalWords: npos bool rhs OR's XOR's val CharT istream ostream os siek
- -->
-<!-- LocalWords: htm namespace enum sizeof BlockOutputIterator fwd ith jth
- -->
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
 </body>
+<!-- LocalWords: dynamic bitset alt gif iostream hpp int bitsets const ul ulong -->
+<!-- LocalWords: STL LessThan alloc num typename BlockInputIterator html pos -->
+<!-- LocalWords: npos bool rhs OR's XOR's val CharT istream ostream os siek -->
+<!-- LocalWords: htm namespace enum sizeof BlockOutputIterator fwd ith jth -->
 </html>
-

Modified: branches/proto/v4/libs/dynamic_bitset/example/Jamfile
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/example/Jamfile (original)
+++ branches/proto/v4/libs/dynamic_bitset/example/Jamfile 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,13 +1,11 @@
-// (C) Copyright Gennaro Prota 2002
+// -----------------------------------------------------------
+// Copyright (c) 2002 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)
 //
-// ----------------------------------------------------------
-//
-// $Id$
-
+// -----------------------------------------------------------
 exe timing_tests
     : timing_tests.cpp
     ;

Modified: branches/proto/v4/libs/dynamic_bitset/example/example1.cpp
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/example/example1.cpp (original)
+++ branches/proto/v4/libs/dynamic_bitset/example/example1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,23 +3,33 @@
 // accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// Sample output:
-// 1
-// 1
-// 0
-// 0
-// 1
+
+
+// An example of setting and reading some bits. Note that operator[]
+// goes from the least-significant bit at 0 to the most significant
+// bit at size()-1. The operator<< for dynamic_bitset prints the
+// bitset from most-significant to least-significant, since that is
+// the format most people are used to reading.
+//
+// The output is:
+//
+// 11001
+// 10011
+// ---------------------------------------------------------------------
 
 #include <iostream>
 #include <boost/dynamic_bitset.hpp>
-int main() {
- boost::dynamic_bitset<> x(5); // all 0's by default
- x[0] = 1;
- x[1] = 1;
- x[4] = 1;
- for (boost::dynamic_bitset<>::size_type i = 0; i < x.size(); ++i)
- std::cout << x[i];
- std::cout << "\n";
- std::cout << x << "\n";
- return EXIT_SUCCESS;
+
+int main()
+{
+ boost::dynamic_bitset<> x(5); // all 0's by default
+ x[0] = 1;
+ x[1] = 1;
+ x[4] = 1;
+ for (boost::dynamic_bitset<>::size_type i = 0; i < x.size(); ++i)
+ std::cout << x[i];
+ std::cout << "\n";
+ std::cout << x << "\n";
+
+ return 0;
 }

Modified: branches/proto/v4/libs/dynamic_bitset/example/example2.cpp
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/example/example2.cpp (original)
+++ branches/proto/v4/libs/dynamic_bitset/example/example2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,27 +3,30 @@
 // accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 //
-// Sample output:
+// Sample output:
+//
 // bits(0) = 00
 // bits(1) = 01
 // bits(2) = 10
 // bits(3) = 11
 
+
 #include <iostream>
 #include <boost/dynamic_bitset.hpp>
+
 int main()
 {
- const boost::dynamic_bitset<> b0(2, 0ul);
+ const boost::dynamic_bitset<> b0(2, 0ul);
   std::cout << "bits(0) = " << b0 << std::endl;
 
- const boost::dynamic_bitset<> b1(2, 1ul);
+ const boost::dynamic_bitset<> b1(2, 1ul);
   std::cout << "bits(1) = " << b1 << std::endl;
 
- const boost::dynamic_bitset<> b2(2, 2ul);
+ const boost::dynamic_bitset<> b2(2, 2ul);
   std::cout << "bits(2) = " << b2 << std::endl;
 
- const boost::dynamic_bitset<> b3(2, 3ul);
+ const boost::dynamic_bitset<> b3(2, 3ul);
   std::cout << "bits(3) = " << b3 << std::endl;
 
- return EXIT_SUCCESS;
+ return 0;
 }

Modified: branches/proto/v4/libs/dynamic_bitset/example/example3.cpp
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/example/example3.cpp (original)
+++ branches/proto/v4/libs/dynamic_bitset/example/example3.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,35 +1,71 @@
-// (C) Copyright Jeremy Siek 2001.
+// Copyright (c) 2001 Jeremy Siek
+// Copyright (c) 2008 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)
 //
-// Sample output:
-// mask = 101010101010
-// Enter a 12-bit bitset in binary: 100110101101
-// x = 100110101101
-// As ulong: 2477
-// And with mask: 100010101000
-// Or with mask: 101110101111
+// Sample run:
+//
+// mask = 101010101010
+// x.size() = 0
+// Enter a bitset in binary: x = 100100010
+//
+// Input number: 100100010
+// x.size() is now: 9
+// As unsigned long: 290
+// Mask (possibly resized): 010101010
+// And with mask: 000100010
+// Or with mask: 110101010
+// Shifted left by 1: 001000100
+// Shifted right by 1: 010010001
+
 
 
+#include "boost/dynamic_bitset.hpp"
+
+#include <ostream>
 #include <iostream>
-#include <boost/dynamic_bitset.hpp>
 
-int main(int, char*[]) {
- const boost::dynamic_bitset<> mask(12, 2730ul);
- std::cout << "mask = " << mask << std::endl;
-
- boost::dynamic_bitset<> x(12);
- std::cout << "x.size()=" << x.size() << std::endl;
-
- std::cout << "Enter a 12-bit bitset in binary: " << std::flush;
- if (std::cin >> x) {
- std::cout << "input number: " << x << std::endl;
- std::cout << "As unsigned long: " << x.to_ulong() << std::endl;
- std::cout << "And with mask: " << (x & mask) << std::endl;
- std::cout << "Or with mask: " << (x | mask) << std::endl;
- std::cout << "Shifted left: " << (x << 1) << std::endl;
- std::cout << "Shifted right: " << (x >> 1) << std::endl;
- }
- return EXIT_SUCCESS;
+int main()
+{
+ boost::dynamic_bitset<> mask(12, 2730ul);
+ std::cout << "mask = " << mask << std::endl;
+
+ boost::dynamic_bitset<> x;
+ std::cout << "x.size() = " << x.size() << std::endl;
+
+ std::cout << "Enter a bitset in binary: x = " << std::flush;
+ if (std::cin >> x) {
+ const std::size_t sz = x.size();
+ std::cout << std::endl;
+ std::cout << "Input number: " << x << std::endl;
+ std::cout << "x.size() is now: " << sz << std::endl;
+
+ bool fits_in_ulong = true;
+ unsigned long ul = 0;
+ try {
+ ul = x.to_ulong();
+ } catch(std::overflow_error &) {
+ fits_in_ulong = false;
+ }
+
+ std::cout << "As unsigned long: ";
+ if(fits_in_ulong) {
+ std::cout << ul;
+ } else {
+ std::cout << "(overflow exception)";
+ }
+
+ std::cout << std::endl;
+
+ mask.resize(sz);
+
+ std::cout << "Mask (possibly resized): " << mask << std::endl;
+
+ std::cout << "And with mask: " << (x & mask) << std::endl;
+ std::cout << "Or with mask: " << (x | mask) << std::endl;
+ std::cout << "Shifted left by 1: " << (x << 1) << std::endl;
+ std::cout << "Shifted right by 1: " << (x >> 1) << std::endl;
+ }
+ return 0;
 }

Modified: branches/proto/v4/libs/dynamic_bitset/example/timing_tests.cpp
==============================================================================
--- branches/proto/v4/libs/dynamic_bitset/example/timing_tests.cpp (original)
+++ branches/proto/v4/libs/dynamic_bitset/example/timing_tests.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,6 @@
 // -----------------------------------------------------------
-// boost::dynamic_bitset timing tests
-
-// (C) Copyright Gennaro Prota 2003 - 2004.
+//
+// Copyright (c) 2003-2004 Gennaro Prota
 //
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -9,6 +8,8 @@
 //
 // -----------------------------------------------------------
 
+// boost::dynamic_bitset timing tests
+//
 // NOTE:
 // ~~~~~
 // This is a preliminary, incomplete version.
@@ -25,8 +26,7 @@
 //
 //
 // -----------------------------------------------------------------------//
-//
-// $Id$
+
 
 #include "boost/config.hpp"
 

Modified: branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html (original)
+++ branches/proto/v4/libs/exception/doc/BOOST_ERROR_INFO.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,24 +19,28 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>BOOST_ERROR_INFO</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>BOOST_ERROR_INFO</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN"> typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_function,char const *&gt; throw_function;
     typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_file,char const *&gt; throw_file;
     typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_line,int&gt; throw_line;
-
+
     #define <span class="RenoLink">BOOST_ERROR_INFO</span>\
         ::boost::throw_function(BOOST_CURRENT_FUNCTION) &lt;&lt;\
         ::boost::throw_file(__FILE__) &lt;&lt;\
         ::boost::throw_line((int)__LINE__)</span>
     }</pre>
-</div><p>This macro is designed to be used with <tt><span class="RenoLink">operator<<</span>()</tt> when throwing a <tt>boost::<span class="RenoLink">exception</span></tt>, to store information about the location of the throw statement. It can be chained with other <tt><span class="RenoLink">error_info</span></tt>s in a single throw expression.</p>
-</div><h3>See also:</h3>
+</div><p>This macro is designed to be used with <span class="RenoLink">operator<<</span> when throwing a boost::<span class="RenoLink">exception</span>, to store information about the location of the throw statement. It can be chained with other <span class="RenoLink">error_infos</span> in a single throw expression.</p>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_error_info_hpp.html">boost/exception/info.hpp<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/boost-exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/boost-exception.html (original)
+++ branches/proto/v4/libs/exception/doc/boost-exception.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
 <head>
         <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Boost Exception</title>
+ <title>boost exception</title>
         <link href='reno.css' type='text/css' rel='stylesheet'/>
 </head>
 <body>
@@ -19,46 +19,47 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h2>Abstract</h2>
+<h2>Introduction</h2>
 <p>The purpose of Boost Exception is to ease the design of exception class hierarchies and to help write exception handling and error reporting code.</p>
-<p>It supports transporting of arbitrary data to the catch site, which is otherwise tricky due to the no-throw requirements (15.5.1) for exception classes. Data can be added to any exception object, either directly in the throw-expression (15.1), or at a later time as the exception object propagates up the call stack.</p>
-<p>The ability to add data to exception objects after they have been passed to <tt>throw</tt> is important, because often some of the information needed to handle an exception is unavailable in the context where the failure is detected. </p>
-<p>Boost Exception also supports <span class="RenoLink">cloning</span> of exception objects, implemented non-intrusively and automatically by the <tt>boost::<span class="RenoLink">throw_exception</span>()</tt> function.</p>
-<h4>Note:</h4>
-<p>Boost Exception was accepted as a Boost library on November 7 2007, however it has not yet been part of an official Boost release. Current version can be downloaded from <span class="RenoLink"> Boost SVN</span>.</p>
+<p>It supports transporting of arbitrary data to the catch site, which is otherwise tricky due to the no-throw requirements (15.5.1) for exception types. Data can be added to any exception object, either directly in the throw-expression (15.1), or at a later time as the exception object propagates up the call stack.</p>
+<p>The ability to add data to exception objects after they have been passed to throw is important, because often some of the information needed to handle an exception is unavailable in the context where the failure is detected. </p>
+<p>Boost Exception also supports <span class="RenoLink">N2179</span>-style <span class="RenoLink">copying</span> of exception objects, implemented non-intrusively and automatically by the boost::<span class="RenoLink">throw_exception</span> function.</p>
 <h2>Contents</h2>
-<div><ol><li>Tutorial<div><ol><li><span class="RenoLink">Tutorial: Transporting of Arbitrary Data to the Catch Site</span></li>
-<li><span class="RenoLink">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies</span></li>
-<li><span class="RenoLink">Tutorial: Transporting of Exceptions between Threads</span></li>
-<li><span class="RenoLink">Tutorial: Logging of boost::exception Objects</span></li>
+<div><ol><li>Tutorial<div><ol><li><span class="RenoLink">Transporting of Arbitrary Data to the Catch Site</span></li>
+<li><span class="RenoLink">Integrating Boost Exception in Existing Exception Class Hierarchies</span></li>
+<li><span class="RenoLink">Transporting of Exceptions Between Threads</span></li>
+<li><span class="RenoLink">Diagnostic Information</span></li>
 </ol></div>
 </li>
-<li>Documentation<div><ol><li>Class <tt><span class="RenoLink">exception</span></tt></li>
-<li>Transporting of Arbitrary Data to the Catch Site<div><ol><li><tt><span class="RenoLink">error_info</span></tt></li>
-<li><tt><span class="RenoLink">operator<<</span>()</tt></li>
-<li><tt><span class="RenoLink">get_error_info</span>()</tt></li>
-<li><tt><span class="RenoLink">enable_error_info</span>()</tt></li>
-<li><tt><span class="RenoLink">BOOST_ERROR_INFO</span></tt></li>
+<li>Documentation<div><ol><li>Class <span class="RenoLink">exception</span></li>
+<li>Transporting of Arbitrary Data to the Catch Site<div><ol><li><span class="RenoLink">error_info</span></li>
+<li><span class="RenoLink">operator<</exception</span></li>
+<li><span class="RenoLink">operator<</tuple</span></li>
+<li><span class="RenoLink">get_error_info</span></li>
+<li><span class="RenoLink">enable_error_info</span></li>
+<li><span class="RenoLink">BOOST_ERROR_INFO</span></li>
 </ol></div>
 </li>
-<li>Transporting of Exceptions between Threads<div><ol><li><tt><span class="RenoLink">exception_ptr</span></tt></li>
-<li><tt><span class="RenoLink">enable_current_exception</span>()</tt></li>
-<li><tt><span class="RenoLink">current_exception</span>()</tt></li>
-<li><tt><span class="RenoLink">copy_exception</span>()</tt></li>
-<li><tt><span class="RenoLink">rethrow_exception</span>()</tt></li>
-<li><tt><span class="RenoLink">unknown_exception</span></tt></li>
+<li><span class="RenoLink">N2179</span> Transporting of Exceptions between Threads<div><ol><li><span class="RenoLink">exception_ptr</span></li>
+<li><span class="RenoLink">enable_current_exception</span></li>
+<li><span class="RenoLink">current_exception</span></li>
+<li><span class="RenoLink">copy_exception</span></li>
+<li><span class="RenoLink">rethrow_exception</span></li>
+<li><span class="RenoLink">unknown_exception</span></li>
 </ol></div>
 </li>
-<li><tt><span class="RenoLink">throw_exception</span>()</tt></li>
-<li>Headers<div><ol><li><tt><span class="RenoLink">boost/exception.hpp</span></tt></li>
-<li><tt><span class="RenoLink">boost/exception_ptr.hpp</span></tt></li>
-<li><tt><span class="RenoLink">boost/throw_exception.hpp</span></tt></li>
-<li><tt><span class="RenoLink">boost/exception/enable_current_exception.hpp</span></tt></li>
-<li><tt><span class="RenoLink">boost/exception/enable_error_info.hpp</span></tt></li>
-<li><tt><span class="RenoLink">boost/exception/info.hpp</span></tt></li>
-<li><tt><span class="RenoLink">boost/exception/info_tuple.hpp</span></tt></li>
-<li><tt><span class="RenoLink">boost/exception/error_info.hpp</span></tt></li>
-<li><tt><span class="RenoLink">boost/exception/exception.hpp</span></tt></li>
+<li><span class="RenoLink">diagnostic_information</span></li>
+<li><span class="RenoLink">throw_exception</span></li>
+<li>Headers<div><ol><li><span class="RenoLink">boost/exception.hpp</span></li>
+<li><span class="RenoLink">boost/exception/diagnostic_information.hpp</span></li>
+<li><span class="RenoLink">boost/exception/enable_current_exception.hpp</span></li>
+<li><span class="RenoLink">boost/exception/enable_error_info.hpp</span></li>
+<li><span class="RenoLink">boost/exception/error_info.hpp</span></li>
+<li><span class="RenoLink">boost/exception/exception.hpp</span></li>
+<li><span class="RenoLink">boost/exception/info.hpp</span></li>
+<li><span class="RenoLink">boost/exception/info_tuple.hpp</span></li>
+<li><span class="RenoLink">boost/exception_ptr.hpp</span></li>
+<li><span class="RenoLink">boost/throw_exception.hpp</span></li>
 </ol></div>
 </li>
 </ol></div>
@@ -66,95 +67,97 @@
 <li><span class="RenoLink">Index</span></li>
 </ol></div>
 <h2>Synopsis</h2>
-<p><tt>#include &lt;<span class="RenoLink">boost/exception.hpp</span>&gt;</tt></p>
+<p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
-<span class="RenoIncludeSPAN"> class
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">class
     <span class="RenoLink">exception</span>
         {
         public:
-
-<span class="RenoIncludeSPAN"> virtual char const * <span class="RenoLink">what</span>() const throw();</span>
-
+
+ <span class="RenoIncludeSPAN"> virtual char const * <span class="RenoLink">diagnostic_information</span>() const throw();</span>
+
         protected:
+
+ <span class="RenoIncludeSPAN"> <span class="RenoLink">exception</span>();
+ <span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</span>
+ <span class="RenoIncludeSPAN"> <span class="RenoLink">~exception</span>();</span>
+ };</span></span>
 
-<span class="RenoIncludeSPAN"> <span class="RenoLink">exception</span>();
- <span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</span>
-<span class="RenoIncludeSPAN"> <span class="RenoLink">~exception</span>();</span>
-
- private:
-
- ---unspecified---
- };</span>
-
-<span class="RenoIncludeSPAN"> template &lt;class Tag,class T&gt;
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">template &lt;class Tag,class T&gt;
     class
     <span class="RenoLink">error_info</span>
         {
         public:
-
+
         typedef T value_type;
-
+
         error_info( value_type const &amp; );
-
- private:
-
- ---unspecified---
- };</span>
-
-<span class="RenoIncludeSPAN"> template &lt;class E, class Tag1, class T1&gt;
- E const &amp; operator&lt;&lt;( E const &amp; x, <span class="RenoLink">error_info</span>&lt;Tag1,T1&gt; const &amp; v );
-
- template &lt;class E, class Tag1, class T1, ..., class TagN, class TN&gt;
- E const &amp; operator&lt;&lt;( E const &amp; x,
- <span class="RenoLink">tuple</span>&lt;
- <span class="RenoLink">error_info</span>&lt;Tag1,T1&gt;,
- ...,
- <span class="RenoLink">error_info</span>&lt;TagN,TN&gt; &gt; const &amp; v );</span>
-
-<span class="RenoIncludeSPAN"> template &lt;class ErrorInfo,class E&gt;
- <span class="RenoLink">shared_ptr</span>&lt;typename ErrorInfo::value_type const&gt; <span class="RenoLink">get_error_info</span>( E const &amp; x );</span>
-
-<span class="RenoIncludeSPAN"> template &lt;class T&gt;
- ---unspecified--- <span class="RenoLink">enable_error_info</span>( T const &amp; x );</span>
-
-<span class="RenoIncludeSPAN"> typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_function,char const *&gt; throw_function;
+ };</span>
+
+ <span class="RenoIncludeSPAN">template &lt;class ErrorInfo,class E&gt;
+ <span class="RenoLink">shared_ptr</span>&lt;typename ErrorInfo::value_type const&gt; <span class="RenoLink">get_error_info</span>( E const &amp; x );</span>
+
+ <span class="RenoIncludeSPAN">typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_function,char const *&gt; throw_function;
     typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_file,char const *&gt; throw_file;
     typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_line,int&gt; throw_line;
-
+
     #define <span class="RenoLink">BOOST_ERROR_INFO</span>\
         ::boost::throw_function(BOOST_CURRENT_FUNCTION) &lt;&lt;\
         ::boost::throw_file(__FILE__) &lt;&lt;\
- ::boost::throw_line((int)__LINE__)</span>
+ ::boost::throw_line((int)__LINE__)</span>
+
+ <span class="RenoIncludeSPAN">template &lt;class E, class Tag, class T&gt;
+ E const &amp; <span class="RenoLink">operator<<</span>( E const &amp; x, <span class="RenoLink">error_info</span>&lt;Tag,T&gt; const &amp; v );</span></span>
 
-<span class="RenoIncludeSPAN"> typedef ---unspecified--- <span class="RenoLink">exception_ptr</span>;</span>
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">template &lt;class E, class Tag1, class T1, ..., class TagN, class TN&gt;
+ E const &amp; <span class="RenoLink">operator<<</span>( E const &amp; x,
+ <span class="RenoLink">tuple</span>&lt;
+ <span class="RenoLink">error_info</span>&lt;Tag1,T1&gt;,
+ ...,
+ <span class="RenoLink">error_info</span>&lt;TagN,TN&gt; &gt; const &amp; v );</span></span>
 
-<span class="RenoIncludeSPAN"> template &lt;class T&gt;
- ---unspecified--- <span class="RenoLink">enable_current_exception</span>( T const &amp; e );</span>
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">template &lt;class T&gt;
+ ---unspecified--- <span class="RenoLink">enable_error_info</span>( T const &amp; x );</span></span>
 
-<span class="RenoIncludeSPAN"> <span class="RenoLink">exception_ptr</span> <span class="RenoLink">current_exception</span>();</span>
-<span class="RenoIncludeSPAN"> template &lt;class T&gt;
- <span class="RenoLink">exception_ptr</span> <span class="RenoLink">copy_exception</span>( T const &amp; e );</span>
-<span class="RenoIncludeSPAN"> void <span class="RenoLink">rethrow_exception</span>( <span class="RenoLink">exception_ptr</span> const &amp; ep );</span>
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">std::string <span class="RenoLink">diagnostic_information</span>( std::exception const &amp; x );</span></span>
 
-<span class="RenoIncludeSPAN"> class
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">class
     <span class="RenoLink">unknown_exception</span>:
         public std::exception
- public boost::exception
+ public boost::<span class="RenoLink">exception</span>
         {
         ---unspecified---
- };</span>
+ };</span>
+
+ <span class="RenoIncludeSPAN">typedef ---unspecified--- <span class="RenoLink">exception_ptr</span>;</span>
+
+ <span class="RenoIncludeSPAN">template &lt;class T&gt;
+ <span class="RenoLink">exception_ptr</span> <span class="RenoLink">copy_exception</span>( T const &amp; e );</span>
+
+ <span class="RenoIncludeSPAN"><span class="RenoLink">exception_ptr</span> <span class="RenoLink">current_exception</span>();</span>
+
+ <span class="RenoIncludeSPAN">void <span class="RenoLink">rethrow_exception</span>( <span class="RenoLink">exception_ptr</span> const &amp; ep );</span></span>
 
-<span class="RenoIncludeSPAN">#ifdef BOOST_NO_EXCEPTIONS
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">template &lt;class T&gt;
+ ---unspecified--- <span class="RenoLink">enable_current_exception</span>( T const &amp; e );</span></span>
+
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">#ifdef BOOST_NO_EXCEPTIONS
+
     void <span class="RenoLink">throw_exception</span>( std::exception const &amp; e ); // user defined
-#else
+
+ #else
+
     template &lt;class E&gt;
     void <span class="RenoLink">throw_exception</span>( E const &amp; e );
-#endif</span>
+
+ #endif</span></span>
     }</pre>
-<div class="RenoIncludeDIV"><h2>exception</h2>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/exception.hpp</span>&gt;</tt></p>
+<h2>Class exception</h2>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/exception.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -162,49 +165,51 @@
     <span class="RenoLink">exception</span>
         {
         public:
-
-<span class="RenoIncludeSPAN"> virtual char const * <span class="RenoLink">what</span>() const throw();</span>
-
+
+ <span class="RenoIncludeSPAN"> virtual char const * <span class="RenoLink">diagnostic_information</span>() const throw();</span>
+
         protected:
-
-<span class="RenoIncludeSPAN"> <span class="RenoLink">exception</span>();
- <span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</span>
-<span class="RenoIncludeSPAN"> <span class="RenoLink">~exception</span>();</span>
-
- private:
-
- ---unspecified---
+
+ <span class="RenoIncludeSPAN"> <span class="RenoLink">exception</span>();
+ <span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</span>
+ <span class="RenoIncludeSPAN"> <span class="RenoLink">~exception</span>();</span>
         };</span>
     }</pre>
-</div><p>Class <tt>boost::<span class="RenoLink">exception</span></tt> is designed to be used as a universal base for user-defined exception types.</p>
-<p>An object of any type deriving from <tt>boost::<span class="RenoLink">exception</span></tt> can store data of arbitrary types, using the <tt><span class="RenoLink">error_info</span></tt> wrapper and <tt><span class="RenoLink">operator<<</span>()</tt>.</p>
-<p>To retrieve data from a <tt>boost::<span class="RenoLink">exception</span></tt> object, use the <tt><span class="RenoLink">get_error_info</span>()</tt> function template.</p>
-<div class="RenoIncludeDIV"><div class="RenoIncludeDIV"><h3>exception constructors</h3>
-<div class="RenoIncludeDIV"><pre> <span class="RenoLink">exception</span>();
- <span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</pre>
+</div><p>Class boost::<span class="RenoLink">exception</span> is designed to be used as a universal base for user-defined exception types.</p>
+<p>An object of any type deriving from boost::<span class="RenoLink">exception</span> can store data of arbitrary types, using the <span class="RenoLink">error_info</span> wrapper and <span class="RenoLink">operator<<</span>.</p>
+<p>To retrieve data from a boost::<span class="RenoLink">exception</span> object, use the <span class="RenoLink">get_error_info</span> function template.</p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception::exception</h3>
+</div>
+<div class="RenoIncludeDIV"><pre><span class="RenoLink">exception</span>();
+<span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</pre>
 </div><h4>Effects:</h4>
-<div><ul><li> Default constructor: initializes an empty <tt>boost::<span class="RenoLink">exception</span></tt> object.</li>
-<li> Copy constructor: initializes a <tt>boost::<span class="RenoLink">exception</span></tt> object which shares with <tt>x</tt> all data added through <tt><span class="RenoLink">operator<<</span>()</tt>, including data that is added at a future time.</li>
+<div><ul><li> Default constructor: initializes an empty boost::<span class="RenoLink">exception</span> object.</li>
+<li> Copy constructor: initializes a boost::<span class="RenoLink">exception</span> object which shares with x all data added through <span class="RenoLink">operator<<</span>, including data that is added at a future time.</li>
 </ul></div>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-</div><div class="RenoIncludeDIV"><h3>exception destructor</h3>
-<div class="RenoIncludeDIV"><pre> <span class="RenoLink">~exception</span>();</pre>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception::~exception</h3>
+</div>
+<div class="RenoIncludeDIV"><pre><span class="RenoLink">~exception</span>();</pre>
 </div><h4>Effects:</h4>
-<p>Frees all resources associated with a <tt>boost::<span class="RenoLink">exception</span></tt> object.</p>
+<p>Frees all resources associated with a boost::<span class="RenoLink">exception</span> object.</p>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-</div><div class="RenoIncludeDIV"><h3>exception::what()</h3>
-<div class="RenoIncludeDIV"><pre> virtual char const * <span class="RenoLink">what</span>() const throw();</pre>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception::diagnostic_information</h3>
+</div>
+<div class="RenoIncludeDIV"><pre>virtual char const * <span class="RenoLink">diagnostic_information</span>() const throw();</pre>
 </div><h4>Returns:</h4>
-<p>An string representation of all data stored in the <tt>boost::<span class="RenoLink">exception</span></tt> object by the <tt><span class="RenoLink">operator<<</span>()</tt> function. See "<span class="RenoLink">Tutorial: Logging of boost::exception Objects</span>" for details.</p>
+<p>A string representation of all data stored in the boost::<span class="RenoLink">exception</span> object by the <span class="RenoLink">operator<<</span> function. See "<span class="RenoLink">Diagnostic Information</span>" for details.</p>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-<h4>Note:</h4>
-<p>The return value remains valid until the exception object from which it is obtained is destroyed or modified.</p>
-</div></div></div><h2>Transporting of Arbitrary Data to the Catch Site</h2>
-<div class="RenoIncludeDIV"><h3>error_info</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</tt></p>
+<h4>Notes:</h4>
+<div><ul><li>The return value remains valid until the exception object from which it was obtained is destroyed or modified.</li>
+<li>The header <span class="RenoLink">boost/exception/diagnostic_information.hpp</span> provides a namespace-scope function <span class="RenoLink">diagnostic_information</span> which takes a std::exception. It calls <span class="RenoLink">exception::diagnostic_information</span> if its argument can be converted to boost::<span class="RenoLink">exception</span>; otherwise it returns a string that combines the value of std::exception::what and the exception's dynamic type.</li>
+</ul></div>
+</div></div><h2>Transporting of Arbitrary Data to the Catch Site</h2>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>error_info</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -213,53 +218,63 @@
     <span class="RenoLink">error_info</span>
         {
         public:
-
+
         typedef T value_type;
-
+
         error_info( value_type const &amp; );
-
- private:
-
- ---unspecified---
         };</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>T</tt> must have accessible copy constructor and must not be a reference.</p>
+<p>T must have accessible copy constructor and must not be a reference (there is no requirement that T's copy constructor does not throw.)</p>
 <h4>Description:</h4>
-<p>This class template is used to associate a <tt>Tag</tt> type with a value type <tt>T</tt>. Objects of type <tt><span class="RenoLink">error_info</span>&lt;Tag,T&gt;</tt> can be passed to <tt><span class="RenoLink">operator<<</span>()</tt> to be stored in objects of type <tt>boost::<span class="RenoLink">exception</span></tt>.</p>
+<p>This class template is used to associate a Tag type with a value type T. Objects of type <span class="RenoLink">error_info</span>&lt;Tag,T&gt; can be passed to <span class="RenoLink">operator<<</span> to be stored in objects of type boost::<span class="RenoLink">exception</span>.</p>
 <h4>Note:</h4>
-<p>The header <tt>&lt;<span class="RenoLink">boost/exception/error_info.hpp</span>&gt;</tt> provides a declaration of the <tt><span class="RenoLink">error_info</span></tt> template, which is sufficient for the purpose of <tt>typedef</tt>ing an instance for specific <tt>Tag</tt> and <tt>T</tt>, like this:</p>
+<p>The header &lt;<span class="RenoLink">boost/exception/error_info.hpp</span>&gt; provides a declaration of the <span class="RenoLink">error_info</span> template, which is sufficient for the purpose of typedefing an instance for specific Tag and T, like this:</p>
 <pre>#include &lt;<span class="RenoLink">boost/exception/error_info.hpp</span>&gt;
 
 typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_errno,int&gt; errno_info;</pre>
-<p>Of course, to actually add an <tt>errno_info</tt> object to exceptions using <tt><span class="RenoLink">operator<<</span>()</tt>, or to retrieve it using <tt><span class="RenoLink">get_error_info</span>()</tt>, you must first <tt>#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</tt>.</p>
-</div><div class="RenoIncludeDIV"><h3>operator&lt;&lt;()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</tt><span class="RenoBR">&nbsp;</span><br/><tt>#include &lt;<span class="RenoLink">boost/exception/info_tuple.hpp</span>&gt;</tt></p>
+<p>Of course, to actually add an <span class="RenoLink">error_info</span> object to <span class="RenoLink">exceptions</span> using <span class="RenoLink">operator<<</span>, or to retrieve it using <span class="RenoLink">get_error_info</span>, you must first #include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;.</p>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>operator&lt;&lt;/exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;<span class="RenoBR">&nbsp;</span><br/></p>
 <pre>namespace
 boost
     {
-<span class="RenoIncludeSPAN"> template &lt;class E, class Tag1, class T1&gt;
- E const &amp; operator&lt;&lt;( E const &amp; x, <span class="RenoLink">error_info</span>&lt;Tag1,T1&gt; const &amp; v );
-
- template &lt;class E, class Tag1, class T1, ..., class TagN, class TN&gt;
- E const &amp; operator&lt;&lt;( E const &amp; x,
+<span class="RenoIncludeSPAN"> template &lt;class E, class Tag, class T&gt;
+ E const &amp; <span class="RenoLink">operator<<</span>( E const &amp; x, <span class="RenoLink">error_info</span>&lt;Tag,T&gt; const &amp; v );</span>
+ }</pre>
+</div><h4>Requirements:</h4>
+<p>E must be boost::<span class="RenoLink">exception</span>, or a type that derives (indirectly) from boost::<span class="RenoLink">exception</span>.</p>
+<h4>Effects:</h4>
+<p>Stores a copy of v into x. If x already contains data of type <span class="RenoLink">error_info</span>&lt;Tag,T&gt;, that data is overwritten.</p>
+<h4>Returns:</h4>
+<p>x.</p>
+<div class="RenoIncludeDIV"><h4>Throws:</h4>
+<p>std::bad_alloc, or any exception emitted by the T copy constructor.</p>
+</div></div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>operator&lt;&lt;/tuple</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/info_tuple.hpp</span>&gt;</p>
+<pre>namespace
+boost
+ {
+<span class="RenoIncludeSPAN"> template &lt;class E, class Tag1, class T1, ..., class TagN, class TN&gt;
+ E const &amp; <span class="RenoLink">operator<<</span>( E const &amp; x,
         <span class="RenoLink">tuple</span>&lt;
             <span class="RenoLink">error_info</span>&lt;Tag1,T1&gt;,
             ...,
             <span class="RenoLink">error_info</span>&lt;TagN,TN&gt; &gt; const &amp; v );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>E</tt> must be <tt>boost::<span class="RenoLink">exception</span></tt>, or a type that derives (indirectly) from <tt>boost::<span class="RenoLink">exception</span></tt>.</p>
+<p>E must be boost::<span class="RenoLink">exception</span>, or a type that derives (indirectly) from boost::<span class="RenoLink">exception</span>.</p>
 <h4>Effects:</h4>
-<div><ul><li> The first overload stores a copy of <tt>v</tt> into <tt>x</tt>. If <tt>x</tt> already contains data of type <tt><span class="RenoLink">error_info</span>&lt;Tag1,T1&gt;</tt>, that data is overwritten.</li>
-<li> The <tt>boost::<span class="RenoLink">tuple</span></tt> overload is equivalent to <tt>x &lt;&lt; v.<span class="RenoLink">get</span>&lt;0&gt;() &lt;&lt; ... &lt;&lt; v.<span class="RenoLink">get</span>&lt;N&gt;()</tt>.</li>
-</ul></div>
+<p>Equivalent to x &lt;&lt; v.<span class="RenoLink">get</span>&lt;0&gt;() &lt;&lt; ... &lt;&lt; v.<span class="RenoLink">get</span>&lt;N&gt;().</p>
 <h4>Returns:</h4>
-<p><tt>x</tt>.</p>
+<p>x.</p>
 <div class="RenoIncludeDIV"><h4>Throws:</h4>
-<p><tt>std::bad_alloc</tt>, or any exception emitted by <tt>T1..TN</tt> copy constructor.</p>
-</div></div><div class="RenoIncludeDIV"><h3>get_error_info()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</tt></p>
+<p>std::bad_alloc, or any exception emitted by T1..TN copy constructor.</p>
+</div></div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>get_error_info</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -267,13 +282,18 @@
     <span class="RenoLink">shared_ptr</span>&lt;typename ErrorInfo::value_type const&gt; <span class="RenoLink">get_error_info</span>( E const &amp; x );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p>The type of the <tt>x</tt> object must derive from <tt>boost::<span class="RenoLink">exception</span></tt>; <tt>ErrorInfo</tt> must be an instance of the <tt><span class="RenoLink">error_info</span></tt> template.</p>
+<div><ul><li> ErrorInfo must be an instance of the <span class="RenoLink">error_info</span> template.</li>
+<li> E must be polymorphic.</li>
+</ul></div>
 <h4>Returns:</h4>
-<p>If <tt>x</tt> does not store an object of type <tt>ErrorInfo</tt>, returns an empty <tt><span class="RenoLink">shared_ptr</span></tt>; otherwise returns pointer to the stored value. Use <tt><span class="RenoLink">operator<<</span>()</tt> to store values in exception objects.</p>
+<div><ul><li> If dynamic_cast&lt;boost::<span class="RenoLink">exception</span> const *&gt;(&amp;x) is 0, or if x does not store an object of type ErrorInfo, the returned value is an empty shared_ptr.</li>
+<li> Otherwise, the returned shared_ptr points to the stored value (use <span class="RenoLink">operator<<</span> to store values in exception objects.) The shared_ptr is valid even after x has been destroyed.</li>
+</ul></div>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-</div><div class="RenoIncludeDIV"><h3>enable_error_info()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/enable_error_info.hpp</span>&gt;</tt></p>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>enable_error_info</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/enable_error_info.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -281,41 +301,44 @@
     ---unspecified--- <span class="RenoLink">enable_error_info</span>( T const &amp; x );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>T</tt> must be a user-defined type with accessible no-throw copy constructor.</p>
+<p>T must be a user-defined type with accessible no-throw copy constructor as per (15.5.1).</p>
 <h4>Returns:</h4>
-<p>An object of unspecified type with no-throw copy semantics, which derives publicly from both <tt>T</tt>, and class <tt>boost::<span class="RenoLink">exception</span></tt>. The <tt>T</tt> sub-object is initialized from <tt>x</tt> by the <tt>T</tt> copy constructor. If <tt>T</tt> already derives from <tt>boost::<span class="RenoLink">exception</span></tt>, then the type of the returned object does not derive <tt>boost::<span class="RenoLink">exception</span></tt>.</p>
+<div><ul><li> If T derives from boost::<span class="RenoLink">exception</span>, the returned object is of type T and is a copy of x.</li>
+<li> Otherwise, the returned object is of an unspecified type that derives publicly from both T and boost::<span class="RenoLink">exception</span>. The T sub-object is initialized from x by the T copy constructor.</li>
+</ul></div>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-</div><div class="RenoIncludeDIV"><h3>BOOST_ERROR_INFO</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</tt></p>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>BOOST_ERROR_INFO</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN"> typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_function,char const *&gt; throw_function;
     typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_file,char const *&gt; throw_file;
     typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_line,int&gt; throw_line;
-
+
     #define <span class="RenoLink">BOOST_ERROR_INFO</span>\
         ::boost::throw_function(BOOST_CURRENT_FUNCTION) &lt;&lt;\
         ::boost::throw_file(__FILE__) &lt;&lt;\
         ::boost::throw_line((int)__LINE__)</span>
     }</pre>
-</div><p>This macro is designed to be used with <tt><span class="RenoLink">operator<<</span>()</tt> when throwing a <tt>boost::<span class="RenoLink">exception</span></tt>, to store information about the location of the throw statement. It can be chained with other <tt><span class="RenoLink">error_info</span></tt>s in a single throw expression.</p>
+</div><p>This macro is designed to be used with <span class="RenoLink">operator<<</span> when throwing a boost::<span class="RenoLink">exception</span>, to store information about the location of the throw statement. It can be chained with other <span class="RenoLink">error_infos</span> in a single throw expression.</p>
 </div><h2>Transporting of Exceptions between Threads</h2>
-<div class="RenoIncludeDIV"><h3>exception_ptr</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception_ptr</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN"> typedef ---unspecified--- <span class="RenoLink">exception_ptr</span>;</span>
     }</pre>
-</div><p>The <tt><span class="RenoLink">exception_ptr</span></tt> type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; <tt><span class="RenoLink">exception_ptr</span></tt>'s operations do not throw.</p>
-<p>Two instances of <tt><span class="RenoLink">exception_ptr</span></tt> are equivalent and compare equal if and only if they refer to the same exception.</p>
-<p>The default constructor of <tt><span class="RenoLink">exception_ptr</span></tt> produces the null value of the type. The null value is equivalent only to itself.</p>
-<h4>Note:</h4>
-<p><tt><span class="RenoLink">exception_ptr</span></tt> objects are returned by <tt><span class="RenoLink">current_exception</span>()</tt> and <tt><span class="RenoLink">copy_exception</span>()</tt>.</p>
-</div><div class="RenoIncludeDIV"><h3>enable_current_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/enable_current_exception.hpp</span>&gt;</tt></p>
+</div><p>The <span class="RenoLink">exception_ptr</span> type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; <span class="RenoLink">exception_ptr</span>'s operations do not throw.</p>
+<p>Two instances of <span class="RenoLink">exception_ptr</span> are equivalent and compare equal if and only if they refer to the same exception.</p>
+<p>The default constructor of <span class="RenoLink">exception_ptr</span> produces the null value of the type. The null value is equivalent only to itself.</p>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>enable_current_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/enable_current_exception.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -323,11 +346,11 @@
     ---unspecified--- <span class="RenoLink">enable_current_exception</span>( T const &amp; e );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>T</tt> must have an accessible no-throw copy constructor</p>
+<p>T must be of user-defined type with an accessible no-throw copy constructor.</p>
 <h4>Returns:</h4>
-<p>An object of <i>unspecified</i> type which derives publicly from <tt>T</tt>. That is, the returned object can be intercepted by a <tt>catch(T &amp;)</tt>.</p>
+<p>An object of <i>unspecified</i> type which derives publicly from T. That is, the returned object can be intercepted by a catch(T &amp;).</p>
 <h4>Description:</h4>
-<p>This function is designed to be used directly in a throw-expression to enable the cloning support in Boost Exception. For example:</p>
+<p>This function is designed to be used directly in a throw-expression to enable the <span class="RenoLink">exception_ptr</span> support in Boost Exception. For example:</p>
 <pre>class
 my_exception:
     public std::exception
@@ -336,28 +359,32 @@
 
 ....
 throw boost::<span class="RenoLink">enable_current_exception</span>(my_exception());</pre>
-<p>Unless <tt><span class="RenoLink">enable_current_exception</span>()</tt> is called at the time an exception object is used in a throw-expression, an attempt to copy it using <tt><span class="RenoLink">current_exception</span>()</tt> may return an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>. See <tt><span class="RenoLink">current_exception</span>()</tt> for details.</p>
+<p>Unless <span class="RenoLink">enable_current_exception</span> is called at the time an exception object is used in a throw-expression, an attempt to copy it using <span class="RenoLink">current_exception</span> may return an <span class="RenoLink">exception_ptr</span> which refers to an instance of <span class="RenoLink">unknown_exception</span>. See <span class="RenoLink">current_exception</span> for details.</p>
 <h4>Note:</h4>
-<p>Instead of using the <tt>throw</tt> keyword directly, it is preferable to call <tt>boost::<span class="RenoLink">throw_exception</span>()</tt>. This is guaranteed to throw an exception that derives from <tt>boost::<span class="RenoLink">exception</span></tt> and supports cloning.</p>
-</div><div class="RenoIncludeDIV"><h3>current_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</tt></p>
+<p>Instead of using the throw keyword directly, it is preferable to call boost::<span class="RenoLink">throw_exception</span>. This is guaranteed to throw an exception that derives from boost::<span class="RenoLink">exception</span> and supports the <span class="RenoLink">exception_ptr</span> functionality.</p>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>current_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN"> <span class="RenoLink">exception_ptr</span> <span class="RenoLink">current_exception</span>();</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p>The <tt><span class="RenoLink">current_exception</span>()</tt> function must not be called outside of a <tt>catch</tt> block.</p>
+<p>The <span class="RenoLink">current_exception</span> function must not be called outside of a catch block.</p>
 <h4>Returns:</h4>
-<div><ul><li> An <tt><span class="RenoLink">exception_ptr</span></tt> that refers to the currently handled exception or a copy of the currently handled exception.</li>
-<li> If the function needs to allocate memory and the attempt fails, it returns an <tt><span class="RenoLink">exception_ptr</span></tt> that refers to an instance of <tt>std::bad_alloc</tt>.</li>
+<div><ul><li> An <span class="RenoLink">exception_ptr</span> that refers to the currently handled exception or a copy of the currently handled exception.</li>
+<li> If the function needs to allocate memory and the attempt fails, it returns an <span class="RenoLink">exception_ptr</span> that refers to an instance of std::bad_alloc.</li>
 </ul></div>
+<h4>Throws:</h4>
+<p>Nothing.</p>
 <h4>Notes:</h4>
-<div><ul><li> It is unspecified whether the return values of two successive calls to <tt><span class="RenoLink">current_exception</span>()</tt> refer to the same exception object.</li>
-<li> Correct implementation of <tt><span class="RenoLink">current_exception</span>()</tt> may require compiler support, unless <tt><span class="RenoLink">enable_current_exception</span>()</tt> is used at the time the currently handled exception object was passed to <tt>throw</tt>. If <tt><span class="RenoLink">enable_current_exception</span>()</tt> is not used, and if the compiler does not provide the necessary support, then <tt><span class="RenoLink">current_exception</span>()</tt> may return an <tt><span class="RenoLink">exception_ptr</span></tt> that refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>. In this case, if the original exception object derives from <tt>boost::<span class="RenoLink">exception</span></tt>, t
hen the <tt>boost::<span class="RenoLink">exception</span></tt> sub-object of the <tt><span class="RenoLink">unknown_exception</span></tt> object is initialized by the <tt>boost::<span class="RenoLink">exception</span></tt> copy constructor.</li>
+<div><ul><li> It is unspecified whether the return values of two successive calls to <span class="RenoLink">current_exception</span> refer to the same exception object.</li>
+<li> Correct implementation of <span class="RenoLink">current_exception</span> may require compiler support, unless <span class="RenoLink">enable_current_exception</span> was used at the time the currently handled exception object was passed to throw. If <span class="RenoLink">enable_current_exception</span> was not used, and if the compiler does not provide the necessary support, then <span class="RenoLink">current_exception</span> may return an <span class="RenoLink">exception_ptr</span> that refers to an instance of <span class="RenoLink">unknown_exception</span>. In this case, if the original exception object derives from boost::<span class="RenoLink">exception</span>, then the boost::<span class="RenoLink">exception</
span> sub-object of the <span class="RenoLink">unknown_exception</span> object is initialized by the boost::<span class="RenoLink">exception</span> copy constructor.</li>
 </ul></div>
-</div><div class="RenoIncludeDIV"><h3>copy_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</tt></p>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>copy_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -365,50 +392,68 @@
     <span class="RenoLink">exception_ptr</span> <span class="RenoLink">copy_exception</span>( T const &amp; e );</span>
     }</pre>
 </div><h4>Effects:</h4>
-<p>As if <tt>try { throw e; } catch( ... ) { return <span class="RenoLink">current_exception</span>(); }</tt></p>
-</div><div class="RenoIncludeDIV"><h3>rethrow_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</tt></p>
+<p>As if try { throw e; } catch( ... ) { return <span class="RenoLink">current_exception</span>(); }</p>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>rethrow_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN"> void <span class="RenoLink">rethrow_exception</span>( <span class="RenoLink">exception_ptr</span> const &amp; ep );</span>
     }</pre>
 </div><h4>Precondition:</h4>
-<p><tt>ep</tt> shall not be null.</p>
+<p>ep shall not be null.</p>
 <h4>Throws:</h4>
-<p>The exception to which <tt>ep</tt> refers.</p>
-</div><div class="RenoIncludeDIV"><h3>unknown_exception</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</tt></p>
+<p>The exception to which ep refers.</p>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>unknown_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN"> class
     <span class="RenoLink">unknown_exception</span>:
         public std::exception
- public boost::exception
+ public boost::<span class="RenoLink">exception</span>
         {
         ---unspecified---
         };</span>
     }</pre>
-</div><p>This type is used by the <span class="RenoLink">cloning</span> support in Boost Exception. Please see <tt><span class="RenoLink">current_exception</span>()</tt>.</p>
+</div><p>This type is used by the <span class="RenoLink">exception_ptr</span> support in Boost Exception. Please see <span class="RenoLink">current_exception</span>.</p>
+</div><h2>Printing Diagnostic Information</h2>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>diagnostic_information</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/diagnostic_information.hpp</span>&gt;</p>
+<pre>namespace
+boost
+ {
+<span class="RenoIncludeSPAN"> std::string <span class="RenoLink">diagnostic_information</span>( std::exception const &amp; x );</span>
+ }</pre>
+</div><h4>Returns:</h4>
+<p>If dynamic_cast&lt;boost::<span class="RenoLink">exception</span> const *&gt;(&amp;x) is not null, the returned string is initialized by a call to <span class="RenoLink">exception::diagnostic_information</span>; otherwise, the returned string combines the output of x.what() and typeid(x).name().</p>
 </div><h2>Throwing Exceptions</h2>
-<div class="RenoIncludeDIV"><h3>throw_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/throw_exception.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>throw_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/throw_exception.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
-<span class="RenoIncludeSPAN">#ifdef BOOST_NO_EXCEPTIONS
+<span class="RenoIncludeSPAN"> #ifdef BOOST_NO_EXCEPTIONS
+
     void <span class="RenoLink">throw_exception</span>( std::exception const &amp; e ); // user defined
-#else
+
+ #else
+
     template &lt;class E&gt;
     void <span class="RenoLink">throw_exception</span>( E const &amp; e );
-#endif</span>
+
+ #endif</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>E</tt> must derive publicly from <tt>std::exception</tt>.</p>
+<p>E must derive publicly from std::exception.</p>
 <h4>Effects:</h4>
-<div><ul><li> If <tt>BOOST_NO_EXCEPTIONS</tt> is not defined, <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw boost::<span class="RenoLink">enable_current_exception</span>(boost::<span class="RenoLink">enable_error_info</span>(e))</tt>, unless <tt>BOOST_EXCEPTION_DISABLE</tt> is defined, in which case <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw e;</tt></li>
-<li> If <tt>BOOST_NO_EXCEPTIONS</tt> is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of <tt>throw_exception</tt> are allowed to assume that the function never returns; therefore, if the user-defined <tt>throw_exception</tt> returns, the behavior is undefined.</li>
+<div><ul><li> If BOOST_NO_EXCEPTIONS is not defined, boost::<span class="RenoLink">throw_exception</span>(e) is equivalent to throw boost::<span class="RenoLink">enable_current_exception</span>(boost::<span class="RenoLink">enable_error_info</span>(e)), unless BOOST_EXCEPTION_DISABLE is defined, in which case boost::<span class="RenoLink">throw_exception</span>(e) is equivalent to throw e;</li>
+<li> If BOOST_NO_EXCEPTIONS is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of <span class="RenoLink">throw_exception</span> are allowed to assume that the function never returns; therefore, if the user-defined <span class="RenoLink">throw_exception</span> returns, the behavior is undefined.</li>
 </ul></div>
 </div><!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->

Deleted: branches/proto/v4/libs/exception/doc/cloning.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/cloning.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Transporting of Exceptions between Threads</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-Boost
-</div>
-<h1>Boost Exception</h1>
-</div>
-<!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h2>Transporting of Exceptions between Threads</h2>
-<p>Boost Exception supports transporting of exception objects between threads through cloning. This system is similar to <span class="RenoLink">N2179</span>, but because Boost Exception can not rely on language support, the use of <tt><span class="RenoLink">enable_current_exception</span>()</tt> at the time of the throw is required in order to use cloning.</p>
-<h4>Note:</h4>
-<p>All exceptions emitted by the familiar function <tt>boost::<span class="RenoLink">throw_exception</span>()</tt> are guaranteed to derive from <tt>boost::<span class="RenoLink">exception</span></tt> and to support cloning.</p>
-<div class="RenoIncludeDIV"><h3>Using enable_current_exception() at the Time of the Throw</h3>
-<p>Here is how cloning can be enabled in a throw-expression (15.1):</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception/enable_current_exception.hpp</span>&gt;
-#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;
-#include &lt;stdio.h&gt;
-#include &lt;errno.h&gt;
-
-typedef boost::error_info&lt;struct tag_errno,int&gt; errno_info;
-
-class file_read_error: public boost::<span class="RenoLink">exception</span> { };
-
-void
-file_read( FILE * f, void * buffer, size_t size )
- {
- if( size!=fread(buffer,1,size,f) )
- throw boost::<span class="RenoLink">enable_current_exception</span>(file_read_error()) &lt;&lt;
- errno_info(errno);
- }</pre>
-</div><div class="RenoIncludeDIV"><h3>Cloning and Re-throwing an Exception</h3>
-<p>When you catch a <tt>boost::<span class="RenoLink">exception</span></tt>, you can call <tt><span class="RenoLink">current_exception</span>()</tt> to get an <tt><span class="RenoLink">exception_ptr</span></tt> object:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;
-#include &lt;boost/thread.hpp&gt;
-#include &lt;boost/bind.hpp&gt;
-
-void do_work(); //throws cloning-enabled boost::<span class="RenoLink">exception</span>s
-
-void
-worker_thread( boost::<span class="RenoLink">exception_ptr</span> &amp; error )
- {
- try
- {
- do_work();
- error = boost::<span class="RenoLink">exception_ptr</span>();
- }
- catch(
- ... )
- {
- error = boost::<span class="RenoLink">current_exception</span>();
- }
- }</pre>
-<p>In the above example, note that <tt><span class="RenoLink">current_exception</span>()</tt> captures the original type of the exception object. The exception can be thrown again using the <tt><span class="RenoLink">rethrow_exception</span>()</tt> function:</p>
-<pre>// ...continued
-
-void
-work()
- {
- boost::<span class="RenoLink">exception_ptr</span> error;
- boost::<span class="RenoLink">thread</span> t( boost::<span class="RenoLink">bind</span>(worker_thread,boost::<span class="RenoLink">ref</span>(error)) );
- t.<span class="RenoLink">join</span>();
- if( error )
- boost::<span class="RenoLink">rethrow_exception</span>(error);
- }</pre>
-<p><tt><span class="RenoLink">current_exception</span>()</tt> could fail to copy the original exception object in the following cases:</p>
-<div><ul><li> if there is not enough memory, in which case the returned <tt><span class="RenoLink">exception_ptr</span></tt> points to an instance of <tt>std::bad_alloc</tt>, or</li>
-<li> if <tt><span class="RenoLink">enable_current_exception</span>()</tt> was not used in the throw-expression passed to the original <tt>throw</tt> statement and the current implementation does not have the necessary compiler-specific support to copy the exception automatically, in which case the returned <tt><span class="RenoLink">exception_ptr</span></tt> points to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>.</li>
-</ul></div>
-<p>Regardless, the use of <tt><span class="RenoLink">current_exception</span>()</tt> and <tt><span class="RenoLink">rethrow_exception</span>()</tt> in the above examples is well-formed.</p>
-</div></div><h3>See also:</h3>
-<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a><a href="unknown_exception.html">unknown_exception<br/>
-</a></div>
-<!-- Copyright (c) 2006-2008 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) -->
-<div id="footer">
-<p>&nbsp;</p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>

Modified: branches/proto/v4/libs/exception/doc/copy_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/copy_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/copy_exception.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,8 +19,9 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>copy_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>copy_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -28,11 +29,13 @@
     <span class="RenoLink">exception_ptr</span> <span class="RenoLink">copy_exception</span>( T const &amp; e );</span>
     }</pre>
 </div><h4>Effects:</h4>
-<p>As if <tt>try { throw e; } catch( ... ) { return <span class="RenoLink">current_exception</span>(); }</tt></p>
-</div><h3>See also:</h3>
+<p>As if try { throw e; } catch( ... ) { return <span class="RenoLink">current_exception</span>(); }</p>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a><a href="exception_ptr.html">exception_ptr<br/>
+</a><a href="exception_cloning_hpp.html">boost/exception_ptr.hpp<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/current_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/current_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/current_exception.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,30 +19,35 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>current_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>current_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN"> <span class="RenoLink">exception_ptr</span> <span class="RenoLink">current_exception</span>();</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p>The <tt><span class="RenoLink">current_exception</span>()</tt> function must not be called outside of a <tt>catch</tt> block.</p>
+<p>The <span class="RenoLink">current_exception</span> function must not be called outside of a catch block.</p>
 <h4>Returns:</h4>
-<div><ul><li> An <tt><span class="RenoLink">exception_ptr</span></tt> that refers to the currently handled exception or a copy of the currently handled exception.</li>
-<li> If the function needs to allocate memory and the attempt fails, it returns an <tt><span class="RenoLink">exception_ptr</span></tt> that refers to an instance of <tt>std::bad_alloc</tt>.</li>
+<div><ul><li> An <span class="RenoLink">exception_ptr</span> that refers to the currently handled exception or a copy of the currently handled exception.</li>
+<li> If the function needs to allocate memory and the attempt fails, it returns an <span class="RenoLink">exception_ptr</span> that refers to an instance of std::bad_alloc.</li>
 </ul></div>
+<h4>Throws:</h4>
+<p>Nothing.</p>
 <h4>Notes:</h4>
-<div><ul><li> It is unspecified whether the return values of two successive calls to <tt><span class="RenoLink">current_exception</span>()</tt> refer to the same exception object.</li>
-<li> Correct implementation of <tt><span class="RenoLink">current_exception</span>()</tt> may require compiler support, unless <tt><span class="RenoLink">enable_current_exception</span>()</tt> is used at the time the currently handled exception object was passed to <tt>throw</tt>. If <tt><span class="RenoLink">enable_current_exception</span>()</tt> is not used, and if the compiler does not provide the necessary support, then <tt><span class="RenoLink">current_exception</span>()</tt> may return an <tt><span class="RenoLink">exception_ptr</span></tt> that refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>. In this case, if the original exception object derives from <tt>boost::<span class="RenoLink">exception</span></tt>, t
hen the <tt>boost::<span class="RenoLink">exception</span></tt> sub-object of the <tt><span class="RenoLink">unknown_exception</span></tt> object is initialized by the <tt>boost::<span class="RenoLink">exception</span></tt> copy constructor.</li>
+<div><ul><li> It is unspecified whether the return values of two successive calls to <span class="RenoLink">current_exception</span> refer to the same exception object.</li>
+<li> Correct implementation of <span class="RenoLink">current_exception</span> may require compiler support, unless <span class="RenoLink">enable_current_exception</span> was used at the time the currently handled exception object was passed to throw. If <span class="RenoLink">enable_current_exception</span> was not used, and if the compiler does not provide the necessary support, then <span class="RenoLink">current_exception</span> may return an <span class="RenoLink">exception_ptr</span> that refers to an instance of <span class="RenoLink">unknown_exception</span>. In this case, if the original exception object derives from boost::<span class="RenoLink">exception</span>, then the boost::<span class="RenoLink">exception</
span> sub-object of the <span class="RenoLink">unknown_exception</span> object is initialized by the boost::<span class="RenoLink">exception</span> copy constructor.</li>
 </ul></div>
-</div><h3>See also:</h3>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_cloning_hpp.html">boost/exception_ptr.hpp<br/>
 </a><a href="copy_exception.html">copy_exception<br/>
 </a><a href="enable_current_exception.html">enable_current_exception<br/>
-</a><a href="exception_ptr.html">exception_ptr<br/>
 </a><a href="unknown_exception.html">unknown_exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/enable_current_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/enable_current_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/enable_current_exception.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,8 +19,9 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>enable_current_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/enable_current_exception.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>enable_current_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/enable_current_exception.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -28,11 +29,11 @@
     ---unspecified--- <span class="RenoLink">enable_current_exception</span>( T const &amp; e );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>T</tt> must have an accessible no-throw copy constructor</p>
+<p>T must be of user-defined type with an accessible no-throw copy constructor.</p>
 <h4>Returns:</h4>
-<p>An object of <i>unspecified</i> type which derives publicly from <tt>T</tt>. That is, the returned object can be intercepted by a <tt>catch(T &amp;)</tt>.</p>
+<p>An object of <i>unspecified</i> type which derives publicly from T. That is, the returned object can be intercepted by a catch(T &amp;).</p>
 <h4>Description:</h4>
-<p>This function is designed to be used directly in a throw-expression to enable the cloning support in Boost Exception. For example:</p>
+<p>This function is designed to be used directly in a throw-expression to enable the <span class="RenoLink">exception_ptr</span> support in Boost Exception. For example:</p>
 <pre>class
 my_exception:
     public std::exception
@@ -41,15 +42,18 @@
 
 ....
 throw boost::<span class="RenoLink">enable_current_exception</span>(my_exception());</pre>
-<p>Unless <tt><span class="RenoLink">enable_current_exception</span>()</tt> is called at the time an exception object is used in a throw-expression, an attempt to copy it using <tt><span class="RenoLink">current_exception</span>()</tt> may return an <tt><span class="RenoLink">exception_ptr</span></tt> which refers to an instance of <tt><span class="RenoLink">unknown_exception</span></tt>. See <tt><span class="RenoLink">current_exception</span>()</tt> for details.</p>
+<p>Unless <span class="RenoLink">enable_current_exception</span> is called at the time an exception object is used in a throw-expression, an attempt to copy it using <span class="RenoLink">current_exception</span> may return an <span class="RenoLink">exception_ptr</span> which refers to an instance of <span class="RenoLink">unknown_exception</span>. See <span class="RenoLink">current_exception</span> for details.</p>
 <h4>Note:</h4>
-<p>Instead of using the <tt>throw</tt> keyword directly, it is preferable to call <tt>boost::<span class="RenoLink">throw_exception</span>()</tt>. This is guaranteed to throw an exception that derives from <tt>boost::<span class="RenoLink">exception</span></tt> and supports cloning.</p>
-</div><h3>See also:</h3>
+<p>Instead of using the throw keyword directly, it is preferable to call boost::<span class="RenoLink">throw_exception</span>. This is guaranteed to throw an exception that derives from boost::<span class="RenoLink">exception</span> and supports the <span class="RenoLink">exception_ptr</span> functionality.</p>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_enable_exception_cloning_hpp.html">boost/exception/enable_current_exception.hpp<br/>
 </a><a href="current_exception.html">current_exception<br/>
-</a><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
+</a><a href="tutorial_exception_ptr.html">Transporting of Exceptions Between Threads<br/>
 </a><a href="throw_exception.html">throw_exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/enable_error_info.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/enable_error_info.html (original)
+++ branches/proto/v4/libs/exception/doc/enable_error_info.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,8 +19,9 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>enable_error_info()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/enable_error_info.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>enable_error_info</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/enable_error_info.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -28,16 +29,21 @@
     ---unspecified--- <span class="RenoLink">enable_error_info</span>( T const &amp; x );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>T</tt> must be a user-defined type with accessible no-throw copy constructor.</p>
+<p>T must be a user-defined type with accessible no-throw copy constructor as per (15.5.1).</p>
 <h4>Returns:</h4>
-<p>An object of unspecified type with no-throw copy semantics, which derives publicly from both <tt>T</tt>, and class <tt>boost::<span class="RenoLink">exception</span></tt>. The <tt>T</tt> sub-object is initialized from <tt>x</tt> by the <tt>T</tt> copy constructor. If <tt>T</tt> already derives from <tt>boost::<span class="RenoLink">exception</span></tt>, then the type of the returned object does not derive <tt>boost::<span class="RenoLink">exception</span></tt>.</p>
+<div><ul><li> If T derives from boost::<span class="RenoLink">exception</span>, the returned object is of type T and is a copy of x.</li>
+<li> Otherwise, the returned object is of an unspecified type that derives publicly from both T and boost::<span class="RenoLink">exception</span>. The T sub-object is initialized from x by the T copy constructor.</li>
+</ul></div>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-</div><h3>See also:</h3>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a><a href="using_enable_error_info.html">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
+</a><a href="exception_enable_error_info_hpp.html">boost/exception/enable_error_info.hpp<br/>
+</a><a href="tutorial_enable_error_info.html">Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
 </a><a href="throw_exception.html">throw_exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/error_info.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/error_info.html (original)
+++ branches/proto/v4/libs/exception/doc/error_info.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,8 +19,9 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>error_info</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>error_info</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -29,36 +30,36 @@
     <span class="RenoLink">error_info</span>
         {
         public:
-
+
         typedef T value_type;
-
+
         error_info( value_type const &amp; );
-
- private:
-
- ---unspecified---
         };</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>T</tt> must have accessible copy constructor and must not be a reference.</p>
+<p>T must have accessible copy constructor and must not be a reference (there is no requirement that T's copy constructor does not throw.)</p>
 <h4>Description:</h4>
-<p>This class template is used to associate a <tt>Tag</tt> type with a value type <tt>T</tt>. Objects of type <tt><span class="RenoLink">error_info</span>&lt;Tag,T&gt;</tt> can be passed to <tt><span class="RenoLink">operator<<</span>()</tt> to be stored in objects of type <tt>boost::<span class="RenoLink">exception</span></tt>.</p>
+<p>This class template is used to associate a Tag type with a value type T. Objects of type <span class="RenoLink">error_info</span>&lt;Tag,T&gt; can be passed to <span class="RenoLink">operator<<</span> to be stored in objects of type boost::<span class="RenoLink">exception</span>.</p>
 <h4>Note:</h4>
-<p>The header <tt>&lt;<span class="RenoLink">boost/exception/error_info.hpp</span>&gt;</tt> provides a declaration of the <tt><span class="RenoLink">error_info</span></tt> template, which is sufficient for the purpose of <tt>typedef</tt>ing an instance for specific <tt>Tag</tt> and <tt>T</tt>, like this:</p>
+<p>The header &lt;<span class="RenoLink">boost/exception/error_info.hpp</span>&gt; provides a declaration of the <span class="RenoLink">error_info</span> template, which is sufficient for the purpose of typedefing an instance for specific Tag and T, like this:</p>
 <pre>#include &lt;<span class="RenoLink">boost/exception/error_info.hpp</span>&gt;
 
 typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_errno,int&gt; errno_info;</pre>
-<p>Of course, to actually add an <tt>errno_info</tt> object to exceptions using <tt><span class="RenoLink">operator<<</span>()</tt>, or to retrieve it using <tt><span class="RenoLink">get_error_info</span>()</tt>, you must first <tt>#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</tt>.</p>
-</div><h3>See also:</h3>
+<p>Of course, to actually add an <span class="RenoLink">error_info</span> object to <span class="RenoLink">exceptions</span> using <span class="RenoLink">operator<<</span>, or to retrieve it using <span class="RenoLink">get_error_info</span>, you must first #include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;.</p>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="BOOST_ERROR_INFO.html">BOOST_ERROR_INFO<br/>
 </a><a href="boost-exception.html">Boost Exception<br/>
 </a><a href="exception_error_info_value_hpp.html">boost/exception/error_info.hpp<br/>
+</a><a href="exception_error_info_hpp.html">boost/exception/info.hpp<br/>
+</a><a href="tutorial_diagnostic_information.html">Diagnostic Information<br/>
 </a><a href="exception.html">exception<br/>
 </a><a href="get_error_info.html">get_error_info<br/>
+</a><a href="tutorial_enable_error_info.html">Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
 </a><a href="operator_shl_exception.html">operator&lt;&lt;/exception<br/>
-</a><a href="using_enable_error_info.html">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
-</a><a href="logging.html">Tutorial: Logging of boost::exception Objects<br/>
+</a><a href="operator_shl_tuple.html">operator&lt;&lt;/tuple<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception.html (original)
+++ branches/proto/v4/libs/exception/doc/exception.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,8 +19,9 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h2>exception</h2>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/exception.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/exception.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -28,59 +29,68 @@
     <span class="RenoLink">exception</span>
         {
         public:
-
-<span class="RenoIncludeSPAN"> virtual char const * <span class="RenoLink">what</span>() const throw();</span>
-
+
+ <span class="RenoIncludeSPAN"> virtual char const * <span class="RenoLink">diagnostic_information</span>() const throw();</span>
+
         protected:
-
-<span class="RenoIncludeSPAN"> <span class="RenoLink">exception</span>();
- <span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</span>
-<span class="RenoIncludeSPAN"> <span class="RenoLink">~exception</span>();</span>
-
- private:
-
- ---unspecified---
+
+ <span class="RenoIncludeSPAN"> <span class="RenoLink">exception</span>();
+ <span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</span>
+ <span class="RenoIncludeSPAN"> <span class="RenoLink">~exception</span>();</span>
         };</span>
     }</pre>
-</div><p>Class <tt>boost::<span class="RenoLink">exception</span></tt> is designed to be used as a universal base for user-defined exception types.</p>
-<p>An object of any type deriving from <tt>boost::<span class="RenoLink">exception</span></tt> can store data of arbitrary types, using the <tt><span class="RenoLink">error_info</span></tt> wrapper and <tt><span class="RenoLink">operator<<</span>()</tt>.</p>
-<p>To retrieve data from a <tt>boost::<span class="RenoLink">exception</span></tt> object, use the <tt><span class="RenoLink">get_error_info</span>()</tt> function template.</p>
-<div class="RenoIncludeDIV"><div class="RenoIncludeDIV"><h3>exception constructors</h3>
-<div class="RenoIncludeDIV"><pre> <span class="RenoLink">exception</span>();
- <span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</pre>
+</div><p>Class boost::<span class="RenoLink">exception</span> is designed to be used as a universal base for user-defined exception types.</p>
+<p>An object of any type deriving from boost::<span class="RenoLink">exception</span> can store data of arbitrary types, using the <span class="RenoLink">error_info</span> wrapper and <span class="RenoLink">operator<<</span>.</p>
+<p>To retrieve data from a boost::<span class="RenoLink">exception</span> object, use the <span class="RenoLink">get_error_info</span> function template.</p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception::exception</h3>
+</div>
+<div class="RenoIncludeDIV"><pre><span class="RenoLink">exception</span>();
+<span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</pre>
 </div><h4>Effects:</h4>
-<div><ul><li> Default constructor: initializes an empty <tt>boost::<span class="RenoLink">exception</span></tt> object.</li>
-<li> Copy constructor: initializes a <tt>boost::<span class="RenoLink">exception</span></tt> object which shares with <tt>x</tt> all data added through <tt><span class="RenoLink">operator<<</span>()</tt>, including data that is added at a future time.</li>
+<div><ul><li> Default constructor: initializes an empty boost::<span class="RenoLink">exception</span> object.</li>
+<li> Copy constructor: initializes a boost::<span class="RenoLink">exception</span> object which shares with x all data added through <span class="RenoLink">operator<<</span>, including data that is added at a future time.</li>
 </ul></div>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-</div><div class="RenoIncludeDIV"><h3>exception destructor</h3>
-<div class="RenoIncludeDIV"><pre> <span class="RenoLink">~exception</span>();</pre>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception::~exception</h3>
+</div>
+<div class="RenoIncludeDIV"><pre><span class="RenoLink">~exception</span>();</pre>
 </div><h4>Effects:</h4>
-<p>Frees all resources associated with a <tt>boost::<span class="RenoLink">exception</span></tt> object.</p>
+<p>Frees all resources associated with a boost::<span class="RenoLink">exception</span> object.</p>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-</div><div class="RenoIncludeDIV"><h3>exception::what()</h3>
-<div class="RenoIncludeDIV"><pre> virtual char const * <span class="RenoLink">what</span>() const throw();</pre>
+</div><div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception::diagnostic_information</h3>
+</div>
+<div class="RenoIncludeDIV"><pre>virtual char const * <span class="RenoLink">diagnostic_information</span>() const throw();</pre>
 </div><h4>Returns:</h4>
-<p>An string representation of all data stored in the <tt>boost::<span class="RenoLink">exception</span></tt> object by the <tt><span class="RenoLink">operator<<</span>()</tt> function. See "<span class="RenoLink">Tutorial: Logging of boost::exception Objects</span>" for details.</p>
+<p>A string representation of all data stored in the boost::<span class="RenoLink">exception</span> object by the <span class="RenoLink">operator<<</span> function. See "<span class="RenoLink">Diagnostic Information</span>" for details.</p>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-<h4>Note:</h4>
-<p>The return value remains valid until the exception object from which it is obtained is destroyed or modified.</p>
-</div></div></div><h3>See also:</h3>
+<h4>Notes:</h4>
+<div><ul><li>The return value remains valid until the exception object from which it was obtained is destroyed or modified.</li>
+<li>The header <span class="RenoLink">boost/exception/diagnostic_information.hpp</span> provides a namespace-scope function <span class="RenoLink">diagnostic_information</span> which takes a std::exception. It calls <span class="RenoLink">exception::diagnostic_information</span> if its argument can be converted to boost::<span class="RenoLink">exception</span>; otherwise it returns a string that combines the value of std::exception::what and the exception's dynamic type.</li>
+</ul></div>
+</div></div><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="BOOST_ERROR_INFO.html">BOOST_ERROR_INFO<br/>
 </a><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_exception_hpp.html">boost/exception/exception.hpp<br/>
 </a><a href="current_exception.html">current_exception<br/>
+</a><a href="tutorial_diagnostic_information.html">Diagnostic Information<br/>
+</a><a href="diagnostic_information.html">diagnostic_information<br/>
 </a><a href="enable_current_exception.html">enable_current_exception<br/>
 </a><a href="enable_error_info.html">enable_error_info<br/>
 </a><a href="error_info.html">error_info<br/>
+</a><a href="exception_diagnostic_information.html">exception::diagnostic_information<br/>
+</a><a href="exception_constructors.html">exception::exception<br/>
+</a><a href="exception_destructor.html">exception::~exception<br/>
 </a><a href="get_error_info.html">get_error_info<br/>
+</a><a href="tutorial_enable_error_info.html">Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
 </a><a href="operator_shl_exception.html">operator&lt;&lt;/exception<br/>
-</a><a href="using_enable_error_info.html">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
-</a><a href="logging.html">Tutorial: Logging of boost::exception Objects<br/>
-</a><a href="transporting_data.html">Tutorial: Transporting of Arbitrary Data to the Catch Site<br/>
-</a><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
+</a><a href="operator_shl_tuple.html">operator&lt;&lt;/tuple<br/>
+</a><a href="tutorial_transporting_data.html">Transporting of Arbitrary Data to the Catch Site<br/>
+</a><a href="tutorial_exception_ptr.html">Transporting of Exceptions Between Threads<br/>
+</a><a href="unknown_exception.html">unknown_exception<br/>
 </a></div>
 <!-- Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. -->
 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->

Modified: branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_cloning_hpp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,14 +19,42 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h3>boost/exception_ptr.hpp</h3>
-<p>This header file contains the following definitions/declarations:</p>
-<div class="RenoPageList"><a href="copy_exception.html">copy_exception<br/>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h2>boost/exception_ptr.hpp</h2>
+</div>
+<h3>Synopsis</h3>
+<div class="RenoIncludeDIV"><pre>#include &lt;<span class="RenoLink">boost/exception/exception.hpp</span>&gt;
+
+namespace
+boost
+ {
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">class
+ <span class="RenoLink">unknown_exception</span>:
+ public std::exception
+ public boost::<span class="RenoLink">exception</span>
+ {
+ ---unspecified---
+ };</span>
+
+ <span class="RenoIncludeSPAN">typedef ---unspecified--- <span class="RenoLink">exception_ptr</span>;</span>
+
+ <span class="RenoIncludeSPAN">template &lt;class T&gt;
+ <span class="RenoLink">exception_ptr</span> <span class="RenoLink">copy_exception</span>( T const &amp; e );</span>
+
+ <span class="RenoIncludeSPAN"><span class="RenoLink">exception_ptr</span> <span class="RenoLink">current_exception</span>();</span>
+
+ <span class="RenoIncludeSPAN">void <span class="RenoLink">rethrow_exception</span>( <span class="RenoLink">exception_ptr</span> const &amp; ep );</span></span>
+ }</pre>
+</div></div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
+<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_hpp.html">boost/exception.hpp<br/>
+</a><a href="copy_exception.html">copy_exception<br/>
 </a><a href="current_exception.html">current_exception<br/>
 </a><a href="exception_ptr.html">exception_ptr<br/>
 </a><a href="rethrow_exception.html">rethrow_exception<br/>
 </a><a href="unknown_exception.html">unknown_exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception_constructors.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_constructors.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_constructors.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,18 +19,21 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>exception constructors</h3>
-<div class="RenoIncludeDIV"><pre> <span class="RenoLink">exception</span>();
- <span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</pre>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception::exception</h3>
+</div>
+<div class="RenoIncludeDIV"><pre><span class="RenoLink">exception</span>();
+<span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</pre>
 </div><h4>Effects:</h4>
-<div><ul><li> Default constructor: initializes an empty <tt>boost::<span class="RenoLink">exception</span></tt> object.</li>
-<li> Copy constructor: initializes a <tt>boost::<span class="RenoLink">exception</span></tt> object which shares with <tt>x</tt> all data added through <tt><span class="RenoLink">operator<<</span>()</tt>, including data that is added at a future time.</li>
+<div><ul><li> Default constructor: initializes an empty boost::<span class="RenoLink">exception</span> object.</li>
+<li> Copy constructor: initializes a boost::<span class="RenoLink">exception</span> object which shares with x all data added through <span class="RenoLink">operator<<</span>, including data that is added at a future time.</li>
 </ul></div>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-</div><h3>See also:</h3>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="exception.html">exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception_destructor.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_destructor.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_destructor.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,15 +19,18 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>exception destructor</h3>
-<div class="RenoIncludeDIV"><pre> <span class="RenoLink">~exception</span>();</pre>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception::~exception</h3>
+</div>
+<div class="RenoIncludeDIV"><pre><span class="RenoLink">~exception</span>();</pre>
 </div><h4>Effects:</h4>
-<p>Frees all resources associated with a <tt>boost::<span class="RenoLink">exception</span></tt> object.</p>
+<p>Frees all resources associated with a boost::<span class="RenoLink">exception</span> object.</p>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-</div><h3>See also:</h3>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="exception.html">exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_enable_error_info_hpp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,10 +19,24 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h3>boost/exception/enable_error_info.hpp</h3>
-<p>This header file contains the following definitions/declarations:</p>
-<div class="RenoPageList"><a href="enable_error_info.html">enable_error_info<br/>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h2>boost/exception/enable_error_info.hpp</h2>
+</div>
+<h3>Synopsis</h3>
+<div class="RenoIncludeDIV"><pre>#include &lt;<span class="RenoLink">boost/exception/exception.hpp</span>&gt;
+
+namespace
+boost
+ {
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">template &lt;class T&gt;
+ ---unspecified--- <span class="RenoLink">enable_error_info</span>( T const &amp; x );</span></span>
+ }</pre>
+</div></div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
+<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="throw_exception_hpp.html">boost/throw_exception.hpp<br/>
+</a><a href="enable_error_info.html">enable_error_info<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_enable_exception_cloning_hpp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,10 +19,24 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h3>boost/exception/enable_current_exception.hpp</h3>
-<p>This header file contains the following definitions/declarations:</p>
-<div class="RenoPageList"><a href="enable_current_exception.html">enable_current_exception<br/>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h2>boost/exception/enable_current_exception.hpp</h2>
+</div>
+<h3>Synopsis</h3>
+<div class="RenoIncludeDIV"><pre>#include &lt;<span class="RenoLink">boost/exception/exception.hpp</span>&gt;
+
+namespace
+boost
+ {
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">template &lt;class T&gt;
+ ---unspecified--- <span class="RenoLink">enable_current_exception</span>( T const &amp; e );</span></span>
+ }</pre>
+</div></div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
+<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="throw_exception_hpp.html">boost/throw_exception.hpp<br/>
+</a><a href="enable_current_exception.html">enable_current_exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception_error_info_group_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_error_info_group_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_error_info_group_hpp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,10 +19,28 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h3>boost/exception/info_tuple.hpp</h3>
-<p>This header file contains the following definitions/declarations:</p>
-<div class="RenoPageList"><a href="operator_shl_exception.html">operator&lt;&lt;/exception<br/>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h2>boost/exception/info_tuple.hpp</h2>
+</div>
+<h3>Synopsis</h3>
+<div class="RenoIncludeDIV"><pre>#include &lt;boost/tuple/tuple.hpp&gt;
+
+namespace
+boost
+ {
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">template &lt;class E, class Tag1, class T1, ..., class TagN, class TN&gt;
+ E const &amp; <span class="RenoLink">operator<<</span>( E const &amp; x,
+ <span class="RenoLink">tuple</span>&lt;
+ <span class="RenoLink">error_info</span>&lt;Tag1,T1&gt;,
+ ...,
+ <span class="RenoLink">error_info</span>&lt;TagN,TN&gt; &gt; const &amp; v );</span></span>
+ }</pre>
+</div></div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
+<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_hpp.html">boost/exception.hpp<br/>
+</a><a href="operator_shl_tuple.html">operator&lt;&lt;/tuple<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception_error_info_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_error_info_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_error_info_hpp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,13 +19,52 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h3>boost/exception/info.hpp</h3>
-<p>This header file contains the following definitions/declarations:</p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h2>boost/exception/info.hpp</h2>
+</div>
+<h3>Synopsis</h3>
+<div class="RenoIncludeDIV"><pre>#include &lt;<span class="RenoLink">boost/exception/exception.hpp</span>&gt;
+#include &lt;boost/current_function.hpp&gt;
+#include &lt;boost/shared_ptr.hpp&gt;
+
+namespace
+boost
+ {
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">template &lt;class Tag,class T&gt;
+ class
+ <span class="RenoLink">error_info</span>
+ {
+ public:
+
+ typedef T value_type;
+
+ error_info( value_type const &amp; );
+ };</span>
+
+ <span class="RenoIncludeSPAN">template &lt;class ErrorInfo,class E&gt;
+ <span class="RenoLink">shared_ptr</span>&lt;typename ErrorInfo::value_type const&gt; <span class="RenoLink">get_error_info</span>( E const &amp; x );</span>
+
+ <span class="RenoIncludeSPAN">typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_function,char const *&gt; throw_function;
+ typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_file,char const *&gt; throw_file;
+ typedef <span class="RenoLink">error_info</span>&lt;struct tag_throw_line,int&gt; throw_line;
+
+ #define <span class="RenoLink">BOOST_ERROR_INFO</span>\
+ ::boost::throw_function(BOOST_CURRENT_FUNCTION) &lt;&lt;\
+ ::boost::throw_file(__FILE__) &lt;&lt;\
+ ::boost::throw_line((int)__LINE__)</span>
+
+ <span class="RenoIncludeSPAN">template &lt;class E, class Tag, class T&gt;
+ E const &amp; <span class="RenoLink">operator<<</span>( E const &amp; x, <span class="RenoLink">error_info</span>&lt;Tag,T&gt; const &amp; v );</span></span>
+ }</pre>
+</div></div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="BOOST_ERROR_INFO.html">BOOST_ERROR_INFO<br/>
+</a><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_hpp.html">boost/exception.hpp<br/>
 </a><a href="error_info.html">error_info<br/>
 </a><a href="get_error_info.html">get_error_info<br/>
 </a><a href="operator_shl_exception.html">operator&lt;&lt;/exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception_error_info_value_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_error_info_value_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_error_info_value_hpp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,14 +19,21 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h3>boost/exception/error_info.hpp</h3>
-<p>This header file contains the following declaration:</p>
-<pre>namespace
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h2>boost/exception/error_info.hpp</h2>
+</div>
+<h3>Synopsis</h3>
+<div class="RenoIncludeDIV"><pre>namespace
 boost
     {
- template &lt;class Tag, class T&gt;
- class <span class="RenoLink">error_info</span>;
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">template &lt;class Tag,class T&gt;
+ class <span class="RenoLink">error_info</span>;</span></span>
     }</pre>
+</div></div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
+<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="error_info.html">error_info<br/>
+</a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception_exception_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_exception_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_exception_hpp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,10 +19,36 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h3>boost/exception/exception.hpp</h3>
-<p>This header file contains the following definitions/declarations:</p>
-<div class="RenoPageList"><a href="exception.html">exception<br/>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h2>boost/exception/exception.hpp</h2>
+</div>
+<h3>Synopsis</h3>
+<div class="RenoIncludeDIV"><pre>namespace
+boost
+ {
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">class
+ <span class="RenoLink">exception</span>
+ {
+ public:
+
+ <span class="RenoIncludeSPAN"> virtual char const * <span class="RenoLink">diagnostic_information</span>() const throw();</span>
+
+ protected:
+
+ <span class="RenoIncludeSPAN"> <span class="RenoLink">exception</span>();
+ <span class="RenoLink">exception</span>( <span class="RenoLink">exception</span> const &amp; x );</span>
+ <span class="RenoIncludeSPAN"> <span class="RenoLink">~exception</span>();</span>
+ };</span></span>
+ }</pre>
+</div></div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
+<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_enable_exception_cloning_hpp.html">boost/exception/enable_current_exception.hpp<br/>
+</a><a href="exception_enable_error_info_hpp.html">boost/exception/enable_error_info.hpp<br/>
+</a><a href="exception_error_info_hpp.html">boost/exception/info.hpp<br/>
+</a><a href="exception_cloning_hpp.html">boost/exception_ptr.hpp<br/>
+</a><a href="exception.html">exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_hpp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,18 +19,21 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h3>boost/exception.hpp</h3>
-<p>This header file includes all other header files of Boost Exception:</p>
-<div class="RenoPageList"><a href="exception_hpp.html">boost/exception.hpp<br/>
-</a><a href="exception_enable_exception_cloning_hpp.html">boost/exception/enable_current_exception.hpp<br/>
-</a><a href="exception_enable_error_info_hpp.html">boost/exception/enable_error_info.hpp<br/>
-</a><a href="exception_error_info_value_hpp.html">boost/exception/error_info.hpp<br/>
-</a><a href="exception_exception_hpp.html">boost/exception/exception.hpp<br/>
-</a><a href="exception_error_info_hpp.html">boost/exception/info.hpp<br/>
-</a><a href="exception_error_info_group_hpp.html">boost/exception/info_tuple.hpp<br/>
-</a><a href="exception_cloning_hpp.html">boost/exception_ptr.hpp<br/>
-</a><a href="throw_exception_hpp.html">boost/throw_exception.hpp<br/>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h2>boost/exception.hpp</h2>
+</div>
+<h3>Synopsis</h3>
+<div class="RenoIncludeDIV"><pre><span class="RenoIncludeSPAN">#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;
+#include &lt;<span class="RenoLink">boost/exception/info_tuple.hpp</span>&gt;
+#include &lt;<span class="RenoLink">boost/exception/diagnostic_information.hpp</span>&gt;
+#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;
+#include &lt;<span class="RenoLink">boost/throw_exception.hpp</span>&gt;</span></pre>
+</div></div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
+<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="tutorial_diagnostic_information.html">Diagnostic Information<br/>
+</a><a href="tutorial_enable_error_info.html">Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/exception_ptr.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_ptr.html (original)
+++ branches/proto/v4/libs/exception/doc/exception_ptr.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,25 +19,28 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>exception_ptr</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>exception_ptr</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN"> typedef ---unspecified--- <span class="RenoLink">exception_ptr</span>;</span>
     }</pre>
-</div><p>The <tt><span class="RenoLink">exception_ptr</span></tt> type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; <tt><span class="RenoLink">exception_ptr</span></tt>'s operations do not throw.</p>
-<p>Two instances of <tt><span class="RenoLink">exception_ptr</span></tt> are equivalent and compare equal if and only if they refer to the same exception.</p>
-<p>The default constructor of <tt><span class="RenoLink">exception_ptr</span></tt> produces the null value of the type. The null value is equivalent only to itself.</p>
-<h4>Note:</h4>
-<p><tt><span class="RenoLink">exception_ptr</span></tt> objects are returned by <tt><span class="RenoLink">current_exception</span>()</tt> and <tt><span class="RenoLink">copy_exception</span>()</tt>.</p>
-</div><h3>See also:</h3>
+</div><p>The <span class="RenoLink">exception_ptr</span> type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; <span class="RenoLink">exception_ptr</span>'s operations do not throw.</p>
+<p>Two instances of <span class="RenoLink">exception_ptr</span> are equivalent and compare equal if and only if they refer to the same exception.</p>
+<p>The default constructor of <span class="RenoLink">exception_ptr</span> produces the null value of the type. The null value is equivalent only to itself.</p>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_cloning_hpp.html">boost/exception_ptr.hpp<br/>
 </a><a href="copy_exception.html">copy_exception<br/>
 </a><a href="current_exception.html">current_exception<br/>
 </a><a href="enable_current_exception.html">enable_current_exception<br/>
 </a><a href="rethrow_exception.html">rethrow_exception<br/>
+</a><a href="unknown_exception.html">unknown_exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Deleted: branches/proto/v4/libs/exception/doc/exception_what.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/exception_what.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>exception::what</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-Boost
-</div>
-<h1>Boost Exception</h1>
-</div>
-<!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>exception::what()</h3>
-<div class="RenoIncludeDIV"><pre> virtual char const * <span class="RenoLink">what</span>() const throw();</pre>
-</div><h4>Returns:</h4>
-<p>An string representation of all data stored in the <tt>boost::<span class="RenoLink">exception</span></tt> object by the <tt><span class="RenoLink">operator<<</span>()</tt> function. See "<span class="RenoLink">Tutorial: Logging of boost::exception Objects</span>" for details.</p>
-<h4>Throws:</h4>
-<p>Nothing.</p>
-<h4>Note:</h4>
-<p>The return value remains valid until the exception object from which it is obtained is destroyed or modified.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="exception.html">exception<br/>
-</a><a href="logging.html">Tutorial: Logging of boost::exception Objects<br/>
-</a></div>
-<!-- Copyright (c) 2006-2008 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) -->
-<div id="footer">
-<p>&nbsp;</p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>

Modified: branches/proto/v4/libs/exception/doc/get_error_info.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/get_error_info.html (original)
+++ branches/proto/v4/libs/exception/doc/get_error_info.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,8 +19,9 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>get_error_info()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>get_error_info</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
@@ -28,16 +29,23 @@
     <span class="RenoLink">shared_ptr</span>&lt;typename ErrorInfo::value_type const&gt; <span class="RenoLink">get_error_info</span>( E const &amp; x );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p>The type of the <tt>x</tt> object must derive from <tt>boost::<span class="RenoLink">exception</span></tt>; <tt>ErrorInfo</tt> must be an instance of the <tt><span class="RenoLink">error_info</span></tt> template.</p>
+<div><ul><li> ErrorInfo must be an instance of the <span class="RenoLink">error_info</span> template.</li>
+<li> E must be polymorphic.</li>
+</ul></div>
 <h4>Returns:</h4>
-<p>If <tt>x</tt> does not store an object of type <tt>ErrorInfo</tt>, returns an empty <tt><span class="RenoLink">shared_ptr</span></tt>; otherwise returns pointer to the stored value. Use <tt><span class="RenoLink">operator<<</span>()</tt> to store values in exception objects.</p>
+<div><ul><li> If dynamic_cast&lt;boost::<span class="RenoLink">exception</span> const *&gt;(&amp;x) is 0, or if x does not store an object of type ErrorInfo, the returned value is an empty shared_ptr.</li>
+<li> Otherwise, the returned shared_ptr points to the stored value (use <span class="RenoLink">operator<<</span> to store values in exception objects.) The shared_ptr is valid even after x has been destroyed.</li>
+</ul></div>
 <h4>Throws:</h4>
 <p>Nothing.</p>
-</div><h3>See also:</h3>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_error_info_hpp.html">boost/exception/info.hpp<br/>
 </a><a href="error_info.html">error_info<br/>
 </a><a href="exception.html">exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Deleted: branches/proto/v4/libs/exception/doc/logging.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/logging.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Logging of boost::exception Objects</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-Boost
-</div>
-<h1>Boost Exception</h1>
-</div>
-<!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h2>Logging of boost::exception Objects</h2>
-<p>Class <tt>boost::<span class="RenoLink">exception</span></tt> provides a virtual member function <tt><span class="RenoLink">what</span>()</tt>, with a signature identical to the familiar <tt>std::exception::what()</tt> function. The default implementation returns a string value that is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception.hpp</span>&gt;
-#include &lt;iostream&gt;
-
-void f(); //throws unknown types that derive from boost::<span class="RenoLink">exception</span>.
-
-void
-g()
- {
- try
- {
- f();
- }
- catch(
- boost::<span class="RenoLink">exception</span> &amp; e )
- {
- std::cerr &lt;&lt; e.<span class="RenoLink">what</span>();
- }
- }</pre>
-<p>The <tt><span class="RenoLink">what</span>()</tt> member function iterates over all data objects stored in the <tt>boost::<span class="RenoLink">exception</span></tt> through <tt><span class="RenoLink">operator<<</span>()</tt>. The returned string is constructed by converting each data object to string and then concatenating these strings together.</p>
-<p>When the <tt><span class="RenoLink">error_info</span>&lt;Tag,T&gt;</tt> template is instantiated, the system attempts overload resolution for an unqualified call to <tt>to_string(x)</tt>, where <tt>x</tt> is of type <tt>T</tt>. If this is successful, the <tt>to_string()</tt> overload is used to convert objects of type <tt>T</tt> to string.</p>
-<p>Otherwise, the system attempts overload resolution for <tt>s &lt;&lt; x</tt>, where <tt>s</tt> is a <tt>std::ostringstream</tt> and <tt>x</tt> is of type <tt>T</tt>. If this is successful, the <tt>operator&lt;&lt;</tt> overload is used to convert objects of type <tt>T</tt> to string.</p>
-<p>Otherwise the system is unable to convert objects of type <tt>T</tt> to string, and an unspecified stub string value is used without issuing a compile error.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a></div>
-<!-- Copyright (c) 2006-2008 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) -->
-<div id="footer">
-<p>&nbsp;</p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>

Modified: branches/proto/v4/libs/exception/doc/name_idx.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/name_idx.html (original)
+++ branches/proto/v4/libs/exception/doc/name_idx.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,11 +19,14 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h1>Index</h1>
+<div class="RenoAutoDIV"><h1>Index</h1>
+</div>
 <div class="RenoIndex"><h3>B</h3>
 <p>BOOST_ERROR_INFO</p>
+<p>Boost Exception</p>
 <h3>b</h3>
 <p>boost/exception.hpp</p>
+<p>boost/exception/diagnostic_information.hpp</p>
 <p>boost/exception/enable_current_exception.hpp</p>
 <p>boost/exception/enable_error_info.hpp</p>
 <p>boost/exception/error_info.hpp</p>
@@ -35,21 +38,31 @@
 <h3>c</h3>
 <p>copy_exception</p>
 <p>current_exception</p>
+<h3>D</h3>
+<p>Diagnostic Information</p>
+<h3>d</h3>
+<p>diagnostic_information</p>
 <h3>e</h3>
 <p>enable_current_exception</p>
 <p>enable_error_info</p>
 <p>error_info</p>
 <p>exception</p>
+<p>exception::diagnostic_information</p>
 <p>exception::exception</p>
-<p>exception::what</p>
 <p>exception::~exception</p>
 <p>exception_ptr</p>
 <h3>g</h3>
 <p>get_error_info</p>
+<h3>I</h3>
+<p>Integrating Boost Exception in Existing Exception Class Hierarchies</p>
 <h3>o</h3>
 <p>operator<</exception</p>
+<p>operator<</tuple</p>
 <h3>r</h3>
 <p>rethrow_exception</p>
+<h3>T</h3>
+<p>Transporting of Arbitrary Data to the Catch Site</p>
+<p>Transporting of Exceptions Between Threads</p>
 <h3>t</h3>
 <p>throw_exception</p>
 <h3>u</h3>

Modified: branches/proto/v4/libs/exception/doc/operator_shl_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/operator_shl_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/operator_shl_exception.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,40 +19,37 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>operator&lt;&lt;()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;</tt><span class="RenoBR">&nbsp;</span><br/><tt>#include &lt;<span class="RenoLink">boost/exception/info_tuple.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>operator&lt;&lt;/exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception/info.hpp</span>&gt;<span class="RenoBR">&nbsp;</span><br/></p>
 <pre>namespace
 boost
     {
-<span class="RenoIncludeSPAN"> template &lt;class E, class Tag1, class T1&gt;
- E const &amp; operator&lt;&lt;( E const &amp; x, <span class="RenoLink">error_info</span>&lt;Tag1,T1&gt; const &amp; v );
-
- template &lt;class E, class Tag1, class T1, ..., class TagN, class TN&gt;
- E const &amp; operator&lt;&lt;( E const &amp; x,
- <span class="RenoLink">tuple</span>&lt;
- <span class="RenoLink">error_info</span>&lt;Tag1,T1&gt;,
- ...,
- <span class="RenoLink">error_info</span>&lt;TagN,TN&gt; &gt; const &amp; v );</span>
+<span class="RenoIncludeSPAN"> template &lt;class E, class Tag, class T&gt;
+ E const &amp; <span class="RenoLink">operator<<</span>( E const &amp; x, <span class="RenoLink">error_info</span>&lt;Tag,T&gt; const &amp; v );</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>E</tt> must be <tt>boost::<span class="RenoLink">exception</span></tt>, or a type that derives (indirectly) from <tt>boost::<span class="RenoLink">exception</span></tt>.</p>
+<p>E must be boost::<span class="RenoLink">exception</span>, or a type that derives (indirectly) from boost::<span class="RenoLink">exception</span>.</p>
 <h4>Effects:</h4>
-<div><ul><li> The first overload stores a copy of <tt>v</tt> into <tt>x</tt>. If <tt>x</tt> already contains data of type <tt><span class="RenoLink">error_info</span>&lt;Tag1,T1&gt;</tt>, that data is overwritten.</li>
-<li> The <tt>boost::<span class="RenoLink">tuple</span></tt> overload is equivalent to <tt>x &lt;&lt; v.<span class="RenoLink">get</span>&lt;0&gt;() &lt;&lt; ... &lt;&lt; v.<span class="RenoLink">get</span>&lt;N&gt;()</tt>.</li>
-</ul></div>
+<p>Stores a copy of v into x. If x already contains data of type <span class="RenoLink">error_info</span>&lt;Tag,T&gt;, that data is overwritten.</p>
 <h4>Returns:</h4>
-<p><tt>x</tt>.</p>
+<p>x.</p>
 <div class="RenoIncludeDIV"><h4>Throws:</h4>
-<p><tt>std::bad_alloc</tt>, or any exception emitted by <tt>T1..TN</tt> copy constructor.</p>
-</div></div><h3>See also:</h3>
+<p>std::bad_alloc, or any exception emitted by the T copy constructor.</p>
+</div></div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="BOOST_ERROR_INFO.html">BOOST_ERROR_INFO<br/>
 </a><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_error_info_hpp.html">boost/exception/info.hpp<br/>
+</a><a href="tutorial_diagnostic_information.html">Diagnostic Information<br/>
 </a><a href="error_info.html">error_info<br/>
 </a><a href="exception.html">exception<br/>
+</a><a href="exception_diagnostic_information.html">exception::diagnostic_information<br/>
+</a><a href="exception_constructors.html">exception::exception<br/>
 </a><a href="get_error_info.html">get_error_info<br/>
-</a><a href="using_enable_error_info.html">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
-</a><a href="logging.html">Tutorial: Logging of boost::exception Objects<br/>
+</a><a href="tutorial_enable_error_info.html">Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/reno.css
==============================================================================
--- branches/proto/v4/libs/exception/doc/reno.css (original)
+++ branches/proto/v4/libs/exception/doc/reno.css 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -87,7 +87,7 @@
         border-left: 0;
         border-right: 0;
         font-size: 10pt;
- background-color: #F0F0F0;
+ background-color: #E5E5E5;
         padding-top: 5pt;
         padding-bottom: 5pt;
         padding-left: 5pt;

Modified: branches/proto/v4/libs/exception/doc/rethrow_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/rethrow_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/rethrow_exception.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,20 +19,24 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>rethrow_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>rethrow_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN"> void <span class="RenoLink">rethrow_exception</span>( <span class="RenoLink">exception_ptr</span> const &amp; ep );</span>
     }</pre>
 </div><h4>Precondition:</h4>
-<p><tt>ep</tt> shall not be null.</p>
+<p>ep shall not be null.</p>
 <h4>Throws:</h4>
-<p>The exception to which <tt>ep</tt> refers.</p>
-</div><h3>See also:</h3>
+<p>The exception to which ep refers.</p>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_cloning_hpp.html">boost/exception_ptr.hpp<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/source/boost-exception.reno
==============================================================================
--- branches/proto/v4/libs/exception/doc/source/boost-exception.reno (original)
+++ branches/proto/v4/libs/exception/doc/source/boost-exception.reno 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,19 +13,11 @@
                                         </type>
                                         <object>
                                                 <source>
- <path>
- <empty>0</empty>
- <string>../../../..</string>
- <type>1</type>
- <base>0</base>
- </path>
+ <string>../..;../../../../boost</string>
                                                 </source>
                                                 <match>
                                                         <string>.*\.(cpp|hpp|h)$</string>
                                                 </match>
- <parser>
- <string>/\*(?:[^\*]|\*[^/])*\*/|//[^\r\n]*|&quot;(?:[^&quot;\\]|\\.)*&quot;|&apos;(?:[^&apos;\\]|\\.)*&apos;|((?:(?:(?:[^\r\n\{\}&quot;&apos;/]|/\*(?:[^\*]|\*[^/])*\*/|//[^\r\n]*|&quot;(?:[^&quot;\\]|\\.)*&quot;|&apos;(?:[^&apos;\\]|\\.)*&apos;)+\r?\n)+(?!\r?\n))?[ \t]*\{[ \t]*)|\}[;\t ]*(?:\r?\n)?()</string>
- </parser>
                                         </object>
                                 </shared_ptr>
                         </config>
@@ -37,7 +29,7 @@
                                         </type>
                                         <object>
                                                 <sorted>
- <size>9</size>
+ <size>7</size>
                                                         <pair>
                                                                 <string>default</string>
                                                                 <shared_ptr>
@@ -47,7 +39,7 @@
                                                                         </type>
                                                                         <object>
                                                                                 <sorted>
- <size>36</size>
+ <size>39</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
@@ -61,28 +53,32 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>1</size>
- <strong>D9B8E6AA12A4F33953B1A961FA590C5A3840234B6531CA8C04AC985AD5800835</strong>
- <weak>2432554768</weak>
- <size>702</size>
- <position>408</position>
+ <size>2</size>
+ <strong>D1AA2FC554CD67A50917905B0E9CCA2EBC1A9BA97368757B36ADF8419756ECF1</strong>
+ <weak>85276724</weak>
+ <size>4917</size>
+ <position>514</position>
+ <strong>156B870761DB092CE4269C1173B479A344A1041BA2B883765AF19A72B371D776</strong>
+ <weak>3239976720</weak>
+ <size>117</size>
+ <position>4794</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../example/enable_error_info.cpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies</string>
+ <string>rethrow_exception</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>using_enable_error_info</string>
+ <string></string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -90,7 +86,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -106,28 +102,32 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>1</size>
- <strong>AEB5EEC1A44A4F0B184A6F73617CB57E82CE06A15DB6036D54109C66CDE06EFF</strong>
- <weak>625364235</weak>
- <size>290</size>
- <position>302</position>
+ <size>2</size>
+ <strong>D1AA2FC554CD67A50917905B0E9CCA2EBC1A9BA97368757B36ADF8419756ECF1</strong>
+ <weak>85276724</weak>
+ <size>4917</size>
+ <position>514</position>
+ <strong>ED09F845070FF7D381BE5EFB6B55313FD09FBA16B64B69992410380EFA45519C</strong>
+ <weak>2051939590</weak>
+ <size>78</size>
+ <position>433</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../example/logging.cpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>Tutorial: Logging of boost::exception Objects</string>
+ <string>exception_ptr</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>logging</string>
+ <string></string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -135,7 +135,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -152,28 +152,28 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>49EA85868C2355F4F7ED6CF9D05FDC08547EF85F76913E1FDBBC96F8712C6C83</strong>
- <weak>385672468</weak>
- <size>2694</size>
- <position>503</position>
- <strong>041A9EA55D30804689CD4DEB864994D595EDF33378B25EA81DB5DA2CF402E542</strong>
- <weak>1211481835</weak>
- <size>1683</size>
- <position>846</position>
+ <strong>35F026FF4EC46450D19A8F970D6E39B881DA6B0FC2E95774CCADC5E34C9D57F1</strong>
+ <weak>1990614462</weak>
+ <size>6369</size>
+ <position>737</position>
+ <strong>61B57D0AE5F1033900B7DE4401AC1633F4639471A19194D5660F6C43465FCE3D</strong>
+ <weak>1668078447</weak>
+ <size>724</size>
+ <position>1712</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>exception</string>
+ <string>get_error_info</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
                                                                                                                                 <string></string>
@@ -184,7 +184,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -200,32 +200,28 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>2</size>
- <strong>427FFBF157B284A9FB0CF4FAEC4A9BB2ADA8AC6CB4F4C329FAE0FED649640E3E</strong>
- <weak>2573550761</weak>
- <size>6200</size>
- <position>737</position>
- <strong>27AC1164E0A824D548386BEDCDC81DCAC283F3D286B0ECEE05B039BB8C392BFC</strong>
- <weak>1247954090</weak>
- <size>249</size>
- <position>1599</position>
+ <size>1</size>
+ <strong>9CC0F5ADB1C04555FD571DABD1D7D6775D8B11977ECC8320AD4451FC435E89A1</strong>
+ <weak>1325628148</weak>
+ <size>3147</size>
+ <position>323</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>operator&lt;&lt;/exception</string>
+ <string>boost/exception/exception.hpp</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string></string>
+ <string>exception_exception_hpp</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -233,7 +229,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -249,32 +245,28 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>2</size>
- <strong>427FFBF157B284A9FB0CF4FAEC4A9BB2ADA8AC6CB4F4C329FAE0FED649640E3E</strong>
- <weak>2573550761</weak>
- <size>6200</size>
- <position>737</position>
- <strong>65D13C1BB0A16823F69A32BAB56A51CA317075C7FC8B7441EE0D9B57AF5AB2AC</strong>
- <weak>2592266329</weak>
- <size>712</size>
- <position>1850</position>
+ <size>1</size>
+ <strong>E312FADF4C02B7A6CB1BE1EC16F05A21C20CBA3282D4EAFC8EBE0BA151F24779</strong>
+ <weak>2820045995</weak>
+ <size>5108</size>
+ <position>323</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>get_error_info</string>
+ <string>boost/exception_ptr.hpp</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string></string>
+ <string>exception_cloning_hpp</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -282,7 +274,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -298,29 +290,25 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>2</size>
- <strong>E285EAA0D81E350113B888423C3FA5D2071F070FCA2759D99666EE07C0F8449F</strong>
- <weak>4208148208</weak>
- <size>2125</size>
- <position>457</position>
- <strong>ACC64445E8B6AAEF58395C0083BC0247CDE33AC00ED8DB9B7B4F216325DEE410</strong>
- <weak>2943579912</weak>
- <size>400</size>
- <position>1719</position>
+ <size>1</size>
+ <strong>49D31376D97691F7C84A134B5D8C7C66EF1ED6901D376CA250D634AE2B38AB5E</strong>
+ <weak>549270010</weak>
+ <size>163</size>
+ <position>572</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../../../boost/exception/enable_error_info.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>enable_error_info</string>
+ <string>BOOST_ERROR_INFO</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
                                                                                                                                 <string></string>
@@ -331,7 +319,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -347,40 +335,34 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>2</size>
- <strong>973F8368D72D56424349CBB81C8F3015CB9F4F0CD7B23A8C62C3DBADDA37CD57</strong>
- <weak>3833800883</weak>
- <size>4832</size>
- <position>514</position>
- <strong>156B870761DB092CE4269C1173B479A344A1041BA2B883765AF19A72B371D776</strong>
- <weak>3239976720</weak>
- <size>117</size>
- <position>4709</position>
+ <size>1</size>
+ <strong>F4C951B28F7DE500973AA3DFAA99F2BADA6EDAFA2B406C30BEF3B7FBE6FD57D7</strong>
+ <weak>2263754923</weak>
+ <size>982</size>
+ <position>306</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
+ <string>../../example/error_info_2.cpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>rethrow_exception</string>
+ <string>adding of arbitrary data to active exception objects</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string></string>
+ <string>adding_data_later</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -397,35 +379,33 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>1</size>
- <strong>E64E4DFB1DC251F844260AE133EFD419677D0F7143D65B578DEE525492F6B624</strong>
- <weak>2172131053</weak>
- <size>94</size>
- <position>227</position>
+ <strong>E444EE9697EEADFDE0767E1D0242FC0E70D98E61FB1F0FFA099648DE509B82F3</strong>
+ <weak>94503238</weak>
+ <size>773</size>
+ <position>374</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../../../boost/exception.hpp</string>
+ <string>../../example/info_tuple.cpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>boost/exception.hpp</string>
+ <string>adding grouped data to exceptions</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>exception_hpp</string>
+ <string>grouping_data</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>1</size>
- <variant>2</variant>
- <string>!!!boost/exception.hpp&#10;&#10;This header file includes all other header files of Boost Exception:&#10;&#10;(:pagelist tags=&quot;header&quot;:)&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -441,15 +421,11 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>2</size>
- <strong>0ABC82B04F3761C21F4588ABC9D5F82BAF3F293974F0ECE694303EFB59BA7376</strong>
- <weak>3824507607</weak>
- <size>2762</size>
- <position>516</position>
- <strong>8F3B5E1A267CA225679713F4DDF528041F573BC02D1DBCD8FFEF57EF0AA599B9</strong>
- <weak>4197332561</weak>
- <size>180</size>
- <position>2576</position>
+ <size>1</size>
+ <strong>A9C65F105342D728DE9C996079E82DF25408B94A272090039FAAC12D29659F69</strong>
+ <weak>2378831669</weak>
+ <size>94</size>
+ <position>227</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
@@ -463,10 +439,10 @@
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>enable_current_exception</string>
+ <string>boost/exception/enable_current_exception.hpp</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string></string>
+ <string>exception_enable_exception_cloning_hpp</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -474,7 +450,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -491,14 +467,14 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>2</size>
- <strong>973F8368D72D56424349CBB81C8F3015CB9F4F0CD7B23A8C62C3DBADDA37CD57</strong>
- <weak>3833800883</weak>
- <size>4832</size>
+ <strong>D1AA2FC554CD67A50917905B0E9CCA2EBC1A9BA97368757B36ADF8419756ECF1</strong>
+ <weak>85276724</weak>
+ <size>4917</size>
                                                                                                                                                         <position>514</position>
- <strong>9DEEF8ED70BF74F501A96BA5DE5BFD42FAD16DE333ABE189E512C332586FC465</strong>
- <weak>2250569940</weak>
- <size>1893</size>
- <position>2528</position>
+ <strong>F87D7E0321BDDAE23D5A6667CB12116411468AEC54E3B35FB9C8CA94BFECA41E</strong>
+ <weak>1149388739</weak>
+ <size>296</size>
+ <position>4496</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
@@ -512,7 +488,7 @@
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>current_exception</string>
+ <string>copy_exception</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
                                                                                                                                 <string></string>
@@ -523,7 +499,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -539,28 +515,32 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>1</size>
- <strong>5EE6ED209B5DBBD30DFCDA1FD30719A799EE9DBD48A5176F73EADB588CAEB2AA</strong>
- <weak>2442598207</weak>
- <size>94</size>
- <position>227</position>
+ <size>2</size>
+ <strong>13F58566E4D9F20B49F3F30B28528AEE562CD709108ADC1AE19A2F01D86C62F4</strong>
+ <weak>1430141721</weak>
+ <size>2967</size>
+ <position>503</position>
+ <strong>09CB6839AC1E71887371FB8159C2BFCD273A397C54E07B25CEF2EEF2FA24286A</strong>
+ <weak>4111403263</weak>
+ <size>1924</size>
+ <position>878</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>boost/exception/info.hpp</string>
+ <string>exception</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>exception_error_info_hpp</string>
+ <string></string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -568,7 +548,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>!!!boost/exception/info.hpp&#10;&#10;This header file contains the following definitions/declarations:&#10;&#10;(:pagelist link=&quot;backlink&quot; layer=&quot;synopsis&quot;:)&#10;</string>
+ <string>(:include include:)&#10;----&#10;!!!See Also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;exception,member&quot; mod=&quot;w&quot;:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -584,32 +564,28 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>2</size>
- <strong>973F8368D72D56424349CBB81C8F3015CB9F4F0CD7B23A8C62C3DBADDA37CD57</strong>
- <weak>3833800883</weak>
- <size>4832</size>
- <position>514</position>
- <strong>9567A192BF523DDF741004FFF5BDB044D715FEB7CE9AEC89ACC25C1C33E48C4E</strong>
- <weak>2232115228</weak>
- <size>381</size>
- <position>26</position>
+ <size>1</size>
+ <strong>CE411E21EE9878B55B5906D033A0FC52574FB59D8A8CECB75405E9B1C9D782DB</strong>
+ <weak>1173443713</weak>
+ <size>308</size>
+ <position>302</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
+ <string>../../example/logging.cpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>unknown_exception</string>
+ <string>diagnostic information</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string></string>
+ <string>tutorial_diagnostic_information</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -617,7 +593,7 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -633,1219 +609,835 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <strong>429F0DE3599A4CC08B9458E2AECA2EAC202AB3471554FE82C307493805E6676E</strong>
+ <weak>4224422781</weak>
+ <size>401</size>
+ <position>323</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
- <empty>1</empty>
+ <empty>0</empty>
+ <string>../../../../boost/exception.hpp</string>
+ <type>0</type>
+ <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>Boost Exception</string>
+ <string>boost/exception.hpp</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>boost-exception</string>
+ <string>exception_hpp</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>113</size>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>!!Abstract&#10;&#10;The purpose of Boost Exception is to ease the design of exception class hierarchies and to help write exception handling and error reporting code.&#10;&#10;It supports transporting of arbitrary data to the catch site, which is otherwise tricky due to the no-throw requirements (15.5.1) for exception classes. Data can be added to any exception object, either directly in the throw-expression (15.1), or at a later time as the exception object propagates up the call stack.&#10;&#10;The ability to add data to exception objects after they have been passed to @@throw@@ is important, because often some of the information needed to handle an exception is unavailable in the context where the failure is detected. &#10;&#10;Boost Exception also supports (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>18</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>18</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>0</size>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>1</empty>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>0</size>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>Tutorial: Transporting of Exceptions between Threads</string>
- </title>
- <file_name>
- <string>cloning</string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>1</empty>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>transporting of arbitrary data to the catch site</string>
+ </title>
+ <file_name>
+ <string>tutorial_transporting_data</string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>|cloning:) of exception objects, implemented non-intrusively and automatically by the @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>19</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>19</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>2</size>
- <strong>612485E090D76B2CC43C1A296F813075BA165C2496082E78E939F10B3DA8E09A</strong>
- <weak>1770110914</weak>
- <size>587</size>
- <position>1207</position>
- <strong>60F3F48B87487FA6E0D2CCC0750AF435CC92CEC80BBBF609AC71295031AADD0D</strong>
- <weak>3929437933</weak>
- <size>361</size>
- <position>213</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/throw_exception.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>D9B8E6AA12A4F33953B1A961FA590C5A3840234B6531CA8C04AC985AD5800835</strong>
+ <weak>2432554768</weak>
+ <size>702</size>
+ <position>408</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>throw_exception</string>
- </title>
- <file_name>
- <string></string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../example/enable_error_info.cpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>integrating boost exception in existing exception class hierarchies</string>
+ </title>
+ <file_name>
+ <string>tutorial_enable_error_info</string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)()@@ function.&#10;&#10;!!!!Note:&#10;&#10;Boost Exception was accepted as a Boost library on November 7 2007, however it has not yet been part of an official Boost release. Current version can be downloaded from (:link http://svn.boost.org/svn/boost/trunk | Boost SVN:).&#10;&#10;!!Contents&#10;&#10;#Tutorial&#10;##(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>20</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>20</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>0</size>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>1</empty>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>749C8E4B47A3FD6A90DD8418BF64C4556537CE6E17ACEB2317D9F81DBEBBB0B0</strong>
+ <weak>1688004766</weak>
+ <size>6783</size>
+ <position>323</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>Tutorial: Transporting of Arbitrary Data to the Catch Site</string>
- </title>
- <file_name>
- <string>transporting_data</string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;##(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-5</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;##(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;##(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-6</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;#Documentation&#10;##Class @@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/info.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>boost/exception/info.hpp</string>
+ </title>
+ <file_name>
+ <string>exception_error_info_hpp</string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)@@&#10;##Transporting of Arbitrary Data to the Catch Site&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>21</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>21</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>2</size>
- <strong>427FFBF157B284A9FB0CF4FAEC4A9BB2ADA8AC6CB4F4C329FAE0FED649640E3E</strong>
- <weak>2573550761</weak>
- <size>6200</size>
- <position>737</position>
- <strong>865A7E598C4F2EDA41CCDFAD253F5E4699012898C97E29E3CB1C68DABA0C62B1</strong>
- <weak>2395321958</weak>
- <size>721</size>
- <position>726</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>5373E336DC4892A41D31694BCA1146382FC3137819A04689CA1F9FFAF1CFAB3B</strong>
+ <weak>4050491732</weak>
+ <size>466</size>
+ <position>307</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>error_info</string>
- </title>
- <file_name>
- <string></string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-9</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)()@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-10</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)()@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>22</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../example/cloning_1.cpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>using enable_current_exception at the time of the throw</string>
+ </title>
+ <file_name>
+ <string>using_enable_cloning</string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>22</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>49D31376D97691F7C84A134B5D8C7C66EF1ED6901D376CA250D634AE2B38AB5E</strong>
- <weak>549270010</weak>
- <size>163</size>
- <position>572</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>35F026FF4EC46450D19A8F970D6E39B881DA6B0FC2E95774CCADC5E34C9D57F1</strong>
+ <weak>1990614462</weak>
+ <size>6369</size>
+ <position>737</position>
+ <strong>F839AFD37DC086BB1231B8E87D8EEBD28129649A06FC685AC7DF65595871AE30</strong>
+ <weak>2291609923</weak>
+ <size>1204</size>
+ <position>243</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>BOOST_ERROR_INFO</string>
- </title>
- <file_name>
- <string></string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/info.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>error_info</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)@@&#10;##Transporting of Exceptions between Threads&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>23</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>23</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>2</size>
- <strong>973F8368D72D56424349CBB81C8F3015CB9F4F0CD7B23A8C62C3DBADDA37CD57</strong>
- <weak>3833800883</weak>
- <size>4832</size>
- <position>514</position>
- <strong>ED09F845070FF7D381BE5EFB6B55313FD09FBA16B64B69992410380EFA45519C</strong>
- <weak>2051939590</weak>
- <size>78</size>
- <position>409</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>35F026FF4EC46450D19A8F970D6E39B881DA6B0FC2E95774CCADC5E34C9D57F1</strong>
+ <weak>1990614462</weak>
+ <size>6369</size>
+ <position>737</position>
+ <strong>C5A5927411FB16BB27418CF87226A27D6EC66958BD46DC87F97E571CB492E49D</strong>
+ <weak>2066106304</weak>
+ <size>261</size>
+ <position>1449</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>exception_ptr</string>
- </title>
- <file_name>
- <string></string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-13</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)()@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/info.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>operator&lt;&lt;/exception</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)()@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>24</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>24</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>2</size>
- <strong>973F8368D72D56424349CBB81C8F3015CB9F4F0CD7B23A8C62C3DBADDA37CD57</strong>
- <weak>3833800883</weak>
- <size>4832</size>
- <position>514</position>
- <strong>921FBF6991E17349BFF2AD6F165372F85AA9457DDB28E502ABB6B392BBA6B529</strong>
- <weak>3119269037</weak>
- <size>284</size>
- <position>4423</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>F7633FDCF6615C0199645701EE6E7ACE5CBCD7A7CF6838573791E91ABB3C09F2</strong>
+ <weak>1668435395</weak>
+ <size>1332</size>
+ <position>396</position>
+ <strong>A1F443AF571973A12005D2F7D4AE09A32AAF686FEEAE272EC21512A65EB943E8</strong>
+ <weak>3879093659</weak>
+ <size>1300</size>
+ <position>26</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>copy_exception</string>
- </title>
- <file_name>
- <string></string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)()@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-11</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)()@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)@@&#10;##@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)()@@&#10;##Headers&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-12</id>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/info_tuple.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>operator&lt;&lt;/tuple</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>25</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>25</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>40C2FBC8600FE6877A6D46EC005D97EB1F612B8687CCA297C838E10A80E089AA</strong>
- <weak>2576029551</weak>
- <size>94</size>
- <position>227</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>D1AA2FC554CD67A50917905B0E9CCA2EBC1A9BA97368757B36ADF8419756ECF1</strong>
+ <weak>85276724</weak>
+ <size>4917</size>
+ <position>514</position>
+ <strong>9DEEF8ED70BF74F501A96BA5DE5BFD42FAD16DE333ABE189E512C332586FC465</strong>
+ <weak>2250569940</weak>
+ <size>1893</size>
+ <position>2601</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>boost/exception_ptr.hpp</string>
- </title>
- <file_name>
- <string>exception_cloning_hpp</string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception_ptr.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>current_exception</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>26</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
- <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>2C5F1B7E5C5052C9C9305848AB499A9C166D728EAAD25DC936B75FCA997A0650</strong>
- <weak>3171555959</weak>
- <size>88</size>
- <position>1</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/throw_exception.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
- </hook>
- <title>
- <string>boost/throw_exception.hpp</string>
- </title>
- <file_name>
- <string>throw_exception_hpp</string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>27</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>26</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>A9C65F105342D728DE9C996079E82DF25408B94A272090039FAAC12D29659F69</strong>
- <weak>2378831669</weak>
- <size>94</size>
- <position>227</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception/enable_current_exception.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>3</size>
+ <strong>13F58566E4D9F20B49F3F30B28528AEE562CD709108ADC1AE19A2F01D86C62F4</strong>
+ <weak>1430141721</weak>
+ <size>2967</size>
+ <position>503</position>
+ <strong>09CB6839AC1E71887371FB8159C2BFCD273A397C54E07B25CEF2EEF2FA24286A</strong>
+ <weak>4111403263</weak>
+ <size>1924</size>
+ <position>878</position>
+ <strong>BAC52AC87CFA3174B3352140A8DC10BB7F48C945FC87787C3AC96F0FC2CFDB40</strong>
+ <weak>1066412964</weak>
+ <size>165</size>
+ <position>57</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>boost/exception/enable_current_exception.hpp</string>
- </title>
- <file_name>
- <string>exception_enable_exception_cloning_hpp</string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/exception.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>exception::diagnostic_information</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>28</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>27</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>DFB8EFE8A4EE9FB101DC20A69A4217A96B78A272D7DE88D579CFE8ECCC070531</strong>
- <weak>2228033283</weak>
- <size>94</size>
- <position>227</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception/enable_error_info.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>05061ED1DD1B33224DE28BF86AB10D99286A48DC055D54A19FF93B36F22E8A90</strong>
+ <weak>3225446538</weak>
+ <size>372</size>
+ <position>408</position>
+ <strong>ED09AD72D3766F261A0044B58B9B73AA355EB50B1A8F602E5EE7F68D0D928596</strong>
+ <weak>328425570</weak>
+ <size>340</size>
+ <position>26</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>boost/exception/enable_error_info.hpp</string>
- </title>
- <file_name>
- <string>exception_enable_error_info_hpp</string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-15</id>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/diagnostic_information.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>diagnostic_information</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>29</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>28</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>CAD6C404CB725D336A44920D2341ECA131149AB02C368B59028F8147F16737BF</strong>
- <weak>2258638601</weak>
- <size>94</size>
- <position>227</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception/info_tuple.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>4</size>
+ <strong>13F58566E4D9F20B49F3F30B28528AEE562CD709108ADC1AE19A2F01D86C62F4</strong>
+ <weak>1430141721</weak>
+ <size>2967</size>
+ <position>503</position>
+ <strong>09CB6839AC1E71887371FB8159C2BFCD273A397C54E07B25CEF2EEF2FA24286A</strong>
+ <weak>4111403263</weak>
+ <size>1924</size>
+ <position>878</position>
+ <strong>85EE1980CFB24E054EDB1B3BDFA61FD4D65AD0EF248A1A42D4C2552700459327</strong>
+ <weak>2238151539</weak>
+ <size>428</size>
+ <position>923</position>
+ <strong>AD3F339F7126003907BCBDB3EF846FCACA895132E1100D202DA67D2B7846EE65</strong>
+ <weak>3032091776</weak>
+ <size>60</size>
+ <position>369</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>boost/exception/info_tuple.hpp</string>
- </title>
- <file_name>
- <string>exception_error_info_group_hpp</string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/exception.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>exception::~exception</string>
+ </title>
+ <file_name>
+ <string>exception_destructor</string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>30</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>29</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>EB524A8A61E5F1A93CE4336B980696C09E7ADF42A6B933BA76EFB1544AB7C4CC</strong>
- <weak>2274957083</weak>
- <size>94</size>
- <position>227</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception/error_info.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>187BFD2B78A0DD006717B5B06FFD465E2468F521C32A86FB793F7A68AB5417F3</strong>
+ <weak>4276724153</weak>
+ <size>574</size>
+ <position>382</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>boost/exception/error_info.hpp</string>
- </title>
- <file_name>
- <string>exception_error_info_value_hpp</string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)@@&#10;###@@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>31</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../example/error_info_1.cpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>adding of arbitrary data at the point of the throw</string>
+ </title>
+ <file_name>
+ <string>adding_data_at_throw</string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>30</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>1</size>
- <strong>C9AFCA0931CB65AE31811E702FC48CB22348149B1D259CD9161D391FEC640FA8</strong>
- <weak>2324436793</weak>
- <size>94</size>
- <position>227</position>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>0</empty>
- <string>../../../../boost/exception/exception.hpp</string>
- <type>0</type>
- <base>0</base>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>FC684D0DD5A9732B4130F2AB3DB6E0491D0F523E14B7FB738B2019EA2C7F8717</strong>
+ <weak>2229778754</weak>
+ <size>631</size>
+ <position>319</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>boost/exception/exception.hpp</string>
- </title>
- <file_name>
- <string>exception_exception_hpp</string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)@@&#10;#(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>32</id>
- <type>
- <string>reno_context</string>
- </type>
- <object>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../example/cloning_2.cpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>cloning and re-throwing an exception</string>
+ </title>
+ <file_name>
+ <string>cloning_and_rethrowing</string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>31</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
                                                                                                                                 <hook>
- <hook>
- <stream_hook_path>
- <container>
- <size>0</size>
- </container>
- </stream_hook_path>
- </hook>
- <file>
- <path>
- <empty>1</empty>
- </path>
- </file>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>ECAD4A1E70A31D7F87F79F557D107AB0A3C5161CB370139974E08ECAFBE2D32F</strong>
+ <weak>1816954312</weak>
+ <size>457</size>
+ <position>323</position>
+ </container>
+ </stream_hook_path>
                                                                                                                                 </hook>
- <title>
- <string>Index</string>
- </title>
- <file_name>
- <string>name_idx</string>
- </file_name>
- </object>
- </shared_ptr>
- </weak_ptr>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/diagnostic_information.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>boost/exception/diagnostic_information.hpp</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)&#10;&#10;!!Synopsis&#10;&#10;@@#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-12</id>
- </shared_ptr>
- </weak_ptr>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>32</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>0C00BEB179039380247D771B12C728884E9A3E5B483AC63CD5789852C7A5CC35</strong>
+ <weak>2506662970</weak>
+ <size>2467</size>
+ <position>323</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/enable_error_info.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>boost/exception/enable_error_info.hpp</string>
+ </title>
+ <file_name>
+ <string>exception_enable_error_info_hpp</string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>33</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>CAB4D823BD4720B71E1CA5BE482AC95B42A9E07CD5E08671EA23184635F281A2</strong>
+ <weak>3077708282</weak>
+ <size>89</size>
+ <position>323</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/error_info.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>boost/exception/error_info.hpp</string>
+ </title>
+ <file_name>
+ <string>exception_error_info_value_hpp</string>
+ </file_name>
+ </object>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string> decl:)&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-9</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-10</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-22</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-23</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-13</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-24</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-11</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string> decl:)&#10; }@]&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;&#10;!!Transporting of Arbitrary Data to the Catch Site&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-9</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-10</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-22</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;!!Transporting of Exceptions between Threads&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-23</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-13</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-24</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-11</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;&#10;!!Throwing Exceptions&#10;&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-18</id>
+ <id>34</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>CAD6C404CB725D336A44920D2341ECA131149AB02C368B59028F8147F16737BF</strong>
+ <weak>2258638601</weak>
+ <size>94</size>
+ <position>227</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/info_tuple.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>boost/exception/info_tuple.hpp</string>
+ </title>
+ <file_name>
+ <string>exception_error_info_group_hpp</string>
+ </file_name>
+ </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-20</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-29</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>!!!boost/exception/info_tuple.hpp&#10;&#10;This header file contains the following definitions/declarations:&#10;&#10;(:pagelist link=&quot;backlink&quot; layer=&quot;synopsis&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-30</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
- <variant>2</variant>
- <string>!!!boost/exception/error_info.hpp&#10;&#10;This header file contains the following declaration:&#10;&#10;[@namespace&#10;boost&#10; {&#10; template &lt;class Tag, class T&gt;&#10; class (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:);&#10; }@]&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-22</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-23</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-24</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-25</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>!!!boost/exception_ptr.hpp&#10;&#10;This header file contains the following definitions/declarations:&#10;&#10;(:pagelist link=&quot;backlink&quot; layer=&quot;synopsis&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-26</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>!!!boost/exception/throw_exception.hpp&#10;&#10;&#10;&#10;This header file contains the following definitions/declarations:&#10;&#10;(:pagelist link=&quot;backlink&quot; layer=&quot;synopsis&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-27</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>!!!boost/exception/enable_current_exception.hpp&#10;&#10;This header file contains the following definitions/declarations:&#10;&#10;(:pagelist link=&quot;backlink&quot; layer=&quot;synopsis&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-31</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>!!!boost/exception/exception.hpp&#10;&#10;&#10;&#10;This header file contains the following definitions/declarations:&#10;&#10;(:pagelist link=&quot;backlink&quot; layer=&quot;synopsis&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-28</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>!!!boost/exception/enable_error_info.hpp&#10;&#10;&#10;&#10;This header file contains the following definitions/declarations:&#10;&#10;(:pagelist link=&quot;backlink&quot; layer=&quot;synopsis&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-32</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>!Index&#10;&#10;(:pagelist fmt=&quot;index&quot; except_tags=&quot;noindex&quot;:)&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>33</id>
+ <id>35</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -1855,27 +1447,27 @@
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
                                                                                                                                                         <size>1</size>
- <strong>5373E336DC4892A41D31694BCA1146382FC3137819A04689CA1F9FFAF1CFAB3B</strong>
- <weak>4050491732</weak>
- <size>466</size>
- <position>307</position>
+ <strong>07959353ADCC10CF96D16F87F2D01195D75C3A6A2A797513ED3DDFA2F80E2E09</strong>
+ <weak>303643772</weak>
+ <size>1838</size>
+ <position>91</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../example/cloning_1.cpp</string>
+ <string>../../../../boost/throw_exception.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>Tutorial: Using enable_current_exception() at the Time of the Throw</string>
+ <string>boost/throw_exception.hpp</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>using_enable_cloning</string>
+ <string>throw_exception_hpp</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -1883,14 +1475,14 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>34</id>
+ <id>36</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -1899,28 +1491,36 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>1</size>
- <strong>187BFD2B78A0DD006717B5B06FFD465E2468F521C32A86FB793F7A68AB5417F3</strong>
- <weak>4276724153</weak>
- <size>574</size>
- <position>382</position>
+ <size>3</size>
+ <strong>13F58566E4D9F20B49F3F30B28528AEE562CD709108ADC1AE19A2F01D86C62F4</strong>
+ <weak>1430141721</weak>
+ <size>2967</size>
+ <position>503</position>
+ <strong>09CB6839AC1E71887371FB8159C2BFCD273A397C54E07B25CEF2EEF2FA24286A</strong>
+ <weak>4111403263</weak>
+ <size>1924</size>
+ <position>878</position>
+ <strong>BACD79DFB4C710C1A67687FC6344DF2251E2379613C2DF5B2729B2CD37E24EA3</strong>
+ <weak>458367129</weak>
+ <size>154</size>
+ <position>246</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../example/error_info_1.cpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>Tutorial: Adding of Arbitrary Data at the Point of the Throw</string>
+ <string>exception::exception</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>adding_data_at_throw</string>
+ <string>exception_constructors</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -1928,14 +1528,14 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>35</id>
+ <id>37</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -1944,33 +1544,29 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>3</size>
- <strong>49EA85868C2355F4F7ED6CF9D05FDC08547EF85F76913E1FDBBC96F8712C6C83</strong>
- <weak>385672468</weak>
- <size>2694</size>
- <position>503</position>
- <strong>041A9EA55D30804689CD4DEB864994D595EDF33378B25EA81DB5DA2CF402E542</strong>
- <weak>1211481835</weak>
- <size>1683</size>
- <position>846</position>
- <strong>59711C7B9D807F0C41EF49B8AAC509CDB449D81C392B5FF5988DEDE47026E856</strong>
- <weak>1948539350</weak>
- <size>445</size>
- <position>57</position>
+ <size>2</size>
+ <strong>D1AA2FC554CD67A50917905B0E9CCA2EBC1A9BA97368757B36ADF8419756ECF1</strong>
+ <weak>85276724</weak>
+ <size>4917</size>
+ <position>514</position>
+ <strong>A098B6FA5BC8E72E0E69C0323195FCC142AE807564C6892FCBD88588F2FBE049</strong>
+ <weak>2579522516</weak>
+ <size>405</size>
+ <position>26</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>exception::what</string>
+ <string>unknown_exception</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
                                                                                                                                 <string></string>
@@ -1981,14 +1577,14 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>36</id>
+ <id>38</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -1997,21 +1593,32 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>0</size>
+ <size>2</size>
+ <strong>FA5027D9799B8059059C23397F469D6EF6328DC23E92E0BE0FF5BE019A576174</strong>
+ <weak>1806359597</weak>
+ <size>3234</size>
+ <position>506</position>
+ <strong>DF9EA87B0140AACF4422F1B76F6A6A409C15F32858BBBA85A35981A824C56BA9</strong>
+ <weak>1137981799</weak>
+ <size>192</size>
+ <position>3036</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
- <empty>1</empty>
+ <empty>0</empty>
+ <string>../../../../boost/exception/enable_current_exception.hpp</string>
+ <type>0</type>
+ <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>exception::exception</string>
+ <string>enable_current_exception</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>exception_constructors</string>
+ <string></string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -2019,14 +1626,14 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>37</id>
+ <id>39</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -2035,40 +1642,21 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>4</size>
- <strong>49EA85868C2355F4F7ED6CF9D05FDC08547EF85F76913E1FDBBC96F8712C6C83</strong>
- <weak>385672468</weak>
- <size>2694</size>
- <position>503</position>
- <strong>041A9EA55D30804689CD4DEB864994D595EDF33378B25EA81DB5DA2CF402E542</strong>
- <weak>1211481835</weak>
- <size>1683</size>
- <position>846</position>
- <strong>85EE1980CFB24E054EDB1B3BDFA61FD4D65AD0EF248A1A42D4C2552700459327</strong>
- <weak>2238151539</weak>
- <size>428</size>
- <position>682</position>
- <strong>AD3F339F7126003907BCBDB3EF846FCACA895132E1100D202DA67D2B7846EE65</strong>
- <weak>3032091776</weak>
- <size>60</size>
- <position>369</position>
+ <size>0</size>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
- <empty>0</empty>
- <string>../../../../boost/exception/exception.hpp</string>
- <type>0</type>
- <base>0</base>
+ <empty>1</empty>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>exception::~exception</string>
+ <string>Index</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>exception_destructor</string>
+ <string>name_idx</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -2076,14 +1664,14 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)&#10;</string>
+ <string>(:auto !:)&#10;&#10;(:pagelist fmt=&quot;index&quot; except_tags=&quot;index,noindex&quot; mod=&quot;w&quot;:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>38</id>
+ <id>40</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -2092,28 +1680,32 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>1</size>
- <strong>E444EE9697EEADFDE0767E1D0242FC0E70D98E61FB1F0FFA099648DE509B82F3</strong>
- <weak>94503238</weak>
- <size>773</size>
- <position>374</position>
+ <size>2</size>
+ <strong>7ACC4E316D4EDB3EC7AEC35FED3ADB47DDF75D575028D7BCD11C5233E4F4A277</strong>
+ <weak>4268848542</weak>
+ <size>2333</size>
+ <position>457</position>
+ <strong>61DE70107961C0B9A65674017F91FF85190CF84B4F3B0CA7AC04A7E16DE80B37</strong>
+ <weak>3187961206</weak>
+ <size>2301</size>
+ <position>26</position>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
                                                                                                                                                 <empty>0</empty>
- <string>../../example/info_tuple.cpp</string>
+ <string>../../../../boost/exception/enable_error_info.hpp</string>
                                                                                                                                                 <type>0</type>
                                                                                                                                                 <base>0</base>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>Tutorial: Adding Grouped Data to Exceptions</string>
+ <string>enable_error_info</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>grouping_data</string>
+ <string></string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -2121,14 +1713,14 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>39</id>
+ <id>41</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -2137,28 +1729,21 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>1</size>
- <strong>FC684D0DD5A9732B4130F2AB3DB6E0491D0F523E14B7FB738B2019EA2C7F8717</strong>
- <weak>2229778754</weak>
- <size>631</size>
- <position>319</position>
+ <size>0</size>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
- <empty>0</empty>
- <string>../../example/cloning_2.cpp</string>
- <type>0</type>
- <base>0</base>
+ <empty>1</empty>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>Tutorial: Cloning and Re-throwing an Exception</string>
+ <string>transporting of exceptions between threads</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>cloning_and_rethrowing</string>
+ <string>tutorial_exception_ptr</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
@@ -2166,14 +1751,14 @@
                                                                                                 <container>
                                                                                                         <size>1</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)</string>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>40</id>
+ <id>42</id>
                                                                                                                 <type>
                                                                                                                         <string>reno_context</string>
                                                                                                                 </type>
@@ -2182,755 +1767,603 @@
                                                                                                                                 <hook>
                                                                                                                                         <stream_hook_path>
                                                                                                                                                 <container>
- <size>1</size>
- <strong>F4C951B28F7DE500973AA3DFAA99F2BADA6EDAFA2B406C30BEF3B7FBE6FD57D7</strong>
- <weak>2263754923</weak>
- <size>982</size>
- <position>306</position>
+ <size>0</size>
                                                                                                                                                 </container>
                                                                                                                                         </stream_hook_path>
                                                                                                                                 </hook>
                                                                                                                                 <file>
                                                                                                                                         <path>
- <empty>0</empty>
- <string>../../example/error_info_2.cpp</string>
- <type>0</type>
- <base>0</base>
+ <empty>1</empty>
                                                                                                                                         </path>
                                                                                                                                 </file>
                                                                                                                         </hook>
                                                                                                                         <title>
- <string>Tutorial: Adding of Arbitrary Data to Active Exception Objects</string>
+ <string>boost exception</string>
                                                                                                                         </title>
                                                                                                                         <file_name>
- <string>adding_data_later</string>
+ <string>boost-exception</string>
                                                                                                                         </file_name>
                                                                                                                 </object>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>1</size>
+ <size>113</size>
                                                                                                         <variant>2</variant>
- <string>(:include include:)&#10;&#10;!!!See also:&#10;&#10;(:pagelist link=&quot;backlink&quot; except_tags=&quot;noalso&quot;:)</string>
- </container>
- </pair>
- </sorted>
- </object>
- </shared_ptr>
- </pair>
- <pair>
- <string>headers</string>
- <shared_ptr>
- <id>41</id>
- <type>
- <string>reno_layer</string>
- </type>
- <object>
- <sorted>
- <size>36</size>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-5</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-6</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-9</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-10</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-11</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
+ <string>!!Introduction&#10;&#10;The purpose of Boost Exception is to ease the design of exception class hierarchies and to help write exception handling and error reporting code.&#10;&#10;It supports transporting of arbitrary data to the catch site, which is otherwise tricky due to the no-throw requirements (15.5.1) for exception types. Data can be added to any exception object, either directly in the throw-expression (15.1), or at a later time as the exception object propagates up the call stack.&#10;&#10;The ability to add data to exception objects after they have been passed to throw is important, because often some of the information needed to handle an exception is unavailable in the context where the failure is detected. &#10;&#10;Boost Exception also supports (:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:)-style (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-41</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>[@#include &lt;</string>
+ <string>|copying:) of exception objects, implemented non-intrusively and automatically by the boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
- <expired>1</expired>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>43</id>
+ <type>
+ <string>reno_context</string>
+ </type>
+ <object>
+ <hook>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>2</size>
+ <strong>612485E090D76B2CC43C1A296F813075BA165C2496082E78E939F10B3DA8E09A</strong>
+ <weak>1770110914</weak>
+ <size>587</size>
+ <position>1322</position>
+ <strong>60F3F48B87487FA6E0D2CCC0750AF435CC92CEC80BBBF609AC71295031AADD0D</strong>
+ <weak>3929437933</weak>
+ <size>361</size>
+ <position>213</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/throw_exception.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ </hook>
+ <title>
+ <string>throw_exception</string>
+ </title>
+ <file_name>
+ <string></string>
+ </file_name>
+ </object>
+ </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>&gt;@]</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-12</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-13</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
+ <string>:) function.&#10;&#10;!!Contents&#10;&#10;#Tutorial&#10;##(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-18</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>[@#include &lt;(:link </string>
+ <string> mod=&quot;w&quot;:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-27</id>
+ <id>-19</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
+ <string> mod=&quot;w&quot;:)&#10;##(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-41</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>[@#include &lt;</string>
+ <string> mod=&quot;w&quot;:)&#10;##(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
- <expired>1</expired>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-16</id>
+ </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>&gt;@]</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-15</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-17</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-20</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-29</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-30</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-22</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-23</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
+ <string> mod=&quot;w&quot;:)&#10;#Documentation&#10;##Class (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>[@#include &lt;</string>
+ <string>:)&#10;##Transporting of Arbitrary Data to the Catch Site&#10;###(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
- <expired>1</expired>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
+ </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>&gt;@]</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-24</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-25</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-26</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-27</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-31</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-28</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-32</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-33</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-34</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-35</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-36</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-37</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-38</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-39</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-40</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- </sorted>
- </object>
- </shared_ptr>
- </pair>
- <pair>
- <string>ctors</string>
- <shared_ptr>
- <id>42</id>
- <type>
- <string>reno_layer</string>
- </type>
- <object>
- <sorted>
- <size>36</size>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-5</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-6</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-9</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-10</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-11</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-12</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-13</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-15</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-17</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-20</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-29</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-30</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-22</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-23</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-24</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-24</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-7</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-40</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-10</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;##(:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:) Transporting of Exceptions between Threads&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-14</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-5</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-37</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;##(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-27</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;##(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;##Headers&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-17</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-31</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-13</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-32</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-33</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-20</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-34</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-9</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;###(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-35</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;#(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-39</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;&#10;&#10;!!Synopsis&#10;&#10;`#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-17</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> api pre_indent=&quot;4&quot;:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-20</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> api pre_indent=&quot;4&quot;:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-34</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> api pre_indent=&quot;4&quot;:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-32</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> api pre_indent=&quot;4&quot;:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-31</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> api pre_indent=&quot;4&quot;:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-9</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> api pre_indent=&quot;4&quot;:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-13</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> api pre_indent=&quot;4&quot;:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-35</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> api pre_indent=&quot;4&quot;:)&#10; }@]&#10;&#10;!!Class exception&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;&#10;!!Transporting of Arbitrary Data to the Catch Site&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-24</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-7</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-40</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-10</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;!!Transporting of Exceptions between Threads&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-14</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-5</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-37</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;&#10;!!Printing Diagnostic Information&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-27</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;&#10;!!Throwing Exceptions&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-25</id>
+ <id>-43</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:include include:)&#10;(:auto also:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
+ </sorted>
+ </object>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <string>def</string>
+ <shared_ptr>
+ <id>44</id>
+ <type>
+ <string>reno_layer</string>
+ </type>
+ <object>
+ <sorted>
+ <size>39</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-26</id>
+ <id>-5</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -2941,7 +2374,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-27</id>
+ <id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -2952,7 +2385,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-31</id>
+ <id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -2963,7 +2396,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-28</id>
+ <id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -2974,7 +2407,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-32</id>
+ <id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -2985,7 +2418,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-33</id>
+ <id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -2996,7 +2429,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-34</id>
+ <id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3007,7 +2440,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-35</id>
+ <id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3018,7 +2451,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-36</id>
+ <id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3029,7 +2462,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-37</id>
+ <id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3040,18 +2473,56 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-38</id>
+ <id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>9</size>
+ <variant>2</variant>
+ <string>[@class&#10;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10; {&#10; public:&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-26</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl pre_indent=&quot;4&quot;:)&#10;&#10; protected:&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-36</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl pre_indent=&quot;4&quot;:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-28</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl pre_indent=&quot;4&quot;:)&#10; };@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-39</id>
+ <id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3062,32 +2533,18 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-40</id>
+ <id>-17</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
- </sorted>
- </object>
- </shared_ptr>
- </pair>
- <pair>
- <string>free</string>
- <shared_ptr>
- <id>43</id>
- <type>
- <string>reno_layer</string>
- </type>
- <object>
- <sorted>
- <size>36</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-5</id>
+ <id>-18</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3098,7 +2555,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-6</id>
+ <id>-19</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3109,7 +2566,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-7</id>
+ <id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3120,7 +2577,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-8</id>
+ <id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3131,18 +2588,29 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-9</id>
+ <id>-22</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>[@template &lt;class Tag,class T&gt;&#10;class&#10;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10; {&#10; public:&#10;&#10; typedef T value_type;&#10;&#10; error_info( value_type const &amp; );&#10; };@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-10</id>
+ <id>-23</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3153,7 +2621,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-11</id>
+ <id>-24</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3164,7 +2632,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-12</id>
+ <id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3175,7 +2643,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-13</id>
+ <id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3186,7 +2654,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-14</id>
+ <id>-27</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3197,7 +2665,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-15</id>
+ <id>-28</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3208,7 +2676,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-16</id>
+ <id>-29</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3219,7 +2687,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-17</id>
+ <id>-30</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3230,7 +2698,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-18</id>
+ <id>-31</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3241,7 +2709,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-19</id>
+ <id>-32</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3252,7 +2720,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-20</id>
+ <id>-33</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3263,7 +2731,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-29</id>
+ <id>-34</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3274,7 +2742,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-30</id>
+ <id>-35</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3285,7 +2753,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-21</id>
+ <id>-36</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3296,7 +2764,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-22</id>
+ <id>-37</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3307,7 +2775,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-38</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3318,7 +2786,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-24</id>
+ <id>-39</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3329,7 +2797,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-25</id>
+ <id>-40</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3340,7 +2808,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-26</id>
+ <id>-41</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3351,7 +2819,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-27</id>
+ <id>-42</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3362,18 +2830,32 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-31</id>
+ <id>-43</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
+ </sorted>
+ </object>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <string>api</string>
+ <shared_ptr>
+ <id>45</id>
+ <type>
+ <string>reno_layer</string>
+ </type>
+ <object>
+ <sorted>
+ <size>39</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-28</id>
+ <id>-5</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3384,7 +2866,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-32</id>
+ <id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3395,7 +2877,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-33</id>
+ <id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3406,29 +2888,87 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-34</id>
+ <id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>[@(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> def:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-35</id>
+ <id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>11</size>
+ <variant>2</variant>
+ <string>[@(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-37</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-14</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-5</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-36</id>
+ <id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3439,7 +2979,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-37</id>
+ <id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3450,7 +2990,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-38</id>
+ <id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3461,43 +3001,40 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-39</id>
+ <id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>[@(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-40</id>
+ <id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
- </sorted>
- </object>
- </shared_ptr>
- </pair>
- <pair>
- <string>decl</string>
- <shared_ptr>
- <id>44</id>
- <type>
- <string>reno_layer</string>
- </type>
- <object>
- <sorted>
- <size>36</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-5</id>
+ <id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3508,7 +3045,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-6</id>
+ <id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3519,155 +3056,120 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-7</id>
+ <id>-17</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>9</size>
+ <size>11</size>
                                                                                                         <variant>2</variant>
- <string>[@ class&#10; (:link </string>
+ <string>[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-20</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10; {&#10; public:&#10;&#10;(:include </string>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> decl:)&#10;&#10; protected:&#10;&#10;(:include </string>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-36</id>
+ <id>-31</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> decl:)&#10;(:include </string>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-9</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-35</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string> decl:)&#10;&#10; private:&#10;&#10; ---unspecified---&#10; };@]&#10;</string>
+ <string>:)&gt;@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-8</id>
+ <id>-18</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>7</size>
- <variant>2</variant>
- <string>[@ template &lt;class E, class Tag1, class T1&gt;&#10; E const &amp; operator&lt;&lt;( E const &amp; x, (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&lt;Tag1,T1&gt; const &amp; v );&#10;&#10; template &lt;class E, class Tag1, class T1, ..., class TagN, class TN&gt;&#10; E const &amp; operator&lt;&lt;( E const &amp; x,&#10; (:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:)&lt;&#10; (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&lt;Tag1,T1&gt;,&#10; ...,&#10; (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&lt;TagN,TN&gt; &gt; const &amp; v );@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-9</id>
+ <id>-19</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
- <variant>2</variant>
- <string>[@ template &lt;class ErrorInfo,class E&gt;&#10; (:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:)&lt;typename ErrorInfo::value_type const&gt; (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-9</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)( E const &amp; x );</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-10</id>
+ <id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
+ <size>9</size>
                                                                                                         <variant>2</variant>
- <string>[@ template &lt;class T&gt;&#10; ---unspecified--- (:link </string>
+ <string>[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-10</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)( T const &amp; x );@]&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-11</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>5</size>
+ <string> def:)&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-7</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>[@ void (:link </string>
+ <string> decl:)&#10;&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-10</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)( (:link </string>
+ <string> decl:)&#10;&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -3676,14 +3178,14 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) const &amp; ep );</string>
+ <string> decl:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-12</id>
+ <id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3694,60 +3196,18 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-13</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
- <variant>2</variant>
- <string>[@ template &lt;class T&gt;&#10; ---unspecified--- (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-13</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)( T const &amp; e );</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
+ <id>-22</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>5</size>
- <variant>2</variant>
- <string>[@ (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-23</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:) (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)();@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-15</id>
+ <id>-23</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3758,29 +3218,18 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-16</id>
+ <id>-24</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
- <variant>2</variant>
- <string>[@ class&#10; (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:):&#10; public std::exception&#10; public boost::exception&#10; {&#10; ---unspecified---&#10; };@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-17</id>
+ <id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3791,7 +3240,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-18</id>
+ <id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3802,38 +3251,18 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-19</id>
+ <id>-27</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>5</size>
- <variant>2</variant>
- <string>[@#ifdef BOOST_NO_EXCEPTIONS&#10; void (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)( std::exception const &amp; e ); // user defined&#10;#else&#10; template &lt;class E&gt;&#10; void (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)( E const &amp; e );&#10;#endif@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-20</id>
+ <id>-28</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -3866,62 +3295,57 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-21</id>
+ <id>-31</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>[@ template &lt;class Tag,class T&gt;&#10; class&#10; (:link </string>
+ <string>[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-27</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10; {&#10; public:&#10;&#10; typedef T value_type;&#10;&#10; error_info( value_type const &amp; );&#10;&#10; private:&#10;&#10; ---unspecified---&#10; };@]&#10;</string>
+ <string> decl:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-22</id>
+ <id>-32</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>9</size>
- <variant>2</variant>
- <string>[@ typedef (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_throw_function,char const *&gt; throw_function;&#10; typedef (:link </string>
+ <string>[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-40</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_throw_file,char const *&gt; throw_file;&#10; typedef (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
+ <string> decl:)@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-33</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_throw_line,int&gt; throw_line;&#10;&#10; #define (:link </string>
+ <string>[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -3930,67 +3354,58 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)\&#10; ::boost::throw_function(BOOST_CURRENT_FUNCTION) &lt;&lt;\&#10; ::boost::throw_file(__FILE__) &lt;&lt;\&#10; ::boost::throw_line((int)__LINE__)@]&#10;</string>
+ <string> decl:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-34</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>[@ typedef ---unspecified--- (:link </string>
+ <string>[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-24</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:);@]&#10;</string>
+ <string> decl:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-24</id>
+ <id>-35</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>5</size>
- <variant>2</variant>
- <string>[@ template &lt;class T&gt;&#10; (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-23</id>
- </shared_ptr>
- </weak_ptr>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>:) (:link </string>
+ <string>[@(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-24</id>
+ <id>-43</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)( T const &amp; e );@]&#10;</string>
+ <string> decl:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-25</id>
+ <id>-36</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4001,7 +3416,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-26</id>
+ <id>-37</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4012,7 +3427,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-27</id>
+ <id>-38</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4023,7 +3438,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-31</id>
+ <id>-39</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4034,7 +3449,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-28</id>
+ <id>-40</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4045,7 +3460,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-32</id>
+ <id>-41</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4056,7 +3471,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-33</id>
+ <id>-42</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4067,113 +3482,107 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-34</id>
+ <id>-43</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
+ </sorted>
+ </object>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <string>decl</string>
+ <shared_ptr>
+ <id>46</id>
+ <type>
+ <string>reno_layer</string>
+ </type>
+ <object>
+ <sorted>
+ <size>39</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-35</id>
+ <id>-5</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>[@ virtual char const * (:link </string>
+ <string>[@void (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-5</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)( (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:::)() const throw();@]&#10;</string>
+ <string>:) const &amp; ep );</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-36</id>
+ <id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>7</size>
- <variant>2</variant>
- <string>[@ (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-36</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:::)();&#10; (:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-36</id>
- </shared_ptr>
- </weak_ptr>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>:::)( (:link </string>
+ <string>[@typedef ---unspecified--- (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) const &amp; x );@]&#10;</string>
+ <string>:);@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-37</id>
+ <id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>[@ (:link </string>
+ <string>[@template &lt;class ErrorInfo,class E&gt;&#10;(:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:)&lt;typename ErrorInfo::value_type const&gt; (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-37</id>
+ <id>-7</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:::)();@]&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-38</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
+ <string>:)( E const &amp; x );@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-39</id>
+ <id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4184,465 +3593,623 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-40</id>
+ <id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
- </sorted>
- </object>
- </shared_ptr>
- </pair>
- <pair>
- <string>include</string>
- <shared_ptr>
- <id>45</id>
- <type>
- <string>reno_layer</string>
- </type>
- <object>
- <sorted>
- <size>36</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-5</id>
+ <id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>27</size>
- <variant>2</variant>
- <string>!!Integrating Boost Exception in Existing Exception Class Hierarchies&#10;&#10;Some exception hierarchies can not be modified to make @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)@@ a base type. For this case, the @@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-10</id>
- </shared_ptr>
- </weak_ptr>
+ <size>9</size>
                                                                                                         <variant>2</variant>
- <string>:)()@@ function template can be used to make exception objects derive from @@boost::(:link </string>
+ <string>[@typedef (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ anyway. Here is an example:&#10;&#10;[@#include &lt;(:link </string>
+ <string>:)&lt;struct tag_throw_function,char const *&gt; throw_function;&#10;typedef (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-12</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;stdexcept&gt;&#10;&#10;typedef boost::(:link </string>
+ <string>:)&lt;struct tag_throw_file,char const *&gt; throw_file;&#10;typedef (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_std_range_min,size_t&gt; std_range_min;&#10;typedef boost::(:link </string>
+ <string>:)&lt;struct tag_throw_line,int&gt; throw_line;&#10;&#10;#define (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-10</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_std_range_max,size_t&gt; std_range_max;&#10;typedef boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
+ <string>:)\&#10; ::boost::throw_function(BOOST_CURRENT_FUNCTION) &lt;&lt;\&#10; ::boost::throw_file(__FILE__) &lt;&lt;\&#10; ::boost::throw_line((int)__LINE__)@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-11</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-12</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-13</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-14</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_std_range_index,size_t&gt; std_range_index;&#10;&#10;template &lt;class T&gt;&#10;class&#10;my_container&#10; {&#10; public:&#10;&#10; size_t size() const;&#10;&#10; T const &amp;&#10; operator[]( size_t i ) const&#10; {&#10; if( i &gt; size() )&#10; throw boost::(:link </string>
+ <string>[@template &lt;class T&gt;&#10;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-10</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(std::range_error(&quot;Index out of range&quot;)) &lt;&lt;&#10; std_range_min(0) &lt;&lt;&#10; std_range_max(size()) &lt;&lt;&#10; std_range_index(i);&#10; //....&#10; }&#10; };&#10;@]&#10;&#10;@@(:link </string>
+ <string>:) (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-10</id>
+ <id>-14</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|Enable_error_info:)&lt;T&gt;@@ returns an object of &apos;&apos;unspecified type&apos;&apos; which is guaranteed to derive from both @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <string>:)( T const &amp; e );@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>:)@@ and @@T@@. This makes it possible to use @@(:link </string>
+ <string>[@class </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@ to store additional information in the exception object. The exception can be intercepted as @@T &amp;@@, therefore existing exception handling will not break. It can also be intercepted as @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <string>;@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-16</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-17</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-18</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-19</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-20</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-21</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>:) &amp;@@, so that (:link </string>
+ <string>[@template &lt;class Tag,class T&gt;&#10;class (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-20</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|more information can be added to the exception at a later time:).&#10;</string>
+ <string>:);@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-6</id>
+ <id>-23</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>21</size>
- <variant>2</variant>
- <string>!!Logging of boost::exception Objects&#10;&#10;Class @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>:)@@ provides a virtual member function @@(:link </string>
+ <string>[@template &lt;class E, class Tag, class T&gt;&#10;E const &amp; (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:::)()@@, with a signature identical to the familiar @@std::exception::what()@@ function. The default implementation returns a string value that is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example:&#10;&#10;[@#include &lt;(:link </string>
+ <string>|operator&lt;&lt;:)( E const &amp; x, (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-12</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;iostream&gt;&#10;&#10;void f(); //throws unknown types that derive from boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <string>:)&lt;Tag,T&gt; const &amp; v );@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-24</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>7</size>
                                                                                                         <variant>2</variant>
- <string>:).&#10;&#10;void&#10;g()&#10; {&#10; try&#10; {&#10; f();&#10; }&#10; catch(&#10; boost::(:link </string>
+ <string>[@template &lt;class E, class Tag1, class T1, ..., class TagN, class TN&gt;&#10;E const &amp; (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-24</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) &amp; e )&#10; {&#10; std::cerr &lt;&lt; e.(:link </string>
+ <string>|operator&lt;&lt;:)( E const &amp; x,&#10; (:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:)&lt;&#10; (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:::)();&#10; }&#10; }@]&#10;&#10;The @@(:link </string>
+ <string>:)&lt;Tag1,T1&gt;,&#10; ...,&#10; (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-35</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:::)()@@ member function iterates over all data objects stored in the @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <string>:)&lt;TagN,TN&gt; &gt; const &amp; v );@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>:)@@ through @@(:link </string>
+ <string>[@(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@. The returned string is constructed by converting each data object to string and then concatenating these strings together.&#10;&#10;When the @@(:link </string>
+ <string>:) (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-25</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;Tag,T&gt;@@ template is instantiated, the system attempts overload resolution for an unqualified call to @@to_string(x)@@, where @@x@@ is of type @@T@@. If this is successful, the @@to_string()@@ overload is used to convert objects of type @@T@@ to string.&#10;&#10;Otherwise, the system attempts overload resolution for @@s &lt;&lt; x@@, where @@s@@ is a @@std::ostringstream@@ and @@x@@ is of type @@T@@. If this is successful, the @@operator&lt;&lt;@@ overload is used to convert objects of type @@T@@ to string.&#10;&#10;Otherwise the system is unable to convert objects of type @@T@@ to string, and an unspecified stub string value is used without issuing a compile error.&#10;</string>
+ <string>:)();@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-7</id>
+ <id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>13</size>
- <variant>2</variant>
- <string>!!exception&#10;&#10;&#10;&#10;(:include synopsis:)&#10;&#10;Class @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>:)@@ is designed to be used as a universal base for user-defined exception types.&#10;&#10;An object of any type deriving from @@boost::(:link </string>
+ <string>[@virtual char const * (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ can store data of arbitrary types, using the @@</string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
+ <string> mod=&quot;m&quot;:)() const throw();@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-27</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>@@ wrapper and @@(:link </string>
+ <string>[@std::string </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-27</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@.&#10;&#10;To retrieve data from a @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <string>( std::exception const &amp; x );@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-28</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>:)@@ object, use the @@(:link </string>
+ <string>[@(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-9</id>
+ <id>-28</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ function template.&#10;&#10;(:include members:)&#10;</string>
+ <string> mod=&quot;m&quot;:)();@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-8</id>
+ <id>-29</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-30</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-31</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-32</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-33</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-34</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-35</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-36</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>7</size>
                                                                                                         <variant>2</variant>
- <string>!!!operator&lt;&lt;()&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;@@E@@ must be @@boost::(:link </string>
+ <string>[@(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-36</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@, or a type that derives (indirectly) from @@boost::(:link </string>
+ <string> mod=&quot;m&quot;:)();&#10;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-36</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@.&#10;&#10;!!!!Effects:&#10;&#10;* The first overload stores a copy of @@v@@ into @@x@@. If @@x@@ already contains data of type @@(:link </string>
+ <string> mod=&quot;m&quot;:)( (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;Tag1,T1&gt;@@, that data is overwritten.&#10;* The @@boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:)@@ overload is equivalent to @@x &lt;&lt; v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)&lt;0&gt;() &lt;&lt; ... &lt;&lt; v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)&lt;N&gt;()@@.&#10;&#10;!!!!Returns:&#10;&#10;@@x@@.&#10;&#10;(:include throws:)&#10;</string>
+ <string>:) const &amp; x );@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-9</id>
+ <id>-37</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>7</size>
- <variant>2</variant>
- <string>!!!get_error_info()&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;The type of the @@x@@ object must derive from @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>:)@@; @@ErrorInfo@@ must be an instance of the @@(:link </string>
+ <string>[@class&#10;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ template.&#10;&#10;!!!!Returns:&#10;&#10;If @@x@@ does not store an object of type @@ErrorInfo@@, returns an empty @@(:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:)@@; otherwise returns pointer to the stored value. Use @@(:link </string>
+ <string>:):&#10; public std::exception&#10; public boost::</string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@ to store values in exception objects.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
+ <string>&#10; {&#10; ---unspecified---&#10; };@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-10</id>
+ <id>-38</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>7</size>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>!!!enable_error_info()&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;@@T@@ must be a user-defined type with accessible no-throw copy constructor.&#10;&#10;!!!!Returns:&#10;&#10;An object of unspecified type with no-throw copy semantics, which derives publicly from both @@T@@, and class @@boost::(:link </string>
+ <string>[@template &lt;class T&gt;&#10;---unspecified--- (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-38</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@. The @@T@@ sub-object is initialized from @@x@@ by the @@T@@ copy constructor. If @@T@@ already derives from @@boost::(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
+ <string>:)( T const &amp; e );@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-39</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-40</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>:)@@, then the type of the returned object does not derive @@boost::(:link </string>
+ <string>[@template &lt;class T&gt;&#10;---unspecified--- (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-40</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
+ <string>:)( T const &amp; x );@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-11</id>
+ <id>-41</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>1</size>
- <variant>2</variant>
- <string>!!!rethrow_exception()&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Precondition:&#10;&#10;@@ep@@ shall not be null.&#10;&#10;!!!!Throws:&#10;&#10;&#10;&#10;The exception to which @@ep@@ refers.&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-12</id>
+ <id>-42</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -4653,107 +4220,186 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-13</id>
+ <id>-43</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>17</size>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>!!!enable_current_exception()&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;@@T@@ must have an accessible no-throw copy constructor&#10;&#10;!!!!Returns:&#10;&#10;An object of &apos;&apos;unspecified&apos;&apos; type which derives publicly from @@T@@. That is, the returned object can be intercepted by a @@catch(T &amp;)@@.&#10;&#10;!!!!Description:&#10;&#10;&#10;&#10;This function is designed to be used directly in a throw-expression to enable the cloning support in Boost Exception. For example:&#10;&#10;[@class&#10;my_exception:&#10; public std::exception&#10; {&#10; };&#10;&#10;....&#10;throw boost::(:link </string>
+ <string>[@#ifdef BOOST_NO_EXCEPTIONS&#10;&#10;void (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-43</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(my_exception());@]&#10;&#10;Unless @@(:link </string>
+ <string>:)( std::exception const &amp; e ); // user defined&#10;&#10;#else&#10;&#10;template &lt;class E&gt;&#10;void (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-43</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ is called at the time an exception object is used in a throw-expression, an attempt to copy it using @@(:link </string>
+ <string>:)( E const &amp; e );&#10;&#10;#endif@]&#10;</string>
+ </container>
+ </pair>
+ </sorted>
+ </object>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <string>include</string>
+ <shared_ptr>
+ <id>47</id>
+ <type>
+ <string>reno_layer</string>
+ </type>
+ <object>
+ <sorted>
+ <size>39</size>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-5</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Precondition:&#10;&#10;ep shall not be null.&#10;&#10;!!!!Throws:&#10;&#10;&#10;&#10;The exception to which ep refers.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>9</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;The (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ may return an @@(:link </string>
+ <string>:) type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ which refers to an instance of @@(:link </string>
+ <string>:)&apos;s operations do not throw.&#10;&#10;Two instances of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@. See @@(:link </string>
+ <string>:) are equivalent and compare equal if and only if they refer to the same exception.&#10;&#10;The default constructor of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) produces the null value of the type. The null value is equivalent only to itself.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-7</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>7</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;* ErrorInfo must be an instance of the (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ for details.&#10;&#10;!!!!Note:&#10;&#10;Instead of using the @@throw@@ keyword directly, it is preferable to call @@boost::(:link </string>
+ <string>:) template.&#10;* E must be polymorphic.&#10;&#10;!!!!Returns:&#10;&#10;* If dynamic_cast&lt;boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-19</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@. This is guaranteed to throw an exception that derives from @@boost::(:link </string>
+ <string>:) const *&gt;(&amp;x) is 0, or if x does not store an object of type ErrorInfo, the returned value is an empty shared_ptr.&#10;* Otherwise, the returned shared_ptr points to the stored value (use (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ and supports cloning.&#10;</string>
+ <string>|operator&lt;&lt;:) to store values in exception objects.) The shared_ptr is valid even after x has been destroyed.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-14</id>
+ <id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>29</size>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>!!!current_exception()&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;The @@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
- </shared_ptr>
- </weak_ptr>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-9</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-10</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>7</size>
                                                                                                         <variant>2</variant>
- <string>:)()@@ function must not be called outside of a @@catch@@ block.&#10;&#10;!!!!Returns:&#10;&#10;* An @@(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;This macro is designed to be used with (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -4762,106 +4408,119 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ that refers to the currently handled exception or a copy of the currently handled exception.&#10;* If the function needs to allocate memory and the attempt fails, it returns an @@(:link </string>
+ <string>|operator&lt;&lt;:) when throwing a boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ that refers to an instance of @@std::bad_alloc@@.&#10;&#10;!!!!Notes:&#10;&#10;* It is unspecified whether the return values of two successive calls to @@(:link </string>
+ <string>:), to store information about the location of the throw statement. It can be chained with other (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ refer to the same exception object.&#10;* Correct implementation of @@(:link </string>
+ <string> mod=&quot;p&quot;:) in a single throw expression.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-11</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>21</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;Sometimes the throw site does not have all the information that is needed at the catch site to make sense of what went wrong. Here is an example:&#10;&#10;[@#include &lt;stdio.h&gt;&#10;#include &lt;string&gt;&#10; &#10;class&#10;file_read_error&#10; {&#10; public:&#10;&#10; explicit&#10; file_read_error( std::string const &amp; fn ):&#10; fn_(fn)&#10; {&#10; };&#10;&#10; std::string const &amp;&#10; file_name() const&#10; {&#10; return fn_;&#10; }&#10;&#10; private:&#10;&#10; std::string fn_;&#10; };&#10;&#10;void&#10;file_read( FILE * f, void * buffer, size_t size )&#10; {&#10; if( size!=fread(buffer,1,size,f) )&#10; throw file_read_error(&quot;????&quot;);&#10; }@]&#10;&#10;We have defined an exception class file_read_error which can store a file name, so that when we catch a file_read_error object, we know which file the failure is related to. However, the file_read func
tion does not have the file name at the time of the throw; all it has is a FILE handle.&#10;&#10;One possible solution is to not use FILE handles directly. We could have our own class file which stores both a FILE handle and a file name, and pass that to file_read. However, this could be problematic if we communicate with 3rd party code that does not use our class file (probably because they have their own similar class.)&#10;&#10;A better solution is to make class file_read_error derive (possibly indirectly) from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ may require compiler support, unless @@(:link </string>
+ <string>:), and free the file_read function from the burden of storing the file name in exceptions it throws:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-17</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ is used at the time the currently handled exception object was passed to @@throw@@. If @@(:link </string>
+ <string>:)&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;errno.h&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ is not used, and if the compiler does not provide the necessary support, then @@(:link </string>
+ <string>:)&lt;struct tag_errno,int&gt; errno_info;&#10;&#10;class file_read_error: public boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ may return an @@(:link </string>
+ <string>:) { };&#10;&#10;void&#10;file_read( FILE * f, void * buffer, size_t size )&#10; {&#10; if( size!=fread(buffer,1,size,f) )&#10; throw file_read_error() &lt;&lt; errno_info(errno);&#10; }@]&#10;&#10;If file_read detects a failure, it throws an exception which contains the information that is available at the time, namely the errno. Other relevant information, such as the file name, can be added in a context higher up the call stack, where it is known naturally:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-17</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ that refers to an instance of @@(:link </string>
+ <string>:)&gt;&#10;#include &lt;boost/shared_ptr.hpp&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;string&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@. In this case, if the original exception object derives from @@boost::(:link </string>
+ <string>:)&lt;struct tag_file_name,std::string&gt; file_name_info;&#10;&#10;boost::shared_ptr&lt;FILE&gt; file_open( char const * file_name, char const * mode );&#10;void file_read( FILE * f, void * buffer, size_t size );&#10;&#10;void&#10;parse_file( char const * file_name )&#10; {&#10; boost::shared_ptr&lt;FILE&gt; f = file_open(file_name,&quot;rb&quot;);&#10; assert(f);&#10; try&#10; {&#10; char buf[1024];&#10; file_read( f.get(), buf, sizeof(buf) );&#10; }&#10; catch(&#10; boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@, then the @@boost::(:link </string>
+ <string>:) &amp; e )&#10; {&#10; e &lt;&lt; file_name_info(file_name);&#10; throw;&#10; }&#10; }@]&#10;&#10;The above function is (almost) exception-neutral -- if an exception is emitted by any function call within the try block, parse_file does not need to do any real work, but it intercepts any boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ sub-object of the @@(:link </string>
+ <string>:) object, stores the file name, and re-throws using a throw-expression with no operand (15.1.6). The rationale for catching any boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-16</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ object is initialized by the @@boost::(:link </string>
+ <string>:) object is that the file name is relevant to any failure that occurs in parse_file, &apos;&apos;even if the failure is unrelated to file I/O&apos;&apos;.&#10;&#10;As usual, the stored data can be retrieved using (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -4870,189 +4529,167 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ copy constructor.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-15</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
+ <string>:).&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-16</id>
+ <id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>5</size>
+ <size>13</size>
                                                                                                         <variant>2</variant>
- <string>!!!unknown_exception&#10;&#10;(:include synopsis:)&#10;&#10;This type is used by the (:link </string>
+ <string>(:auto !!!:)&#10;&#10;The code snippet below demonstrates how boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:) can be used to bundle the name of the function that failed, together with the reported errno so that they can be added to exception objects more conveniently together:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-18</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|cloning:) support in Boost Exception. Please see @@(:link </string>
+ <string>:)&gt;&#10;#include &lt;boost/shared_ptr.hpp&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;string&gt;&#10;#include &lt;errno.h&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)()@@.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-17</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>11</size>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-22</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>!!Transporting of Exceptions between Threads&#10;&#10;&#10;&#10;Boost Exception supports transporting of exception objects between threads through cloning. This system is similar to (:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:), but because Boost Exception can not rely on language support, the use of @@(:link </string>
+ <string>:)&lt;struct tag_file_name,std::string&gt; file_name_info;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ at the time of the throw is required in order to use cloning.&#10;&#10;!!!!Note:&#10;&#10;All exceptions emitted by the familiar function @@boost::(:link </string>
+ <string>:)&lt;struct tag_function,char const *&gt; function_info;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-19</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ are guaranteed to derive from @@boost::(:link </string>
+ <string>:)&lt;struct tag_errno,int&gt; errno_info;&#10;typedef boost::tuple&lt;function_info,errno_info&gt; clib_failure;&#10;&#10;class file_open_error: public boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ and to support cloning.&#10;&#10;(:include </string>
+ <string>:) { };&#10;&#10;boost::shared_ptr&lt;FILE&gt;&#10;file_open( char const * name, char const * mode )&#10; {&#10; if( FILE * f=fopen(name,mode) )&#10; return boost::shared_ptr&lt;FILE&gt;(f,fclose);&#10; else&#10; throw file_open_error() &lt;&lt;&#10; file_name_info(name) &lt;&lt;&#10; clib_failure(&quot;fopen&quot;,errno);&#10; }@]&#10;&#10;Note that the members of a boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:) are stored separately in exception objects; they can only be retrieved individually, using (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-33</id>
+ <id>-7</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;&#10;&#10;(:include </string>
+ <string>:).&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-13</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-14</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>3</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Effects:&#10;&#10;As if try { throw e; } catch( ... ) { return (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-39</id>
+ <id>-25</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;</string>
+ <string>:)(); }&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-19</id>
+ <id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>9</size>
+ <size>19</size>
                                                                                                         <variant>2</variant>
- <string>!!!throw_exception()&#10;&#10;&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;@@E@@ must derive publicly from @@std::exception@@.&#10;&#10;!!!!Effects:&#10;&#10;* If @@BOOST_NO_EXCEPTIONS@@ is not defined, @@boost::(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;Class boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-19</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(e)@@ is equivalent to @@throw boost::(:link </string>
+ <string>:) is designed to be used as a universal base for user-defined exception types.&#10;&#10;An object of any type deriving from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(boost::(:link </string>
+ <string>:) can store data of arbitrary types, using the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-10</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(e))@@, unless @@BOOST_EXCEPTION_DISABLE@@ is defined, in which case @@boost::(:link </string>
+ <string>:) wrapper and (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-19</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(e)@@ is equivalent to @@throw e;@@&#10;* If @@BOOST_NO_EXCEPTIONS@@ is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of @@throw_exception@@ are allowed to assume that the function never returns; therefore, if the user-defined @@throw_exception@@ returns, the behavior is undefined.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-20</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>11</size>
- <variant>2</variant>
- <string>!!Transporting of Arbitrary Data to the Catch Site&#10;&#10;All exception types that derive from @@boost::(:link </string>
+ <string>|operator&lt;&lt;:).&#10;&#10;To retrieve data from a boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ can be used as type-safe containers of arbitrary data objects, while complying with the no-throw requirements (15.5.1) of the ANSI C++ standard for exception classes. Data can be added to a @@boost::(:link </string>
+ <string>:) object, use the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -5061,21 +4698,21 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ at the time of the throw, or at a later time.&#10;&#10;(:include </string>
+ <string>:) function template.&#10;&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-34</id>
+ <id>-36</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&#10;&#10;(:include </string>
+ <string>:)&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-40</id>
+ <id>-28</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -5084,7 +4721,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-38</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -5095,347 +4732,335 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-29</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-30</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
+ <id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>21</size>
                                                                                                         <variant>2</variant>
- <string>!!!error_info&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;@@T@@ must have accessible copy constructor and must not be a reference.&#10;&#10;!!!!Description:&#10;&#10;This class template is used to associate a @@Tag@@ type with a value type @@T@@. Objects of type @@(:link </string>
+ <string>(:auto !!:)&#10;&#10;Class boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;Tag,T&gt;@@ can be passed to @@(:link </string>
+ <string>:) provides a virtual member function (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@ to be stored in objects of type @@boost::(:link </string>
+ <string> mod=&quot;m&quot;:), with a signature similar to the familiar std::exception::what function. The default implementation returns a string value that is not presentable as a friendly user message, but because it is generated automatically, it is useful for debugging or logging purposes. Here is an example:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-17</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@.&#10;&#10;!!!!Note:&#10;&#10;The header @@&lt;(:link </string>
+ <string>:)&gt;&#10;#include &lt;iostream&gt;&#10;&#10;void f(); //throws unknown types that derive from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@ provides a declaration of the @@(:link </string>
+ <string>:).&#10;&#10;void&#10;g()&#10; {&#10; try&#10; {&#10; f();&#10; }&#10; catch(&#10; boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ template, which is sufficient for the purpose of @@typedef@@ing an instance for specific @@Tag@@ and @@T@@, like this:&#10;&#10;[@#include &lt;(:link </string>
+ <string>:) &amp; e )&#10; {&#10; std::cerr &lt;&lt; e.(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;typedef boost::(:link </string>
+ <string> mod=&quot;m&quot;:)();&#10; }&#10; }@]&#10;&#10;The (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_errno,int&gt; errno_info;@]&#10;&#10;Of course, to actually add an @@errno_info@@ object to exceptions using @@(:link </string>
+ <string> mod=&quot;m&quot;:) member function iterates over all data objects stored in the boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@, or to retrieve it using @@(:link </string>
+ <string>:) through (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-9</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@, you must first @@#include &lt;(:link </string>
+ <string>|operator&lt;&lt;:). The returned string is constructed by converting each data object to string and then concatenating these strings together.&#10;&#10;When the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@.&#10;</string>
+ <string>:)&lt;Tag,T&gt; template is instantiated, the system attempts overload resolution for an unqualified call to to_string(x), where x is of type T. If this is successful, the to_string overload is expected to return std::string and is used to convert objects of type T to string.&#10;&#10;Otherwise, the system attempts overload resolution for s &lt;&lt; x, where s is a std::ostringstream and x is of type T. If this is successful, the operator&lt;&lt; overload is used to convert objects of type T to string.&#10;&#10;Otherwise the system is unable to convert objects of type T to string, and an unspecified stub string value is used without issuing a compile error.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-22</id>
+ <id>-17</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>7</size>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>!!!BOOST_ERROR_INFO&#10;&#10;(:include synopsis:)&#10;&#10;This macro is designed to be used with @@(:link </string>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-18</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>11</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;All exception types that derive from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@ when throwing a @@boost::(:link </string>
+ <string>:) can be used as type-safe containers of arbitrary data objects, while complying with the no-throw requirements (15.5.1) of the ANSI C++ standard for exception types. Data can be added to a boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@, to store information about the location of the throw statement. It can be chained with other @@(:link </string>
+ <string>:) at the time of the throw, or at a later time.&#10;&#10;(:include </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-29</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-11</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-12</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@s in a single throw expression.&#10;</string>
+ <string>:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-19</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>15</size>
+ <size>27</size>
                                                                                                         <variant>2</variant>
- <string>!!!exception_ptr&#10;&#10;(:include synopsis:)&#10;&#10;The @@(:link </string>
+ <string>(:auto !!:)&#10;&#10;Some exception hierarchies can not be modified to make boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ type can be used to refer to a copy of an exception object. It is Default Constructible, Copy Constructible, Assignable and Equality Comparable; @@(:link </string>
+ <string>:) a base type. In this case, the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-40</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@&apos;s operations do not throw.&#10;&#10;Two instances of @@(:link </string>
+ <string>:) function template can be used to make exception objects derive from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ are equivalent and compare equal if and only if they refer to the same exception.&#10;&#10;The default constructor of @@(:link </string>
+ <string>:) anyway. Here is an example:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-17</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ produces the null value of the type. The null value is equivalent only to itself.&#10;&#10;!!!!Note:&#10;&#10;@@(:link </string>
+ <string>:)&gt;&#10;#include &lt;stdexcept&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ objects are returned by @@(:link </string>
+ <string>:)&lt;struct tag_std_range_min,size_t&gt; std_range_min;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ and @@(:link </string>
+ <string>:)&lt;struct tag_std_range_max,size_t&gt; std_range_max;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-24</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-24</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
- <variant>2</variant>
- <string>!!!copy_exception()&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Effects:&#10;&#10;As if @@try { throw e; } catch( ... ) { return </string>
+ <string>:)&lt;struct tag_std_range_index,size_t&gt; std_range_index;&#10;&#10;template &lt;class T&gt;&#10;class&#10;my_container&#10; {&#10; public:&#10;&#10; size_t size() const;&#10;&#10; T const &amp;&#10; operator[]( size_t i ) const&#10; {&#10; if( i &gt; size() )&#10; throw boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-40</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
- <variant>2</variant>
- <string>(); }@@&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-25</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-26</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-27</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-31</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-28</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
+ <variant>2</variant>
+ <string>:)(std::range_error(&quot;Index out of range&quot;)) &lt;&lt;&#10; std_range_min(0) &lt;&lt;&#10; std_range_max(size()) &lt;&lt;&#10; std_range_index(i);&#10; //....&#10; }&#10; };&#10;@]&#10;&#10;The call to (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-40</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&lt;T&gt; gets us an object of &apos;&apos;unspecified type&apos;&apos; which is guaranteed to derive from both boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) and T. This makes it possible to use (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>|operator&lt;&lt;:) to store additional information in the exception object. The exception can be intercepted as T &amp;, so existing exception handling will not break. It can also be intercepted as boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) &amp;, so that (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-18</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>|more information can be added to the exception at a later time:).&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-32</id>
+ <id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-33</id>
+ <id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>9</size>
+ <size>13</size>
                                                                                                         <variant>2</variant>
- <string>!!!Using enable_current_exception() at the Time of the Throw&#10;&#10;Here is how cloning can be enabled in a throw-expression (15.1):&#10;&#10;[@#include &lt;(:link </string>
+ <string>(:auto !!!:)&#10;&#10;Here is how cloning can be enabled in a throw-expression (15.1):&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-27</id>
+ <id>-13</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -5444,7 +5069,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-20</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -5453,7 +5078,7 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
@@ -5462,377 +5087,382 @@
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)(file_read_error()) &lt;&lt;&#10; errno_info(errno);&#10; }@]&#10;&#10;Of course, (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) may be used with any exception type; there is no requirement that it should derive from boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(file_read_error()) &lt;&lt;&#10; errno_info(errno);&#10; }@]&#10;</string>
+ <string>:).&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-34</id>
+ <id>-22</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>19</size>
+ <size>25</size>
                                                                                                         <variant>2</variant>
- <string>!!!Adding of Arbitrary Data at the Point of the Throw&#10;&#10;The following example demonstrates how @@errno@@ can be stored in exception objects using Boost Exception:&#10;&#10;[@#include &lt;(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;T must have accessible copy constructor and must not be a reference (there is no requirement that T&apos;s copy constructor does not throw.)&#10;&#10;!!!!Description:&#10;&#10;This class template is used to associate a Tag type with a value type T. Objects of type (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-12</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;errno.h&gt;&#10;#include &lt;iostream&gt;&#10;&#10;typedef boost::(:link </string>
+ <string>:)&lt;Tag,T&gt; can be passed to (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_errno,int&gt; errno_info; //(1)&#10;&#10;class my_error: public boost::(:link </string>
+ <string>|operator&lt;&lt;:) to be stored in objects of type boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:), public std::exception { }; //(2)&#10;&#10;void&#10;f()&#10; {&#10; throw my_error() &lt;&lt; errno_info(errno); //(3)&#10; }&#10;@]&#10;&#10;First, we instantiate the @@(:link </string>
+ <string>:).&#10;&#10;!!!!Note:&#10;&#10;The header &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ template using a unique identifier -- @@tag_errno@@, and the type of the info it identifies -- @@int@@. This provides compile-time type safety for the various values stored in exception objects.&#10;&#10;Second, we define class @@my_error@@, which derives from @@boost::(:link </string>
+ <string>:)&gt; provides a declaration of the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@.&#10;&#10;Finally, (3) illustrates how the @@typedef@@ from (1) can be used with @@(:link </string>
+ <string>:) template, which is sufficient for the purpose of typedefing an instance for specific Tag and T, like this:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-33</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@ to store values in exception objects at the point of the throw.&#10;&#10;The stored @@errno@@ value can be recovered at a later time like this:&#10;&#10;[@// ...continued&#10;&#10;void&#10;g()&#10; {&#10; try&#10; {&#10; f();&#10; }&#10; catch(&#10; my_error &amp; x )&#10; {&#10; if( boost::shared_ptr&lt;int const&gt; err=boost::(:link </string>
+ <string>:)&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-9</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;errno_info&gt;(x) )&#10; std::cerr &lt;&lt; &quot;Error code: &quot; &lt;&lt; *err;&#10; }&#10; }@]&#10;&#10;The @@(:link </string>
+ <string>:)&lt;struct tag_errno,int&gt; errno_info;@]&#10;&#10;Of course, to actually add an (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-9</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ function template is instantiated with the @@typedef@@ from (1), and is passed an exception object of any type that derives publicly from @@boost::(:link </string>
+ <string>:) object to (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@. If the exception object contains the requested value, the returned @@(:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:)@@ will point to it; otherwise an empty @@(:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:)@@ is returned.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-35</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>7</size>
- <variant>2</variant>
- <string>!!!exception::what()&#10;&#10;(:include decl:)&#10;&#10;!!!!Returns:&#10;&#10;An string representation of all data stored in the @@boost::(:link </string>
+ <string> mod=&quot;p&quot;:) using (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ object by the @@(:link </string>
+ <string>|operator&lt;&lt;:), or to retrieve it using (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-7</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@ function. See &quot;(:link </string>
+ <string>:), you must first #include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-6</id>
+ <id>-20</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&quot; for details.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;&#10;!!!!Note:&#10;&#10;The return value remains valid until the exception object from which it is obtained is destroyed or modified.&#10;</string>
+ <string>:)&gt;.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-36</id>
+ <id>-23</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>7</size>
                                                                                                         <variant>2</variant>
- <string>!!!exception constructors&#10;&#10;(:include decl:)&#10;&#10;!!!!Effects:&#10;&#10;* Default constructor: initializes an empty @@boost::(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;E must be boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ object.&#10;* Copy constructor: initializes a @@boost::(:link </string>
+ <string>:), or a type that derives (indirectly) from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ object which shares with @@x@@ all data added through @@(:link </string>
+ <string>:).&#10;&#10;!!!!Effects:&#10;&#10;Stores a copy of v into x. If x already contains data of type (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-8</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>|operator&lt;&lt;:)()@@, including data that is added at a future time.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
+ <string>:)&lt;Tag,T&gt;, that data is overwritten.&#10;&#10;!!!!Returns:&#10;&#10;x.&#10;&#10;(:include throws:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-37</id>
+ <id>-24</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>!!!exception destructor&#10;&#10;(:include decl:)&#10;&#10;!!!!Effects:&#10;&#10;&#10;&#10;Frees all resources associated with a @@boost::(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;E must be boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:), or a type that derives (indirectly) from boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ object.&#10;&#10;!!!!Throws:&#10;&#10;&#10;&#10;Nothing.&#10;</string>
+ <string>:).&#10;&#10;!!!!Effects:&#10;&#10;Equivalent to x &lt;&lt; v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)&lt;0&gt;() &lt;&lt; ... &lt;&lt; v.(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html#accessing_elements|get:)&lt;N&gt;().&#10;&#10;!!!!Returns:&#10;&#10;x.&#10;&#10;(:include throws:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-38</id>
+ <id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>13</size>
+ <size>29</size>
                                                                                                         <variant>2</variant>
- <string>!!!Adding Grouped Data to Exceptions&#10;&#10;The code snippet below demonstrates how @@boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:)@@ can be used to bundle the name of the function that failed, together with the reported @@errno@@ so that they can be added to exception objects more conveniently together:&#10;&#10;[@#include &lt;(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;The (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-29</id>
+ <id>-25</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;boost/shared_ptr.hpp&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;string&gt;&#10;#include &lt;errno.h&gt;&#10;&#10;typedef boost::(:link </string>
+ <string>:) function must not be called outside of a catch block.&#10;&#10;!!!!Returns:&#10;&#10;* An (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_file_name,std::string&gt; file_name_info;&#10;typedef boost::(:link </string>
+ <string>:) that refers to the currently handled exception or a copy of the currently handled exception.&#10;* If the function needs to allocate memory and the attempt fails, it returns an (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_function,char const *&gt; function_info;&#10;typedef boost::(:link </string>
+ <string>:) that refers to an instance of std::bad_alloc.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;&#10;!!!!Notes:&#10;&#10;* It is unspecified whether the return values of two successive calls to (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-25</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_errno,int&gt; errno_info;&#10;typedef boost::tuple&lt;function_info,errno_info&gt; clib_failure;&#10;&#10;class file_open_error: public boost::(:link </string>
+ <string>:) refer to the same exception object.&#10;* Correct implementation of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-25</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) { };&#10;&#10;boost::shared_ptr&lt;FILE&gt;&#10;file_open( char const * name, char const * mode )&#10; {&#10; if( FILE * f=fopen(name,mode) )&#10; return boost::shared_ptr&lt;FILE&gt;(f,fclose);&#10; else&#10; throw file_open_error() &lt;&lt;&#10; file_name_info(name) &lt;&lt;&#10; clib_failure(&quot;fopen&quot;,errno);&#10; }@]&#10;&#10;Note that the members of a @@boost::(:link http://www.boost.org/libs/tuple/doc/tuple_users_guide.html|tuple:)@@ are stored separately in exception objects; they can only be retrieved individually, using @@(:link </string>
+ <string>:) may require compiler support, unless (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-9</id>
+ <id>-38</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-39</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>39</size>
- <variant>2</variant>
- <string>!!!Cloning and Re-throwing an Exception&#10;&#10;When you catch a @@boost::(:link </string>
+ <string>:) was used at the time the currently handled exception object was passed to throw. If (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-38</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@, you can call @@(:link </string>
+ <string>:) was not used, and if the compiler does not provide the necessary support, then (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-25</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ to get an @@(:link </string>
+ <string>:) may return an (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-6</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ object:&#10;&#10;[@#include &lt;(:link </string>
+ <string>:) that refers to an instance of (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-25</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;boost/thread.hpp&gt;&#10;#include &lt;boost/bind.hpp&gt;&#10;&#10;void do_work(); //throws cloning-enabled boost::(:link </string>
+ <string>:). In this case, if the original exception object derives from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)s&#10;&#10;void&#10;worker_thread( boost::(:link </string>
+ <string>:), then the boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) &amp; error )&#10; {&#10; try&#10; {&#10; do_work();&#10; error = boost::(:link </string>
+ <string>:) sub-object of the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-37</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)();&#10; }&#10; catch(&#10; ... )&#10; {&#10; error = boost::(:link </string>
+ <string>:) object is initialized by the boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)();&#10; }&#10; }@]&#10;&#10;In the above example, note that @@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
- </shared_ptr>
- </weak_ptr>
+ <string>:) copy constructor.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-26</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>15</size>
                                                                                                         <variant>2</variant>
- <string>:)()@@ captures the original type of the exception object. The exception can be thrown again using the @@(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include decl:)&#10;&#10;!!!!Returns:&#10;&#10;A string representation of all data stored in the boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ function:&#10;&#10;[@// ...continued&#10;&#10;void&#10;work()&#10; {&#10; boost::(:link </string>
+ <string>:) object by the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -5841,155 +5471,172 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) error;&#10; boost::(:link http://www.boost.org/doc/html/boost/thread.html|thread:) t( boost::(:link http://www.boost.org/libs/bind/bind.html|bind:)(worker_thread,boost::(:link http://www.boost.org/doc/html/ref.html|ref:)(error)) );&#10; t.(:link http://www.boost.org/doc/html/boost/thread.html|join:)();&#10; if( error )&#10; boost::(:link </string>
+ <string>|operator&lt;&lt;:) function. See &quot;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-16</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)(error);&#10; }@]&#10;&#10;@@(:link </string>
+ <string> mod=&quot;w&quot;:)&quot; for details.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;&#10;!!!!Notes:&#10;&#10;*The return value remains valid until the exception object from which it was obtained is destroyed or modified.&#10;*The header </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-31</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ could fail to copy the original exception object in the following cases:&#10;&#10;* if there is not enough memory, in which case the returned @@(:link </string>
+ <string> provides a namespace-scope function </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-27</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ points to an instance of @@std::bad_alloc@@, or&#10;* if @@(:link </string>
+ <string> which takes a std::exception. It calls </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-13</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ was not used in the throw-expression passed to the original @@throw@@ statement and the current implementation does not have the necessary compiler-specific support to copy the exception automatically, in which case the returned @@(:link </string>
+ <string> if its argument can be converted to boost::</string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ points to an instance of @@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
+ <string>; otherwise it returns a string that combines the value of std::exception::what and the exception&apos;s dynamic type.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-27</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>:)@@.&#10;&#10;&#10;&#10;Regardless, the use of @@(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Returns:&#10;&#10;If dynamic_cast&lt;boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-14</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ and @@(:link </string>
+ <string>:) const *&gt;(&amp;x) is not null, the returned string is initialized by a call to (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-11</id>
+ <id>-26</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@ in the above examples is well-formed.&#10;</string>
+ <string>:); otherwise, the returned string combines the output of x.what() and typeid(x).name().&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-40</id>
+ <id>-28</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>21</size>
+ <size>3</size>
                                                                                                         <variant>2</variant>
- <string>!!!Adding of Arbitrary Data to Active Exception Objects&#10;&#10;Sometimes the throw site does not have all the information that is needed at the catch site to make sense of what went wrong. Here is an example:&#10;&#10;[@#include &lt;stdio.h&gt;&#10;#include &lt;string&gt;&#10; &#10;class&#10;file_read_error&#10; {&#10; public:&#10;&#10; explicit&#10; file_read_error( std::string const &amp; fn ):&#10; fn_(fn)&#10; {&#10; };&#10;&#10; std::string const &amp;&#10; file_name() const&#10; {&#10; return fn_;&#10; }&#10;&#10; private:&#10;&#10; std::string fn_;&#10; };&#10;&#10;void&#10;file_read( FILE * f, void * buffer, size_t size )&#10; {&#10; if( size!=fread(buffer,1,size,f) )&#10; throw file_read_error(&quot;????&quot;);&#10; }@]&#10;&#10;We have defined an exception class @@file_read_error@@ which can store a file name, so that when we catch a @@file_read_error@@ object, we know which file the
 failure is related to. However, the @@file_read@@ function does not have the file name at the time of the throw; all it has is a @@FILE@@ handle.&#10;&#10;One possible solution is to not use @@FILE@@ handles directly. We could have our own @@class file@@ which stores both a @@FILE@@ handle and a file name, and pass that to @@file_read()@@. However, this could be problematic if we communicate with 3rd party code that does not use our @@class file@@ (probably because they have their own similar class.)&#10;&#10;A better solution is to make class @@file_read_error@@ derive (possibly indirectly) from @@boost::(:link </string>
+ <string>(:auto !!!:)&#10;&#10;(:include decl:)&#10;&#10;!!!!Effects:&#10;&#10;&#10;&#10;Frees all resources associated with a boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@, and free the @@file_read()@@ function from the burden of storing the file name in exceptions it throws:&#10;&#10;[@#include &lt;(:link </string>
+ <string>:) object.&#10;&#10;!!!!Throws:&#10;&#10;&#10;&#10;Nothing.&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-29</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>17</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;The following example demonstrates how errno can be stored in exception objects using Boost Exception:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-12</id>
+ <id>-17</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;errno.h&gt;&#10;&#10;typedef boost::(:link </string>
+ <string>:)&gt;&#10;#include &lt;errno.h&gt;&#10;#include &lt;iostream&gt;&#10;&#10;typedef boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_errno,int&gt; errno_info;&#10;&#10;class file_read_error: public boost::(:link </string>
+ <string>:)&lt;struct tag_errno,int&gt; errno_info; //(1)&#10;&#10;class my_error: public boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) { };&#10;&#10;void&#10;file_read( FILE * f, void * buffer, size_t size )&#10; {&#10; if( size!=fread(buffer,1,size,f) )&#10; throw file_read_error() &lt;&lt; errno_info(errno);&#10; }@]&#10;&#10;If @@file_read()@@ detects a failure, it throws an exception which contains the information that is available at the time, namely the @@errno@@. Other relevant information, such as the file name, can be added in a context higher up the call stack, where it is known naturally:&#10;&#10;[@#include &lt;(:link </string>
+ <string>:), public std::exception { }; //(2)&#10;&#10;void&#10;f()&#10; {&#10; throw my_error() &lt;&lt; errno_info(errno); //(3)&#10; }&#10;@]&#10;&#10;First, we instantiate the (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-12</id>
+ <id>-22</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;#include &lt;boost/shared_ptr.hpp&gt;&#10;#include &lt;stdio.h&gt;&#10;#include &lt;string&gt;&#10;&#10;typedef boost::(:link </string>
+ <string>:) template using a unique identifier -- tag_errno, and the type of the info it identifies -- int. This provides compile-time type safety for the various values stored in exception objects.&#10;&#10;Second, we define class my_error, which derives from boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-15</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&lt;struct tag_file_name,std::string&gt; file_name_info;&#10;&#10;boost::shared_ptr&lt;FILE&gt; file_open( char const * file_name, char const * mode );&#10;void file_read( FILE * f, void * buffer, size_t size );&#10;&#10;void&#10;parse_file( char const * file_name )&#10; {&#10; boost::shared_ptr&lt;FILE&gt; f = file_open(file_name,&quot;rb&quot;);&#10; assert(f);&#10; try&#10; {&#10; char buf[1024];&#10; file_read( f.get(), buf, sizeof(buf) );&#10; }&#10; catch(&#10; boost::(:link </string>
+ <string>:).&#10;&#10;Finally, (3) illustrates how the typedef from (1) can be used with (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-7</id>
+ <id>-23</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:) &amp; e )&#10; {&#10; e &lt;&lt; file_name_info(file_name);&#10; throw;&#10; }&#10; }@]&#10;&#10;The above function is (almost) exception-neutral -- if an exception is emitted by any function call within the @@try@@ block, @@parse_file()@@ does not need to do any real work, but it intercepts any @@boost::(:link </string>
+ <string>|operator&lt;&lt;:) to store values in exception objects at the point of the throw.&#10;&#10;The stored errno value can be recovered at a later time like this:&#10;&#10;[@// ...continued&#10;&#10;void&#10;g()&#10; {&#10; try&#10; {&#10; f();&#10; }&#10; catch(&#10; my_error &amp; x )&#10; {&#10; if( boost::shared_ptr&lt;int const&gt; err=boost::(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -5998,7 +5645,7 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ object, stores the file name, and re-throws using a throw-expression with no operand (15.1.6). The rationale for catching any @@boost::(:link </string>
+ <string>:)&lt;errno_info&gt;(x) )&#10; std::cerr &lt;&lt; &quot;Error code: &quot; &lt;&lt; *err;&#10; }&#10; }@]&#10;&#10;The (:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
@@ -6007,219 +5654,7 @@
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)@@ object is that the file name is relevant to any failure that occurs in @@parse_file()@@, &apos;&apos;even if the failure is unrelated to file I/O&apos;&apos;.&#10;&#10;As usual, the stored data can be retrieved using @@(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-9</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)()@@.&#10;</string>
- </container>
- </pair>
- </sorted>
- </object>
- </shared_ptr>
- </pair>
- <pair>
- <string>throws</string>
- <shared_ptr>
- <id>46</id>
- <type>
- <string>reno_layer</string>
- </type>
- <object>
- <sorted>
- <size>36</size>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-5</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-6</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>1</size>
- <variant>2</variant>
- <string>!!!!Throws:&#10;&#10;@@std::bad_alloc@@, or any exception emitted by @@T1..TN@@ copy constructor.&#10;</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-9</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-10</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-11</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-12</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-13</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-14</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-15</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-16</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-17</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-18</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-19</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-20</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-29</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>0</size>
+ <string>:) function template is instantiated with the typedef from (1), and is passed an exception object of a polymorphic type. If the exception object contains the requested value, the returned (:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:) will point to it; otherwise an empty (:link http://www.boost.org/libs/smart_ptr/shared_ptr.htm|shared_ptr:) is returned.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -6230,124 +5665,417 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-21</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>3</size>
+ <size>37</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;When you catch an exception, you can call (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) to get an (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>!!!!Throws:&#10;&#10;@@std::bad_alloc@@, or any other exception resulting from copying any of the arguments of @@(:link </string>
+ <string>:) object:&#10;&#10;[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-9</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;boost/thread.hpp&gt;&#10;#include &lt;boost/bind.hpp&gt;&#10;&#10;void do_work(); //throws cloning-enabled boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)s&#10;&#10;void&#10;worker_thread( boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) &amp; error )&#10; {&#10; try&#10; {&#10; do_work();&#10; error = boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)();&#10; }&#10; catch(&#10; ... )&#10; {&#10; error = boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)();&#10; }&#10; }@]&#10;&#10;In the above example, note that (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) captures the original type of the exception object. The exception can be thrown again using the (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-5</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) function:&#10;&#10;[@// ...continued&#10;&#10;void&#10;work()&#10; {&#10; boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) error;&#10; boost::(:link http://www.boost.org/doc/html/boost/thread.html|thread:) t( boost::(:link http://www.boost.org/libs/bind/bind.html|bind:)(worker_thread,boost::(:link http://www.boost.org/doc/html/ref.html|ref:)(error)) );&#10; t.(:link http://www.boost.org/doc/html/boost/thread.html|join:)();&#10; if( error )&#10; boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-5</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)(error);&#10; }@]&#10;&#10;Note that (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) could fail to copy the original exception object in the following cases:&#10;&#10;* if there is not enough memory, in which case the returned (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) points to an instance of std::bad_alloc, or&#10;* if (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) was not used in the throw-expression passed to the original throw statement and the current implementation does not have the necessary compiler-specific support to copy the exception automatically, in which case the returned (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) points to an instance of (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-37</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:).&#10;&#10;Regardless, the use of (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) and (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-5</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)()@@.&#10;</string>
+ <string>:) in the above examples is well-formed.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-22</id>
+ <id>-31</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-32</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-24</id>
+ <id>-33</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-25</id>
+ <id>-34</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-26</id>
+ <id>-35</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;!!!Synopsis&#10;&#10;(:include synopsis:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-27</id>
+ <id>-36</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>7</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include decl:)&#10;&#10;!!!!Effects:&#10;&#10;* Default constructor: initializes an empty boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) object.&#10;* Copy constructor: initializes a boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) object which shares with x all data added through (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-23</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>|operator&lt;&lt;:), including data that is added at a future time.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-31</id>
+ <id>-37</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>5</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;This type is used by the (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) support in Boost Exception. Please see (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:).&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-28</id>
+ <id>-38</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>21</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;T must be of user-defined type with an accessible no-throw copy constructor.&#10;&#10;!!!!Returns:&#10;&#10;An object of &apos;&apos;unspecified&apos;&apos; type which derives publicly from T. That is, the returned object can be intercepted by a catch(T &amp;).&#10;&#10;!!!!Description:&#10;&#10;&#10;&#10;This function is designed to be used directly in a throw-expression to enable the (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) support in Boost Exception. For example:&#10;&#10;[@class&#10;my_exception:&#10; public std::exception&#10; {&#10; };&#10;&#10;....&#10;throw boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)(my_exception());@]&#10;&#10;Unless (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) is called at the time an exception object is used in a throw-expression, an attempt to copy it using (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) may return an (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) which refers to an instance of (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-37</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:). See (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-25</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) for details.&#10;&#10;!!!!Note:&#10;&#10;Instead of using the throw keyword directly, it is preferable to call boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:). This is guaranteed to throw an exception that derives from boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) and supports the (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-6</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) functionality.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-32</id>
+ <id>-39</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6358,29 +6086,96 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-33</id>
+ <id>-40</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>5</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;T must be a user-defined type with accessible no-throw copy constructor as per (15.5.1).&#10;&#10;!!!!Returns:&#10;&#10;* If T derives from boost::</string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>, the returned object is of type T and is a copy of x.&#10;* Otherwise, the returned object is of an unspecified type that derives publicly from both T and boost::</string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>. The T sub-object is initialized from x by the T copy constructor.&#10;&#10;!!!!Throws:&#10;&#10;Nothing.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-34</id>
+ <id>-41</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>11</size>
+ <variant>2</variant>
+ <string>(:auto !!:)&#10;&#10;Boost Exception supports transporting of exception objects between threads through cloning. This system is similar to (:link http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html|N2179:), but because Boost Exception can not rely on language support, the use of (:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) at the time of the throw is required in order to use cloning.&#10;&#10;!!!!Note:&#10;&#10;All exceptions emitted by the familiar function boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) are guaranteed to derive from boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-15</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:) and to support cloning.&#10;&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-21</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-30</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-35</id>
+ <id>-42</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6391,18 +6186,88 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-36</id>
+ <id>-43</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>13</size>
+ <variant>2</variant>
+ <string>(:auto !!!:)&#10;&#10;(:include synopsis:)&#10;&#10;!!!!Requirements:&#10;&#10;E must derive publicly from std::exception.&#10;&#10;!!!!Effects:&#10;&#10;* If BOOST_NO_EXCEPTIONS is not defined, boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)(e) is equivalent to throw boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-38</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)(boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-40</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)(e)), unless BOOST_EXCEPTION_DISABLE is defined, in which case boost::(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)(e) is equivalent to throw e;&#10;* If BOOST_NO_EXCEPTIONS is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> are allowed to assume that the function never returns; therefore, if the user-defined </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> returns, the behavior is undefined.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
+ </sorted>
+ </object>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <string>throws</string>
+ <shared_ptr>
+ <id>48</id>
+ <type>
+ <string>reno_layer</string>
+ </type>
+ <object>
+ <sorted>
+ <size>39</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-37</id>
+ <id>-5</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6413,7 +6278,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-38</id>
+ <id>-6</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6424,7 +6289,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-39</id>
+ <id>-7</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6435,32 +6300,18 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-40</id>
+ <id>-8</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
- </sorted>
- </object>
- </shared_ptr>
- </pair>
- <pair>
- <string>members</string>
- <shared_ptr>
- <id>47</id>
- <type>
- <string>reno_layer</string>
- </type>
- <object>
- <sorted>
- <size>36</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-5</id>
+ <id>-9</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6471,7 +6322,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-6</id>
+ <id>-10</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6482,47 +6333,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-7</id>
- </shared_ptr>
- </weak_ptr>
- <container>
- <size>7</size>
- <variant>2</variant>
- <string>(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-36</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-37</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&#10;(:include </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-35</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)</string>
- </container>
- </pair>
- <pair>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-8</id>
+ <id>-11</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6533,7 +6344,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-9</id>
+ <id>-12</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6544,7 +6355,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-10</id>
+ <id>-13</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6555,7 +6366,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-11</id>
+ <id>-14</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6566,7 +6377,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-12</id>
+ <id>-15</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6577,7 +6388,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-13</id>
+ <id>-16</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6588,7 +6399,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-14</id>
+ <id>-17</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6599,7 +6410,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-15</id>
+ <id>-18</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6610,7 +6421,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-16</id>
+ <id>-19</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6621,7 +6432,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-17</id>
+ <id>-20</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6632,7 +6443,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-18</id>
+ <id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6643,7 +6454,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-19</id>
+ <id>-22</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6654,29 +6465,33 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-20</id>
+ <id>-23</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>!!!!Throws:&#10;&#10;std::bad_alloc, or any exception emitted by the T copy constructor.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-29</id>
+ <id>-24</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>!!!!Throws:&#10;&#10;std::bad_alloc, or any exception emitted by T1..TN copy constructor.&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-30</id>
+ <id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6687,7 +6502,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-21</id>
+ <id>-26</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6698,7 +6513,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-22</id>
+ <id>-27</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6709,7 +6524,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-28</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6720,7 +6535,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-24</id>
+ <id>-29</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6731,7 +6546,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-25</id>
+ <id>-30</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6742,7 +6557,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-26</id>
+ <id>-31</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6753,7 +6568,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-27</id>
+ <id>-32</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6764,7 +6579,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-31</id>
+ <id>-33</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6775,7 +6590,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-28</id>
+ <id>-34</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6786,7 +6601,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-32</id>
+ <id>-35</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6797,7 +6612,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-33</id>
+ <id>-36</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6808,7 +6623,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-34</id>
+ <id>-37</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6819,7 +6634,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-35</id>
+ <id>-38</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6830,7 +6645,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-36</id>
+ <id>-39</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6841,7 +6656,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-37</id>
+ <id>-40</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6852,7 +6667,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-38</id>
+ <id>-41</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6863,7 +6678,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-39</id>
+ <id>-42</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6874,7 +6689,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-40</id>
+ <id>-43</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -6888,13 +6703,13 @@
                                                         <pair>
                                                                 <string>synopsis</string>
                                                                 <shared_ptr>
- <id>48</id>
+ <id>49</id>
                                                                         <type>
                                                                                 <string>reno_layer</string>
                                                                         </type>
                                                                         <object>
                                                                                 <sorted>
- <size>36</size>
+ <size>39</size>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
@@ -6903,7 +6718,18 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>`#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-9</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -6914,7 +6740,18 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>`#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-9</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -6927,16 +6764,16 @@
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>@@#include &lt;(:link </string>
+ <string>`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-31</id>
+ <id>-20</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -6947,27 +6784,9 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>5</size>
- <variant>2</variant>
- <string>@@#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-15</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&gt;@@\\&#10;@@#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-29</id>
- </shared_ptr>
- </weak_ptr>
+ <size>1</size>
                                                                                                         <variant>2</variant>
- <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <string>[@namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -6980,16 +6799,16 @@
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>@@#include &lt;(:link </string>
+ <string>[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-8</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <string>:)&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -7002,16 +6821,16 @@
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>@@#include &lt;(:link </string>
+ <string>`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-28</id>
+ <id>-20</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -7022,18 +6841,7 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
- <variant>2</variant>
- <string>@@#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-25</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -7057,16 +6865,16 @@
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>@@#include &lt;(:link </string>
+ <string>[@#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-27</id>
+ <id>-8</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <string>:)&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -7079,16 +6887,16 @@
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>@@#include &lt;(:link </string>
+ <string>`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-25</id>
+ <id>-9</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -7099,7 +6907,18 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>`#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include def pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -7110,18 +6929,7 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
- <variant>2</variant>
- <string>@@#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-25</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -7132,7 +6940,9 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>[@(:include api:)@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -7154,18 +6964,7 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
- <variant>2</variant>
- <string>@@#include &lt;(:link </string>
- <variant>1</variant>
- <weak_ptr>
- <expired>0</expired>
- <shared_ptr>
- <id>-26</id>
- </shared_ptr>
- </weak_ptr>
- <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <size>0</size>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
@@ -7176,14 +6975,25 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>[@#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;boost/current_function.hpp&gt;&#10;#include &lt;boost/shared_ptr.hpp&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-29</id>
+ <id>-21</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -7194,106 +7004,137 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-30</id>
+ <id>-22</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>`#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-20</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include def pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-21</id>
+ <id>-23</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>@@#include &lt;(:link </string>
+ <string>`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-20</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <string>:)&gt;\\&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-22</id>
+ <id>-24</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>3</size>
+ <size>5</size>
                                                                                                         <variant>2</variant>
- <string>@@#include &lt;(:link </string>
+ <string>`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-15</id>
+ <id>-34</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-24</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string> decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-25</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>@@#include &lt;(:link </string>
+ <string>`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-25</id>
+ <id>-9</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-24</id>
+ <id>-26</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>0</size>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-27</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
                                                                                                         <size>3</size>
                                                                                                         <variant>2</variant>
- <string>@@#include &lt;(:link </string>
+ <string>`#include &lt;(:link </string>
                                                                                                         <variant>1</variant>
                                                                                                         <weak_ptr>
                                                                                                                 <expired>0</expired>
                                                                                                                 <shared_ptr>
- <id>-25</id>
+ <id>-31</id>
                                                                                                                 </shared_ptr>
                                                                                                         </weak_ptr>
                                                                                                         <variant>2</variant>
- <string>:)&gt;@@&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl:)&#10; }@]&#10;</string>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-25</id>
+ <id>-28</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -7304,7 +7145,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-26</id>
+ <id>-29</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -7315,7 +7156,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-27</id>
+ <id>-30</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -7330,36 +7171,95 @@
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>[@#include &lt;exception&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-28</id>
+ <id>-32</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>[@#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-32</id>
+ <id>-33</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>1</size>
+ <variant>2</variant>
+ <string>[@namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-34</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>1</size>
+ <variant>2</variant>
+ <string>[@#include &lt;boost/tuple/tuple.hpp&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
+ </container>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-35</id>
+ </shared_ptr>
+ </weak_ptr>
+ <container>
+ <size>5</size>
+ <variant>2</variant>
+ <string>[@#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-13</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-32</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;#include &lt;exception&gt;&#10;&#10;namespace&#10;boost&#10; {&#10;(:include api pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-33</id>
+ <id>-36</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -7370,29 +7270,51 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-34</id>
+ <id>-37</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>`#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-9</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-35</id>
+ <id>-38</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>`#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-13</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-36</id>
+ <id>-39</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -7403,18 +7325,29 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-37</id>
+ <id>-40</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>`#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-32</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                         <pair>
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-38</id>
+ <id>-41</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -7425,7 +7358,7 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-39</id>
+ <id>-42</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
@@ -7436,11 +7369,22 @@
                                                                                                 <weak_ptr>
                                                                                                         <expired>0</expired>
                                                                                                         <shared_ptr>
- <id>-40</id>
+ <id>-43</id>
                                                                                                         </shared_ptr>
                                                                                                 </weak_ptr>
                                                                                                 <container>
- <size>0</size>
+ <size>3</size>
+ <variant>2</variant>
+ <string>`#include &lt;(:link </string>
+ <variant>1</variant>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-35</id>
+ </shared_ptr>
+ </weak_ptr>
+ <variant>2</variant>
+ <string>:)&gt;&#10;&#10;[@namespace&#10;boost&#10; {&#10;(:include decl pre_indent=&quot;4&quot;:)&#10; }@]&#10;</string>
                                                                                                 </container>
                                                                                         </pair>
                                                                                 </sorted>
@@ -7453,14 +7397,14 @@
                         </layers>
                         <contexts>
                                 <shared_ptr>
- <id>49</id>
+ <id>50</id>
                                         <type>
                                                 <string>reno_context_map</string>
                                         </type>
                                         <object>
                                                 <contexts>
                                                         <sorted>
- <size>36</size>
+ <size>39</size>
                                                                 <shared_ptr>
                                                                         <id>-5</id>
                                                                 </shared_ptr>
@@ -7510,12 +7454,6 @@
                                                                         <id>-20</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
- <id>-29</id>
- </shared_ptr>
- <shared_ptr>
- <id>-30</id>
- </shared_ptr>
- <shared_ptr>
                                                                         <id>-21</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
@@ -7537,10 +7475,16 @@
                                                                         <id>-27</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
- <id>-31</id>
+ <id>-28</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
- <id>-28</id>
+ <id>-29</id>
+ </shared_ptr>
+ <shared_ptr>
+ <id>-30</id>
+ </shared_ptr>
+ <shared_ptr>
+ <id>-31</id>
                                                                 </shared_ptr>
                                                                 <shared_ptr>
                                                                         <id>-32</id>
@@ -7569,11 +7513,20 @@
                                                                 <shared_ptr>
                                                                         <id>-40</id>
                                                                 </shared_ptr>
+ <shared_ptr>
+ <id>-41</id>
+ </shared_ptr>
+ <shared_ptr>
+ <id>-42</id>
+ </shared_ptr>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
                                                         </sorted>
                                                 </contexts>
                                                 <index>
                                                         <sorted>
- <size>36</size>
+ <size>39</size>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
@@ -7588,7 +7541,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-17</id>
+ <id>-42</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -7605,7 +7558,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-36</id>
+ <id>-41</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -7639,24 +7592,31 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-20</id>
+ <id>-39</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>0</size>
+ <size>1</size>
+ <strong>07959353ADCC10CF96D16F87F2D01195D75C3A6A2A797513ED3DDFA2F80E2E09</strong>
+ <weak>303643772</weak>
+ <size>1838</size>
+ <position>91</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
- <empty>1</empty>
+ <empty>0</empty>
+ <string>../../../../boost/throw_exception.hpp</string>
+ <type>0</type>
+ <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-32</id>
+ <id>-35</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -7680,7 +7640,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-39</id>
+ <id>-30</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -7688,23 +7648,23 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>1</size>
- <strong>E64E4DFB1DC251F844260AE133EFD419677D0F7143D65B578DEE525492F6B624</strong>
- <weak>2172131053</weak>
- <size>94</size>
- <position>227</position>
+ <strong>ECAD4A1E70A31D7F87F79F557D107AB0A3C5161CB370139974E08ECAFBE2D32F</strong>
+ <weak>1816954312</weak>
+ <size>457</size>
+ <position>323</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception.hpp</string>
+ <string>../../../../boost/exception/diagnostic_information.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-12</id>
+ <id>-31</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -7712,23 +7672,23 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>1</size>
- <strong>DFB8EFE8A4EE9FB101DC20A69A4217A96B78A272D7DE88D579CFE8ECCC070531</strong>
- <weak>2228033283</weak>
- <size>94</size>
- <position>227</position>
+ <strong>D9B8E6AA12A4F33953B1A961FA590C5A3840234B6531CA8C04AC985AD5800835</strong>
+ <weak>2432554768</weak>
+ <size>702</size>
+ <position>408</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/enable_error_info.hpp</string>
+ <string>../../example/enable_error_info.cpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-28</id>
+ <id>-19</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -7736,23 +7696,23 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>1</size>
- <strong>D9B8E6AA12A4F33953B1A961FA590C5A3840234B6531CA8C04AC985AD5800835</strong>
- <weak>2432554768</weak>
- <size>702</size>
- <position>408</position>
+ <strong>0C00BEB179039380247D771B12C728884E9A3E5B483AC63CD5789852C7A5CC35</strong>
+ <weak>2506662970</weak>
+ <size>2467</size>
+ <position>323</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../example/enable_error_info.cpp</string>
+ <string>../../../../boost/exception/enable_error_info.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-5</id>
+ <id>-32</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -7776,22 +7736,18 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-33</id>
+ <id>-21</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>2</size>
- <strong>427FFBF157B284A9FB0CF4FAEC4A9BB2ADA8AC6CB4F4C329FAE0FED649640E3E</strong>
- <weak>2573550761</weak>
- <size>6200</size>
- <position>737</position>
- <strong>65D13C1BB0A16823F69A32BAB56A51CA317075C7FC8B7441EE0D9B57AF5AB2AC</strong>
- <weak>2592266329</weak>
- <size>712</size>
- <position>1850</position>
+ <size>1</size>
+ <strong>49D31376D97691F7C84A134B5D8C7C66EF1ED6901D376CA250D634AE2B38AB5E</strong>
+ <weak>549270010</weak>
+ <size>163</size>
+ <position>572</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
@@ -7804,87 +7760,83 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-9</id>
+ <id>-10</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>2</size>
- <strong>427FFBF157B284A9FB0CF4FAEC4A9BB2ADA8AC6CB4F4C329FAE0FED649640E3E</strong>
- <weak>2573550761</weak>
- <size>6200</size>
- <position>737</position>
- <strong>865A7E598C4F2EDA41CCDFAD253F5E4699012898C97E29E3CB1C68DABA0C62B1</strong>
- <weak>2395321958</weak>
- <size>721</size>
- <position>726</position>
+ <size>1</size>
+ <strong>A9C65F105342D728DE9C996079E82DF25408B94A272090039FAAC12D29659F69</strong>
+ <weak>2378831669</weak>
+ <size>94</size>
+ <position>227</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/enable_current_exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-21</id>
+ <id>-13</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>2</size>
- <strong>427FFBF157B284A9FB0CF4FAEC4A9BB2ADA8AC6CB4F4C329FAE0FED649640E3E</strong>
- <weak>2573550761</weak>
- <size>6200</size>
- <position>737</position>
- <strong>27AC1164E0A824D548386BEDCDC81DCAC283F3D286B0ECEE05B039BB8C392BFC</strong>
- <weak>1247954090</weak>
- <size>249</size>
- <position>1599</position>
+ <size>1</size>
+ <strong>429F0DE3599A4CC08B9458E2AECA2EAC202AB3471554FE82C307493805E6676E</strong>
+ <weak>4224422781</weak>
+ <size>401</size>
+ <position>323</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-8</id>
+ <id>-17</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>2C5F1B7E5C5052C9C9305848AB499A9C166D728EAAD25DC936B75FCA997A0650</strong>
- <weak>3171555959</weak>
- <size>88</size>
- <position>1</position>
+ <size>2</size>
+ <strong>FA5027D9799B8059059C23397F469D6EF6328DC23E92E0BE0FF5BE019A576174</strong>
+ <weak>1806359597</weak>
+ <size>3234</size>
+ <position>506</position>
+ <strong>DF9EA87B0140AACF4422F1B76F6A6A409C15F32858BBBA85A35981A824C56BA9</strong>
+ <weak>1137981799</weak>
+ <size>192</size>
+ <position>3036</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/throw_exception.hpp</string>
+ <string>../../../../boost/exception/enable_current_exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-26</id>
+ <id>-38</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -7892,14 +7844,38 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>2</size>
- <strong>973F8368D72D56424349CBB81C8F3015CB9F4F0CD7B23A8C62C3DBADDA37CD57</strong>
- <weak>3833800883</weak>
- <size>4832</size>
- <position>514</position>
- <strong>921FBF6991E17349BFF2AD6F165372F85AA9457DDB28E502ABB6B392BBA6B529</strong>
- <weak>3119269037</weak>
- <size>284</size>
- <position>4423</position>
+ <strong>7ACC4E316D4EDB3EC7AEC35FED3ADB47DDF75D575028D7BCD11C5233E4F4A277</strong>
+ <weak>4268848542</weak>
+ <size>2333</size>
+ <position>457</position>
+ <strong>61DE70107961C0B9A65674017F91FF85190CF84B4F3B0CA7AC04A7E16DE80B37</strong>
+ <weak>3187961206</weak>
+ <size>2301</size>
+ <position>26</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/enable_error_info.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-40</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>E312FADF4C02B7A6CB1BE1EC16F05A21C20CBA3282D4EAFC8EBE0BA151F24779</strong>
+ <weak>2820045995</weak>
+ <size>5108</size>
+ <position>323</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
@@ -7912,7 +7888,7 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-24</id>
+ <id>-9</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -7920,13 +7896,13 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>2</size>
- <strong>973F8368D72D56424349CBB81C8F3015CB9F4F0CD7B23A8C62C3DBADDA37CD57</strong>
- <weak>3833800883</weak>
- <size>4832</size>
- <position>514</position>
- <strong>9567A192BF523DDF741004FFF5BDB044D715FEB7CE9AEC89ACC25C1C33E48C4E</strong>
- <weak>2232115228</weak>
- <size>381</size>
+ <strong>05061ED1DD1B33224DE28BF86AB10D99286A48DC055D54A19FF93B36F22E8A90</strong>
+ <weak>3225446538</weak>
+ <size>372</size>
+ <position>408</position>
+ <strong>ED09AD72D3766F261A0044B58B9B73AA355EB50B1A8F602E5EE7F68D0D928596</strong>
+ <weak>328425570</weak>
+ <size>340</size>
                                                                                                 <position>26</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
@@ -7934,13 +7910,13 @@
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception/diagnostic_information.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-16</id>
+ <id>-27</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -7948,83 +7924,123 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>2</size>
- <strong>973F8368D72D56424349CBB81C8F3015CB9F4F0CD7B23A8C62C3DBADDA37CD57</strong>
- <weak>3833800883</weak>
- <size>4832</size>
- <position>514</position>
- <strong>9DEEF8ED70BF74F501A96BA5DE5BFD42FAD16DE333ABE189E512C332586FC465</strong>
- <weak>2250569940</weak>
- <size>1893</size>
- <position>2528</position>
+ <strong>612485E090D76B2CC43C1A296F813075BA165C2496082E78E939F10B3DA8E09A</strong>
+ <weak>1770110914</weak>
+ <size>587</size>
+ <position>1322</position>
+ <strong>60F3F48B87487FA6E0D2CCC0750AF435CC92CEC80BBBF609AC71295031AADD0D</strong>
+ <weak>3929437933</weak>
+ <size>361</size>
+ <position>213</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/throw_exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-14</id>
+ <id>-43</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>2</size>
- <strong>973F8368D72D56424349CBB81C8F3015CB9F4F0CD7B23A8C62C3DBADDA37CD57</strong>
- <weak>3833800883</weak>
- <size>4832</size>
- <position>514</position>
- <strong>156B870761DB092CE4269C1173B479A344A1041BA2B883765AF19A72B371D776</strong>
- <weak>3239976720</weak>
- <size>117</size>
- <position>4709</position>
+ <size>1</size>
+ <strong>9CC0F5ADB1C04555FD571DABD1D7D6775D8B11977ECC8320AD4451FC435E89A1</strong>
+ <weak>1325628148</weak>
+ <size>3147</size>
+ <position>323</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/exception.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-8</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>CAB4D823BD4720B71E1CA5BE482AC95B42A9E07CD5E08671EA23184635F281A2</strong>
+ <weak>3077708282</weak>
+ <size>89</size>
+ <position>323</position>
+ </container>
+ </stream_hook_path>
+ </hook>
+ <file>
+ <path>
+ <empty>0</empty>
+ <string>../../../../boost/exception/error_info.hpp</string>
+ <type>0</type>
+ <base>0</base>
+ </path>
+ </file>
+ <shared_ptr>
+ <id>-33</id>
+ </shared_ptr>
+ </pair>
+ <pair>
+ <hook>
+ <stream_hook_path>
+ <container>
+ <size>1</size>
+ <strong>749C8E4B47A3FD6A90DD8418BF64C4556537CE6E17ACEB2317D9F81DBEBBB0B0</strong>
+ <weak>1688004766</weak>
+ <size>6783</size>
+ <position>323</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-11</id>
+ <id>-20</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>2</size>
- <strong>973F8368D72D56424349CBB81C8F3015CB9F4F0CD7B23A8C62C3DBADDA37CD57</strong>
- <weak>3833800883</weak>
- <size>4832</size>
- <position>514</position>
- <strong>ED09F845070FF7D381BE5EFB6B55313FD09FBA16B64B69992410380EFA45519C</strong>
- <weak>2051939590</weak>
- <size>78</size>
- <position>409</position>
+ <size>1</size>
+ <strong>CAD6C404CB725D336A44920D2341ECA131149AB02C368B59028F8147F16737BF</strong>
+ <weak>2258638601</weak>
+ <size>94</size>
+ <position>227</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception_ptr.hpp</string>
+ <string>../../../../boost/exception/info_tuple.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-23</id>
+ <id>-34</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -8032,23 +8048,23 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>1</size>
- <strong>49D31376D97691F7C84A134B5D8C7C66EF1ED6901D376CA250D634AE2B38AB5E</strong>
- <weak>549270010</weak>
- <size>163</size>
- <position>572</position>
+ <strong>F4C951B28F7DE500973AA3DFAA99F2BADA6EDAFA2B406C30BEF3B7FBE6FD57D7</strong>
+ <weak>2263754923</weak>
+ <size>982</size>
+ <position>306</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
+ <string>../../example/error_info_2.cpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-22</id>
+ <id>-11</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -8056,23 +8072,23 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>1</size>
- <strong>A9C65F105342D728DE9C996079E82DF25408B94A272090039FAAC12D29659F69</strong>
- <weak>2378831669</weak>
- <size>94</size>
- <position>227</position>
+ <strong>CE411E21EE9878B55B5906D033A0FC52574FB59D8A8CECB75405E9B1C9D782DB</strong>
+ <weak>1173443713</weak>
+ <size>308</size>
+ <position>302</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/enable_current_exception.hpp</string>
+ <string>../../example/logging.cpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-27</id>
+ <id>-16</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -8080,27 +8096,27 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>2</size>
- <strong>0ABC82B04F3761C21F4588ABC9D5F82BAF3F293974F0ECE694303EFB59BA7376</strong>
- <weak>3824507607</weak>
- <size>2762</size>
- <position>516</position>
- <strong>8F3B5E1A267CA225679713F4DDF528041F573BC02D1DBCD8FFEF57EF0AA599B9</strong>
- <weak>4197332561</weak>
- <size>180</size>
- <position>2576</position>
+ <strong>35F026FF4EC46450D19A8F970D6E39B881DA6B0FC2E95774CCADC5E34C9D57F1</strong>
+ <weak>1990614462</weak>
+ <size>6369</size>
+ <position>737</position>
+ <strong>F839AFD37DC086BB1231B8E87D8EEBD28129649A06FC685AC7DF65595871AE30</strong>
+ <weak>2291609923</weak>
+ <size>1204</size>
+ <position>243</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/enable_current_exception.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-13</id>
+ <id>-22</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -8108,21 +8124,21 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>2</size>
- <strong>49EA85868C2355F4F7ED6CF9D05FDC08547EF85F76913E1FDBBC96F8712C6C83</strong>
- <weak>385672468</weak>
- <size>2694</size>
- <position>503</position>
- <strong>041A9EA55D30804689CD4DEB864994D595EDF33378B25EA81DB5DA2CF402E542</strong>
- <weak>1211481835</weak>
- <size>1683</size>
- <position>846</position>
+ <strong>35F026FF4EC46450D19A8F970D6E39B881DA6B0FC2E95774CCADC5E34C9D57F1</strong>
+ <weak>1990614462</weak>
+ <size>6369</size>
+ <position>737</position>
+ <strong>61B57D0AE5F1033900B7DE4401AC1633F4639471A19194D5660F6C43465FCE3D</strong>
+ <weak>1668078447</weak>
+ <size>724</size>
+ <position>1712</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
@@ -8135,68 +8151,56 @@
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>4</size>
- <strong>49EA85868C2355F4F7ED6CF9D05FDC08547EF85F76913E1FDBBC96F8712C6C83</strong>
- <weak>385672468</weak>
- <size>2694</size>
- <position>503</position>
- <strong>041A9EA55D30804689CD4DEB864994D595EDF33378B25EA81DB5DA2CF402E542</strong>
- <weak>1211481835</weak>
- <size>1683</size>
- <position>846</position>
- <strong>85EE1980CFB24E054EDB1B3BDFA61FD4D65AD0EF248A1A42D4C2552700459327</strong>
- <weak>2238151539</weak>
- <size>428</size>
- <position>682</position>
- <strong>AD3F339F7126003907BCBDB3EF846FCACA895132E1100D202DA67D2B7846EE65</strong>
- <weak>3032091776</weak>
- <size>60</size>
- <position>369</position>
+ <size>2</size>
+ <strong>35F026FF4EC46450D19A8F970D6E39B881DA6B0FC2E95774CCADC5E34C9D57F1</strong>
+ <weak>1990614462</weak>
+ <size>6369</size>
+ <position>737</position>
+ <strong>C5A5927411FB16BB27418CF87226A27D6EC66958BD46DC87F97E571CB492E49D</strong>
+ <weak>2066106304</weak>
+ <size>261</size>
+ <position>1449</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception/info.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-37</id>
+ <id>-23</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>3</size>
- <strong>49EA85868C2355F4F7ED6CF9D05FDC08547EF85F76913E1FDBBC96F8712C6C83</strong>
- <weak>385672468</weak>
- <size>2694</size>
- <position>503</position>
- <strong>041A9EA55D30804689CD4DEB864994D595EDF33378B25EA81DB5DA2CF402E542</strong>
- <weak>1211481835</weak>
- <size>1683</size>
- <position>846</position>
- <strong>59711C7B9D807F0C41EF49B8AAC509CDB449D81C392B5FF5988DEDE47026E856</strong>
- <weak>1948539350</weak>
- <size>445</size>
- <position>57</position>
+ <size>2</size>
+ <strong>D1AA2FC554CD67A50917905B0E9CCA2EBC1A9BA97368757B36ADF8419756ECF1</strong>
+ <weak>85276724</weak>
+ <size>4917</size>
+ <position>514</position>
+ <strong>F87D7E0321BDDAE23D5A6667CB12116411468AEC54E3B35FB9C8CA94BFECA41E</strong>
+ <weak>1149388739</weak>
+ <size>296</size>
+ <position>4496</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-35</id>
+ <id>-14</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -8204,27 +8208,27 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>2</size>
- <strong>612485E090D76B2CC43C1A296F813075BA165C2496082E78E939F10B3DA8E09A</strong>
- <weak>1770110914</weak>
- <size>587</size>
- <position>1207</position>
- <strong>60F3F48B87487FA6E0D2CCC0750AF435CC92CEC80BBBF609AC71295031AADD0D</strong>
- <weak>3929437933</weak>
- <size>361</size>
- <position>213</position>
+ <strong>D1AA2FC554CD67A50917905B0E9CCA2EBC1A9BA97368757B36ADF8419756ECF1</strong>
+ <weak>85276724</weak>
+ <size>4917</size>
+ <position>514</position>
+ <strong>A098B6FA5BC8E72E0E69C0323195FCC142AE807564C6892FCBD88588F2FBE049</strong>
+ <weak>2579522516</weak>
+ <size>405</size>
+ <position>26</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/throw_exception.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-19</id>
+ <id>-37</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -8232,62 +8236,70 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>2</size>
- <strong>E285EAA0D81E350113B888423C3FA5D2071F070FCA2759D99666EE07C0F8449F</strong>
- <weak>4208148208</weak>
- <size>2125</size>
- <position>457</position>
- <strong>ACC64445E8B6AAEF58395C0083BC0247CDE33AC00ED8DB9B7B4F216325DEE410</strong>
- <weak>2943579912</weak>
- <size>400</size>
- <position>1719</position>
+ <strong>D1AA2FC554CD67A50917905B0E9CCA2EBC1A9BA97368757B36ADF8419756ECF1</strong>
+ <weak>85276724</weak>
+ <size>4917</size>
+ <position>514</position>
+ <strong>9DEEF8ED70BF74F501A96BA5DE5BFD42FAD16DE333ABE189E512C332586FC465</strong>
+ <weak>2250569940</weak>
+ <size>1893</size>
+ <position>2601</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/enable_error_info.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-10</id>
+ <id>-25</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>C9AFCA0931CB65AE31811E702FC48CB22348149B1D259CD9161D391FEC640FA8</strong>
- <weak>2324436793</weak>
- <size>94</size>
- <position>227</position>
+ <size>2</size>
+ <strong>D1AA2FC554CD67A50917905B0E9CCA2EBC1A9BA97368757B36ADF8419756ECF1</strong>
+ <weak>85276724</weak>
+ <size>4917</size>
+ <position>514</position>
+ <strong>156B870761DB092CE4269C1173B479A344A1041BA2B883765AF19A72B371D776</strong>
+ <weak>3239976720</weak>
+ <size>117</size>
+ <position>4794</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/exception.hpp</string>
+ <string>../../../../boost/exception_ptr.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-31</id>
+ <id>-5</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>40C2FBC8600FE6877A6D46EC005D97EB1F612B8687CCA297C838E10A80E089AA</strong>
- <weak>2576029551</weak>
- <size>94</size>
- <position>227</position>
+ <size>2</size>
+ <strong>D1AA2FC554CD67A50917905B0E9CCA2EBC1A9BA97368757B36ADF8419756ECF1</strong>
+ <weak>85276724</weak>
+ <size>4917</size>
+ <position>514</position>
+ <strong>ED09F845070FF7D381BE5EFB6B55313FD09FBA16B64B69992410380EFA45519C</strong>
+ <weak>2051939590</weak>
+ <size>78</size>
+ <position>433</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
@@ -8300,31 +8312,35 @@
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-25</id>
+ <id>-6</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>5EE6ED209B5DBBD30DFCDA1FD30719A799EE9DBD48A5176F73EADB588CAEB2AA</strong>
- <weak>2442598207</weak>
- <size>94</size>
- <position>227</position>
+ <size>2</size>
+ <strong>F7633FDCF6615C0199645701EE6E7ACE5CBCD7A7CF6838573791E91ABB3C09F2</strong>
+ <weak>1668435395</weak>
+ <size>1332</size>
+ <position>396</position>
+ <strong>A1F443AF571973A12005D2F7D4AE09A32AAF686FEEAE272EC21512A65EB943E8</strong>
+ <weak>3879093659</weak>
+ <size>1300</size>
+ <position>26</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/info.hpp</string>
+ <string>../../../../boost/exception/info_tuple.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-15</id>
+ <id>-24</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
@@ -8332,17 +8348,17 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>1</size>
- <strong>CAD6C404CB725D336A44920D2341ECA131149AB02C368B59028F8147F16737BF</strong>
- <weak>2258638601</weak>
- <size>94</size>
- <position>227</position>
+ <strong>187BFD2B78A0DD006717B5B06FFD465E2468F521C32A86FB793F7A68AB5417F3</strong>
+ <weak>4276724153</weak>
+ <size>574</size>
+ <position>382</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/info_tuple.hpp</string>
+ <string>../../example/error_info_1.cpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
@@ -8356,119 +8372,151 @@
                                                                                 <stream_hook_path>
                                                                                         <container>
                                                                                                 <size>1</size>
- <strong>EB524A8A61E5F1A93CE4336B980696C09E7ADF42A6B933BA76EFB1544AB7C4CC</strong>
- <weak>2274957083</weak>
- <size>94</size>
- <position>227</position>
+ <strong>E444EE9697EEADFDE0767E1D0242FC0E70D98E61FB1F0FFA099648DE509B82F3</strong>
+ <weak>94503238</weak>
+ <size>773</size>
+ <position>374</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../../../boost/exception/error_info.hpp</string>
+ <string>../../example/info_tuple.cpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-30</id>
+ <id>-12</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>F4C951B28F7DE500973AA3DFAA99F2BADA6EDAFA2B406C30BEF3B7FBE6FD57D7</strong>
- <weak>2263754923</weak>
- <size>982</size>
- <position>306</position>
+ <size>2</size>
+ <strong>13F58566E4D9F20B49F3F30B28528AEE562CD709108ADC1AE19A2F01D86C62F4</strong>
+ <weak>1430141721</weak>
+ <size>2967</size>
+ <position>503</position>
+ <strong>09CB6839AC1E71887371FB8159C2BFCD273A397C54E07B25CEF2EEF2FA24286A</strong>
+ <weak>4111403263</weak>
+ <size>1924</size>
+ <position>878</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../example/error_info_2.cpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-40</id>
+ <id>-15</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>187BFD2B78A0DD006717B5B06FFD465E2468F521C32A86FB793F7A68AB5417F3</strong>
- <weak>4276724153</weak>
- <size>574</size>
- <position>382</position>
+ <size>4</size>
+ <strong>13F58566E4D9F20B49F3F30B28528AEE562CD709108ADC1AE19A2F01D86C62F4</strong>
+ <weak>1430141721</weak>
+ <size>2967</size>
+ <position>503</position>
+ <strong>09CB6839AC1E71887371FB8159C2BFCD273A397C54E07B25CEF2EEF2FA24286A</strong>
+ <weak>4111403263</weak>
+ <size>1924</size>
+ <position>878</position>
+ <strong>85EE1980CFB24E054EDB1B3BDFA61FD4D65AD0EF248A1A42D4C2552700459327</strong>
+ <weak>2238151539</weak>
+ <size>428</size>
+ <position>923</position>
+ <strong>AD3F339F7126003907BCBDB3EF846FCACA895132E1100D202DA67D2B7846EE65</strong>
+ <weak>3032091776</weak>
+ <size>60</size>
+ <position>369</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../example/error_info_1.cpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-34</id>
+ <id>-28</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>E444EE9697EEADFDE0767E1D0242FC0E70D98E61FB1F0FFA099648DE509B82F3</strong>
- <weak>94503238</weak>
- <size>773</size>
- <position>374</position>
+ <size>3</size>
+ <strong>13F58566E4D9F20B49F3F30B28528AEE562CD709108ADC1AE19A2F01D86C62F4</strong>
+ <weak>1430141721</weak>
+ <size>2967</size>
+ <position>503</position>
+ <strong>09CB6839AC1E71887371FB8159C2BFCD273A397C54E07B25CEF2EEF2FA24286A</strong>
+ <weak>4111403263</weak>
+ <size>1924</size>
+ <position>878</position>
+ <strong>BAC52AC87CFA3174B3352140A8DC10BB7F48C945FC87787C3AC96F0FC2CFDB40</strong>
+ <weak>1066412964</weak>
+ <size>165</size>
+ <position>57</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../example/info_tuple.cpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-38</id>
+ <id>-26</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                                 <pair>
                                                                         <hook>
                                                                                 <stream_hook_path>
                                                                                         <container>
- <size>1</size>
- <strong>AEB5EEC1A44A4F0B184A6F73617CB57E82CE06A15DB6036D54109C66CDE06EFF</strong>
- <weak>625364235</weak>
- <size>290</size>
- <position>302</position>
+ <size>3</size>
+ <strong>13F58566E4D9F20B49F3F30B28528AEE562CD709108ADC1AE19A2F01D86C62F4</strong>
+ <weak>1430141721</weak>
+ <size>2967</size>
+ <position>503</position>
+ <strong>09CB6839AC1E71887371FB8159C2BFCD273A397C54E07B25CEF2EEF2FA24286A</strong>
+ <weak>4111403263</weak>
+ <size>1924</size>
+ <position>878</position>
+ <strong>BACD79DFB4C710C1A67687FC6344DF2251E2379613C2DF5B2729B2CD37E24EA3</strong>
+ <weak>458367129</weak>
+ <size>154</size>
+ <position>246</position>
                                                                                         </container>
                                                                                 </stream_hook_path>
                                                                         </hook>
                                                                         <file>
                                                                                 <path>
                                                                                         <empty>0</empty>
- <string>../../example/logging.cpp</string>
+ <string>../../../../boost/exception/exception.hpp</string>
                                                                                         <type>0</type>
                                                                                         <base>0</base>
                                                                                 </path>
                                                                         </file>
                                                                         <shared_ptr>
- <id>-6</id>
+ <id>-36</id>
                                                                         </shared_ptr>
                                                                 </pair>
                                                         </sorted>
@@ -8478,14 +8526,14 @@
                         </contexts>
                         <index>
                                 <shared_ptr>
- <id>50</id>
+ <id>51</id>
                                         <type>
                                                 <string>tag_index</string>
                                         </type>
                                         <object>
                                                 <tag_index>
                                                         <sorted>
- <size>37</size>
+ <size>40</size>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>1</expired>
@@ -8499,7 +8547,7 @@
                                                                                         <id>-5</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>noindex,tutorial</string>
+ <string>exception_ptr,free,function,rethrow_exception</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8508,7 +8556,7 @@
                                                                                         <id>-6</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>noindex,tutorial</string>
+ <string>exception_ptr,type</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8517,7 +8565,7 @@
                                                                                         <id>-7</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>exception,type</string>
+ <string>error_info,free,function,get_error_info</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8526,7 +8574,7 @@
                                                                                         <id>-8</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>error_info,exception,free,function,operator&lt;&lt;/exception,template</string>
+ <string>boost/exception/exception.hpp,exception,header</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8535,7 +8583,7 @@
                                                                                         <id>-9</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>error_info,exception,free,function,get_error_info,template</string>
+ <string>boost/exception_ptr.hpp,exception_ptr,header</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8544,7 +8592,7 @@
                                                                                         <id>-10</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>enable_error_info,error_info,exception,free,function,template</string>
+ <string>BOOST_ERROR_INFO,error_info,macro</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8553,7 +8601,7 @@
                                                                                         <id>-11</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>cloning,exception,free,function,rethrow_exception</string>
+ <string>noalso,noindex,tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8562,7 +8610,7 @@
                                                                                         <id>-12</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>boost/exception.hpp,exception,header</string>
+ <string>noalso,noindex,tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8571,7 +8619,7 @@
                                                                                         <id>-13</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>cloning,enable_current_exception,exception,free,function,template</string>
+ <string>boost/exception/enable_current_exception.hpp,enable_current_exception,exception_ptr,header</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8580,7 +8628,7 @@
                                                                                         <id>-14</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>cloning,current_exception,exception,free,function</string>
+ <string>copy_exception,exception_ptr,free,function</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8589,7 +8637,7 @@
                                                                                         <id>-15</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>boost/exception/info.hpp,exception,header</string>
+ <string>exception,type</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8598,7 +8646,7 @@
                                                                                         <id>-16</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>cloning,exception,type,unknown_exception</string>
+ <string>tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8607,7 +8655,7 @@
                                                                                         <id>-17</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>exception,noindex</string>
+ <string>boost/exception.hpp,header</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8616,7 +8664,7 @@
                                                                                         <id>-18</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>cloning,exception,noindex,tutorial</string>
+ <string>tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8625,7 +8673,7 @@
                                                                                         <id>-19</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>cloning,exception,free,function,template,throw_exception</string>
+ <string>tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8634,106 +8682,106 @@
                                                                                         <id>-20</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>error_info,exception,noindex,tutorial</string>
+ <string>boost/exception/info.hpp,error_info,header,info</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-29</id>
+ <id>-21</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>boost/exception/info_tuple.hpp,exception,header</string>
+ <string>noalso,noindex,tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-30</id>
+ <id>-22</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>boost/exception/error_info.hpp,exception,header</string>
+ <string>error_info,free,type</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-21</id>
+ <id>-23</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>error_info,exception,free,function,template</string>
+ <string>error_info,free,function,operator&lt;&lt;,operator&lt;&lt;/exception</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-22</id>
+ <id>-24</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>BOOST_ERROR_INFO,error_info,exception,macro</string>
+ <string>error_info,free,function,operator&lt;&lt;,operator&lt;&lt;/tuple</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-23</id>
+ <id>-25</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>cloning,exception,exception_ptr,type</string>
+ <string>current_exception,exception_ptr,free,function</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-24</id>
+ <id>-26</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>cloning,copy_exception,exception,free,function</string>
+ <string>diagnostic_information,exception,exception::diagnostic_information,function,member</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-25</id>
+ <id>-27</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>boost/exception_ptr.hpp,header</string>
+ <string>diagnostic_information,free,function</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-26</id>
+ <id>-28</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>boost/throw_exception.hpp,header</string>
+ <string>exception,exception::~exception,function,member</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-27</id>
+ <id>-29</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>boost/exception/enable_current_exception.hpp,exception,header</string>
+ <string>noalso,noindex,tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-31</id>
+ <id>-30</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>boost/exception/exception.hpp,exception,header</string>
+ <string>noalso,noindex,tutorial</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
                                                                                 <expired>0</expired>
                                                                                 <shared_ptr>
- <id>-28</id>
+ <id>-31</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>boost/exception/enable_error_info.hpp,exception,header</string>
+ <string>boost/exception/diagnostic_information.hpp,diagnostic_information,header</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8742,7 +8790,7 @@
                                                                                         <id>-32</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>index,noindex</string>
+ <string>boost/exception/enable_error_info.hpp,enable_error_info,error_info,header</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8751,7 +8799,7 @@
                                                                                         <id>-33</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>noalso,noindex,tutorial</string>
+ <string>boost/exception/error_info.hpp,error_info,header</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8760,7 +8808,7 @@
                                                                                         <id>-34</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>noalso,noindex,tutorial</string>
+ <string>boost/exception/info_tuple.hpp,error_info,header,info_tuple</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8769,7 +8817,7 @@
                                                                                         <id>-35</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>exception,exception::what,function,member,noalso</string>
+ <string>boost/throw_exception.hpp,header,throw_exception</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8778,7 +8826,7 @@
                                                                                         <id>-36</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>exception,exception::exception,function,member,noalso</string>
+ <string>exception,exception::exception,function,member</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8787,7 +8835,7 @@
                                                                                         <id>-37</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>exception,exception::~exception,function,member,noalso</string>
+ <string>exception_ptr,type,unknown_exception</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8796,7 +8844,7 @@
                                                                                         <id>-38</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>noalso,noindex,tutorial</string>
+ <string>enable_current_exception,exception_ptr,free,function</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8805,7 +8853,7 @@
                                                                                         <id>-39</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>noalso,noindex,tutorial</string>
+ <string>index,noindex</string>
                                                                 </pair>
                                                                 <pair>
                                                                         <weak_ptr>
@@ -8814,7 +8862,34 @@
                                                                                         <id>-40</id>
                                                                                 </shared_ptr>
                                                                         </weak_ptr>
- <string>noalso,noindex,tutorial</string>
+ <string>enable_error_info,error_info,free,function</string>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-41</id>
+ </shared_ptr>
+ </weak_ptr>
+ <string>tutorial</string>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-42</id>
+ </shared_ptr>
+ </weak_ptr>
+ <string>noindex</string>
+ </pair>
+ <pair>
+ <weak_ptr>
+ <expired>0</expired>
+ <shared_ptr>
+ <id>-43</id>
+ </shared_ptr>
+ </weak_ptr>
+ <string>free,function,throw_exception</string>
                                                                 </pair>
                                                         </sorted>
                                                 </tag_index>

Modified: branches/proto/v4/libs/exception/doc/throw_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/throw_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/throw_exception.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,29 +19,37 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>throw_exception()</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/throw_exception.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>throw_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/throw_exception.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
-<span class="RenoIncludeSPAN">#ifdef BOOST_NO_EXCEPTIONS
+<span class="RenoIncludeSPAN"> #ifdef BOOST_NO_EXCEPTIONS
+
     void <span class="RenoLink">throw_exception</span>( std::exception const &amp; e ); // user defined
-#else
+
+ #else
+
     template &lt;class E&gt;
     void <span class="RenoLink">throw_exception</span>( E const &amp; e );
-#endif</span>
+
+ #endif</span>
     }</pre>
 </div><h4>Requirements:</h4>
-<p><tt>E</tt> must derive publicly from <tt>std::exception</tt>.</p>
+<p>E must derive publicly from std::exception.</p>
 <h4>Effects:</h4>
-<div><ul><li> If <tt>BOOST_NO_EXCEPTIONS</tt> is not defined, <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw boost::<span class="RenoLink">enable_current_exception</span>(boost::<span class="RenoLink">enable_error_info</span>(e))</tt>, unless <tt>BOOST_EXCEPTION_DISABLE</tt> is defined, in which case <tt>boost::<span class="RenoLink">throw_exception</span>(e)</tt> is equivalent to <tt>throw e;</tt></li>
-<li> If <tt>BOOST_NO_EXCEPTIONS</tt> is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of <tt>throw_exception</tt> are allowed to assume that the function never returns; therefore, if the user-defined <tt>throw_exception</tt> returns, the behavior is undefined.</li>
+<div><ul><li> If BOOST_NO_EXCEPTIONS is not defined, boost::<span class="RenoLink">throw_exception</span>(e) is equivalent to throw boost::<span class="RenoLink">enable_current_exception</span>(boost::<span class="RenoLink">enable_error_info</span>(e)), unless BOOST_EXCEPTION_DISABLE is defined, in which case boost::<span class="RenoLink">throw_exception</span>(e) is equivalent to throw e;</li>
+<li> If BOOST_NO_EXCEPTIONS is defined, the function is left undefined, and the user is expected to supply an appropriate definition. Callers of <span class="RenoLink">throw_exception</span> are allowed to assume that the function never returns; therefore, if the user-defined <span class="RenoLink">throw_exception</span> returns, the behavior is undefined.</li>
 </ul></div>
-</div><h3>See also:</h3>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="throw_exception_hpp.html">boost/throw_exception.hpp<br/>
 </a><a href="enable_current_exception.html">enable_current_exception<br/>
-</a><a href="cloning.html">Tutorial: Transporting of Exceptions between Threads<br/>
+</a><a href="tutorial_exception_ptr.html">Transporting of Exceptions Between Threads<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Modified: branches/proto/v4/libs/exception/doc/throw_exception_hpp.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/throw_exception_hpp.html (original)
+++ branches/proto/v4/libs/exception/doc/throw_exception_hpp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,10 +19,34 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<h3>boost/exception/throw_exception.hpp</h3>
-<p>This header file contains the following definitions/declarations:</p>
-<div class="RenoPageList"><a href="throw_exception.html">throw_exception<br/>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h2>boost/throw_exception.hpp</h2>
+</div>
+<h3>Synopsis</h3>
+<div class="RenoIncludeDIV"><pre>#include &lt;<span class="RenoLink">boost/exception/enable_current_exception.hpp</span>&gt;
+#include &lt;<span class="RenoLink">boost/exception/enable_error_info.hpp</span>&gt;
+#include &lt;exception&gt;
+
+namespace
+boost
+ {
+<span class="RenoIncludeSPAN"> <span class="RenoIncludeSPAN">#ifdef BOOST_NO_EXCEPTIONS
+
+ void <span class="RenoLink">throw_exception</span>( std::exception const &amp; e ); // user defined
+
+ #else
+
+ template &lt;class E&gt;
+ void <span class="RenoLink">throw_exception</span>( E const &amp; e );
+
+ #endif</span></span>
+ }</pre>
+</div></div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
+<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_hpp.html">boost/exception.hpp<br/>
+</a><a href="throw_exception.html">throw_exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Deleted: branches/proto/v4/libs/exception/doc/transporting_data.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/transporting_data.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,188 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Transporting of Arbitrary Data to the Catch Site</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-Boost
-</div>
-<h1>Boost Exception</h1>
-</div>
-<!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h2>Transporting of Arbitrary Data to the Catch Site</h2>
-<p>All exception types that derive from <tt>boost::<span class="RenoLink">exception</span></tt> can be used as type-safe containers of arbitrary data objects, while complying with the no-throw requirements (15.5.1) of the ANSI C++ standard for exception classes. Data can be added to a <tt>boost::<span class="RenoLink">exception</span></tt> at the time of the throw, or at a later time.</p>
-<div class="RenoIncludeDIV"><h3>Adding of Arbitrary Data at the Point of the Throw</h3>
-<p>The following example demonstrates how <tt>errno</tt> can be stored in exception objects using Boost Exception:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception.hpp</span>&gt;
-#include &lt;errno.h&gt;
-#include &lt;iostream&gt;
-
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_errno,int&gt; errno_info; //(1)
-
-class my_error: public boost::<span class="RenoLink">exception</span>, public std::exception { }; //(2)
-
-void
-f()
- {
- throw my_error() &lt;&lt; errno_info(errno); //(3)
- }
-</pre>
-<p>First, we instantiate the <tt><span class="RenoLink">error_info</span></tt> template using a unique identifier -- <tt>tag_errno</tt>, and the type of the info it identifies -- <tt>int</tt>. This provides compile-time type safety for the various values stored in exception objects.</p>
-<p>Second, we define class <tt>my_error</tt>, which derives from <tt>boost::<span class="RenoLink">exception</span></tt>.</p>
-<p>Finally, (3) illustrates how the <tt>typedef</tt> from (1) can be used with <tt><span class="RenoLink">operator<<</span>()</tt> to store values in exception objects at the point of the throw.</p>
-<p>The stored <tt>errno</tt> value can be recovered at a later time like this:</p>
-<pre>// ...continued
-
-void
-g()
- {
- try
- {
- f();
- }
- catch(
- my_error &amp; x )
- {
- if( boost::shared_ptr&lt;int const&gt; err=boost::<span class="RenoLink">get_error_info</span>&lt;errno_info&gt;(x) )
- std::cerr &lt;&lt; "Error code: " &lt;&lt; *err;
- }
- }</pre>
-<p>The <tt><span class="RenoLink">get_error_info</span>()</tt> function template is instantiated with the <tt>typedef</tt> from (1), and is passed an exception object of any type that derives publicly from <tt>boost::<span class="RenoLink">exception</span></tt>. If the exception object contains the requested value, the returned <tt><span class="RenoLink">shared_ptr</span></tt> will point to it; otherwise an empty <tt><span class="RenoLink">shared_ptr</span></tt> is returned.</p>
-</div><div class="RenoIncludeDIV"><h3>Adding of Arbitrary Data to Active Exception Objects</h3>
-<p>Sometimes the throw site does not have all the information that is needed at the catch site to make sense of what went wrong. Here is an example:</p>
-<pre>#include &lt;stdio.h&gt;
-#include &lt;string&gt;
-
-class
-file_read_error
- {
- public:
-
- explicit
- file_read_error( std::string const &amp; fn ):
- fn_(fn)
- {
- };
-
- std::string const &amp;
- file_name() const
- {
- return fn_;
- }
-
- private:
-
- std::string fn_;
- };
-
-void
-file_read( FILE * f, void * buffer, size_t size )
- {
- if( size!=fread(buffer,1,size,f) )
- throw file_read_error("????");
- }</pre>
-<p>We have defined an exception class <tt>file_read_error</tt> which can store a file name, so that when we catch a <tt>file_read_error</tt> object, we know which file the failure is related to. However, the <tt>file_read</tt> function does not have the file name at the time of the throw; all it has is a <tt>FILE</tt> handle.</p>
-<p>One possible solution is to not use <tt>FILE</tt> handles directly. We could have our own <tt>class file</tt> which stores both a <tt>FILE</tt> handle and a file name, and pass that to <tt>file_read()</tt>. However, this could be problematic if we communicate with 3rd party code that does not use our <tt>class file</tt> (probably because they have their own similar class.)</p>
-<p>A better solution is to make class <tt>file_read_error</tt> derive (possibly indirectly) from <tt>boost::<span class="RenoLink">exception</span></tt>, and free the <tt>file_read()</tt> function from the burden of storing the file name in exceptions it throws:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception.hpp</span>&gt;
-#include &lt;stdio.h&gt;
-#include &lt;errno.h&gt;
-
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_errno,int&gt; errno_info;
-
-class file_read_error: public boost::<span class="RenoLink">exception</span> { };
-
-void
-file_read( FILE * f, void * buffer, size_t size )
- {
- if( size!=fread(buffer,1,size,f) )
- throw file_read_error() &lt;&lt; errno_info(errno);
- }</pre>
-<p>If <tt>file_read()</tt> detects a failure, it throws an exception which contains the information that is available at the time, namely the <tt>errno</tt>. Other relevant information, such as the file name, can be added in a context higher up the call stack, where it is known naturally:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception.hpp</span>&gt;
-#include &lt;boost/shared_ptr.hpp&gt;
-#include &lt;stdio.h&gt;
-#include &lt;string&gt;
-
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_file_name,std::string&gt; file_name_info;
-
-boost::shared_ptr&lt;FILE&gt; file_open( char const * file_name, char const * mode );
-void file_read( FILE * f, void * buffer, size_t size );
-
-void
-parse_file( char const * file_name )
- {
- boost::shared_ptr&lt;FILE&gt; f = file_open(file_name,"rb");
- assert(f);
- try
- {
- char buf[1024];
- file_read( f.get(), buf, sizeof(buf) );
- }
- catch(
- boost::<span class="RenoLink">exception</span> &amp; e )
- {
- e &lt;&lt; file_name_info(file_name);
- throw;
- }
- }</pre>
-<p>The above function is (almost) exception-neutral -- if an exception is emitted by any function call within the <tt>try</tt> block, <tt>parse_file()</tt> does not need to do any real work, but it intercepts any <tt>boost::<span class="RenoLink">exception</span></tt> object, stores the file name, and re-throws using a throw-expression with no operand (15.1.6). The rationale for catching any <tt>boost::<span class="RenoLink">exception</span></tt> object is that the file name is relevant to any failure that occurs in <tt>parse_file()</tt>, <i>even if the failure is unrelated to file I/O</i>.</p>
-<p>As usual, the stored data can be retrieved using <tt><span class="RenoLink">get_error_info</span>()</tt>.</p>
-</div><div class="RenoIncludeDIV"><h3>Adding Grouped Data to Exceptions</h3>
-<p>The code snippet below demonstrates how <tt>boost::<span class="RenoLink">tuple</span></tt> can be used to bundle the name of the function that failed, together with the reported <tt>errno</tt> so that they can be added to exception objects more conveniently together:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception/info_tuple.hpp</span>&gt;
-#include &lt;boost/shared_ptr.hpp&gt;
-#include &lt;stdio.h&gt;
-#include &lt;string&gt;
-#include &lt;errno.h&gt;
-
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_file_name,std::string&gt; file_name_info;
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_function,char const *&gt; function_info;
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_errno,int&gt; errno_info;
-typedef boost::tuple&lt;function_info,errno_info&gt; clib_failure;
-
-class file_open_error: public boost::<span class="RenoLink">exception</span> { };
-
-boost::shared_ptr&lt;FILE&gt;
-file_open( char const * name, char const * mode )
- {
- if( FILE * f=fopen(name,mode) )
- return boost::shared_ptr&lt;FILE&gt;(f,fclose);
- else
- throw file_open_error() &lt;&lt;
- file_name_info(name) &lt;&lt;
- clib_failure("fopen",errno);
- }</pre>
-<p>Note that the members of a <tt>boost::<span class="RenoLink">tuple</span></tt> are stored separately in exception objects; they can only be retrieved individually, using <tt><span class="RenoLink">get_error_info</span>()</tt>.</p>
-</div></div><h3>See also:</h3>
-<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a><a href="using_enable_error_info.html">Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies<br/>
-</a></div>
-<!-- Copyright (c) 2006-2008 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) -->
-<div id="footer">
-<p>&nbsp;</p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>

Modified: branches/proto/v4/libs/exception/doc/unknown_exception.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/unknown_exception.html (original)
+++ branches/proto/v4/libs/exception/doc/unknown_exception.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,25 +19,29 @@
 <!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h3>unknown_exception</h3>
-<div class="RenoIncludeDIV"><p><tt>#include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</tt></p>
+<div class="RenoIncludeDIV"><div class="RenoAutoDIV"><h3>unknown_exception</h3>
+</div>
+<div class="RenoIncludeDIV"><p><span class="RenoEscape">&#35;<!--<wiki>`&#35;</wiki>--></span>include &lt;<span class="RenoLink">boost/exception_ptr.hpp</span>&gt;</p>
 <pre>namespace
 boost
     {
 <span class="RenoIncludeSPAN"> class
     <span class="RenoLink">unknown_exception</span>:
         public std::exception
- public boost::exception
+ public boost::<span class="RenoLink">exception</span>
         {
         ---unspecified---
         };</span>
     }</pre>
-</div><p>This type is used by the <span class="RenoLink">cloning</span> support in Boost Exception. Please see <tt><span class="RenoLink">current_exception</span>()</tt>.</p>
-</div><h3>See also:</h3>
+</div><p>This type is used by the <span class="RenoLink">exception_ptr</span> support in Boost Exception. Please see <span class="RenoLink">current_exception</span>.</p>
+</div><div class="RenoAutoDIV"><div class="RenoHR"><hr/></div>
+<h3>See Also:</h3>
 <div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
+</a><a href="exception_cloning_hpp.html">boost/exception_ptr.hpp<br/>
 </a><a href="current_exception.html">current_exception<br/>
 </a><a href="enable_current_exception.html">enable_current_exception<br/>
 </a></div>
+</div>
 <!-- Copyright (c) 2006-2008 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) -->

Deleted: branches/proto/v4/libs/exception/doc/using_enable_error_info.html
==============================================================================
--- branches/proto/v4/libs/exception/doc/using_enable_error_info.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
-'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
-<head>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <title>Tutorial: Integrating Boost Exception in Existing Exception Class Hierarchies</title>
- <link href='reno.css' type='text/css' rel='stylesheet'/>
-</head>
-<body>
-<div class="body-0">
-<div class="body-1">
-<div class="body-2">
-<div>
-<div id="boost_logo">
-Boost
-</div>
-<h1>Boost Exception</h1>
-</div>
-<!-- Copyright (c) 2006-2008 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) -->
-<div class="RenoIncludeDIV"><h2>Integrating Boost Exception in Existing Exception Class Hierarchies</h2>
-<p>Some exception hierarchies can not be modified to make <tt>boost::<span class="RenoLink">exception</span></tt> a base type. For this case, the <tt><span class="RenoLink">enable_error_info</span>()</tt> function template can be used to make exception objects derive from <tt>boost::<span class="RenoLink">exception</span></tt> anyway. Here is an example:</p>
-<pre>#include &lt;<span class="RenoLink">boost/exception.hpp</span>&gt;
-#include &lt;stdexcept&gt;
-
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_std_range_min,size_t&gt; std_range_min;
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_std_range_max,size_t&gt; std_range_max;
-typedef boost::<span class="RenoLink">error_info</span>&lt;struct tag_std_range_index,size_t&gt; std_range_index;
-
-template &lt;class T&gt;
-class
-my_container
- {
- public:
-
- size_t size() const;
-
- T const &amp;
- operator[]( size_t i ) const
- {
- if( i &gt; size() )
- throw boost::<span class="RenoLink">enable_error_info</span>(std::range_error("Index out of range")) &lt;&lt;
- std_range_min(0) &lt;&lt;
- std_range_max(size()) &lt;&lt;
- std_range_index(i);
- //....
- }
- };
-</pre>
-<p><tt><span class="RenoLink">Enable_error_info</span>&lt;T&gt;</tt> returns an object of <i>unspecified type</i> which is guaranteed to derive from both <tt>boost::<span class="RenoLink">exception</span></tt> and <tt>T</tt>. This makes it possible to use <tt><span class="RenoLink">operator<<</span>()</tt> to store additional information in the exception object. The exception can be intercepted as <tt>T &amp;</tt>, therefore existing exception handling will not break. It can also be intercepted as <tt>boost::<span class="RenoLink">exception</span> &amp;</tt>, so that <span class="RenoLink">more information can be added to the exception at a later time</span>.</p>
-</div><h3>See also:</h3>
-<div class="RenoPageList"><a href="boost-exception.html">Boost Exception<br/>
-</a></div>
-<!-- Copyright (c) 2006-2008 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) -->
-<div id="footer">
-<p>&nbsp;</p>
-<hr/>
-<p>
-<a class="logo" href="http://jigsaw.w3.org/css-validator/validator?uri=http://revergestudios.com/boost-exception/reno.css"><img class="logo_pic" src="valid-css.png" alt="Valid CSS" height="31" width="88"/></a>
-<a class="logo" href="http://validator.w3.org/check?uri=referer"><img class="logo_pic" src="valid-xhtml.png" alt="Valid XHTML 1.0" height="31" width="88"/></a>
-<small>Copyright (c) 2006-2008 by Emil Dotchevski and Reverge Studios, Inc.<br/>
-Distributed under the Boost Software License, Version 1.0.</small>
-</p>
-</div>
-</div>
-</div>
-</div>
-</body>
-</html>

Modified: branches/proto/v4/libs/exception/example/Jamfile
==============================================================================
--- branches/proto/v4/libs/exception/example/Jamfile (original)
+++ branches/proto/v4/libs/exception/example/Jamfile 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,7 +9,7 @@
 obj error_info_1 : error_info_1.cpp ;
 obj error_info_2 : error_info_2.cpp ;
 obj cloning_1 : cloning_1.cpp ;
-obj cloning_2 : cloning_2.cpp ;
+obj cloning_2 : cloning_2.cpp : <threading>multi ;
 obj info_tuple : info_tuple.cpp ;
 obj enable_error_info : enable_error_info.cpp ;
 obj logging : logging.cpp ;

Modified: branches/proto/v4/libs/exception/example/example_io.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/example_io.cpp (original)
+++ branches/proto/v4/libs/exception/example/example_io.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -41,7 +41,7 @@
     char const *
     what() const throw()
         {
- return boost::exception::what();
+ return boost::exception::diagnostic_information();
         }
 
     protected:
@@ -169,8 +169,8 @@
     dump_copy_info(x);
     dump_file_info(x);
     dump_clib_info(x);
- std::cout << "\nOutput from what():\n";
- std::cout << x.what();
+ std::cout << "\nOutput from diagnostic_information():\n";
+ std::cout << x.diagnostic_information();
     }
 
 int

Modified: branches/proto/v4/libs/exception/example/logging.cpp
==============================================================================
--- branches/proto/v4/libs/exception/example/logging.cpp (original)
+++ branches/proto/v4/libs/exception/example/logging.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,6 +20,6 @@
     catch(
     boost::exception & e )
         {
- std::cerr << e.what();
+ std::cerr << e.diagnostic_information();
         }
     }

Modified: branches/proto/v4/libs/exception/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/exception/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/exception/test/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,7 +7,10 @@
 
 import testing ;
 
+project : requirements <exception-handling>on ;
+
 #to_string
+
 run is_output_streamable_test.cpp ;
 run has_to_string_test.cpp ;
 run to_string_test.cpp ;
@@ -15,6 +18,7 @@
 compile-fail to_string_fail.cpp ;
 
 #exception
+
 run cloning_test.cpp ;
 run copy_exception_test.cpp ;
 run unknown_exception_test.cpp ;
@@ -24,11 +28,14 @@
 run throw_exception_test.cpp helper2.cpp ;
 run errno_test.cpp ;
 run error_info_test.cpp ;
-run what_test.cpp ;
+run diagnostic_information_test.cpp ;
 compile-fail exception_fail.cpp ;
 compile-fail throw_exception_fail.cpp ;
 
 #headers
+
+compile exception_ptr_hpp_test.cpp ;
+compile diagnostic_information_hpp_test.cpp ;
 compile enable_current_exception_hpp_test.cpp ;
 compile enable_error_info_hpp_test.cpp ;
 compile error_info_hpp_test.cpp ;

Modified: branches/proto/v4/libs/exception/test/enable_error_info_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/enable_error_info_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/enable_error_info_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,6 +5,7 @@
 
 #include "helper1.hpp"
 #include <boost/exception/info.hpp>
+#include <boost/exception/diagnostic_information.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
 namespace
@@ -24,6 +25,11 @@
             x << test_int(42);
             throw;
             }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
         }
     }
 
@@ -39,6 +45,7 @@
     std::exception & x )
         {
         BOOST_TEST( 42==*boost::get_error_info<test_int>(x) );
+ BOOST_TEST( std::string(x.what())==std::string("exception test length error") );
         }
     catch(
     ... )

Modified: branches/proto/v4/libs/exception/test/error_info_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/error_info_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/error_info_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,7 +18,7 @@
 
 struct
 test_exception:
- public boost::exception
+ boost::exception
     {
     };
 
@@ -110,6 +110,11 @@
         BOOST_TEST( dynamic_cast<test_exception *>(&x) );
         BOOST_TEST( !boost::get_error_info<test_1>(x) );
         }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
 
     try
         {
@@ -121,6 +126,11 @@
         {
         BOOST_TEST( dynamic_cast<boost::exception *>(&x) );
         }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
     }
 
 void
@@ -136,6 +146,12 @@
         {
         BOOST_TEST(*boost::get_error_info<test_5>(x)==std::string("test"));
         }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
+
     try
         {
         throw_test_2();
@@ -146,6 +162,11 @@
         {
         BOOST_TEST(boost::get_error_info<test_6>(x));
         }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
     }
 
 void
@@ -161,6 +182,11 @@
         {
         BOOST_TEST(*boost::get_error_info<test_5>(x)==std::string("test"));
         }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
     }
 
 void
@@ -179,6 +205,11 @@
         BOOST_TEST( *boost::get_error_info<test_1>(x)==42 );
         BOOST_TEST( *boost::get_error_info<test_2>(x)==42u );
         }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
     try
         {
         throw test_exception() << test_123(42,42u,42.0f);
@@ -190,6 +221,11 @@
         BOOST_TEST( *boost::get_error_info<test_2>(x)==42u );
         BOOST_TEST( *boost::get_error_info<test_3>(x)==42.0f );
         }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
     try
         {
         throw test_exception() << test_1235(42,42u,42.0f,std::string("42"));
@@ -202,6 +238,11 @@
         BOOST_TEST( *boost::get_error_info<test_3>(x)==42.0f );
         BOOST_TEST( *boost::get_error_info<test_5>(x)=="42" );
         }
+ catch(
+ ... )
+ {
+ BOOST_TEST(false);
+ }
     }
 
 int

Modified: branches/proto/v4/libs/exception/test/helper1.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/helper1.cpp (original)
+++ branches/proto/v4/libs/exception/test/helper1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,7 +16,7 @@
         void
         throw_length_error()
             {
- throw enable_error_info( std::length_error("my length error") );
+ throw enable_error_info( std::length_error("exception test length error") );
             }
         }
     }

Modified: branches/proto/v4/libs/exception/test/helper2.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/helper2.cpp (original)
+++ branches/proto/v4/libs/exception/test/helper2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,41 +13,60 @@
     exception_test
         {
         inline
- some_boost_exception::
- some_boost_exception( int x ):
+ derives_boost_exception::
+ derives_boost_exception( int x ):
             x_(x)
             {
             }
 
- some_boost_exception::
- ~some_boost_exception() throw()
+ derives_boost_exception::
+ ~derives_boost_exception() throw()
             {
             }
 
         inline
- some_std_exception::
- some_std_exception( int x ):
+ derives_boost_exception_virtually::
+ derives_boost_exception_virtually( int x ):
             x_(x)
             {
             }
 
- some_std_exception::
- ~some_std_exception() throw()
+ derives_boost_exception_virtually::
+ ~derives_boost_exception_virtually() throw()
             {
             }
 
+ inline
+ derives_std_exception::
+ derives_std_exception( int x ):
+ x_(x)
+ {
+ }
+
+ derives_std_exception::
+ ~derives_std_exception() throw()
+ {
+ }
+
+ template <>
+ void
+ throw_test_exception<derives_boost_exception>( int x )
+ {
+ boost::throw_exception( derives_boost_exception(x) );
+ }
+
         template <>
         void
- throw_test_exception<some_boost_exception>( int x )
+ throw_test_exception<derives_boost_exception_virtually>( int x )
             {
- boost::throw_exception( some_boost_exception(x) );
+ boost::throw_exception( derives_boost_exception_virtually(x) );
             }
 
         template <>
         void
- throw_test_exception<some_std_exception>( int x )
+ throw_test_exception<derives_std_exception>( int x )
             {
- boost::throw_exception( some_std_exception(x) );
+ boost::throw_exception( derives_std_exception(x) );
             }
         }
     }

Modified: branches/proto/v4/libs/exception/test/helper2.hpp
==============================================================================
--- branches/proto/v4/libs/exception/test/helper2.hpp (original)
+++ branches/proto/v4/libs/exception/test/helper2.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,21 +16,31 @@
     exception_test
         {
         struct
- some_boost_exception:
+ derives_boost_exception:
             public boost::exception,
             public std::exception
             {
- explicit some_boost_exception( int x );
- virtual ~some_boost_exception() throw();
+ explicit derives_boost_exception( int x );
+ virtual ~derives_boost_exception() throw();
             int x_;
             };
 
         struct
- some_std_exception:
+ derives_boost_exception_virtually:
+ public virtual boost::exception,
             public std::exception
             {
- explicit some_std_exception( int x );
- virtual ~some_std_exception() throw();
+ explicit derives_boost_exception_virtually( int x );
+ virtual ~derives_boost_exception_virtually() throw();
+ int x_;
+ };
+
+ struct
+ derives_std_exception:
+ public std::exception
+ {
+ explicit derives_std_exception( int x );
+ virtual ~derives_std_exception() throw();
             int x_;
             };
 
@@ -38,10 +48,13 @@
         void throw_test_exception( int );
 
         template <>
- void throw_test_exception<some_boost_exception>( int );
+ void throw_test_exception<derives_boost_exception>( int );
+
+ template <>
+ void throw_test_exception<derives_boost_exception_virtually>( int );
 
         template <>
- void throw_test_exception<some_std_exception>( int );
+ void throw_test_exception<derives_std_exception>( int );
         }
     }
 

Modified: branches/proto/v4/libs/exception/test/throw_exception_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/throw_exception_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/throw_exception_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,7 @@
 #include <boost/exception_ptr.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
-typedef boost::error_info<struct tag_test_int,int> test_int;
+typedef boost::error_info<struct tag_test_int,int> test_data;
 
 void
 throw_fwd( void (*thrower)(int) )
@@ -20,7 +20,7 @@
     catch(
     boost::exception & x )
         {
- x << test_int(42);
+ x << test_data(42);
         throw;
         }
     }
@@ -46,7 +46,9 @@
         catch(
         T & y )
             {
- BOOST_TEST(*boost::get_error_info<test_int>(y)==42);
+ BOOST_TEST(boost::get_error_info<test_data>(y));
+ if( boost::shared_ptr<int const> d=boost::get_error_info<test_data>(y) )
+ BOOST_TEST(*d==42);
             BOOST_TEST(y.x_==42);
             }
         catch(
@@ -60,7 +62,8 @@
 int
 main()
     {
- tester<boost::exception_test::some_boost_exception>();
- tester<boost::exception_test::some_std_exception>();
+ tester<boost::exception_test::derives_boost_exception>();
+ tester<boost::exception_test::derives_boost_exception_virtually>();
+ tester<boost::exception_test::derives_std_exception>();
     return boost::report_errors();
     }

Modified: branches/proto/v4/libs/exception/test/unknown_exception_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/unknown_exception_test.cpp (original)
+++ branches/proto/v4/libs/exception/test/unknown_exception_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -50,7 +50,10 @@
         catch(
         boost::unknown_exception & x )
             {
- BOOST_TEST( 42==*boost::get_error_info<test>(x) );
+ if( boost::shared_ptr<int const> d=boost::get_error_info<test>(x) )
+ BOOST_TEST( 42==*d );
+ else
+ BOOST_TEST(false);
             }
         catch(
         ... )
@@ -64,7 +67,10 @@
         catch(
         boost::exception & x )
             {
- BOOST_TEST( 42==*boost::get_error_info<test>(x) );
+ if( boost::shared_ptr<int const> d=boost::get_error_info<test>(x) )
+ BOOST_TEST( 42==*d );
+ else
+ BOOST_TEST(false);
             }
         catch(
         ... )

Deleted: branches/proto/v4/libs/exception/test/what_test.cpp
==============================================================================
--- branches/proto/v4/libs/exception/test/what_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,27 +0,0 @@
-//Copyright (c) 2006-2008 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)
-
-#include <boost/exception/info.hpp>
-#include <boost/detail/lightweight_test.hpp>
-
-typedef boost::error_info<struct tag_test,int> test;
-
-class
-my_exception:
- public boost::exception
- {
- };
-
-int
-main()
- {
- my_exception x;
- x << test(1);
- std::string w1 = x.what();
- x << test(2);
- std::string w2 = x.what();
- BOOST_TEST( w1!=w2 );
- return boost::report_errors();
- }

Modified: branches/proto/v4/libs/filesystem/doc/do-list.htm
==============================================================================
--- branches/proto/v4/libs/filesystem/doc/do-list.htm (original)
+++ branches/proto/v4/libs/filesystem/doc/do-list.htm 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -35,8 +35,8 @@
 <hr>
 <p>Revised
 <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->18 March, 2008<!--webbot bot="Timestamp" endspan i-checksum="29005" --></p>
-<p>© Copyright Beman Dawes, 2002</p>
+<p>&copy; Copyright Beman Dawes, 2002</p>
 <p> Use, modification, and distribution are subject to the Boost Software
 License, Version 1.0. (See accompanying file <a href="../../../LICENSE_1_0.txt">
 LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
-www.boost.org/LICENSE_1_0.txt</a>)</p>
\ No newline at end of file
+www.boost.org/LICENSE_1_0.txt</a>)</p>

Modified: branches/proto/v4/libs/filesystem/doc/reference.html
==============================================================================
--- branches/proto/v4/libs/filesystem/doc/reference.html (original)
+++ branches/proto/v4/libs/filesystem/doc/reference.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -123,7 +123,6 @@
 &nbsp; </code>
 <a href="#Suggestions-for-fstream">&nbsp;implementations</a><br>
 <a href="#Path-decomposition-table">Path decomposition table</a><br>
-Issues<br>
 <a href="#Acknowledgements">Acknowledgements</a><br>
 <a href="#References">References</a><br>
 &nbsp;</td>
@@ -369,14 +368,14 @@
       // predicate functions
       bool status_known( file_status s );
       bool exists( file_status s );
- bool is_regular( file_status s );
+ bool is_regular_file( file_status s );
       bool is_directory( file_status s );
       bool is_symlink( file_status s );
       bool is_other( file_status s );
 
       template &lt;class Path&gt; bool exists(const Path&amp; p);
       template &lt;class Path&gt; bool is_directory(const Path&amp; p);
- template &lt;class Path&gt; bool is_regular(const Path&amp; p);
+ template &lt;class Path&gt; bool is_regular_file(const Path&amp; p);
       template &lt;class Path&gt; bool is_other(const Path&amp; p);
       template &lt;class Path&gt; bool is_symlink(const Path&amp; p);
       template &lt;class Path&gt; bool is_empty(const Path&amp; p);
@@ -417,7 +416,7 @@
       template &lt;class Path&gt; typename Path::string_type extension(const Path&amp; p);
       template &lt;class Path&gt; typename Path::string_type basename(const Path&amp; p);
       template &lt;class Path&gt;
- Path replace_extension(const Path&amp; p, const typename Path::string_type&amp; new_extension);
+ Path change_extension(const Path&amp; p, const typename Path::string_type&amp; new_extension);
 
     } // namespace filesystem
   } // namespace boost</pre>
@@ -547,7 +546,8 @@
 
         <span style="background-color: #FFFFFF">void clear();
         void swap( basic_path &amp; rhs );</span>
- basic_path&amp; remove_leaf();
+ basic_path&amp; remove_filename();
+ basic_path&amp; replace_extension(const string_type &amp; new_extension = &quot;&quot;);
 
         // observers
         const string_type string() const;
@@ -561,8 +561,12 @@
         string_type root_directory() const;
         basic_path root_path() const;
         basic_path relative_path() const;
- string_type leaf() const;
- basic_path branch_path() const;
+
+ basic_path parent_path() const;
+ string_type filename() const;
+
+ string_type stem() const;
+ string_type extension() const;
 
         bool empty() const;
         bool is_complete() const;
@@ -570,8 +574,8 @@
         bool has_root_directory() const;
         bool has_root_path() const;
         bool has_relative_path() const;
- bool has_leaf() const;
- bool has_branch_path() const;
+ bool has_filename() const;
+ bool has_parent_path() const;
 
         // iterators
         class iterator;
@@ -856,9 +860,9 @@
   <p><i><span style="background-color: #FFFFFF">Complexity: </span></i>
   <span style="background-color: #FFFFFF">constant time.</span></p>
 </blockquote>
-<pre>basic_path&amp; remove_leaf();</pre>
+<pre>basic_path&amp; remove_filename();</pre>
 <blockquote>
- <p><i>Effects:</i> If <code>has_branch_path()</code> then remove the last <i>filename</i> from the stored path. If that leaves
+ <p><i>Effects:</i> If <code>has_parent_path()</code> then remove the last <i>filename</i> from the stored path. If that leaves
   the stored path with one or more trailing <i>slash</i> elements not
   representing&nbsp; <i>root-directory</i>, remove them.</p>
   <p><i>Returns:</i> <code>*this</code></p>
@@ -866,6 +870,15 @@
   basic_directory_iterator</code>. It is made public to allow additional uses. <i>-- end
   note</i>]</p>
 </blockquote>
+<pre>basic_path&amp; replace_extension( const string_type &amp; new_extension = &quot;&quot; );</pre>
+<blockquote>
+ <p><i>Postcondition: </i> <code>extension() == <i>replacement</i></code>,
+ where <code><i>replacement</i></code> is <code>new_extension</code> if <code>
+ new_extension.empty() || new_extension[0] ==</code> the dot character,
+ otherwise <code><i>replacement</i></code> is the dot character followed by
+ <code>new_extension</code>.</p>
+ <p><i>Returns:</i> <code>*this</code></p>
+</blockquote>
 <h4> <a name="basic_path-observers"> <code>basic_path</code> observers</a></h4>
 <blockquote>
 <p><span style="background-color: #E0E0E0"><i>See the
@@ -931,11 +944,11 @@
 with the first <i>filename</i> after <i>root-path</i>.
 Otherwise, an empty <code>basic_path</code>.</p>
 </blockquote>
-<pre>string_type leaf() const;</pre>
+<pre>string_type filename() const;</pre>
 <blockquote>
   <p><i>Returns:</i> <code>empty() ? string_type() : *--end()</code></p>
 </blockquote>
-<pre>basic_path branch_path() const;</pre>
+<pre>basic_path parent_path() const;</pre>
 <blockquote>
   <p><i>Returns:</i> <code>(string().empty() || begin() == --end()) ? path_type(&quot;&quot;) :
   <i>br</i></code>, where <code><i>br</i></code> is constructed as if by
@@ -943,6 +956,25 @@
   operator/=</code> for each element in the range <code>begin()</code>, <code>
   --end()</code>.</p>
 </blockquote>
+<pre>string_type stem(const Path &amp; p) const;</pre>
+<blockquote>
+ <p><i>Returns:</i> if <code>p.filename()</code> contains a <i>dot</i>, returns
+ the substring of <code>p.filename()</code> starting at its beginning and
+ ending at the last <i>dot</i> (the <i>dot</i> is not included). Otherwise,
+ returns <code>
+ p.filename()</code>.</p>
+</blockquote>
+<pre>string_type extension(const Path &amp; p) const;</pre>
+<blockquote>
+ <p><i>Returns:</i> if <code>p.filename()</code> contains a <i>dot</i>, returns
+ the substring of <code>p.filename()</code> starting at the rightmost <i>dot</i>
+ and ending at the string's end. Otherwise, returns an empty string. </p>
+ <p>[<i>Note:<b> </b></i>The <i>dot</i> is included in the return value so that
+ it is possible to distinguish between no extension and an empty extension. </p>
+ <p>Implementations are permitted but not required to define additional
+ behavior for file systems which append additional elements to extensions, such
+ as alternate data stream or partitioned dataset names. <i>-- end note</i>]</p>
+</blockquote>
 <pre>bool empty() const;</pre>
 <blockquote>
   <p><i>Returns:</i> <code>string().empty()</code>.</p>
@@ -968,13 +1000,13 @@
 <blockquote>
   <p><i>Returns:</i> <code>!relative_path().empty()</code></p>
 </blockquote>
-<pre>bool has_leaf() const;</pre>
+<pre>bool has_filename() const;</pre>
 <blockquote>
- <p><i>Returns:</i> <code>!leaf().empty()</code></p>
+ <p><i>Returns:</i> <code>!filename().empty()</code></p>
 </blockquote>
-<pre>bool has_branch_path() const;</pre>
+<pre>bool has_parent_path() const;</pre>
 <blockquote>
- <p><i>Returns:</i> <code>!branch_path().empty()</code></p>
+ <p><i>Returns:</i> <code>!parent_path().empty()</code></p>
 </blockquote>
 <h4> <a name="basic_path-iterators"> <code>basic_path</code> iterators</a></h4>
 <p> A <code>basic_path::iterator</code> is a constant iterator satisfying all
@@ -1364,7 +1396,7 @@
 
         // modifiers
         void assign(const path_type&amp; p, <span style="background-color: #FFFFFF">file_status</span> st=file_status(), <span style="background-color: #FFFFFF">file_status</span> symlink_st=file_status());
- void replace_leaf(const string_type&amp; s, <span style="background-color: #FFFFFF">file_status</span> st=file_status(), <span style="background-color: #FFFFFF">file_status</span> symlink_st=file_status());
+ void replace_filename(const string_type&amp; s, <span style="background-color: #FFFFFF">file_status</span> st=file_status(), <span style="background-color: #FFFFFF">file_status</span> symlink_st=file_status());
 
         // observers
         const Path&amp; path() const;
@@ -1474,7 +1506,7 @@
     </tr>
   </table>
 </blockquote>
-<pre>void replace_leaf(const string_type&amp; s, <span style="background-color: #FFFFFF">file_status</span> st=file_status(), <span style="background-color: #FFFFFF">file_status</span> symlink_st=file_status());</pre>
+<pre>void replace_filename(const string_type&amp; s, <span style="background-color: #FFFFFF">file_status</span> st=file_status(), <span style="background-color: #FFFFFF">file_status</span> symlink_st=file_status());</pre>
 <blockquote>
   <p><i>Postconditions:</i></p>
   <table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="43%">
@@ -1645,8 +1677,8 @@
   {
     for (directory_iterator itr(p); itr!=directory_iterator(); ++itr)
     {
- cout &lt;&lt; itr-&gt;path().leaf() &lt;&lt; ' '; // display filename only
- if (is_regular(itr-&gt;status())) cout &lt;&lt; &quot; [&quot; &lt;&lt; file_size(itr-&gt;path()) &lt;&lt; ']';
+ cout &lt;&lt; itr-&gt;path().filename() &lt;&lt; ' '; // display filename only
+ if (is_regular_file(itr-&gt;status())) cout &lt;&lt; &quot; [&quot; &lt;&lt; file_size(itr-&gt;path()) &lt;&lt; ']';
       cout &lt;&lt; '\n';
     }
   }
@@ -1807,11 +1839,11 @@
 <blockquote>
   <p><i>Returns:</i></p>
   <blockquote>
- For <code>status,</code> determine the attributes
+ For <code>status</code>, determine the attributes
     of
     <code>p</code> as if by<i> POSIX </i> <code>
   <a href="http://www.opengroup.org/onlinepubs/000095399/functions/stat.html">stat()</a></code>,
- for <code>symlink_status</code> determine the attributes as if by <i>POSIX </i> <code>
+ for <code>symlink_status</code>, determine the attributes as if by <i>POSIX </i> <code>
     <a href="http://www.opengroup.org/onlinepubs/000095399/functions/lstat.html">
     lstat()</a></code>.<blockquote>
       <p>[<i>Note:</i> For symbolic links, <code>stat()</code> continues
@@ -1819,14 +1851,23 @@
       does not. <i>--
     end note</i>]</p>
     </blockquote>
- <p>If the operating system reports an error during attribute determination:</p>
+ <p>If the underlying file system reports an error during attribute determination:</p>
     <ul>
- <li>If the error indicating that <code>p</code> could not
- be resolved, as if by POSIX error codes ENOENT or ENOTDIR, set ec to 0 and return <code>
+ <li>If the error indicating that <code>p</code> could not be resolved, as
+ if by POSIX errors ENOENT or ENOTDIR, call <code>ec.clear()</code> and return <code>
       file_status(not_found_flag)</code>.</li>
     </ul>
+ <blockquote>
+ <blockquote>
+ <p>[<i>Note:</i> The effect of this behavior is to distinguish between
+ knowing that p
+ does not exist, and not being able to determine the status of p. This
+ distinction is important to users.&nbsp; <i>--end note</i>]</p>
+ </blockquote>
+ </blockquote>
     <ul>
- <li>Otherwise, set ec to the error code reported by the operating system
+ <li>Otherwise, set ec to the error number reported by the underlying
+ implementation API
       and return <code>
       file_status(status_unknown)</code>.</li>
     </ul>
@@ -1899,14 +1940,14 @@
 <blockquote>
   <p><i>Returns:</i> <code>exists( status(p) )</code></p>
 </blockquote>
-<pre><span style="background-color: #FFFFFF">bool </span><code><span style="background-color: #FFFFFF">is_regular</span></code><span style="background-color: #FFFFFF">(file_status</span><span style="background-color: #FFFFFF"> s);</span></pre>
+<pre><span style="background-color: #FFFFFF">bool </span><code><span style="background-color: #FFFFFF">is_regular_file</span></code><span style="background-color: #FFFFFF">(file_status</span><span style="background-color: #FFFFFF"> s);</span></pre>
 <blockquote>
   <p><i><span style="background-color: #FFFFFF">Returns:</span></i><span style="background-color: #FFFFFF">
   <code>s.type() == regular_file</code></span></p>
 </blockquote>
-<pre><code>template &lt;class Path&gt; bool is_regular(const Path&amp; p);</code></pre>
+<pre><code>template &lt;class Path&gt; bool is_regular_file(const Path&amp; p);</code></pre>
 <blockquote>
- <p><i>Returns:</i> <code>is_regular( status(p) )</code></p>
+ <p><i>Returns:</i> <code>is_regular_file( status(p) )</code></p>
 </blockquote>
 <pre><span style="background-color: #FFFFFF">bool </span><code><span style="background-color: #FFFFFF">is_directory</span></code><span style="background-color: #FFFFFF">(file_status</span><span style="background-color: #FFFFFF"> s);</span></pre>
 <blockquote>
@@ -1929,7 +1970,7 @@
 <pre><span style="background-color: #FFFFFF">bool <a name="exists">is_other</a>(file_status s);</span></pre>
 <blockquote>
   <p><i><span style="background-color: #FFFFFF">Returns:</span></i><span style="background-color: #FFFFFF">
- <code>return exists(s) &amp;&amp; !is_regular(s) &amp;&amp; !is_directory(s) &amp;&amp; !is_symlink(s)</code></span></p>
+ <code>return exists(s) &amp;&amp; !is_regular_file(s) &amp;&amp; !is_directory(s) &amp;&amp; !is_symlink(s)</code></span></p>
   <p><span style="background-color: #FFFFFF">[<i>Note: </i>The specification of
   <code>is_other()</code> will remain unchanged even if additional <code>is_xxx()</code>
   functions are added in the future. <i>-- end note</i>]</span></p>
@@ -2154,24 +2195,38 @@
   </span> <code>basic_filesystem_error&lt;Path1, Path2&gt;</code><span style="background-color: #FFFFFF">
   if <code>ec</code> is not zero.</span></p>
   </blockquote>
-<pre>template &lt;class Path&gt; bool remove(const Path&amp; p);</pre>
+<pre>template &lt;class Path&gt; void remove(const Path&amp; p, system::error_code &amp; ec = <i>singular</i> );</pre>
 <blockquote>
- <p><i>Precondition:</i> <code>!p.empty()</code></p>
- <p><i>Effects:</i>&nbsp; Attempts to delete the file <code>p</code> resolves
- to,
+ <p><i>Effects:</i>&nbsp; Removes the file <code>p</code>,
   as if by<i> POSIX </i><code>
- <a href="http://www.opengroup.org/onlinepubs/000095399/functions/link.html">
- remove()</a></code>.</p>
- <p><i>Returns:</i> The value of <code>exists(p)</code> prior to the
- establishment of the postcondition.</p>
- <p><i>Postcondition:</i> <code>!exists(p)</code></p>
- <p><i>Throws:</i> <code>basic_filesystem_error&lt;Path&gt;</code> if:</p>
+ remove()</code>.
+ If no error is reported by the underlying removal implementation or if <code>
+ status(p).type() == file_not_found</code>, then:</p>
   <ul>
- <li><code>p.empty() || (exists(p) &amp;&amp; is_directory(p) &amp;&amp; !empty(p))</code>.</li>
- <li><i>Effects</i> fails for any reason other than because <code>p</code>
- does not resolve to an existing file.</li>
+ <li>if <code>ec != </code><i><code>singular</code></i>, then <code>ec.clear()</code>.</li>
   </ul>
- <p>[<i>Note:</i> A symbolic link is itself removed, rather than what it
+ <p>Otherwise,</p>
+ <ul>
+ <li>if <code>ec != </code><i><code>singular</code></i>, then set <code>ec</code>
+ to represent the error.</li>
+ <li>otherwise, throw <code>basic_filesystem_error&lt;Path&gt;</code> to represent
+ the error.if <code>ec != </code><i><code>singular</code></i>, then <code>
+ ec.clear()</code></li>
+ </ul>
+ <p><i>Postcondition:</i> <code>!exists(p)</code></p>
+ <p><i>Throws:</i> See <i>Effects</i>.</p>
+ <p>[<i>Note:</i> A symbolic link is itself removed, rather than the file it
+ resolves to being removed. <i>-- end note</i>]</p>
+</blockquote>
+<pre>template &lt;class Path&gt; unsigned long remove_all(const Path&amp; p);</pre>
+<blockquote>
+ <p><i>Effects:</i>&nbsp; Recursively deletes the contents of p if it exists,
+ then deletes file <code>p</code> itself,
+ as if by<i> POSIX </i><code>
+ remove()</code>.</p>
+ <p><i>Returns:</i> The number of files removed.</p>
+ <p><i>Postcondition:</i> <code>!exists(p)</code></p>
+ <p>[<i>Note:</i> A symbolic link is itself removed, rather than the file it
   resolves to being removed. <i>-- end note</i>]</p>
 </blockquote>
 <pre>template &lt;class Path1, class Path2&gt; void rename(const Path1&amp; from_p, const Path2&amp; to_p);</pre>
@@ -2197,7 +2252,7 @@
   <p><i>Effects:</i> The contents and attributes of the file <code>from_fp</code>
   resolves to are copied to the file <code>to_fp</code> resolves to.</p>
   <p><i>Throws:</i> <code>basic_filesystem_error&lt;Path&gt;</code> if <code>
- from_fp.empty() || to_fp.empty() ||!exists(from_fp) || !is_regular(from_fp)
+ from_fp.empty() || to_fp.empty() ||!exists(from_fp) || !is_regular_file(from_fp)
   || exists(to_fp)</code></p>
 </blockquote>
 <pre>template &lt;class Path&gt; Path complete(const Path&amp; p, const Path&amp; base=initial_path&lt;Path&gt;());</pre>
@@ -2275,11 +2330,18 @@
   <p><i>Throws:</i>&nbsp; <code>basic_filesystem_error&lt;Path&gt;</code> if<code>
   exists(p) &amp;&amp; !is_directory(p)</code></p>
 </blockquote>
+<table border="1" cellpadding="5" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111">
+ <tr>
+ <td>
+ <h4>Deprecated convenience functions</h4>
+ <p>The following functions have been replaced by <code>basic_path</code>
+ member functions <code>extension()</code>, <code>stem()</code>, and <code>
+ replace_extension()</code>.</p>
 <pre>template &lt;class Path&gt; typename Path::string_type extension(const Path &amp; p);</pre>
 <blockquote>
- <p><i>Returns:</i> if <code>p.leaf()</code> contains a <i>dot</i>, returns the
- substring of <code>p.leaf()</code> starting at the rightmost <i>dot</i> and
- ending at the string's end. Otherwise, returns an empty string. </p>
+ <p><i>Returns:</i> if <code>p.filename()</code> contains a <i>dot</i>, returns
+ the substring of <code>p.filename()</code> starting at the rightmost <i>dot</i>
+ and ending at the string's end. Otherwise, returns an empty string. </p>
   <p>[<i>Note:<b> </b></i>The <i>dot</i> is included in the return value so that
   it is possible to distinguish between no extension and an empty extension. </p>
   <p>Implementations are permitted but not required to define additional
@@ -2288,10 +2350,11 @@
 </blockquote>
 <pre>template &lt;class Path&gt; typename Path::string_type basename(const Path &amp; p);</pre>
 <blockquote>
- <p><i>Returns:</i> if <code>p.leaf()</code> contains a <i>dot</i>, returns the
- substring of <code>p.leaf()</code> starting at its beginning and ending at the
- last <i>dot</i> (the <i>dot</i> is not included). Otherwise, returns <code>
- p.leaf()</code>.</p>
+ <p><i>Returns:</i> if <code>p.filename()</code> contains a <i>dot</i>, returns
+ the substring of <code>p.filename()</code> starting at its beginning and
+ ending at the last <i>dot</i> (the <i>dot</i> is not included). Otherwise,
+ returns <code>
+ p.filename()</code>.</p>
 </blockquote>
 <pre>template &lt;class Path&gt;
   Path change_extension(const Path &amp; p, const typename Path::string_type &amp; new_extension);</pre>
@@ -2302,33 +2365,9 @@
   that <code>new_extension</code> should include <i>dot</i> to achieve
   reasonable results. <i>-- end note</i>]</p>
 </blockquote>
-<h3><a name="header-cerrno">Additions</a> to header <code>&lt;cerrno&gt;</code></h3>
-<p>The header &lt;cerrno&gt; shall include an additional symbolic constant macro for
-each of the values returned by the to_errno
-function. The macro names shall be as defined in <i>POSIX</i>
-<a href="http://www.opengroup.org/onlinepubs/000095399/basedefs/errno.h.html">
-errno.h</a>, with the additions below.</p>
-<blockquote>
-<p><i><span style="background-color: #E0E0E0">This codifies existing practice.
-The required names are only a sub-set of those defined by POSIX, and are usually already
-supplied in &lt;errno.h&gt; (as wrapped by &lt;cerrno&gt;) as shipped with POSIX and Windows compilers.
-These implementations require no changes to their underlying C headers to conform with the above
-requirement.</span></i></p>
-<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="33%">
- <tr>
- <td width="18%" align="center"><i><b>Name</b></i></td>
- <td width="82%" align="center"><i><b>Meaning</b></i></td>
- </tr>
- <tr>
- <td width="18%"><code>EBADHANDLE</code></td>
- <td width="82%">Bad operating system handle.</td>
- </tr>
- <tr>
- <td width="18%"><code>EOTHER</code></td>
- <td width="82%">Other error.</td>
+ </td>
   </tr>
 </table>
-</blockquote>
 <h3><a name="header-fstream">Additions</a> to header <code>&lt;fstream&gt;</code></h3>
 <blockquote>
 <p><span style="background-color: #E0E0E0; font-style:italic">These additions have been carefully
@@ -2361,14 +2400,14 @@
 sentence:</i></span></p>
 <blockquote>
 <p><span style="background-color: #FFFFFF">It then opens a file, if possible,
-whose name is the NTBS s (“as if” by calling <code>std::fopen(s ,<i>modstr</i>
+whose name is the NTBS s (“as if” by calling <code>std::fopen(s ,<i>modstr</i>
 ))</code>.</span></p>
 </blockquote>
 <p><span style="background-color: #FFFFFF"><i>with:</i></span></p>
 <blockquote>
 <p><span style="background-color: #FFFFFF">It then opens, if possible, the file
 that
-<code>p</code> or <code>path(s)</code> resolves to, “as if” by calling <code>std::fopen()</code> with a
+<code>p</code> or <code>path(s)</code> resolves to, “as if” by calling <code>std::fopen()</code> with a
 second argument of <i>modstr</i>.</span></p>
 </blockquote>
 <p><span style="background-color: #FFFFFF"><i>In 27.8.1.5 Class template
@@ -2487,8 +2526,8 @@
 <td width="48"><b><code>root_<br>name()</code></b></td>
 <td width="88"><b><code>root_<br>directory()</code></b></td>
 <td width="96"><b><code>relative_<br>path()<br>.string()</code></b></td>
-<td width="72"><b><code>branch_<br>path()<br>.string()</code></b></td>
-<td width="72"><b><code>leaf()</code></b></td>
+<td width="72"><b><code>parent_<br>path()<br>.string()</code></b></td>
+<td width="72"><b><code>filename()</code></b></td>
 </tr>
 <tr>
 <td width="112"><code>&quot;&quot;</code></td>
@@ -2992,29 +3031,6 @@
 classes, overriding the constructors and opens taking pathname arguments, and
 providing the additional overloads. In Lillehammer LWG members indicated lack of
 support for this alternative, feeling that costs outweigh benefits.</span></p>
-<h2><a name="Issues">Issues</a></h2>
-<h3>1. Return type of certain basic_path members returning strings. [Howard
-Hinnant]</h3>
-<p>For member functions described as returning &quot;<code>const string_type</code>&quot;
-or &quot;<code>const external_string_type</code>&quot;, implementations are permitted to
-return &quot;<code>const string_type&amp;</code>&quot; or&nbsp; &quot;<code>const
-external_string_type&amp;</code>&quot; respectively.</p>
-<p>This allows implementations to avoid unnecessary copies. Return-by-value is
-specified as
-<code>const</code> to ensure programs won't break if moved to a
-return-by-reference implementation.</p>
-<p>For example, the Boost implementation keeps the internal representation of a
-pathname in the portable format, so string() returns by reference and is inlined:</p>
-<blockquote>
- <pre>const string_type &amp; string() const { return m_path; }</pre>
-</blockquote>
-<p>Howard Hinnant comments: This may inhibit optimization if rvalue reference is
-accepted.&nbsp; Const-qualified return types can't be moved from.&nbsp; I'd
-rather see either the return type specified as
-<code>const string_type&amp;</code> or <code>string_type</code>.</p>
-<p>Beman Dawes comments: I can't make up my mind. Removing the const will bite
-users, but not very often. OTOH, excessive copying is a real concern, and if
-move semantics can alleviate that, I'm all for it. What does the LWG think?</p>
 <h2><a name="Acknowledgements">Acknowledgements</a></h2>
 <p>This Filesystem Library is dedicated to my wife, Sonda, who provided the
 support necessary to see both a trial implementation and the proposal itself
@@ -3024,8 +3040,7 @@
 Boost Filesystem Library. See
 <a href="http://www.boost.org/libs/filesystem/doc/index.htm#Acknowledgements">
 http://www.boost.org/libs/filesystem/doc/index.htm#Acknowledgements>.</p>
-<p>Dietmar Kühl contributed the original Boost Filesystem Library
-directory_iterator design. Peter Dimov, Walter Landry, Rob Stewart, and Thomas
+<p>Dietmar Kuehl contributed the original Boost Filesystem Library directory_iterator design. Peter Dimov, Walter Landry, Rob Stewart, and Thomas
 Witt were particularly helpful in refining the library.</p>
 <p>The create_directories, extension, basename, and replace_extension functions
 were developed by Vladimir Prus.</p>
@@ -3037,7 +3052,7 @@
   <tr>
     <td width="16%" valign="top">[<a name="ISO_POSIX">ISO-POSIX</a>]</td>
     <td width="84%">ISO/IEC 9945:2003, IEEE&nbsp;Std&nbsp;1003.1-2001, and The Open Group
- Base Specifications, Issue 6. Also known as The Single Unix<font face="Times New Roman">®
+ Base Specifications, Issue 6. Also known as The Single Unix<font face="Times New Roman">®
     Specification, Version 3. Available from each of the organizations involved
     in its creation. For example, read online or download from
     <a href="
http://www.unix.org/single_unix_specification/">
@@ -3057,7 +3072,7 @@
 <p>Distributed under the Boost Software License, Version 1.0. See
 <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a></p>
 <p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->24 April 2008<!--webbot bot="Timestamp" endspan i-checksum="28390" --></p>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B %Y" startspan -->06 July 2008<!--webbot bot="Timestamp" endspan i-checksum="18830" --></p>
 
 </body>
 

Modified: branches/proto/v4/libs/filesystem/example/mbcopy.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/example/mbcopy.cpp (original)
+++ branches/proto/v4/libs/filesystem/example/mbcopy.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -72,9 +72,9 @@
   for ( fs::wdirectory_iterator it( L"." );
     it != fs::wdirectory_iterator(); ++it )
   {
- if ( fs::is_regular(it->status()) )
+ if ( fs::is_regular_file(it->status()) )
     {
- copy_file( *it, target_dir / it->leaf() );
+ copy_file( *it, target_dir / it->filename() );
     }
   }
 

Modified: branches/proto/v4/libs/filesystem/example/mbpath.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/example/mbpath.cpp (original)
+++ branches/proto/v4/libs/filesystem/example/mbpath.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,7 @@
 # endif
 
 #include "mbpath.hpp"
-#include <cerrno>
+#include <boost/system/system_error.hpp>
 #include <boost/scoped_array.hpp>
 
 namespace fs = boost::filesystem;

Modified: branches/proto/v4/libs/filesystem/example/simple_ls.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/example/simple_ls.cpp (original)
+++ branches/proto/v4/libs/filesystem/example/simple_ls.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -51,24 +51,24 @@
         if ( fs::is_directory( dir_itr->status() ) )
         {
           ++dir_count;
- std::cout << dir_itr->leaf() << " [directory]\n";
+ std::cout << dir_itr->filename() << " [directory]\n";
         }
- else if ( fs::is_regular( dir_itr->status() ) )
+ else if ( fs::is_regular_file( dir_itr->status() ) )
         {
           ++file_count;
- std::cout << dir_itr->leaf() << "\n";
+ std::cout << dir_itr->filename() << "\n";
         }
         else
         {
           ++other_count;
- std::cout << dir_itr->leaf() << " [other]\n";
+ std::cout << dir_itr->filename() << " [other]\n";
         }
 
       }
       catch ( const std::exception & ex )
       {
         ++err_count;
- std::cout << dir_itr->leaf() << " " << ex.what() << std::endl;
+ std::cout << dir_itr->filename() << " " << ex.what() << std::endl;
       }
     }
     std::cout << "\n" << file_count << " files\n"

Modified: branches/proto/v4/libs/filesystem/index.html
==============================================================================
--- branches/proto/v4/libs/filesystem/index.html (original)
+++ branches/proto/v4/libs/filesystem/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,9 +6,9 @@
 Automatic redirection failed, please go to
 <a href="doc/index.htm">doc/index.htm</a>.
 <hr>
-<p>© Copyright Beman Dawes, 2003</p>
+<p>&copy; Copyright Beman Dawes, 2003</p>
 <p> Distributed under the Boost Software
 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
 www.boost.org/LICENSE_1_0.txt</a>)</p>
 </body>
-</html>
\ No newline at end of file
+</html>

Modified: branches/proto/v4/libs/filesystem/src/operations.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/src/operations.cpp (original)
+++ branches/proto/v4/libs/filesystem/src/operations.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -110,6 +110,8 @@
 
 namespace
 {
+ const error_code ok;
+
   const fs::directory_iterator end_itr;
   bool is_empty_directory( const std::string & dir_path )
   {
@@ -200,19 +202,19 @@
         || (ec.value() == ERROR_BAD_PATHNAME) // "//nosuch" on Win64
         || (ec.value() == ERROR_BAD_NETPATH)) // "//nosuch" on Win32
       {
- ec = error_code(); // these are not considered errors;
+ ec = ok; // these are not considered errors;
                            // the status is considered not found
         return fs::file_status( fs::file_not_found );
       }
       else if ((ec.value() == ERROR_SHARING_VIOLATION))
       {
- ec = error_code(); // these are not considered errors;
+ ec = ok; // these are not considered errors;
                            // the file exists but the type is not known
         return fs::file_status( fs::type_unknown );
       }
       return fs::file_status( fs::status_unknown );
     }
- ec = error_code();;
+ ec = ok;;
     return (attr & FILE_ATTRIBUTE_DIRECTORY)
       ? fs::file_status( fs::directory_file )
       : fs::file_status( fs::regular_file );
@@ -229,7 +231,7 @@
     WIN32_FILE_ATTRIBUTE_DATA fad;
     if ( get_file_attributes_ex( ph.c_str(), fad ) == 0 )
       return std::make_pair( error_code( ::GetLastError(), system_category ), false );
- return std::make_pair( error_code(),
+ return std::make_pair( ok,
       ( fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
         ? is_empty_directory( ph )
         :( !fad.nFileSizeHigh && !fad.nFileSizeLow ) );
@@ -295,7 +297,7 @@
     {
       if ( p1.handle != INVALID_HANDLE_VALUE
         || p2.handle != INVALID_HANDLE_VALUE )
- { return std::make_pair( error_code(), false ); }
+ { return std::make_pair( ok, false ); }
       assert( p1.handle == INVALID_HANDLE_VALUE
         && p2.handle == INVALID_HANDLE_VALUE );
         { return std::make_pair( error_code( error1, system_category), false ); }
@@ -309,7 +311,7 @@
     // In theory, volume serial numbers are sufficient to distinguish between
     // devices, but in practice VSN's are sometimes duplicated, so last write
     // time and file size are also checked.
- return std::make_pair( error_code(),
+ return std::make_pair( ok,
         info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber
         && info1.nFileIndexHigh == info2.nFileIndexHigh
         && info1.nFileIndexLow == info2.nFileIndexLow
@@ -331,7 +333,7 @@
       return std::make_pair( error_code( ::GetLastError(), system_category ), 0 );
     if ( (fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) !=0 )
       return std::make_pair( error_code( ERROR_FILE_NOT_FOUND, system_category), 0 );
- return std::make_pair( error_code(),
+ return std::make_pair( ok,
       (static_cast<boost::uintmax_t>(fad.nFileSizeHigh)
         << (sizeof(fad.nFileSizeLow)*8))
       + fad.nFileSizeLow );
@@ -349,7 +351,7 @@
     boost::filesystem::detail::space_pair result;
     if ( get_free_disk_space( ph, &avail, &total, &free ) )
     {
- result.first = error_code();
+ result.first = ok;
       result.second.capacity
         = (static_cast<boost::uintmax_t>(total.HighPart) << 32)
           + total.LowPart;
@@ -385,7 +387,7 @@
     if ( get_current_directory( sz, buf.get() ) == 0 )
       return error_code( ::GetLastError(), system_category );
     ph = buf.get();
- return error_code();
+ return ok;
   }
 
   inline bool set_current_directory( const char * buf )
@@ -426,11 +428,11 @@
         == 0 ) return error_code( ::GetLastError(), system_category );
       big_buf[len] = '\0';
       target = big_buf.get();
- return error_code();
+ return ok;
     }
     buf[len] = '\0';
     target = buf;
- return error_code();
+ return ok;
   }
 
   template<class String>
@@ -517,9 +519,14 @@
   error_code
   remove_template( const String & ph )
   {
+ // TODO: test this code in the presence of Vista symlinks,
+ // including dangling, self-referal, and cyclic symlinks
     error_code ec;
     fs::file_status sf( fs::detail::status_api( ph, ec ) );
- if ( ec ) return ec;
+ if ( ec )
+ return ec;
+ if ( sf.type() == fs::file_not_found )
+ return ok;
     if ( fs::is_directory( sf ) )
     {
       if ( !remove_directory( ph ) )
@@ -529,7 +536,7 @@
     {
       if ( !delete_file( ph ) ) return error_code(::GetLastError(), system_category);
     }
- return error_code();
+ return ok;
   }
 
   inline bool create_directory( const std::string & dir )
@@ -545,7 +552,7 @@
     // an error here may simply mean the postcondition is already met
     if ( error.value() == ERROR_ALREADY_EXISTS
       && fs::is_directory( fs::detail::status_api( dir_ph, dummy ) ) )
- return std::make_pair( error_code(), false );
+ return std::make_pair( ok, false );
     return std::make_pair( error, false );
   }
 
@@ -566,6 +573,24 @@
   }
 #endif
 
+#else // BOOST_POSIX_API
+
+ int posix_remove( const char * p )
+ {
+# if defined(__QNXNTO__) || (defined(__MSL__) && (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)))
+ // Some Metrowerks C library versions fail on directories because of a
+ // known Metrowerks coding error in ::remove. Workaround is to call
+ // rmdir() or unlink() as indicated.
+ // Same bug also reported for QNX, with the same fix.
+ int err = ::unlink( p );
+ if ( err != EPERM )
+ return err;
+ return ::rmdir( p )
+# else
+ return std::remove( p );
+# endif
+ }
+
 #endif
 } // unnamed namespace
 
@@ -575,6 +600,7 @@
   {
     namespace detail
     {
+ BOOST_FILESYSTEM_DECL system::error_code throws;
 
 // free functions ----------------------------------------------------------//
 
@@ -763,7 +789,7 @@
         if ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
           { sf.type( directory_file ); symlink_sf.type( directory_file ); }
         else { sf.type( regular_file ); symlink_sf.type( regular_file ); }
- return error_code();
+ return ok;
       }
 
       BOOST_FILESYSTEM_DECL error_code
@@ -781,7 +807,7 @@
         if ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
           { sf.type( directory_file ); symlink_sf.type( directory_file ); }
         else { sf.type( regular_file ); symlink_sf.type( regular_file ); }
- return error_code();
+ return ok;
       }
 
 # endif // ifndef BOOST_FILESYSTEM_NARROW_ONLY
@@ -889,7 +915,7 @@
         if ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
           { sf.type( directory_file ); symlink_sf.type( directory_file ); }
         else { sf.type( regular_file ); symlink_sf.type( regular_file ); }
- return error_code();
+ return ok;
       }
 
       BOOST_FILESYSTEM_DECL error_code
@@ -901,7 +927,7 @@
           handle = 0;
           return error_code( ok ? 0 : ::GetLastError(), system_category );
         }
- return error_code();
+ return ok;
       }
 
       BOOST_FILESYSTEM_DECL error_code
@@ -919,7 +945,7 @@
         if ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
           { sf.type( directory_file ); symlink_sf.type( directory_file ); }
         else { sf.type( regular_file ); symlink_sf.type( regular_file ); }
- return error_code();
+ return ok;
       }
 
 # else // BOOST_POSIX_API
@@ -932,13 +958,13 @@
         {
           if ( errno == ENOENT || errno == ENOTDIR )
           {
- ec = error_code();
+ ec = ok;
             return fs::file_status( fs::file_not_found );
           }
           ec = error_code( errno, system_category );
           return fs::file_status( fs::status_unknown );
         }
- ec = error_code();
+ ec = ok;
         if ( S_ISDIR( path_stat.st_mode ) )
           return fs::file_status( fs::directory_file );
         if ( S_ISREG( path_stat.st_mode ) )
@@ -962,13 +988,13 @@
         {
           if ( errno == ENOENT || errno == ENOTDIR )
           {
- ec = error_code();
+ ec = ok;
             return fs::file_status( fs::file_not_found );
           }
           ec = error_code( errno, system_category );
           return fs::file_status( fs::status_unknown );
         }
- ec = error_code();
+ ec = ok;
         if ( S_ISREG( path_stat.st_mode ) )
           return fs::file_status( fs::regular_file );
         if ( S_ISDIR( path_stat.st_mode ) )
@@ -1001,7 +1027,7 @@
         struct stat path_stat;
         if ( (::stat( ph.c_str(), &path_stat )) != 0 )
           return std::make_pair( error_code( errno, system_category ), false );
- return std::make_pair( error_code(), S_ISDIR( path_stat.st_mode )
+ return std::make_pair( ok, S_ISDIR( path_stat.st_mode )
           ? is_empty_directory( ph )
           : path_stat.st_size == 0 );
       }
@@ -1016,7 +1042,7 @@
         if ( e1 != 0 || e2 != 0 )
           return std::make_pair( error_code( e1 != 0 && e2 != 0 ? errno : 0, system_category ), false );
         // at this point, both stats are known to be valid
- return std::make_pair( error_code(),
+ return std::make_pair( ok,
             s1.st_dev == s2.st_dev
             && s1.st_ino == s2.st_ino
             // According to the POSIX stat specs, "The st_ino and st_dev fields
@@ -1034,7 +1060,7 @@
           return std::make_pair( error_code( errno, system_category ), 0 );
         if ( !S_ISREG( path_stat.st_mode ) )
           return std::make_pair( error_code( EPERM, system_category ), 0 );
- return std::make_pair( error_code(),
+ return std::make_pair( ok,
           static_cast<boost::uintmax_t>(path_stat.st_size) );
       }
 
@@ -1051,7 +1077,7 @@
         }
         else
         {
- result.first = error_code();
+ result.first = ok;
           result.second.capacity
             = static_cast<boost::uintmax_t>(vfs.f_blocks) * BOOST_STATVFS_F_FRSIZE;
           result.second.free
@@ -1068,7 +1094,7 @@
         struct stat path_stat;
         if ( ::stat( ph.c_str(), &path_stat ) != 0 )
           return std::make_pair( error_code( errno, system_category ), 0 );
- return std::make_pair( error_code(), path_stat.st_mtime );
+ return std::make_pair( ok, path_stat.st_mtime );
       }
 
       BOOST_FILESYSTEM_DECL error_code
@@ -1105,7 +1131,7 @@
             break;
           }
         }
- return error_code();
+ return ok;
       }
 
       BOOST_FILESYSTEM_DECL error_code
@@ -1119,13 +1145,13 @@
       create_directory_api( const std::string & ph )
       {
         if ( ::mkdir( ph.c_str(), S_IRWXU|S_IRWXG|S_IRWXO ) == 0 )
- { return std::make_pair( error_code(), true ); }
+ { return std::make_pair( ok, true ); }
         int ec=errno;
         error_code dummy;
         if ( ec != EEXIST
           || !fs::is_directory( status_api( ph, dummy ) ) )
           { return std::make_pair( error_code( ec, system_category ), false ); }
- return std::make_pair( error_code(), false );
+ return std::make_pair( ok, false );
       }
 
       BOOST_FILESYSTEM_DECL error_code
@@ -1147,28 +1173,19 @@
       BOOST_FILESYSTEM_DECL error_code
       remove_api( const std::string & ph )
       {
-# if defined(__QNXNTO__) || (defined(__MSL__) && (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)))
- // Some Metrowerks C library versions fail on directories because of a
- // known Metrowerks coding error in ::remove. Workaround is to call
- // rmdir() or unlink() as indicated.
- // Same bug also reported for QNX, with the same fix.
- if ( (is_directory( ph )
- ? ::rmdir( ph.c_str() )
- : ::unlink( ph.c_str() )) != 0 )
-# else
- // note that the POSIX behavior for symbolic links is what we want;
- // the link rather than what it points to is deleted
- if ( std::remove( ph.c_str() ) != 0 )
-# endif
- {
- int error = errno;
- // POSIX says "If the directory is not an empty directory, rmdir()
- // shall fail and set errno to EEXIST or ENOTEMPTY."
- // Linux uses ENOTEMPTY, Solaris uses EEXIST.
- if ( error == EEXIST ) error = ENOTEMPTY;
- return error_code( error, system_category );
- }
- return error_code();
+ if ( posix_remove( ph.c_str() ) == 0 )
+ return ok;
+ int error = errno;
+ // POSIX says "If the directory is not an empty directory, rmdir()
+ // shall fail and set errno to EEXIST or ENOTEMPTY."
+ // Linux uses ENOTEMPTY, Solaris uses EEXIST.
+ if ( error == EEXIST ) error = ENOTEMPTY;
+
+ error_code ec;
+
+ // ignore errors if post-condition satisfied
+ return status_api(ph, ec).type() == file_not_found
+ ? ok : error_code( error, system_category ) ;
       }
 
       BOOST_FILESYSTEM_DECL error_code
@@ -1249,7 +1266,7 @@
           else max = static_cast<std::size_t>( tmp + 1 ); // relative root
         }
         result = max;
- return error_code();
+ return ok;
       }
 
       BOOST_FILESYSTEM_DECL error_code
@@ -1268,7 +1285,7 @@
         dirent de;
         buffer = std::malloc( (sizeof(dirent) - sizeof(de.d_name))
           + path_size + 1 ); // + 1 for "/0"
- return error_code();
+ return ok;
       }
 
       BOOST_FILESYSTEM_DECL error_code
@@ -1276,7 +1293,7 @@
       {
         std::free( buffer );
         buffer = 0;
- if ( handle == 0 ) return error_code();
+ if ( handle == 0 ) return ok;
         DIR * h( static_cast<DIR*>(handle) );
         handle = 0;
         return error_code( ::closedir( h ) == 0 ? 0 : errno, system_category );
@@ -1339,7 +1356,7 @@
 # else
         sf = symlink_sf = fs::file_status( fs::status_unknown );
 # endif
- return error_code();
+ return ok;
       }
 
 # endif

Modified: branches/proto/v4/libs/filesystem/src/path.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/src/path.cpp (original)
+++ branches/proto/v4/libs/filesystem/src/path.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,6 +24,8 @@
 #include <boost/cerrno.hpp>
 #include <boost/system/error_code.hpp>
 
+#include <cwchar> // for std::mbstate_t
+
 namespace
 {
   // std::locale construction can throw (if LC_MESSAGES is wrong, for example),

Modified: branches/proto/v4/libs/filesystem/test/fstream_test.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/test/fstream_test.cpp (original)
+++ branches/proto/v4/libs/filesystem/test/fstream_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -68,7 +68,7 @@
     }
     {
       std::cout << " in test 4.1\n";
- fs::ifstream tfs( p / p.leaf() ); // should fail
+ fs::ifstream tfs( p / p.filename() ); // should fail
       BOOST_CHECK( !tfs.is_open() );
     }
     {

Modified: branches/proto/v4/libs/filesystem/test/lpath.hpp
==============================================================================
--- branches/proto/v4/libs/filesystem/test/lpath.hpp (original)
+++ branches/proto/v4/libs/filesystem/test/lpath.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,6 +10,7 @@
 
 #include <boost/filesystem/path.hpp>
 #include <string>
+#include <ios> // for std::streamoff
 
 namespace std
 {

Modified: branches/proto/v4/libs/filesystem/test/operations_test.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/test/operations_test.cpp (original)
+++ branches/proto/v4/libs/filesystem/test/operations_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -300,20 +300,21 @@
   fs::path ng( " no-way, Jose" );
   BOOST_CHECK( !fs::exists( ng ) );
   BOOST_CHECK( !fs::is_directory( ng ) );
- BOOST_CHECK( !fs::is_regular( ng ) );
+ BOOST_CHECK( !fs::is_regular_file( ng ) );
+ BOOST_CHECK( !fs::is_regular( ng ) ); // verify deprecated name still works
   BOOST_CHECK( !fs::is_symlink( ng ) );
   fs::file_status stat( fs::status( ng ) );
   BOOST_CHECK( fs::status_known( stat ) );
   BOOST_CHECK( !fs::exists( stat ) );
   BOOST_CHECK( !fs::is_directory( stat ) );
- BOOST_CHECK( !fs::is_regular( stat ) );
+ BOOST_CHECK( !fs::is_regular_file( stat ) );
   BOOST_CHECK( !fs::is_other( stat ) );
   BOOST_CHECK( !fs::is_symlink( stat ) );
   stat = fs::status( "" );
   BOOST_CHECK( fs::status_known( stat ) );
   BOOST_CHECK( !fs::exists( stat ) );
   BOOST_CHECK( !fs::is_directory( stat ) );
- BOOST_CHECK( !fs::is_regular( stat ) );
+ BOOST_CHECK( !fs::is_regular_file( stat ) );
   BOOST_CHECK( !fs::is_other( stat ) );
   BOOST_CHECK( !fs::is_symlink( stat ) );
 
@@ -387,13 +388,13 @@
   BOOST_CHECK( fs::exists( dir ) );
   BOOST_CHECK( BOOST_FS_IS_EMPTY( dir ) );
   BOOST_CHECK( fs::is_directory( dir ) );
- BOOST_CHECK( !fs::is_regular( dir ) );
+ BOOST_CHECK( !fs::is_regular_file( dir ) );
   BOOST_CHECK( !fs::is_other( dir ) );
   BOOST_CHECK( !fs::is_symlink( dir ) );
   stat = fs::status( dir );
   BOOST_CHECK( fs::exists( stat ) );
   BOOST_CHECK( fs::is_directory( stat ) );
- BOOST_CHECK( !fs::is_regular( stat ) );
+ BOOST_CHECK( !fs::is_regular_file( stat ) );
   BOOST_CHECK( !fs::is_other( stat ) );
   BOOST_CHECK( !fs::is_symlink( stat ) );
 
@@ -476,7 +477,7 @@
     BOOST_CHECK( fs::is_directory( dir_itr->status() ) );
     BOOST_CHECK( fs::is_directory( fs::symlink_status(*dir_itr) ) );
     BOOST_CHECK( fs::is_directory( dir_itr->symlink_status() ) );
- BOOST_CHECK( dir_itr->leaf() == "d1" );
+ BOOST_CHECK( dir_itr->filename() == "d1" );
   }
 
   // create a second directory named d2
@@ -491,26 +492,26 @@
     fs::directory_iterator dir_itr( dir );
     BOOST_CHECK( fs::exists(dir_itr->status()) );
     BOOST_CHECK( fs::is_directory(dir_itr->status()) );
- BOOST_CHECK( !fs::is_regular(dir_itr->status()) );
+ BOOST_CHECK( !fs::is_regular_file(dir_itr->status()) );
     BOOST_CHECK( !fs::is_other(dir_itr->status()) );
     BOOST_CHECK( !fs::is_symlink(dir_itr->status()) );
 
     fs::directory_iterator dir_itr2( dir );
- BOOST_CHECK( dir_itr->leaf() == "d1"
- || dir_itr->leaf() == "d2" );
- BOOST_CHECK( dir_itr2->leaf() == "d1" || dir_itr2->leaf() == "d2" );
- if ( dir_itr->leaf() == "d1" )
+ BOOST_CHECK( dir_itr->filename() == "d1"
+ || dir_itr->filename() == "d2" );
+ BOOST_CHECK( dir_itr2->filename() == "d1" || dir_itr2->filename() == "d2" );
+ if ( dir_itr->filename() == "d1" )
     {
- BOOST_CHECK( (++dir_itr)->leaf() == "d2" );
- BOOST_CHECK( dir_itr2->leaf() == "d1" );
- BOOST_CHECK( (++dir_itr2)->leaf() == "d2" );
+ BOOST_CHECK( (++dir_itr)->filename() == "d2" );
+ BOOST_CHECK( dir_itr2->filename() == "d1" );
+ BOOST_CHECK( (++dir_itr2)->filename() == "d2" );
     }
     else
     {
- BOOST_CHECK( dir_itr->leaf() == "d2" );
- BOOST_CHECK( (++dir_itr)->leaf() == "d1" );
- BOOST_CHECK( (dir_itr2)->leaf() == "d2" );
- BOOST_CHECK( (++dir_itr2)->leaf() == "d1" );
+ BOOST_CHECK( dir_itr->filename() == "d2" );
+ BOOST_CHECK( (++dir_itr)->filename() == "d1" );
+ BOOST_CHECK( (dir_itr2)->filename() == "d2" );
+ BOOST_CHECK( (++dir_itr2)->filename() == "d1" );
     }
     BOOST_CHECK( ++dir_itr == fs::directory_iterator() );
     BOOST_CHECK( dir_itr2 != fs::directory_iterator() );
@@ -519,21 +520,21 @@
 
   { // *i++ must work to meet the standard's InputIterator requirements
     fs::directory_iterator dir_itr( dir );
- BOOST_CHECK( dir_itr->leaf() == "d1"
- || dir_itr->leaf() == "d2" );
- if ( dir_itr->leaf() == "d1" )
+ BOOST_CHECK( dir_itr->filename() == "d1"
+ || dir_itr->filename() == "d2" );
+ if ( dir_itr->filename() == "d1" )
     {
- BOOST_CHECK( (*dir_itr++).leaf() == "d1" );
- BOOST_CHECK( dir_itr->leaf() == "d2" );
+ BOOST_CHECK( (*dir_itr++).filename() == "d1" );
+ BOOST_CHECK( dir_itr->filename() == "d2" );
     }
     else
     {
       // Check C++98 input iterator requirements
- BOOST_CHECK( (*dir_itr++).leaf() == "d2" );
+ BOOST_CHECK( (*dir_itr++).filename() == "d2" );
       // input iterator requirements in the current WP would require this check:
- // BOOST_CHECK( implicit_cast<std::string const&>(*dir_itr++).leaf() == "d1" );
+ // BOOST_CHECK( implicit_cast<std::string const&>(*dir_itr++).filename() == "d1" );
 
- BOOST_CHECK( dir_itr->leaf() == "d1" );
+ BOOST_CHECK( dir_itr->filename() == "d1" );
     }
 
     // test case reported in comment to SourceForge bug tracker [937606]
@@ -554,11 +555,11 @@
     fs::directory_iterator it( root_name_path );
     BOOST_CHECK( it != fs::directory_iterator() );
     BOOST_CHECK( fs::exists( *it ) );
- BOOST_CHECK( it->path().branch_path() == root_name_path );
+ BOOST_CHECK( it->path().parent_path() == root_name_path );
     bool found(false);
     do
     {
- if ( it->leaf() == temp_dir_name ) found = true;
+ if ( it->filename() == temp_dir_name ) found = true;
     } while ( ++it != fs::directory_iterator() );
     BOOST_CHECK( found );
   }
@@ -568,7 +569,7 @@
   create_file( file_ph, "" );
   BOOST_CHECK( fs::exists( file_ph ) );
   BOOST_CHECK( !fs::is_directory( file_ph ) );
- BOOST_CHECK( fs::is_regular( file_ph ) );
+ BOOST_CHECK( fs::is_regular_file( file_ph ) );
   BOOST_CHECK( BOOST_FS_IS_EMPTY( file_ph ) );
   BOOST_CHECK( fs::file_size( file_ph ) == 0 );
   bad_create_directory_path = file_ph;
@@ -577,7 +578,7 @@
   BOOST_CHECK( fs::status_known( stat ) );
   BOOST_CHECK( fs::exists( stat ) );
   BOOST_CHECK( !fs::is_directory( stat ) );
- BOOST_CHECK( fs::is_regular( stat ) );
+ BOOST_CHECK( fs::is_regular_file( stat ) );
   BOOST_CHECK( !fs::is_other( stat ) );
   BOOST_CHECK( !fs::is_symlink( stat ) );
 
@@ -587,7 +588,7 @@
 
   BOOST_CHECK( fs::exists( file_ph ) );
   BOOST_CHECK( !fs::is_directory( file_ph ) );
- BOOST_CHECK( fs::is_regular( file_ph ) );
+ BOOST_CHECK( fs::is_regular_file( file_ph ) );
   BOOST_CHECK( fs::file_size( file_ph ) == 7 );
   verify_file( file_ph, "foobar1" );
 
@@ -656,7 +657,7 @@
     stat = fs::symlink_status( from_ph );
     BOOST_CHECK( fs::exists( stat ) );
     BOOST_CHECK( !fs::is_directory( stat ) );
- BOOST_CHECK( !fs::is_regular( stat ) );
+ BOOST_CHECK( !fs::is_regular_file( stat ) );
     BOOST_CHECK( !fs::is_other( stat ) );
     BOOST_CHECK( fs::is_symlink( stat ) );
   }
@@ -769,18 +770,18 @@
   BOOST_CHECK( !fs::exists( d2 / "d20" ) );
   BOOST_CHECK( fs::exists( d1 / "f2" ) );
 
- // remove() tests on file
+ // remove() file
   file_ph = dir / "shortlife";
   BOOST_CHECK( !fs::exists( file_ph ) );
   create_file( file_ph, "" );
   BOOST_CHECK( fs::exists( file_ph ) );
   BOOST_CHECK( !fs::is_directory( file_ph ) );
- BOOST_CHECK( fs::remove( file_ph ) );
+ fs::remove( file_ph );
   BOOST_CHECK( !fs::exists( file_ph ) );
- BOOST_CHECK( !fs::remove( "no-such-file" ) );
- BOOST_CHECK( !fs::remove( "no-such-directory/no-such-file" ) );
+ fs::remove( "no-such-file" );
+ fs::remove( "no-such-directory/no-such-file" );
 
- // remove() test on directory
+ // remove() directory
   d1 = dir / "shortlife_dir";
   BOOST_CHECK( !fs::exists( d1 ) );
   fs::create_directory( d1 );
@@ -789,44 +790,68 @@
   BOOST_CHECK( BOOST_FS_IS_EMPTY( d1 ) );
   bad_remove_dir = dir;
   BOOST_CHECK( CHECK_EXCEPTION( bad_remove, ENOTEMPTY ) );
- BOOST_CHECK( fs::remove( d1 ) );
+ fs::remove( d1 );
   BOOST_CHECK( !fs::exists( d1 ) );
 
-// STLport is allergic to std::system, so don't use runtime platform test
-# ifdef BOOST_POSIX
-
- // remove() test on dangling symbolic link
- fs::path link( "dangling_link" );
- fs::remove( link );
- BOOST_CHECK( !fs::is_symlink( link ) );
- BOOST_CHECK( !fs::exists( link ) );
- std::system("ln -s nowhere dangling_link");
- BOOST_CHECK( !fs::exists( link ) );
- BOOST_CHECK( fs::is_symlink( link ) );
- BOOST_CHECK( fs::remove( link ) );
- BOOST_CHECK( !fs::is_symlink( link ) );
-
- // remove() test on symbolic link to a file
- file_ph = "link_target";
- fs::remove( file_ph );
- BOOST_CHECK( !fs::exists( file_ph ) );
- create_file( file_ph, "" );
- BOOST_CHECK( fs::exists( file_ph ) );
- BOOST_CHECK( !fs::is_directory( file_ph ) );
- BOOST_CHECK( fs::is_regular( file_ph ) );
- std::system("ln -s link_target non_dangling_link");
- link = "non_dangling_link";
- BOOST_CHECK( fs::exists( link ) );
- BOOST_CHECK( !fs::is_directory( link ) );
- BOOST_CHECK( fs::is_regular( link ) );
- BOOST_CHECK( fs::is_symlink( link ) );
- BOOST_CHECK( fs::remove( link ) );
- BOOST_CHECK( fs::exists( file_ph ) );
- BOOST_CHECK( !fs::exists( link ) );
- BOOST_CHECK( !fs::is_symlink( link ) );
- BOOST_CHECK( fs::remove( file_ph ) );
- BOOST_CHECK( !fs::exists( file_ph ) );
-# endif
+ if ( create_symlink_ok ) // only if symlinks supported
+ {
+ // remove() dangling symbolic link
+ fs::path link( "dangling_link" );
+ fs::remove( link );
+ BOOST_CHECK( !fs::is_symlink( link ) );
+ BOOST_CHECK( !fs::exists( link ) );
+ fs::create_symlink( "nowhere", link );
+ BOOST_CHECK( !fs::exists( link ) );
+ BOOST_CHECK( fs::is_symlink( link ) );
+ fs::remove( link );
+ BOOST_CHECK( !fs::is_symlink( link ) );
+
+ // remove() self-refering symbolic link
+ link = "link_to_self";
+ fs::remove( link );
+ BOOST_CHECK( !fs::is_symlink( link ) );
+ BOOST_CHECK( !fs::exists( link ) );
+ fs::create_symlink( link, link );
+ fs::remove( link );
+ BOOST_CHECK( !fs::exists( link ) );
+ BOOST_CHECK( !fs::is_symlink( link ) );
+
+ // remove() cyclic symbolic link
+ link = "link_to_a";
+ fs::path link2( "link_to_b" );
+ fs::remove( link );
+ fs::remove( link2 );
+ BOOST_CHECK( !fs::is_symlink( link ) );
+ BOOST_CHECK( !fs::exists( link ) );
+ fs::create_symlink( link, link2 );
+ fs::create_symlink( link2, link );
+ fs::remove( link );
+ fs::remove( link2 );
+ BOOST_CHECK( !fs::exists( link ) );
+ BOOST_CHECK( !fs::exists( link2 ) );
+ BOOST_CHECK( !fs::is_symlink( link ) );
+
+ // remove() symbolic link to file
+ file_ph = "link_target";
+ fs::remove( file_ph );
+ BOOST_CHECK( !fs::exists( file_ph ) );
+ create_file( file_ph, "" );
+ BOOST_CHECK( fs::exists( file_ph ) );
+ BOOST_CHECK( !fs::is_directory( file_ph ) );
+ BOOST_CHECK( fs::is_regular_file( file_ph ) );
+ link = "non_dangling_link";
+ fs::create_symlink( file_ph, link );
+ BOOST_CHECK( fs::exists( link ) );
+ BOOST_CHECK( !fs::is_directory( link ) );
+ BOOST_CHECK( fs::is_regular_file( link ) );
+ BOOST_CHECK( fs::is_symlink( link ) );
+ fs::remove( link );
+ BOOST_CHECK( fs::exists( file_ph ) );
+ BOOST_CHECK( !fs::exists( link ) );
+ BOOST_CHECK( !fs::is_symlink( link ) );
+ fs::remove( file_ph );
+ BOOST_CHECK( !fs::exists( file_ph ) );
+ }
 
   // write time tests
 
@@ -834,7 +859,7 @@
   create_file( file_ph, "foobar2" );
   BOOST_CHECK( fs::exists( file_ph ) );
   BOOST_CHECK( !fs::is_directory( file_ph ) );
- BOOST_CHECK( fs::is_regular( file_ph ) );
+ BOOST_CHECK( fs::is_regular_file( file_ph ) );
   BOOST_CHECK( fs::file_size( file_ph ) == 7 );
   verify_file( file_ph, "foobar2" );
 

Modified: branches/proto/v4/libs/filesystem/test/path_test.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/test/path_test.cpp (original)
+++ branches/proto/v4/libs/filesystem/test/path_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,12 +1,18 @@
 // path_test program -------------------------------------------------------//
 
-// Copyright Beman Dawes 2002.
+// Copyright Beman Dawes 2002
+// 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
 
+// basic_path's stem(), extension(), and replace_extension() tests are based
+// on basename(), extension(), and change_extension() tests from the original
+// convenience_test.cpp by Vladimir Prus.
+
 #include <boost/filesystem/operations.hpp>
 #include <boost/utility.hpp>
 #include <iostream>
@@ -248,6 +254,18 @@
   path p5;
   std::string s1( "//:somestring" );
 
+ // verify deprecated names still available
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+
+ p1.branch_path();
+ p1.leaf();
+ path p_remove_leaf;
+ p_remove_leaf.remove_leaf();
+
+# endif
+
+
 # ifndef BOOST_NO_MEMBER_TEMPLATES
 
   // check the path member templates
@@ -290,10 +308,10 @@
   BOOST_CHECK( p1 != p4 );
   BOOST_CHECK( p1.string() == p2.string() );
   BOOST_CHECK( p1.string() == p3.string() );
- BOOST_CHECK( path( "foo" ).leaf() == "foo" );
- BOOST_CHECK( path( "foo" ).branch_path().string() == "" );
- BOOST_CHECK( p1.leaf() == "fum" );
- BOOST_CHECK( p1.branch_path().string() == "fe/fi/fo" );
+ BOOST_CHECK( path( "foo" ).filename() == "foo" );
+ BOOST_CHECK( path( "foo" ).parent_path().string() == "" );
+ BOOST_CHECK( p1.filename() == "fum" );
+ BOOST_CHECK( p1.parent_path().string() == "fe/fi/fo" );
   BOOST_CHECK( path( "" ).empty() == true );
   BOOST_CHECK( path( "foo" ).empty() == false );
 
@@ -336,7 +354,7 @@
   PATH_CHECK( "foo/bar", "foo/bar" );
   PATH_CHECK( path("foo") / path("bar"), "foo/bar" ); // path arg
   PATH_CHECK( path("foo") / "bar", "foo/bar" ); // const char * arg
- PATH_CHECK( path("foo") / path("woo/bar").leaf(), "foo/bar" ); // const std::string & arg
+ PATH_CHECK( path("foo") / path("woo/bar").filename(), "foo/bar" ); // const std::string & arg
   PATH_CHECK( "foo" / path("bar"), "foo/bar" );
 
   PATH_CHECK( "a/b", "a/b" ); // probe for length effects
@@ -616,8 +634,8 @@
 
   p = "";
   BOOST_CHECK( p.relative_path().string() == "" );
- BOOST_CHECK( p.branch_path().string() == "" );
- BOOST_CHECK( p.leaf() == "" );
+ BOOST_CHECK( p.parent_path().string() == "" );
+ BOOST_CHECK( p.filename() == "" );
   BOOST_CHECK( p.root_name() == "" );
   BOOST_CHECK( p.root_directory() == "" );
   BOOST_CHECK( p.root_path().string() == "" );
@@ -625,14 +643,14 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( !p.has_root_directory() );
   BOOST_CHECK( !p.has_relative_path() );
- BOOST_CHECK( !p.has_leaf() );
- BOOST_CHECK( !p.has_branch_path() );
+ BOOST_CHECK( !p.has_filename() );
+ BOOST_CHECK( !p.has_parent_path() );
   BOOST_CHECK( !p.is_complete() );
 
   p = "/";
   BOOST_CHECK( p.relative_path().string() == "" );
- BOOST_CHECK( p.branch_path().string() == "" );
- BOOST_CHECK( p.leaf() == "/" );
+ BOOST_CHECK( p.parent_path().string() == "" );
+ BOOST_CHECK( p.filename() == "/" );
   BOOST_CHECK( p.root_name() == "" );
   BOOST_CHECK( p.root_directory() == "/" );
   BOOST_CHECK( p.root_path().string() == "/" );
@@ -640,8 +658,8 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( p.has_root_directory() );
   BOOST_CHECK( !p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( !p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( !p.has_parent_path() );
   if ( platform == "POSIX" )
     BOOST_CHECK( p.is_complete() );
   else
@@ -649,8 +667,8 @@
 
   p = "//";
   CHECK_EQUAL( p.relative_path().string(), "" );
- CHECK_EQUAL( p.branch_path().string(), "" );
- CHECK_EQUAL( p.leaf(), "//" );
+ CHECK_EQUAL( p.parent_path().string(), "" );
+ CHECK_EQUAL( p.filename(), "//" );
   CHECK_EQUAL( p.root_name(), "//" );
   CHECK_EQUAL( p.root_directory(), "" );
   CHECK_EQUAL( p.root_path().string(), "//" );
@@ -658,15 +676,15 @@
   BOOST_CHECK( p.has_root_name() );
   BOOST_CHECK( !p.has_root_directory() );
   BOOST_CHECK( !p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( !p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( !p.has_parent_path() );
   BOOST_CHECK( !p.is_complete() );
 
 
   p = "///";
   CHECK_EQUAL( p.relative_path().string(), "" );
- CHECK_EQUAL( p.branch_path().string(), "" );
- CHECK_EQUAL( p.leaf(), "/" );
+ CHECK_EQUAL( p.parent_path().string(), "" );
+ CHECK_EQUAL( p.filename(), "/" );
   CHECK_EQUAL( p.root_name(), "" );
   CHECK_EQUAL( p.root_directory(), "/" );
   CHECK_EQUAL( p.root_path().string(), "/" );
@@ -674,8 +692,8 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( p.has_root_directory() );
   BOOST_CHECK( !p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( !p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( !p.has_parent_path() );
   if ( platform == "POSIX" )
     BOOST_CHECK( p.is_complete() );
   else
@@ -683,8 +701,8 @@
 
   p = ".";
   BOOST_CHECK( p.relative_path().string() == "." );
- BOOST_CHECK( p.branch_path().string() == "" );
- BOOST_CHECK( p.leaf() == "." );
+ BOOST_CHECK( p.parent_path().string() == "" );
+ BOOST_CHECK( p.filename() == "." );
   BOOST_CHECK( p.root_name() == "" );
   BOOST_CHECK( p.root_directory() == "" );
   BOOST_CHECK( p.root_path().string() == "" );
@@ -692,14 +710,14 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( !p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( !p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( !p.has_parent_path() );
   BOOST_CHECK( !p.is_complete() );
 
   p = "..";
   BOOST_CHECK( p.relative_path().string() == ".." );
- BOOST_CHECK( p.branch_path().string() == "" );
- BOOST_CHECK( p.leaf() == ".." );
+ BOOST_CHECK( p.parent_path().string() == "" );
+ BOOST_CHECK( p.filename() == ".." );
   BOOST_CHECK( p.root_name() == "" );
   BOOST_CHECK( p.root_directory() == "" );
   BOOST_CHECK( p.root_path().string() == "" );
@@ -707,14 +725,14 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( !p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( !p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( !p.has_parent_path() );
   BOOST_CHECK( !p.is_complete() );
 
   p = "foo";
   BOOST_CHECK( p.relative_path().string() == "foo" );
- BOOST_CHECK( p.branch_path().string() == "" );
- BOOST_CHECK( p.leaf() == "foo" );
+ BOOST_CHECK( p.parent_path().string() == "" );
+ BOOST_CHECK( p.filename() == "foo" );
   BOOST_CHECK( p.root_name() == "" );
   BOOST_CHECK( p.root_directory() == "" );
   BOOST_CHECK( p.root_path().string() == "" );
@@ -722,14 +740,14 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( !p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( !p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( !p.has_parent_path() );
   BOOST_CHECK( !p.is_complete() );
 
   p = "/foo";
   CHECK_EQUAL( p.relative_path().string(), "foo" );
- CHECK_EQUAL( p.branch_path().string(), "/" );
- CHECK_EQUAL( p.leaf(), "foo" );
+ CHECK_EQUAL( p.parent_path().string(), "/" );
+ CHECK_EQUAL( p.filename(), "foo" );
   CHECK_EQUAL( p.root_name(), "" );
   CHECK_EQUAL( p.root_directory(), "/" );
   CHECK_EQUAL( p.root_path().string(), "/" );
@@ -737,8 +755,8 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
   if ( platform == "POSIX" )
     BOOST_CHECK( p.is_complete() );
   else
@@ -746,8 +764,8 @@
 
   p = "/foo/";
   CHECK_EQUAL( p.relative_path().string(), "foo/" );
- CHECK_EQUAL( p.branch_path().string(), "/foo" );
- CHECK_EQUAL( p.leaf(), "." );
+ CHECK_EQUAL( p.parent_path().string(), "/foo" );
+ CHECK_EQUAL( p.filename(), "." );
   CHECK_EQUAL( p.root_name(), "" );
   CHECK_EQUAL( p.root_directory(), "/" );
   CHECK_EQUAL( p.root_path().string(), "/" );
@@ -755,8 +773,8 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
   if ( platform == "POSIX" )
     BOOST_CHECK( p.is_complete() );
   else
@@ -764,8 +782,8 @@
 
   p = "///foo";
   CHECK_EQUAL( p.relative_path().string(), "foo" );
- CHECK_EQUAL( p.branch_path().string(), "/" );
- CHECK_EQUAL( p.leaf(), "foo" );
+ CHECK_EQUAL( p.parent_path().string(), "/" );
+ CHECK_EQUAL( p.filename(), "foo" );
   CHECK_EQUAL( p.root_name(), "" );
   CHECK_EQUAL( p.root_directory(), "/" );
   CHECK_EQUAL( p.root_path().string(), "/" );
@@ -773,8 +791,8 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
   if ( platform == "POSIX" )
     BOOST_CHECK( p.is_complete() );
   else
@@ -782,8 +800,8 @@
 
   p = "foo/bar";
   BOOST_CHECK( p.relative_path().string() == "foo/bar" );
- BOOST_CHECK( p.branch_path().string() == "foo" );
- BOOST_CHECK( p.leaf() == "bar" );
+ BOOST_CHECK( p.parent_path().string() == "foo" );
+ BOOST_CHECK( p.filename() == "bar" );
   BOOST_CHECK( p.root_name() == "" );
   BOOST_CHECK( p.root_directory() == "" );
   BOOST_CHECK( p.root_path().string() == "" );
@@ -791,14 +809,14 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( !p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
   BOOST_CHECK( !p.is_complete() );
 
   p = "../foo";
   BOOST_CHECK( p.relative_path().string() == "../foo" );
- BOOST_CHECK( p.branch_path().string() == ".." );
- BOOST_CHECK( p.leaf() == "foo" );
+ BOOST_CHECK( p.parent_path().string() == ".." );
+ BOOST_CHECK( p.filename() == "foo" );
   BOOST_CHECK( p.root_name() == "" );
   BOOST_CHECK( p.root_directory() == "" );
   BOOST_CHECK( p.root_path().string() == "" );
@@ -806,14 +824,14 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( !p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
   BOOST_CHECK( !p.is_complete() );
 
   p = "..///foo";
   CHECK_EQUAL( p.relative_path().string(), "..///foo" );
- CHECK_EQUAL( p.branch_path().string(), ".." );
- CHECK_EQUAL( p.leaf(), "foo" );
+ CHECK_EQUAL( p.parent_path().string(), ".." );
+ CHECK_EQUAL( p.filename(), "foo" );
   CHECK_EQUAL( p.root_name(), "" );
   CHECK_EQUAL( p.root_directory(), "" );
   CHECK_EQUAL( p.root_path().string(), "" );
@@ -821,14 +839,14 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( !p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
   BOOST_CHECK( !p.is_complete() );
 
   p = "/foo/bar";
   BOOST_CHECK( p.relative_path().string() == "foo/bar" );
- BOOST_CHECK( p.branch_path().string() == "/foo" );
- BOOST_CHECK( p.leaf() == "bar" );
+ BOOST_CHECK( p.parent_path().string() == "/foo" );
+ BOOST_CHECK( p.filename() == "bar" );
   BOOST_CHECK( p.root_name() == "" );
   BOOST_CHECK( p.root_directory() == "/" );
   BOOST_CHECK( p.root_path().string() == "/" );
@@ -836,8 +854,8 @@
   BOOST_CHECK( !p.has_root_name() );
   BOOST_CHECK( p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
   if ( platform == "POSIX" )
     BOOST_CHECK( p.is_complete() );
   else
@@ -852,8 +870,8 @@
   p = path( "//net" );
   CHECK_EQUAL( p.string(), "//net" );
   CHECK_EQUAL( p.relative_path().string(), "" );
- CHECK_EQUAL( p.branch_path().string(), "" );
- CHECK_EQUAL( p.leaf(), "//net" );
+ CHECK_EQUAL( p.parent_path().string(), "" );
+ CHECK_EQUAL( p.filename(), "//net" );
   CHECK_EQUAL( p.root_name(), "//net" );
   CHECK_EQUAL( p.root_directory(), "" );
   CHECK_EQUAL( p.root_path().string(), "//net" );
@@ -861,14 +879,14 @@
   BOOST_CHECK( p.has_root_name() );
   BOOST_CHECK( !p.has_root_directory() );
   BOOST_CHECK( !p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( !p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( !p.has_parent_path() );
   BOOST_CHECK( !p.is_complete() );
 
   p = path( "//net/" );
   BOOST_CHECK( p.relative_path().string() == "" );
- BOOST_CHECK( p.branch_path().string() == "//net" );
- BOOST_CHECK( p.leaf() == "/" );
+ BOOST_CHECK( p.parent_path().string() == "//net" );
+ BOOST_CHECK( p.filename() == "/" );
   BOOST_CHECK( p.root_name() == "//net" );
   BOOST_CHECK( p.root_directory() == "/" );
   BOOST_CHECK( p.root_path().string() == "//net/" );
@@ -876,14 +894,14 @@
   BOOST_CHECK( p.has_root_name() );
   BOOST_CHECK( p.has_root_directory() );
   BOOST_CHECK( !p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
   BOOST_CHECK( p.is_complete() );
 
   p = path( "//net/foo" );
   BOOST_CHECK( p.relative_path().string() == "foo" );
- BOOST_CHECK( p.branch_path().string() == "//net/" );
- BOOST_CHECK( p.leaf() == "foo" );
+ BOOST_CHECK( p.parent_path().string() == "//net/" );
+ BOOST_CHECK( p.filename() == "foo" );
   BOOST_CHECK( p.root_name() == "//net" );
   BOOST_CHECK( p.root_directory() == "/" );
   BOOST_CHECK( p.root_path().string() == "//net/" );
@@ -891,14 +909,14 @@
   BOOST_CHECK( p.has_root_name() );
   BOOST_CHECK( p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
   BOOST_CHECK( p.is_complete() );
 
   p = path( "//net///foo" );
   CHECK_EQUAL( p.relative_path().string(), "foo" );
- CHECK_EQUAL( p.branch_path().string(), "//net/" );
- CHECK_EQUAL( p.leaf(), "foo" );
+ CHECK_EQUAL( p.parent_path().string(), "//net/" );
+ CHECK_EQUAL( p.filename(), "foo" );
   CHECK_EQUAL( p.root_name(), "//net" );
   CHECK_EQUAL( p.root_directory(), "/" );
   CHECK_EQUAL( p.root_path().string(), "//net/" );
@@ -906,8 +924,8 @@
   BOOST_CHECK( p.has_root_name() );
   BOOST_CHECK( p.has_root_directory() );
   BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
   BOOST_CHECK( p.is_complete() );
 
   if ( platform == "Windows" )
@@ -959,8 +977,8 @@
 
     p = path( "c:" );
     BOOST_CHECK( p.relative_path().string() == "" );
- BOOST_CHECK( p.branch_path().string() == "" );
- BOOST_CHECK( p.leaf() == "c:" );
+ BOOST_CHECK( p.parent_path().string() == "" );
+ BOOST_CHECK( p.filename() == "c:" );
     BOOST_CHECK( p.root_name() == "c:" );
     BOOST_CHECK( p.root_directory() == "" );
     BOOST_CHECK( p.root_path().string() == "c:" );
@@ -968,14 +986,14 @@
     BOOST_CHECK( p.has_root_name() );
     BOOST_CHECK( !p.has_root_directory() );
     BOOST_CHECK( !p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( !p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( !p.has_parent_path() );
     BOOST_CHECK( !p.is_complete() );
 
     p = path( "c:foo" );
     BOOST_CHECK( p.relative_path().string() == "foo" );
- BOOST_CHECK( p.branch_path().string() == "c:" );
- BOOST_CHECK( p.leaf() == "foo" );
+ BOOST_CHECK( p.parent_path().string() == "c:" );
+ BOOST_CHECK( p.filename() == "foo" );
     BOOST_CHECK( p.root_name() == "c:" );
     BOOST_CHECK( p.root_directory() == "" );
     BOOST_CHECK( p.root_path().string() == "c:" );
@@ -983,14 +1001,14 @@
     BOOST_CHECK( p.has_root_name() );
     BOOST_CHECK( !p.has_root_directory() );
     BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
     BOOST_CHECK( !p.is_complete() );
  
     p = path( "c:/" );
     BOOST_CHECK( p.relative_path().string() == "" );
- BOOST_CHECK( p.branch_path().string() == "c:" );
- BOOST_CHECK( p.leaf() == "/" );
+ BOOST_CHECK( p.parent_path().string() == "c:" );
+ BOOST_CHECK( p.filename() == "/" );
     BOOST_CHECK( p.root_name() == "c:" );
     BOOST_CHECK( p.root_directory() == "/" );
     BOOST_CHECK( p.root_path().string() == "c:/" );
@@ -998,14 +1016,14 @@
     BOOST_CHECK( p.has_root_name() );
     BOOST_CHECK( p.has_root_directory() );
     BOOST_CHECK( !p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
     BOOST_CHECK( p.is_complete() );
 
     p = path( "c:.." );
     BOOST_CHECK( p.relative_path().string() == ".." );
- BOOST_CHECK( p.branch_path().string() == "c:" );
- BOOST_CHECK( p.leaf() == ".." );
+ BOOST_CHECK( p.parent_path().string() == "c:" );
+ BOOST_CHECK( p.filename() == ".." );
     BOOST_CHECK( p.root_name() == "c:" );
     BOOST_CHECK( p.root_directory() == "" );
     BOOST_CHECK( p.root_path().string() == "c:" );
@@ -1013,14 +1031,14 @@
     BOOST_CHECK( p.has_root_name() );
     BOOST_CHECK( !p.has_root_directory() );
     BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
     BOOST_CHECK( !p.is_complete() );
 
     p = path( "c:/foo" );
     CHECK_EQUAL( p.relative_path().string(), "foo" );
- CHECK_EQUAL( p.branch_path().string(), "c:/" );
- CHECK_EQUAL( p.leaf(), "foo" );
+ CHECK_EQUAL( p.parent_path().string(), "c:/" );
+ CHECK_EQUAL( p.filename(), "foo" );
     CHECK_EQUAL( p.root_name(), "c:" );
     CHECK_EQUAL( p.root_directory(), "/" );
     CHECK_EQUAL( p.root_path().string(), "c:/" );
@@ -1028,14 +1046,14 @@
     BOOST_CHECK( p.has_root_name() );
     BOOST_CHECK( p.has_root_directory() );
     BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
     BOOST_CHECK( p.is_complete() );
 
     p = path( "c://foo" );
     CHECK_EQUAL( p.relative_path().string(), "foo" );
- CHECK_EQUAL( p.branch_path().string(), "c:/" );
- CHECK_EQUAL( p.leaf(), "foo" );
+ CHECK_EQUAL( p.parent_path().string(), "c:/" );
+ CHECK_EQUAL( p.filename(), "foo" );
     CHECK_EQUAL( p.root_name(), "c:" );
     CHECK_EQUAL( p.root_directory(), "/" );
     CHECK_EQUAL( p.root_path().string(), "c:/" );
@@ -1043,14 +1061,14 @@
     BOOST_CHECK( p.has_root_name() );
     BOOST_CHECK( p.has_root_directory() );
     BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
     BOOST_CHECK( p.is_complete() );
 
     p = path( "c:\\foo\\bar" );
     CHECK_EQUAL( p.relative_path().string(), "foo/bar" );
- CHECK_EQUAL( p.branch_path().string(), "c:/foo" );
- CHECK_EQUAL( p.leaf(), "bar" );
+ CHECK_EQUAL( p.parent_path().string(), "c:/foo" );
+ CHECK_EQUAL( p.filename(), "bar" );
     CHECK_EQUAL( p.root_name(), "c:" );
     CHECK_EQUAL( p.root_directory(), "/" );
     CHECK_EQUAL( p.root_path().string(), "c:/" );
@@ -1058,14 +1076,14 @@
     BOOST_CHECK( p.has_root_name() );
     BOOST_CHECK( p.has_root_directory() );
     BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
     BOOST_CHECK( p.is_complete() );
 
     p = path( "prn:" );
     BOOST_CHECK( p.relative_path().string() == "" );
- BOOST_CHECK( p.branch_path().string() == "" );
- BOOST_CHECK( p.leaf() == "prn:" );
+ BOOST_CHECK( p.parent_path().string() == "" );
+ BOOST_CHECK( p.filename() == "prn:" );
     BOOST_CHECK( p.root_name() == "prn:" );
     BOOST_CHECK( p.root_directory() == "" );
     BOOST_CHECK( p.root_path().string() == "prn:" );
@@ -1073,14 +1091,14 @@
     BOOST_CHECK( p.has_root_name() );
     BOOST_CHECK( !p.has_root_directory() );
     BOOST_CHECK( !p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( !p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( !p.has_parent_path() );
     BOOST_CHECK( !p.is_complete() );
 
     p = path( "\\\\net\\\\\\foo" );
     CHECK_EQUAL( p.relative_path().string(), "foo" );
- CHECK_EQUAL( p.branch_path().string(), "//net/" );
- CHECK_EQUAL( p.leaf(), "foo" );
+ CHECK_EQUAL( p.parent_path().string(), "//net/" );
+ CHECK_EQUAL( p.filename(), "foo" );
     CHECK_EQUAL( p.root_name(), "//net" );
     CHECK_EQUAL( p.root_directory(), "/" );
     CHECK_EQUAL( p.root_path().string(), "//net/" );
@@ -1088,8 +1106,8 @@
     BOOST_CHECK( p.has_root_name() );
     BOOST_CHECK( p.has_root_directory() );
     BOOST_CHECK( p.has_relative_path() );
- BOOST_CHECK( p.has_leaf() );
- BOOST_CHECK( p.has_branch_path() );
+ BOOST_CHECK( p.has_filename() );
+ BOOST_CHECK( p.has_parent_path() );
     BOOST_CHECK( p.is_complete() );
 
     itr_ck = path( "c:" );
@@ -1283,6 +1301,40 @@
   BOOST_CHECK( acs2 >= a );
   BOOST_CHECK( a2 >= as );
   BOOST_CHECK( a2 >= acs );
+
+// extension() tests
+
+ BOOST_CHECK( path("a/b").extension() == "" );
+ BOOST_CHECK( path("a/b.txt").extension() == ".txt" );
+ BOOST_CHECK( path("a/b.").extension() == "." );
+ BOOST_CHECK( path("a.b.c").extension() == ".c" );
+ BOOST_CHECK( path("a.b.c.").extension() == "." );
+ BOOST_CHECK( path("").extension() == "" );
+ BOOST_CHECK( path("a/").extension() == "." );
+
+// stem() tests
+
+ BOOST_CHECK( path("b").stem() == "b" );
+ BOOST_CHECK( path("a/b.txt").stem() == "b" );
+ BOOST_CHECK( path("a/b.").stem() == "b" );
+ BOOST_CHECK( path("a.b.c").stem() == "a.b" );
+ BOOST_CHECK( path("a.b.c.").stem() == "a.b.c" );
+ BOOST_CHECK( path("").stem() == "" );
+
+// replace_extension() tests
+
+ BOOST_CHECK( path("a.txt").replace_extension("").string() == "a" );
+ BOOST_CHECK( path("a.txt").replace_extension(".").string() == "a." );
+ BOOST_CHECK( path("a.txt").replace_extension(".tex").string() == "a.tex" );
+ BOOST_CHECK( path("a.txt").replace_extension("tex").string() == "a.tex" );
+ BOOST_CHECK( path("a.").replace_extension(".tex").string() == "a.tex" );
+ BOOST_CHECK( path("a.").replace_extension("tex").string() == "a.tex" );
+ BOOST_CHECK( path("a").replace_extension(".txt").string() == "a.txt" );
+ BOOST_CHECK( path("a").replace_extension("txt").string() == "a.txt" );
+ BOOST_CHECK( path("a.b.txt" ).replace_extension(".tex").string() == "a.b.tex" );
+ BOOST_CHECK( path("a.b.txt" ).replace_extension("tex").string() == "a.b.tex" );
+ // see the rationale in html docs for explanation why this works
+ BOOST_CHECK( path("").replace_extension(".png").string() == ".png" );
 
   // inserter and extractor tests
 # if !defined( BOOST_MSVC ) || BOOST_MSVC > 1300 // bypass VC++ 7.0 and earlier

Modified: branches/proto/v4/libs/filesystem/test/wide_test.cpp
==============================================================================
--- branches/proto/v4/libs/filesystem/test/wide_test.cpp (original)
+++ branches/proto/v4/libs/filesystem/test/wide_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,6 +26,7 @@
 
 #include <iostream>
 #include <iomanip>
+#include <ios>
 #include <string>
 #include <cerrno>
 

Modified: branches/proto/v4/libs/functional/hash/test/container_fwd_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/container_fwd_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/container_fwd_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -77,7 +77,7 @@
 #include <complex>
 #include <utility>
 
-int main(int, char**)
+int main()
 {
     std::deque<int> x1;
     std::list<std::string> x2;

Modified: branches/proto/v4/libs/functional/hash/test/hash_built_in_array_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_built_in_array_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_built_in_array_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -37,11 +37,11 @@
     int array3[2] = {2, 3};
     HASH_NAMESPACE::hash<int[2]> hasher3;
 
- BOOST_CHECK(hasher1(array1)
+ BOOST_TEST(hasher1(array1)
             == HASH_NAMESPACE::hash_range(array1, array1 + length1));
- BOOST_CHECK(hasher2(array2)
+ BOOST_TEST(hasher2(array2)
             == HASH_NAMESPACE::hash_range(array2, array2 + length2));
- BOOST_CHECK(hasher3(array3)
+ BOOST_TEST(hasher3(array3)
             == HASH_NAMESPACE::hash_range(array3, array3 + length3));
 }
 
@@ -59,17 +59,17 @@
         HASH_NAMESPACE::hash_combine(seed1, seed2);
     }
 
- BOOST_CHECK(hasher(array) == seed1);
- BOOST_CHECK(hasher(array) == HASH_NAMESPACE::hash_range(array, array + 3));
+ BOOST_TEST(hasher(array) == seed1);
+ BOOST_TEST(hasher(array) == HASH_NAMESPACE::hash_range(array, array + 3));
 }
 
 #endif // TEST_EXTENSIONS
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     array_int_test();
     two_dimensional_array_test();
 #endif
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_complex_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_complex_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_complex_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -41,13 +41,13 @@
 {
     HASH_NAMESPACE::hash<std::complex<T> > complex_hasher;
 
- BOOST_CHECK(complex_hasher(v) == complex_hasher(v));
+ BOOST_TEST(complex_hasher(v) == complex_hasher(v));
 
     HASH_NAMESPACE::hash<T> real_hasher;
     T real = v.real();
     T imag = v.imag();
 
- BOOST_CHECK(real_hasher(real) == complex_hasher(std::complex<T>(real)));
+ BOOST_TEST(real_hasher(real) == complex_hasher(std::complex<T>(real)));
 
     if(imag != 0 && real_hasher(real) == complex_hasher(v)) {
         std::ostringstream os;
@@ -90,7 +90,7 @@
     }
 }
 
-int test_main(int, char**)
+int main()
 {
     complex_float_tests((float*) 0);
     complex_float_tests((double*) 0);
@@ -102,7 +102,7 @@
     complex_integral_tests((unsigned int*) 0);
     complex_integral_tests((unsigned long*) 0);
 
- return 0;
+ return boost::report_errors();
 }
 
 #endif

Modified: branches/proto/v4/libs/functional/hash/test/hash_custom_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_custom_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_custom_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -48,7 +48,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -59,13 +59,13 @@
 void custom_tests()
 {
     HASH_NAMESPACE::hash<test::custom> custom_hasher;
- BOOST_CHECK(custom_hasher(10) == 100u);
+ BOOST_TEST(custom_hasher(10) == 100u);
     test::custom x(55);
- BOOST_CHECK(custom_hasher(x) == 550u);
+ BOOST_TEST(custom_hasher(x) == 550u);
 
     {
         using namespace HASH_NAMESPACE;
- BOOST_CHECK(custom_hasher(x) == hash_value(x));
+ BOOST_TEST(custom_hasher(x) == hash_value(x));
     }
 
     std::vector<test::custom> custom_vector;
@@ -83,17 +83,17 @@
     HASH_NAMESPACE::hash_combine(seed2, 250u);
     HASH_NAMESPACE::hash_combine(seed2, 350u);
 
- BOOST_CHECK(seed ==
+ BOOST_TEST(seed ==
             HASH_NAMESPACE::hash_range(custom_vector.begin(), custom_vector.end()));
- BOOST_CHECK(seed == seed2);
+ BOOST_TEST(seed == seed2);
 }
 
 #endif // TEST_EXTENSIONS
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     custom_tests();
 #endif
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_deprecated_headers.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_deprecated_headers.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_deprecated_headers.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 
 #include <vector>
 
-int main(int, char**) {
+int main() {
     std::vector<int> v;
     boost::hash<std::vector<int> > x;
     x(v);

Modified: branches/proto/v4/libs/functional/hash/test/hash_deque_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_deque_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_deque_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -25,11 +25,11 @@
 
 #endif // TEST_EXTENSIONS
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     deque_tests::deque_hash_integer_tests();
 #endif
 
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_float_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_float_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_float_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,7 +5,7 @@
 
 #include "hash_float_test.hpp"
 
-int test_main(int, char**)
+int main()
 {
     std::cerr<<"Compiler: "<<BOOST_COMPILER<<"\n";
     std::cerr<<"Platform: "<<BOOST_PLATFORM<<"\n";
@@ -14,5 +14,5 @@
     float_tests("float", (float*) 0);
     float_tests("double", (double*) 0);
 
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_float_test.hpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_float_test.hpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_float_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,7 +11,7 @@
 # include <boost/functional/hash.hpp>
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #include <cmath>
 #include <boost/limits.hpp>
@@ -43,11 +43,11 @@
     T zero = 0;
     T minus_zero = (T) -1 * zero;
 
- BOOST_CHECK(zero == minus_zero);
- BOOST_CHECK(x1(zero) == x1(minus_zero));
+ BOOST_TEST(zero == minus_zero);
+ BOOST_TEST(x1(zero) == x1(minus_zero));
 
- BOOST_CHECK(x1(zero) == HASH_NAMESPACE::hash_value(zero));
- BOOST_CHECK(x1(minus_zero) == HASH_NAMESPACE::hash_value(minus_zero));
+ BOOST_TEST(x1(zero) == HASH_NAMESPACE::hash_value(zero));
+ BOOST_TEST(x1(minus_zero) == HASH_NAMESPACE::hash_value(minus_zero));
 
     using namespace std;
 
@@ -65,23 +65,23 @@
         T minus_infinity2 = (T) -1. / zero;
         T minus_infinity3 = (T) 1. / minus_zero;
 
- BOOST_CHECK(x1(infinity) == HASH_NAMESPACE::hash_value(infinity));
- BOOST_CHECK(x1(minus_infinity)
+ BOOST_TEST(x1(infinity) == HASH_NAMESPACE::hash_value(infinity));
+ BOOST_TEST(x1(minus_infinity)
                 == HASH_NAMESPACE::hash_value(minus_infinity));
 
         if(infinity == infinity2)
- BOOST_CHECK(x1(infinity) == x1(infinity2));
+ BOOST_TEST(x1(infinity) == x1(infinity2));
         if(infinity == infinity3)
- BOOST_CHECK(x1(infinity) == x1(infinity3));
+ BOOST_TEST(x1(infinity) == x1(infinity3));
         if(infinity == infinity4)
- BOOST_CHECK(x1(infinity) == x1(infinity4));
+ BOOST_TEST(x1(infinity) == x1(infinity4));
 
         if(minus_infinity == minus_infinity2)
- BOOST_CHECK(x1(minus_infinity) == x1(minus_infinity2));
+ BOOST_TEST(x1(minus_infinity) == x1(minus_infinity2));
         if(minus_infinity == minus_infinity3)
- BOOST_CHECK(x1(minus_infinity) == x1(minus_infinity3));
+ BOOST_TEST(x1(minus_infinity) == x1(minus_infinity3));
 
- BOOST_CHECK(infinity != minus_infinity);
+ BOOST_TEST(infinity != minus_infinity);
 
         if(x1(infinity) == x1(minus_infinity)) {
             std::cerr<<"x1(infinity) == x1(-infinity) == "<<x1(infinity)<<"\n";
@@ -113,22 +113,22 @@
     T quarter_max = max / 4;
     T three_quarter_max = max - quarter_max;
 
- BOOST_CHECK(x1(max) == HASH_NAMESPACE::hash_value(max));
- BOOST_CHECK(x1(half_max) == HASH_NAMESPACE::hash_value(half_max));
- BOOST_CHECK(x1(quarter_max) == HASH_NAMESPACE::hash_value(quarter_max));
- BOOST_CHECK(x1(three_quarter_max) == HASH_NAMESPACE::hash_value(three_quarter_max));
+ BOOST_TEST(x1(max) == HASH_NAMESPACE::hash_value(max));
+ BOOST_TEST(x1(half_max) == HASH_NAMESPACE::hash_value(half_max));
+ BOOST_TEST(x1(quarter_max) == HASH_NAMESPACE::hash_value(quarter_max));
+ BOOST_TEST(x1(three_quarter_max) == HASH_NAMESPACE::hash_value(three_quarter_max));
 
     // The '!=' tests could legitimately fail, but with my hash it indicates a bug.
- BOOST_CHECK(x1(max) == x1(max));
- BOOST_CHECK(x1(max) != x1(quarter_max));
- BOOST_CHECK(x1(max) != x1(half_max));
- BOOST_CHECK(x1(max) != x1(three_quarter_max));
- BOOST_CHECK(x1(quarter_max) == x1(quarter_max));
- BOOST_CHECK(x1(quarter_max) != x1(half_max));
- BOOST_CHECK(x1(quarter_max) != x1(three_quarter_max));
- BOOST_CHECK(x1(half_max) == x1(half_max));
- BOOST_CHECK(x1(half_max) != x1(three_quarter_max));
- BOOST_CHECK(x1(three_quarter_max) == x1(three_quarter_max));
+ BOOST_TEST(x1(max) == x1(max));
+ BOOST_TEST(x1(max) != x1(quarter_max));
+ BOOST_TEST(x1(max) != x1(half_max));
+ BOOST_TEST(x1(max) != x1(three_quarter_max));
+ BOOST_TEST(x1(quarter_max) == x1(quarter_max));
+ BOOST_TEST(x1(quarter_max) != x1(half_max));
+ BOOST_TEST(x1(quarter_max) != x1(three_quarter_max));
+ BOOST_TEST(x1(half_max) == x1(half_max));
+ BOOST_TEST(x1(half_max) != x1(three_quarter_max));
+ BOOST_TEST(x1(three_quarter_max) == x1(three_quarter_max));
 
 // Intel with gcc stdlib sometimes segfaults on calls to asin and acos.
 #if !((defined(__INTEL_COMPILER) || defined(__ICL) || \
@@ -137,35 +137,35 @@
     T v1 = asin((T) 1);
     T v2 = acos((T) 0);
     if(v1 == v2)
- BOOST_CHECK(x1(v1) == x1(v2));
- BOOST_CHECK(x1(v1) == HASH_NAMESPACE::hash_value(v1));
- BOOST_CHECK(x1(v2) == HASH_NAMESPACE::hash_value(v2));
+ BOOST_TEST(x1(v1) == x1(v2));
+ BOOST_TEST(x1(v1) == HASH_NAMESPACE::hash_value(v1));
+ BOOST_TEST(x1(v2) == HASH_NAMESPACE::hash_value(v2));
 #endif
 
- BOOST_CHECK(x1(boost::hash_detail::limits<T>::epsilon()) ==
+ BOOST_TEST(x1(boost::hash_detail::limits<T>::epsilon()) ==
             HASH_NAMESPACE::hash_value(boost::hash_detail::limits<T>::epsilon()));
 
- BOOST_CHECK(boost::hash_detail::limits<T>::epsilon() != (T) 0);
+ BOOST_TEST(boost::hash_detail::limits<T>::epsilon() != (T) 0);
     if(x1(boost::hash_detail::limits<T>::epsilon()) == x1((T) 0))
         std::cerr<<"x1(epsilon) == x1(0) == "<<x1((T) 0)<<"\n";
 
- BOOST_CHECK(-boost::hash_detail::limits<T>::epsilon() != (T) 0);
+ BOOST_TEST(-boost::hash_detail::limits<T>::epsilon() != (T) 0);
     if(x1(-boost::hash_detail::limits<T>::epsilon()) == x1((T) 0))
         std::cerr<<"x1(-epsilon) == x1(0) == "<<x1((T) 0)<<"\n";
 
- BOOST_CHECK((T) 1 + boost::hash_detail::limits<T>::epsilon() != (T) 1);
+ BOOST_TEST((T) 1 + boost::hash_detail::limits<T>::epsilon() != (T) 1);
     if(x1((T) 1 + boost::hash_detail::limits<T>::epsilon()) == x1((T) 1))
         std::cerr<<"x1(1 + epsilon) == x1(1) == "<<x1((T) 1)<<"\n";
 
- BOOST_CHECK((T) 1 - boost::hash_detail::limits<T>::epsilon() != (T) 1);
+ BOOST_TEST((T) 1 - boost::hash_detail::limits<T>::epsilon() != (T) 1);
     if(x1((T) 1 - boost::hash_detail::limits<T>::epsilon()) == x1((T) 1))
         std::cerr<<"x1(1 - epsilon) == x1(1) == "<<x1((T) 1)<<"\n";
 
- BOOST_CHECK((T) -1 + boost::hash_detail::limits<T>::epsilon() != (T) -1);
+ BOOST_TEST((T) -1 + boost::hash_detail::limits<T>::epsilon() != (T) -1);
     if(x1((T) -1 + boost::hash_detail::limits<T>::epsilon()) == x1((T) -1))
         std::cerr<<"x1(-1 + epsilon) == x1(-1) == "<<x1((T) -1)<<"\n";
 
- BOOST_CHECK((T) -1 - boost::hash_detail::limits<T>::epsilon() != (T) -1);
+ BOOST_TEST((T) -1 - boost::hash_detail::limits<T>::epsilon() != (T) -1);
     if(x1((T) -1 - boost::hash_detail::limits<T>::epsilon()) == x1((T) -1))
         std::cerr<<"x1(-1 - epsilon) == x1(-1) == "<<x1((T) -1)<<"\n";
 
@@ -197,7 +197,7 @@
         if(x1(boost::hash_detail::limits<T>::quiet_NaN()) == x1(1.0)) {
             std::cerr<<"x1(quiet_NaN) == x1(1.0) == "<<x1(1.0)<<"\n";
         }
- BOOST_CHECK(x1(boost::hash_detail::limits<T>::quiet_NaN()) ==
+ BOOST_TEST(x1(boost::hash_detail::limits<T>::quiet_NaN()) ==
             HASH_NAMESPACE::hash_value(boost::hash_detail::limits<T>::quiet_NaN()));
     }
 #endif

Modified: branches/proto/v4/libs/functional/hash/test/hash_friend_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_friend_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_friend_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -50,7 +50,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -61,13 +61,13 @@
 void custom_tests()
 {
     HASH_NAMESPACE::hash<test::custom<int> > custom_hasher;
- BOOST_CHECK(custom_hasher(10) == 100u);
+ BOOST_TEST(custom_hasher(10) == 100u);
     test::custom<int> x(55);
- BOOST_CHECK(custom_hasher(x) == 550u);
+ BOOST_TEST(custom_hasher(x) == 550u);
 
     {
         using namespace HASH_NAMESPACE;
- BOOST_CHECK(custom_hasher(x) == hash_value(x));
+ BOOST_TEST(custom_hasher(x) == hash_value(x));
     }
 
     std::vector<test::custom<int> > custom_vector;
@@ -85,17 +85,17 @@
     HASH_NAMESPACE::hash_combine(seed2, 250u);
     HASH_NAMESPACE::hash_combine(seed2, 350u);
 
- BOOST_CHECK(seed ==
+ BOOST_TEST(seed ==
             HASH_NAMESPACE::hash_range(custom_vector.begin(), custom_vector.end()));
- BOOST_CHECK(seed == seed2);
+ BOOST_TEST(seed == seed2);
 }
 
 #endif // TEST_EXTENSIONS
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     custom_tests();
 #endif
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_function_pointer_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_function_pointer_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_function_pointer_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,7 +11,7 @@
 # include <boost/functional/hash.hpp>
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #include <boost/limits.hpp>
 #include <boost/mpl/assert.hpp>
@@ -32,31 +32,31 @@
     HASH_NAMESPACE::hash<void(*)()> hasher_void;
     HASH_NAMESPACE::hash<int(*)(int)> hasher_int;
 
- BOOST_CHECK(&void_func1 != &void_func2);
- BOOST_CHECK(&int_func1 != &int_func2);
+ BOOST_TEST(&void_func1 != &void_func2);
+ BOOST_TEST(&int_func1 != &int_func2);
 
- BOOST_CHECK(hasher_void(0) == hasher_void(0));
- BOOST_CHECK(hasher_void(&void_func1) == hasher_void(&void_func1));
- BOOST_CHECK(hasher_void(&void_func1) != hasher_void(&void_func2));
- BOOST_CHECK(hasher_void(&void_func1) != hasher_void(0));
- BOOST_CHECK(hasher_int(0) == hasher_int(0));
- BOOST_CHECK(hasher_int(&int_func1) == hasher_int(&int_func1));
- BOOST_CHECK(hasher_int(&int_func1) != hasher_int(&int_func2));
- BOOST_CHECK(hasher_int(&int_func1) != hasher_int(0));
+ BOOST_TEST(hasher_void(0) == hasher_void(0));
+ BOOST_TEST(hasher_void(&void_func1) == hasher_void(&void_func1));
+ BOOST_TEST(hasher_void(&void_func1) != hasher_void(&void_func2));
+ BOOST_TEST(hasher_void(&void_func1) != hasher_void(0));
+ BOOST_TEST(hasher_int(0) == hasher_int(0));
+ BOOST_TEST(hasher_int(&int_func1) == hasher_int(&int_func1));
+ BOOST_TEST(hasher_int(&int_func1) != hasher_int(&int_func2));
+ BOOST_TEST(hasher_int(&int_func1) != hasher_int(0));
 #if defined(TEST_EXTENSIONS)
- BOOST_CHECK(hasher_void(&void_func1)
+ BOOST_TEST(hasher_void(&void_func1)
             == HASH_NAMESPACE::hash_value(&void_func1));
- BOOST_CHECK(hasher_int(&int_func1)
+ BOOST_TEST(hasher_int(&int_func1)
             == HASH_NAMESPACE::hash_value(&int_func1));
 
     // This isn't specified in Peter's proposal:
- BOOST_CHECK(hasher_void(0) == 0);
+ BOOST_TEST(hasher_void(0) == 0);
 #endif
 }
 
-int test_main(int, char**)
+int main()
 {
     function_pointer_tests();
 
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_fwd_test_1.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_fwd_test_1.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_fwd_test_1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,7 +7,7 @@
 
 #include "./hash_fwd_test.hpp"
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #if defined(TEST_EXTENSIONS) && !defined(TEST_STD_INCLUDES)
 
@@ -24,8 +24,8 @@
     HASH_NAMESPACE::hash<test::test_type1<int> > hasher_test_int;
     HASH_NAMESPACE::hash<test::test_type1<std::string> > hasher_test_string;
 
- BOOST_CHECK(hasher_int(5) == hasher_test_int(x));
- BOOST_CHECK(hasher_string("Test") == hasher_test_string(y));
+ BOOST_TEST(hasher_int(5) == hasher_test_int(x));
+ BOOST_TEST(hasher_string("Test") == hasher_test_string(y));
 }
 
 void fwd_test2()
@@ -44,8 +44,8 @@
     HASH_NAMESPACE::hash<test::test_type2<int> > hasher_test_int;
     HASH_NAMESPACE::hash<test::test_type2<std::string> > hasher_test_string;
 
- BOOST_CHECK(seed1 == hasher_test_int(x));
- BOOST_CHECK(seed2 == hasher_test_string(y));
+ BOOST_TEST(seed1 == hasher_test_int(x));
+ BOOST_TEST(seed2 == hasher_test_string(y));
 }
 
 void fwd_test3()
@@ -75,19 +75,19 @@
     HASH_NAMESPACE::hash<test::test_type3<int> > hasher_test_int;
     HASH_NAMESPACE::hash<test::test_type3<std::string> > hasher_test_string;
 
- BOOST_CHECK(seed1 == hasher_test_int(x));
- BOOST_CHECK(seed2 == hasher_test_string(y));
+ BOOST_TEST(seed1 == hasher_test_int(x));
+ BOOST_TEST(seed2 == hasher_test_string(y));
 }
 
 #endif
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     fwd_test1();
     fwd_test2();
     fwd_test3();
 #endif
- return 0;
+ return boost::report_errors();
 }
 

Modified: branches/proto/v4/libs/functional/hash/test/hash_fwd_test_2.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_fwd_test_2.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_fwd_test_2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,7 @@
 
 #include "./hash_fwd_test.hpp"
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 template <class T> void unused(T const&) {}
 
@@ -31,9 +31,9 @@
 }
 
 
-int test_main(int, char**)
+int main()
 {
     fwd_test();
- return 0;
+ return boost::report_errors();
 }
 

Modified: branches/proto/v4/libs/functional/hash/test/hash_global_namespace_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_global_namespace_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_global_namespace_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -48,7 +48,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -59,13 +59,13 @@
 void custom_tests()
 {
     HASH_NAMESPACE::hash<custom> custom_hasher;
- BOOST_CHECK(custom_hasher(10) == 100u);
+ BOOST_TEST(custom_hasher(10) == 100u);
     custom x(55);
- BOOST_CHECK(custom_hasher(x) == 550u);
+ BOOST_TEST(custom_hasher(x) == 550u);
 
     {
         using namespace HASH_NAMESPACE;
- BOOST_CHECK(custom_hasher(x) == hash_value(x));
+ BOOST_TEST(custom_hasher(x) == hash_value(x));
     }
 
     std::vector<custom> custom_vector;
@@ -83,19 +83,19 @@
     HASH_NAMESPACE::hash_combine(seed2, 250u);
     HASH_NAMESPACE::hash_combine(seed2, 350u);
 
- BOOST_CHECK(seed ==
+ BOOST_TEST(seed ==
             HASH_NAMESPACE::hash_range(custom_vector.begin(), custom_vector.end()));
- BOOST_CHECK(seed == seed2);
+ BOOST_TEST(seed == seed2);
 }
 
 #endif // TEST_EXTENSIONS
 
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     custom_tests();
 #endif
- return 0;
+ return boost::report_errors();
 }
 

Modified: branches/proto/v4/libs/functional/hash/test/hash_list_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_list_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_list_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -25,11 +25,11 @@
 
 #endif // TEST_EXTENSIONS
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     list_tests::list_hash_integer_tests();
 #endif
 
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_long_double_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_long_double_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_long_double_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,7 +5,7 @@
 
 #include "hash_float_test.hpp"
 
-int test_main(int, char**)
+int main()
 {
     std::cerr<<"Compiler: "<<BOOST_COMPILER<<"\n";
     std::cerr<<"Platform: "<<BOOST_PLATFORM<<"\n";
@@ -13,5 +13,5 @@
 
     float_tests("long double", (long double*) 0);
 
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_map_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_map_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_map_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #include <map>
 
@@ -29,12 +29,12 @@
 
 #endif // TEST_EXTENSTIONS
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     map_tests::map_hash_integer_tests();
     multimap_tests::multimap_hash_integer_tests();
 #endif
 
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_map_test.hpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_map_test.hpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_map_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -38,17 +38,17 @@
         HASH_NAMESPACE::hash<T> hasher;
 
         for(int i2 = 0; i2 < number_of_containers; ++i2) {
- BOOST_CHECK(hasher(containers[i2]) == hasher(containers[i2]));
+ BOOST_TEST(hasher(containers[i2]) == hasher(containers[i2]));
 
- BOOST_CHECK(hasher(containers[i2]) ==
+ BOOST_TEST(hasher(containers[i2]) ==
                     HASH_NAMESPACE::hash_value(containers[i2]));
 
- BOOST_CHECK(hasher(containers[i2])
+ BOOST_TEST(hasher(containers[i2])
                     == HASH_NAMESPACE::hash_range(
                         containers[i2].begin(), containers[i2].end()));
 
             for(int j2 = i2 + 1; j2 < number_of_containers; ++j2) {
- BOOST_CHECK(
+ BOOST_TEST(
                         (containers[i2] == containers[j2]) ==
                         (hasher(containers[i2]) == hasher(containers[j2]))
                         );

Modified: branches/proto/v4/libs/functional/hash/test/hash_no_ext_fail_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_no_ext_fail_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_no_ext_fail_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,7 +12,7 @@
 #include <boost/functional/hash.hpp>
 #include <boost/functional/hash.hpp>
 
-int test_main(int, char**)
+int main()
 {
     HASH_NAMESPACE::hash< int[10] > hasher;
     return 0;

Modified: branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_1.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_1.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,11 +7,11 @@
 #include <boost/functional/hash.hpp>
 #define BOOST_HASH_NO_EXTENSIONS
 #include <boost/functional/hash.hpp>
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 #include <deque>
 #include <cassert>
 
-int test_main(int, char**)
+int main()
 {
     std::deque<int> x;
 
@@ -19,7 +19,7 @@
     x.push_back(2);
 
     HASH_NAMESPACE::hash<std::deque<int> > hasher;
- BOOST_CHECK(hasher(x) == HASH_NAMESPACE::hash_value(x));
+ BOOST_TEST(hasher(x) == HASH_NAMESPACE::hash_value(x));
 
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_2.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_2.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_no_ext_macro_2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,10 +8,10 @@
 #include <boost/functional/hash.hpp>
 #undef BOOST_HASH_NO_EXTENSIONS
 #include <boost/functional/hash.hpp>
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 #include <map>
 
-int test_main(int, char**)
+int main()
 {
     std::map<int, int> x;
 
@@ -19,7 +19,7 @@
     x.insert(std::map<int, int>::value_type(14, -75));
 
     HASH_NAMESPACE::hash<std::map<int, int> > hasher;
- BOOST_CHECK(hasher(x) == HASH_NAMESPACE::hash_value(x));
+ BOOST_TEST(hasher(x) == HASH_NAMESPACE::hash_value(x));
     
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_number_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_number_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_number_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,7 +12,7 @@
 #endif
 
 #include <iostream>
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #include <boost/preprocessor/cat.hpp>
 #include <boost/limits.hpp>
@@ -39,27 +39,27 @@
     HASH_NAMESPACE::hash<T> x2;
 
     T v1 = (T) -5;
- BOOST_CHECK(x1(v1) == x2(v1));
- BOOST_CHECK(x1(T(-5)) == x2(T(-5)));
- BOOST_CHECK(x1(T(0)) == x2(T(0)));
- BOOST_CHECK(x1(T(10)) == x2(T(10)));
- BOOST_CHECK(x1(T(25)) == x2(T(25)));
- BOOST_CHECK(x1(T(5) - T(5)) == x2(T(0)));
- BOOST_CHECK(x1(T(6) + T(4)) == x2(T(10)));
+ BOOST_TEST(x1(v1) == x2(v1));
+ BOOST_TEST(x1(T(-5)) == x2(T(-5)));
+ BOOST_TEST(x1(T(0)) == x2(T(0)));
+ BOOST_TEST(x1(T(10)) == x2(T(10)));
+ BOOST_TEST(x1(T(25)) == x2(T(25)));
+ BOOST_TEST(x1(T(5) - T(5)) == x2(T(0)));
+ BOOST_TEST(x1(T(6) + T(4)) == x2(T(10)));
 
 #if defined(TEST_EXTENSIONS)
- BOOST_CHECK(x1(T(-5)) == HASH_NAMESPACE::hash_value(T(-5)));
- BOOST_CHECK(x1(T(0)) == HASH_NAMESPACE::hash_value(T(0)));
- BOOST_CHECK(x1(T(10)) == HASH_NAMESPACE::hash_value(T(10)));
- BOOST_CHECK(x1(T(25)) == HASH_NAMESPACE::hash_value(T(25)));
+ BOOST_TEST(x1(T(-5)) == HASH_NAMESPACE::hash_value(T(-5)));
+ BOOST_TEST(x1(T(0)) == HASH_NAMESPACE::hash_value(T(0)));
+ BOOST_TEST(x1(T(10)) == HASH_NAMESPACE::hash_value(T(10)));
+ BOOST_TEST(x1(T(25)) == HASH_NAMESPACE::hash_value(T(25)));
 
     if (limits::is_integer)
     {
         if(limits::is_signed || limits::digits <= boost::hash_detail::limits<std::size_t>::digits)
- BOOST_CHECK(HASH_NAMESPACE::hash_value(T(-5)) == (std::size_t)T(-5));
- BOOST_CHECK(HASH_NAMESPACE::hash_value(T(0)) == (std::size_t)T(0u));
- BOOST_CHECK(HASH_NAMESPACE::hash_value(T(10)) == (std::size_t)T(10u));
- BOOST_CHECK(HASH_NAMESPACE::hash_value(T(25)) == (std::size_t)T(25u));
+ BOOST_TEST(HASH_NAMESPACE::hash_value(T(-5)) == (std::size_t)T(-5));
+ BOOST_TEST(HASH_NAMESPACE::hash_value(T(0)) == (std::size_t)T(0u));
+ BOOST_TEST(HASH_NAMESPACE::hash_value(T(10)) == (std::size_t)T(10u));
+ BOOST_TEST(HASH_NAMESPACE::hash_value(T(25)) == (std::size_t)T(25u));
     }
 #endif
 }
@@ -77,18 +77,18 @@
         T min_value = (limits::min)();
         T max_value = (limits::max)();
 
- BOOST_CHECK(x1(min_value) == x2((limits::min)()));
- BOOST_CHECK(x1(max_value) == x2((limits::max)()));
+ BOOST_TEST(x1(min_value) == x2((limits::min)()));
+ BOOST_TEST(x1(max_value) == x2((limits::max)()));
 
 #if defined(TEST_EXTENSIONS)
- BOOST_CHECK(x1(min_value) == HASH_NAMESPACE::hash_value(min_value));
- BOOST_CHECK(x1(max_value) == HASH_NAMESPACE::hash_value(max_value));
+ BOOST_TEST(x1(min_value) == HASH_NAMESPACE::hash_value(min_value));
+ BOOST_TEST(x1(max_value) == HASH_NAMESPACE::hash_value(max_value));
 
         if (limits::is_integer)
         {
- BOOST_CHECK(HASH_NAMESPACE::hash_value(min_value)
+ BOOST_TEST(HASH_NAMESPACE::hash_value(min_value)
                     == std::size_t(min_value));
- BOOST_CHECK(HASH_NAMESPACE::hash_value(max_value)
+ BOOST_TEST(HASH_NAMESPACE::hash_value(max_value)
                     == std::size_t(max_value));
         }
 #endif
@@ -106,11 +106,11 @@
     // A hash function can legally fail these tests, but it'll not be a good
     // sign.
     if(T(1) != T(-1))
- BOOST_CHECK(x1(T(1)) != x2(T(-1)));
+ BOOST_TEST(x1(T(1)) != x2(T(-1)));
     if(T(1) != T(2))
- BOOST_CHECK(x1(T(1)) != x2(T(2)));
+ BOOST_TEST(x1(T(1)) != x2(T(2)));
     if((limits::max)() != (limits::max)() - 1)
- BOOST_CHECK(x1((limits::max)()) != x2((limits::max)() - 1));
+ BOOST_TEST(x1((limits::max)()) != x2((limits::max)() - 1));
 }
 
 void bool_test()
@@ -118,10 +118,10 @@
     HASH_NAMESPACE::hash<bool> x1;
     HASH_NAMESPACE::hash<bool> x2;
     
- BOOST_CHECK(x1(true) == x2(true));
- BOOST_CHECK(x1(false) == x2(false));
- BOOST_CHECK(x1(true) != x2(false));
- BOOST_CHECK(x1(false) != x2(true));
+ BOOST_TEST(x1(true) == x2(true));
+ BOOST_TEST(x1(false) == x2(false));
+ BOOST_TEST(x1(true) != x2(false));
+ BOOST_TEST(x1(false) != x2(true));
 }
 
 #define NUMERIC_TEST(type, name) \
@@ -134,7 +134,7 @@
     numeric_test((type*) 0); \
     poor_quality_tests((type*) 0);
 
-int test_main(int, char**)
+int main()
 {
     NUMERIC_TEST(char, char)
     NUMERIC_TEST(signed char, schar)
@@ -159,7 +159,7 @@
 
     bool_test();
 
- return 0;
+ return boost::report_errors();
 }
 
 #if defined(BOOST_MSVC)

Modified: branches/proto/v4/libs/functional/hash/test/hash_pointer_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_pointer_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_pointer_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,7 +11,7 @@
 # include <boost/functional/hash.hpp>
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #include <boost/limits.hpp>
 #include <boost/mpl/assert.hpp>
@@ -30,20 +30,20 @@
     int int1;
     int int2;
 
- BOOST_CHECK(x1(0) == x2(0));
- BOOST_CHECK(x1(&int1) == x2(&int1));
- BOOST_CHECK(x1(&int2) == x2(&int2));
+ BOOST_TEST(x1(0) == x2(0));
+ BOOST_TEST(x1(&int1) == x2(&int1));
+ BOOST_TEST(x1(&int2) == x2(&int2));
 #if defined(TEST_EXTENSIONS)
- BOOST_CHECK(x1(&int1) == HASH_NAMESPACE::hash_value(&int1));
- BOOST_CHECK(x1(&int2) == HASH_NAMESPACE::hash_value(&int2));
+ BOOST_TEST(x1(&int1) == HASH_NAMESPACE::hash_value(&int1));
+ BOOST_TEST(x1(&int2) == HASH_NAMESPACE::hash_value(&int2));
 
     // This isn't specified in Peter's proposal:
- BOOST_CHECK(x1(0) == 0);
+ BOOST_TEST(x1(0) == 0);
 #endif
 }
 
-int test_main(int, char**)
+int main()
 {
     pointer_tests();
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_range_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_range_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_range_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -41,45 +41,45 @@
     std::vector<int> x;
 
     std::size_t x_seed = 0;
- BOOST_CHECK(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
+ BOOST_TEST(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
 
- BOOST_CHECK(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
+ BOOST_TEST(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
         == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_CHECK(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
+ BOOST_TEST(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
         != HASH_NAMESPACE::hash_range(values1.begin(), values1.end()));
 
     x.push_back(10);
     HASH_NAMESPACE::hash_combine(x_seed, 10);
- BOOST_CHECK(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
+ BOOST_TEST(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
 
- BOOST_CHECK(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
+ BOOST_TEST(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
         != HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_CHECK(HASH_NAMESPACE::hash_range(values2.begin(), values2.end())
+ BOOST_TEST(HASH_NAMESPACE::hash_range(values2.begin(), values2.end())
         == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
 
     x.push_back(20);
     HASH_NAMESPACE::hash_combine(x_seed, 20);
- BOOST_CHECK(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
+ BOOST_TEST(x_seed == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
 
- BOOST_CHECK(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
+ BOOST_TEST(HASH_NAMESPACE::hash_range(empty.begin(), empty.end())
         != HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_CHECK(HASH_NAMESPACE::hash_range(values2.begin(), values2.end())
+ BOOST_TEST(HASH_NAMESPACE::hash_range(values2.begin(), values2.end())
         != HASH_NAMESPACE::hash_range(x.begin(), x.end()));
- BOOST_CHECK(HASH_NAMESPACE::hash_range(values3.begin(), values3.end())
+ BOOST_TEST(HASH_NAMESPACE::hash_range(values3.begin(), values3.end())
         == HASH_NAMESPACE::hash_range(x.begin(), x.end()));
 
     std::size_t seed = HASH_NAMESPACE::hash_range(values3.begin(), values3.end());
     HASH_NAMESPACE::hash_range(seed, values4.begin(), values4.end());
     HASH_NAMESPACE::hash_range(seed, x.begin(), x.end());
- BOOST_CHECK(seed == HASH_NAMESPACE::hash_range(values5.begin(), values5.end()));
+ BOOST_TEST(seed == HASH_NAMESPACE::hash_range(values5.begin(), values5.end()));
 }
 
 #endif
 
-int test_main(int, char**)
+int main()
 {
     hash_range_tests();
 
- return 0;
+ return boost::report_errors();
 }
 

Modified: branches/proto/v4/libs/functional/hash/test/hash_sequence_test.hpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_sequence_test.hpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_sequence_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -41,17 +41,17 @@
         HASH_NAMESPACE::hash<T> hasher;
 
         for(int i2 = 0; i2 < number_of_containers; ++i2) {
- BOOST_CHECK(hasher(containers[i2]) == hasher(containers[i2]));
+ BOOST_TEST(hasher(containers[i2]) == hasher(containers[i2]));
 
- BOOST_CHECK(hasher(containers[i2]) ==
+ BOOST_TEST(hasher(containers[i2]) ==
                     HASH_NAMESPACE::hash_value(containers[i2]));
 
- BOOST_CHECK(hasher(containers[i2])
+ BOOST_TEST(hasher(containers[i2])
                     == HASH_NAMESPACE::hash_range(
                         containers[i2].begin(), containers[i2].end()));
 
             for(int j2 = i2 + 1; j2 < number_of_containers; ++j2) {
- BOOST_CHECK(
+ BOOST_TEST(
                         (containers[i2] == containers[j2]) ==
                         (hasher(containers[i2]) == hasher(containers[j2]))
                         );

Modified: branches/proto/v4/libs/functional/hash/test/hash_set_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_set_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_set_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -29,12 +29,12 @@
 
 #endif
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     set_tests::set_hash_integer_tests();
     multiset_tests::multiset_hash_integer_tests();
 #endif
 
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_set_test.hpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_set_test.hpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_set_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -44,17 +44,17 @@
         HASH_NAMESPACE::hash<T> hasher;
 
         for(int i2 = 0; i2 < number_of_containers; ++i2) {
- BOOST_CHECK(hasher(containers[i2]) == hasher(containers[i2]));
+ BOOST_TEST(hasher(containers[i2]) == hasher(containers[i2]));
 
- BOOST_CHECK(hasher(containers[i2]) ==
+ BOOST_TEST(hasher(containers[i2]) ==
                     HASH_NAMESPACE::hash_value(containers[i2]));
 
- BOOST_CHECK(hasher(containers[i2])
+ BOOST_TEST(hasher(containers[i2])
                     == HASH_NAMESPACE::hash_range(
                         containers[i2].begin(), containers[i2].end()));
 
             for(int j2 = i2 + 1; j2 < number_of_containers; ++j2) {
- BOOST_CHECK(
+ BOOST_TEST(
                         (containers[i2] == containers[j2]) ==
                         (hasher(containers[i2]) == hasher(containers[j2]))
                         );

Modified: branches/proto/v4/libs/functional/hash/test/hash_string_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_string_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_string_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,7 +11,7 @@
 # include <boost/functional/hash.hpp>
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #include <boost/limits.hpp>
 #include <boost/mpl/assert.hpp>
@@ -27,18 +27,18 @@
     HASH_NAMESPACE::hash<std::string> x1;
     HASH_NAMESPACE::hash<std::string> x2;
 
- BOOST_CHECK(x1("Hello") == x2(std::string("Hel") + "lo"));
- BOOST_CHECK(x1("") == x2(std::string()));
+ BOOST_TEST(x1("Hello") == x2(std::string("Hel") + "lo"));
+ BOOST_TEST(x1("") == x2(std::string()));
 
 #if defined(TEST_EXTENSIONS)
     std::string value1;
     std::string value2("Hello");
 
- BOOST_CHECK(x1(value1) == HASH_NAMESPACE::hash_value(value1));
- BOOST_CHECK(x1(value2) == HASH_NAMESPACE::hash_value(value2));
- BOOST_CHECK(HASH_NAMESPACE::hash_value(value1) ==
+ BOOST_TEST(x1(value1) == HASH_NAMESPACE::hash_value(value1));
+ BOOST_TEST(x1(value2) == HASH_NAMESPACE::hash_value(value2));
+ BOOST_TEST(HASH_NAMESPACE::hash_value(value1) ==
             HASH_NAMESPACE::hash_range(value1.begin(), value1.end()));
- BOOST_CHECK(HASH_NAMESPACE::hash_value(value2) ==
+ BOOST_TEST(HASH_NAMESPACE::hash_value(value2) ==
             HASH_NAMESPACE::hash_range(value2.begin(), value2.end()));
 #endif
 }
@@ -51,28 +51,28 @@
     HASH_NAMESPACE::hash<std::wstring> x1;
     HASH_NAMESPACE::hash<std::wstring> x2;
 
- BOOST_CHECK(x1(L"Hello") == x2(std::wstring(L"Hel") + L"lo"));
- BOOST_CHECK(x1(L"") == x2(std::wstring()));
+ BOOST_TEST(x1(L"Hello") == x2(std::wstring(L"Hel") + L"lo"));
+ BOOST_TEST(x1(L"") == x2(std::wstring()));
 
 #if defined(TEST_EXTENSIONS)
     std::wstring value1;
     std::wstring value2(L"Hello");
 
- BOOST_CHECK(x1(value1) == HASH_NAMESPACE::hash_value(value1));
- BOOST_CHECK(x1(value2) == HASH_NAMESPACE::hash_value(value2));
- BOOST_CHECK(HASH_NAMESPACE::hash_value(value1) ==
+ BOOST_TEST(x1(value1) == HASH_NAMESPACE::hash_value(value1));
+ BOOST_TEST(x1(value2) == HASH_NAMESPACE::hash_value(value2));
+ BOOST_TEST(HASH_NAMESPACE::hash_value(value1) ==
             HASH_NAMESPACE::hash_range(value1.begin(), value1.end()));
- BOOST_CHECK(HASH_NAMESPACE::hash_value(value2) ==
+ BOOST_TEST(HASH_NAMESPACE::hash_value(value2) ==
             HASH_NAMESPACE::hash_range(value2.begin(), value2.end()));
 #endif
 }
 #endif
 
-int test_main(int, char**)
+int main()
 {
     string_tests();
 #if !defined(BOOST_NO_STD_WSTRING)
     wstring_tests();
 #endif
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/hash_value_array_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_value_array_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_value_array_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,7 +16,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -37,9 +37,9 @@
     int array3[2] = {2, 3};
     HASH_NAMESPACE::hash<int[2]> hasher3;
 
- BOOST_CHECK(hasher1(array1) == HASH_NAMESPACE::hash_value(array1));
- BOOST_CHECK(hasher2(array2) == HASH_NAMESPACE::hash_value(array2));
- BOOST_CHECK(hasher3(array3) == HASH_NAMESPACE::hash_value(array3));
+ BOOST_TEST(hasher1(array1) == HASH_NAMESPACE::hash_value(array1));
+ BOOST_TEST(hasher2(array2) == HASH_NAMESPACE::hash_value(array2));
+ BOOST_TEST(hasher3(array3) == HASH_NAMESPACE::hash_value(array3));
 }
 
 void two_dimensional_array_test()
@@ -47,18 +47,18 @@
     int array[3][2] = {{-5, 6}, {7, -3}, {26, 1}};
     HASH_NAMESPACE::hash<int[3][2]> hasher;
 
- BOOST_CHECK(hasher(array) == HASH_NAMESPACE::hash_value(array));
+ BOOST_TEST(hasher(array) == HASH_NAMESPACE::hash_value(array));
 }
 
 #endif
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     array_int_test();
     two_dimensional_array_test();
 #endif
 
- return 0;
+ return boost::report_errors();
 }
 

Modified: branches/proto/v4/libs/functional/hash/test/hash_vector_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/hash_vector_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/hash_vector_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,7 @@
 # endif
 #endif
 
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 #ifdef TEST_EXTENSIONS
 
@@ -25,11 +25,11 @@
 
 #endif // TEST_EXTENSIONS
 
-int test_main(int, char**)
+int main()
 {
 #ifdef TEST_EXTENSIONS
     vector_tests::vector_hash_integer_tests();
 #endif
 
- return 0;
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/link_ext_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/link_ext_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/link_ext_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,13 +5,13 @@
 
 #define HASH_NAMESPACE boost
 #include <boost/functional/hash.hpp>
-#include <boost/test/minimal.hpp>
+#include <boost/detail/lightweight_test.hpp>
 #include <vector>
 
 int f(std::size_t hash1, int* x1) {
     // Check that HASH_NAMESPACE::hash<int*> works in both files.
     HASH_NAMESPACE::hash<int*> ptr_hasher;
- BOOST_CHECK(hash1 == ptr_hasher(x1));
+ BOOST_TEST(hash1 == ptr_hasher(x1));
 
     // Check that std::vector<std::size_t> is avaiable in this file.
     std::vector<std::size_t> x;

Modified: branches/proto/v4/libs/functional/hash/test/link_no_ext_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/link_no_ext_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/link_no_ext_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,14 +6,13 @@
 #define HASH_NAMESPACE boost
 #define BOOST_HASH_NO_EXTENSIONS
 #include <boost/functional/hash.hpp>
-#include <boost/assert.hpp>
+#include <boost/detail/lightweight_test.hpp>
 
 extern int f(std::size_t, int*);
 
-int test_main(int, char**) {
+int main() {
     HASH_NAMESPACE::hash<int*> ptr_hasher;
     int x = 55;
-
- BOOST_ASSERT(!f(ptr_hasher(&x), &x));
- return 0;
+ BOOST_TEST(!f(ptr_hasher(&x), &x));
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/functional/hash/test/link_test.cpp
==============================================================================
--- branches/proto/v4/libs/functional/hash/test/link_test.cpp (original)
+++ branches/proto/v4/libs/functional/hash/test/link_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,4 +6,4 @@
 #include <boost/functional/hash.hpp>
 
 extern int f();
-int main(int, char**) { return f(); }
+int main() { return f(); }

Modified: branches/proto/v4/libs/fusion/doc/adapted.qbk
==============================================================================
--- branches/proto/v4/libs/fusion/doc/adapted.qbk (original)
+++ branches/proto/v4/libs/fusion/doc/adapted.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,10 +11,7 @@
 `std::pair`, __mpl__ sequences, and `boost::array`. These adapters are
 written using Fusion's non-intrusive __extension__ mechanism. If you wish
 to use these sequences with fusion, simply include the necessary files and
-they will be regarded as first-class, fully conforming fusion sequences
-[footnote Fusion sequences may also be adapted as fully conforming __mpl__
-sequences (see __intrinsics__). That way, we can have 2-way adaptation to
-and from __mpl__ and Fusion].
+they will be regarded as first-class, fully conforming fusion sequences.
 
 Fusion also provides various schemes to make it easy for the user to adapt
 various data structures, non-intrusively, as full fledged Fusion sequences.
@@ -24,6 +21,19 @@
     #include <boost/fusion/adapted.hpp>
     #include <boost/fusion/include/adapted.hpp>
 
+Fusion sequences may also be adapted as fully conforming __mpl__ sequences (see
+__intrinsics__). That way, we can have 2-way adaptation to and from __mpl__ and
+Fusion. To make Fusion sequences fully conforming __mpl__ sequences, include:
+
+ #include <boost/fusion/mpl.hpp>
+
+If you want bi-directional adaptation to and from __mpl__ and Fusion, simply
+include:
+
+ #include <boost/fusion/include/mpl.hpp>
+
+The header includes all the necessary headers.
+
 [section std::pair]
 
 This module provides adapters for `std::pair`. Including the module header

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/acknowledgements.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/acknowledgements.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/acknowledgements.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/adapted.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/adapted.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/adapted.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -39,31 +39,40 @@
       and <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span></tt>. These adapters are written using Fusion's
       non-intrusive Extension mechanism.
       If you wish to use these sequences with fusion, simply include the necessary
- files and they will be regarded as first-class, fully conforming fusion sequences
- <sup>[<a name="id573780" href="#ftn.id573780">13</a>]</sup>
- .
+ files and they will be regarded as first-class, fully conforming fusion sequences.
     </p>
 <p>
       Fusion also provides various schemes to make it easy for the user to adapt
       various data structures, non-intrusively, as full fledged Fusion sequences.
     </p>
 <a name="fusion.adapted.header"></a><h3>
-<a name="id573828"></a>
+<a name="id573642"></a>
       <a href="adapted.html#fusion.adapted.header">Header</a>
     </h3>
 <pre class="programlisting">
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
-<div class="footnotes">
-<br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id573780" href="#id573780">13</a>] </sup>
- Fusion sequences may also be adapted as fully conforming MPL
- sequences (see Intrinsics).
- That way, we can have 2-way adaptation to and from MPL
- and Fusion
- </p></div>
-</div>
+<p>
+ Fusion sequences may also be adapted as fully conforming MPL
+ sequences (see Intrinsics).
+ That way, we can have 2-way adaptation to and from MPL
+ and Fusion. To make Fusion sequences fully conforming MPL
+ sequences, include:
+ </p>
+<pre class="programlisting">
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">mpl</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ If you want bi-directional adaptation to and from MPL
+ and Fusion, simply include:
+ </p>
+<pre class="programlisting">
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">mpl</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ The header includes all the necessary headers.
+ </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/adapted/adapt_assoc.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/adapted/adapt_assoc.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/adapted/adapt_assoc.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.adapted.adapt_assoc"></a> BOOST_FUSION_ADAPT_ASSOC_STRUCT</h3></div></div></div>
 <a name="fusion.adapted.adapt_assoc.description"></a><h4>
-<a name="id577865"></a>
+<a name="id577863"></a>
         <a href="adapt_assoc.html#fusion.adapted.adapt_assoc.description">Description</a>
       </h4>
 <p>
@@ -38,7 +38,7 @@
         Sequence</a>.
       </p>
 <a name="fusion.adapted.adapt_assoc.synopsis"></a><h4>
-<a name="id577915"></a>
+<a name="id577912"></a>
         <a href="adapt_assoc.html#fusion.adapted.adapt_assoc.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
     <span class="special">)</span>
 </pre>
 <a name="fusion.adapted.adapt_assoc.semantics"></a><h4>
-<a name="id578055"></a>
+<a name="id578053"></a>
         <a href="adapt_assoc.html#fusion.adapted.adapt_assoc.semantics">Semantics</a>
       </h4>
 <p>
@@ -70,7 +70,7 @@
         should be the fully namespace qualified name of the struct to be converted.
       </p>
 <a name="fusion.adapted.adapt_assoc.header"></a><h4>
-<a name="id578180"></a>
+<a name="id578178"></a>
         <a href="adapt_assoc.html#fusion.adapted.adapt_assoc.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -78,7 +78,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">adapt_assoc_struct</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.adapted.adapt_assoc.example"></a><h4>
-<a name="id578348"></a>
+<a name="id578346"></a>
         <a href="adapt_assoc.html#fusion.adapted.adapt_assoc.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/adapted/adapt_struct.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/adapted/adapt_struct.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/adapted/adapt_struct.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.adapted.adapt_struct"></a> BOOST_FUSION_ADAPT_STRUCT</h3></div></div></div>
 <a name="fusion.adapted.adapt_struct.description"></a><h4>
-<a name="id577192"></a>
+<a name="id577189"></a>
         <a href="adapt_struct.html#fusion.adapted.adapt_struct.description">Description</a>
       </h4>
 <p>
@@ -36,7 +36,7 @@
         Access Sequence</a>.
       </p>
 <a name="fusion.adapted.adapt_struct.synopsis"></a><h4>
-<a name="id577232"></a>
+<a name="id577230"></a>
         <a href="adapt_struct.html#fusion.adapted.adapt_struct.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
     <span class="special">)</span>
 </pre>
 <a name="fusion.adapted.adapt_struct.semantics"></a><h4>
-<a name="id577349"></a>
+<a name="id577347"></a>
         <a href="adapt_struct.html#fusion.adapted.adapt_struct.semantics">Semantics</a>
       </h4>
 <p>
@@ -65,7 +65,7 @@
         should be the fully namespace qualified name of the struct to be converted.
       </p>
 <a name="fusion.adapted.adapt_struct.header"></a><h4>
-<a name="id577453"></a>
+<a name="id577451"></a>
         <a href="adapt_struct.html#fusion.adapted.adapt_struct.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -73,7 +73,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">adapt_struct</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.adapted.adapt_struct.example"></a><h4>
-<a name="id577620"></a>
+<a name="id577618"></a>
         <a href="adapt_struct.html#fusion.adapted.adapt_struct.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/adapted/boost__array.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/adapted/boost__array.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/adapted/boost__array.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -33,7 +33,7 @@
         Access Sequence</a>.
       </p>
 <a name="fusion.adapted.boost__array.header"></a><h4>
-<a name="id575685"></a>
+<a name="id575683"></a>
         <a href="boost__array.html#fusion.adapted.boost__array.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -41,14 +41,14 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">array</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.adapted.boost__array.model_of"></a><h4>
-<a name="id575843"></a>
+<a name="id575841"></a>
         <a href="boost__array.html#fusion.adapted.boost__array.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li><a href="../sequence/concepts/random_access_sequence.html" title="Random
         Access Sequence">Random
           Access Sequence</a></li></ul></div>
 <a name="fusion.adapted.boost__array.example"></a><h4>
-<a name="id575884"></a>
+<a name="id575882"></a>
         <a href="boost__array.html#fusion.adapted.boost__array.example">Example</a>
       </h4>
 <pre class="programlisting">
@@ -61,7 +61,7 @@
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> at_c<span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;(</span><span class="identifier">arr</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
 </pre>
 <a name="fusion.adapted.boost__array.see_also"></a><h4>
-<a name="id576504"></a>
+<a name="id576502"></a>
         <a href="boost__array.html#fusion.adapted.boost__array.see_also">See also</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/adapted/boost__tuple.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/adapted/boost__tuple.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/adapted/boost__tuple.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -33,7 +33,7 @@
         Sequence</a>.
       </p>
 <a name="fusion.adapted.boost__tuple.header"></a><h4>
-<a name="id576619"></a>
+<a name="id576616"></a>
         <a href="boost__tuple.html#fusion.adapted.boost__tuple.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -41,13 +41,13 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.adapted.boost__tuple.model_of"></a><h4>
-<a name="id576777"></a>
+<a name="id576774"></a>
         <a href="boost__tuple.html#fusion.adapted.boost__tuple.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li><a href="../sequence/concepts/forward_sequence.html" title="Forward
         Sequence">Forward Sequence</a></li></ul></div>
 <a name="fusion.adapted.boost__tuple.example"></a><h4>
-<a name="id576818"></a>
+<a name="id576816"></a>
         <a href="boost__tuple.html#fusion.adapted.boost__tuple.example">Example</a>
       </h4>
 <pre class="programlisting">
@@ -56,7 +56,7 @@
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="special">*</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">next</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">example_tuple</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="char">'\n'</span><span class="special">;</span>
 </pre>
 <a name="fusion.adapted.boost__tuple.see_also"></a><h4>
-<a name="id577135"></a>
+<a name="id577133"></a>
         <a href="boost__tuple.html#fusion.adapted.boost__tuple.see_also">See also</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/adapted/mpl_sequence.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/adapted/mpl_sequence.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/adapted/mpl_sequence.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
         sequences fully conforming fusion sequences.
       </p>
 <a name="fusion.adapted.mpl_sequence.header"></a><h4>
-<a name="id574738"></a>
+<a name="id574736"></a>
         <a href="mpl_sequence.html#fusion.adapted.mpl_sequence.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -39,7 +39,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">mpl</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.adapted.mpl_sequence.model_of"></a><h4>
-<a name="id574894"></a>
+<a name="id574892"></a>
         <a href="mpl_sequence.html#fusion.adapted.mpl_sequence.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc">
@@ -63,7 +63,7 @@
         </li>
 </ul></div>
 <a name="fusion.adapted.mpl_sequence.example"></a><h4>
-<a name="id574986"></a>
+<a name="id574984"></a>
         <a href="mpl_sequence.html#fusion.adapted.mpl_sequence.example">Example</a>
       </h4>
 <pre class="programlisting">
@@ -77,7 +77,7 @@
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> at_c<span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(</span><span class="identifier">v</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
 </pre>
 <a name="fusion.adapted.mpl_sequence.see_also"></a><h4>
-<a name="id575573"></a>
+<a name="id575571"></a>
         <a href="mpl_sequence.html#fusion.adapted.mpl_sequence.see_also">See also</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/adapted/std__pair.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/adapted/std__pair.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/adapted/std__pair.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -33,7 +33,7 @@
         Access Sequence</a>.
       </p>
 <a name="fusion.adapted.std__pair.header"></a><h4>
-<a name="id574051"></a>
+<a name="id574048"></a>
         <a href="std__pair.html#fusion.adapted.std__pair.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -41,14 +41,14 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.adapted.std__pair.model_of"></a><h4>
-<a name="id574208"></a>
+<a name="id574206"></a>
         <a href="std__pair.html#fusion.adapted.std__pair.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li><a href="../sequence/concepts/random_access_sequence.html" title="Random
         Access Sequence">Random
           Access Sequence</a></li></ul></div>
 <a name="fusion.adapted.std__pair.example"></a><h4>
-<a name="id574249"></a>
+<a name="id574247"></a>
         <a href="std__pair.html#fusion.adapted.std__pair.example">Example</a>
       </h4>
 <pre class="programlisting">
@@ -58,7 +58,7 @@
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">p</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
 </pre>
 <a name="fusion.adapted.std__pair.see_also"></a><h4>
-<a name="id574602"></a>
+<a name="id574600"></a>
         <a href="std__pair.html#fusion.adapted.std__pair.see_also">See also</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -43,7 +43,7 @@
 </dl></dd>
 </dl></div>
 <a name="fusion.algorithm.lazy_evaluation"></a><h3>
-<a name="id578704"></a>
+<a name="id578702"></a>
       <a href="algorithm.html#fusion.algorithm.lazy_evaluation">Lazy Evaluation</a>
     </h3>
 <p>
@@ -66,7 +66,7 @@
       as we want without incurring a high runtime penalty.
     </p>
 <a name="fusion.algorithm.sequence_extension"></a><h3>
-<a name="id578852"></a>
+<a name="id578849"></a>
       <a href="algorithm.html#fusion.algorithm.sequence_extension">Sequence Extension</a>
     </h3>
 <p>
@@ -89,7 +89,7 @@
       functions to convert back to the original sequence type.
     </p>
 <a name="fusion.algorithm.header"></a><h3>
-<a name="id579085"></a>
+<a name="id579083"></a>
       <a href="algorithm.html#fusion.algorithm.header">Header</a>
     </h3>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
         a sequence repeatedly applying an operation to its elements.
       </p>
 <a name="fusion.algorithm.iteration.header"></a><h4>
-<a name="id579258"></a>
+<a name="id579256"></a>
         <a href="iteration.html#fusion.algorithm.iteration.header">Header</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/accumulate.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/accumulate.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/accumulate.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.iteration.functions.accumulate"></a>accumulate</h5></div></div></div>
 <a name="fusion.algorithm.iteration.functions.accumulate.description"></a><h6>
-<a name="id581187"></a>
+<a name="id581185"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.functions.accumulate.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             and the previous state.
           </p>
 <a name="fusion.algorithm.iteration.functions.accumulate.synopsis"></a><h6>
-<a name="id581266"></a>
+<a name="id581264"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.functions.accumulate.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
     <span class="identifier">Sequence</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">State</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">initial_state</span><span class="special">,</span> <span class="identifier">F</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id581528"></a><p class="title"><b>Table 1.34. Parameters</b></p>
+<a name="id581526"></a><p class="title"><b>Table 1.34. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -137,7 +137,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.iteration.functions.accumulate.expression_semantics"></a><h6>
-<a name="id581979"></a>
+<a name="id581977"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.functions.accumulate.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -152,14 +152,14 @@
             where <tt class="computeroutput"><span class="identifier">e1</span> <span class="special">...</span><span class="identifier">eN</span></tt> are the elements of <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.functions.accumulate.complexity"></a><h6>
-<a name="id582190"></a>
+<a name="id582188"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.functions.accumulate.complexity">Complexity</a>
           </h6>
 <p>
             Linear, exactly <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> applications of <tt class="computeroutput"><span class="identifier">f</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.functions.accumulate.header"></a><h6>
-<a name="id582286"></a>
+<a name="id582284"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.functions.accumulate.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -167,7 +167,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">accumulate</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.iteration.functions.accumulate.example"></a><h6>
-<a name="id582456"></a>
+<a name="id582454"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.functions.accumulate.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/fold.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/fold.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/fold.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.iteration.functions.fold"></a>fold</h5></div></div></div>
 <a name="fusion.algorithm.iteration.functions.fold.description"></a><h6>
-<a name="id579458"></a>
+<a name="id579456"></a>
             <a href="fold.html#fusion.algorithm.iteration.functions.fold.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             and the previous state.
           </p>
 <a name="fusion.algorithm.iteration.functions.fold.synopsis"></a><h6>
-<a name="id579538"></a>
+<a name="id579536"></a>
             <a href="fold.html#fusion.algorithm.iteration.functions.fold.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
     <span class="identifier">Sequence</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">State</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">initial_state</span><span class="special">,</span> <span class="identifier">F</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id579798"></a><p class="title"><b>Table 1.33. Parameters</b></p>
+<a name="id579795"></a><p class="title"><b>Table 1.33. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -137,7 +137,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.iteration.functions.fold.expression_semantics"></a><h6>
-<a name="id580207"></a>
+<a name="id580205"></a>
             <a href="fold.html#fusion.algorithm.iteration.functions.fold.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -152,14 +152,14 @@
             where <tt class="computeroutput"><span class="identifier">e1</span> <span class="special">...</span><span class="identifier">eN</span></tt> are the elements of <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.functions.fold.complexity"></a><h6>
-<a name="id580418"></a>
+<a name="id580416"></a>
             <a href="fold.html#fusion.algorithm.iteration.functions.fold.complexity">Complexity</a>
           </h6>
 <p>
             Linear, exactly <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> applications of <tt class="computeroutput"><span class="identifier">f</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.functions.fold.header"></a><h6>
-<a name="id580513"></a>
+<a name="id580510"></a>
             <a href="fold.html#fusion.algorithm.iteration.functions.fold.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -167,7 +167,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">fold</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.iteration.functions.fold.example"></a><h6>
-<a name="id580682"></a>
+<a name="id580680"></a>
             <a href="fold.html#fusion.algorithm.iteration.functions.fold.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/for_each.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/for_each.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/functions/for_each.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.iteration.functions.for_each"></a>for_each</h5></div></div></div>
 <a name="fusion.algorithm.iteration.functions.for_each.description"></a><h6>
-<a name="id582958"></a>
+<a name="id582957"></a>
             <a href="for_each.html#fusion.algorithm.iteration.functions.for_each.description">Description</a>
           </h6>
 <p>
             Applies a unary function object to each element of a sequence.
           </p>
 <a name="fusion.algorithm.iteration.functions.for_each.synopsis"></a><h6>
-<a name="id582990"></a>
+<a name="id582989"></a>
             <a href="for_each.html#fusion.algorithm.iteration.functions.for_each.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
     <span class="identifier">Sequence</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">F</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id583193"></a><p class="title"><b>Table 1.35. Parameters</b></p>
+<a name="id583191"></a><p class="title"><b>Table 1.35. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -114,7 +114,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.iteration.functions.for_each.expression_semantics"></a><h6>
-<a name="id583393"></a>
+<a name="id583392"></a>
             <a href="for_each.html#fusion.algorithm.iteration.functions.for_each.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -129,14 +129,14 @@
             in <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.functions.for_each.complexity"></a><h6>
-<a name="id583552"></a>
+<a name="id583550"></a>
             <a href="for_each.html#fusion.algorithm.iteration.functions.for_each.complexity">Complexity</a>
           </h6>
 <p>
             Linear, exactly <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> applications of <tt class="computeroutput"><span class="identifier">f</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.functions.for_each.header"></a><h6>
-<a name="id583647"></a>
+<a name="id583645"></a>
             <a href="for_each.html#fusion.algorithm.iteration.functions.for_each.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -144,7 +144,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.iteration.functions.for_each.example"></a><h6>
-<a name="id583817"></a>
+<a name="id583816"></a>
             <a href="for_each.html#fusion.algorithm.iteration.functions.for_each.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.iteration.metafunctions.accumulate"></a>accumulate</h5></div></div></div>
 <a name="fusion.algorithm.iteration.metafunctions.accumulate.description"></a><h6>
-<a name="id585193"></a>
+<a name="id585192"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.metafunctions.accumulate.description">Description</a>
           </h6>
 <p>
             Returns the result type of accumulate.
           </p>
 <a name="fusion.algorithm.iteration.metafunctions.accumulate.synopsis"></a><h6>
-<a name="id585243"></a>
+<a name="id585241"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.metafunctions.accumulate.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id585379"></a><p class="title"><b>Table 1.37. Parameters</b></p>
+<a name="id585377"></a><p class="title"><b>Table 1.37. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -131,7 +131,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.iteration.metafunctions.accumulate.expression_semantics"></a><h6>
-<a name="id585732"></a>
+<a name="id585729"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.metafunctions.accumulate.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -149,14 +149,14 @@
             and binary function object or function pointer of type <tt class="computeroutput"><span class="identifier">F</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.metafunctions.accumulate.complexity"></a><h6>
-<a name="id585908"></a>
+<a name="id585906"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.metafunctions.accumulate.complexity">Complexity</a>
           </h6>
 <p>
             Linear, exactly <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> applications of <tt class="computeroutput"><span class="identifier">F</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.metafunctions.accumulate.header"></a><h6>
-<a name="id586004"></a>
+<a name="id586002"></a>
             <a href="accumulate.html#fusion.algorithm.iteration.metafunctions.accumulate.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/fold.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/fold.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.iteration.metafunctions.fold"></a>fold</h5></div></div></div>
 <a name="fusion.algorithm.iteration.metafunctions.fold.description"></a><h6>
-<a name="id584198"></a>
+<a name="id584196"></a>
             <a href="fold.html#fusion.algorithm.iteration.metafunctions.fold.description">Description</a>
           </h6>
 <p>
             Returns the result type of fold.
           </p>
 <a name="fusion.algorithm.iteration.metafunctions.fold.synopsis"></a><h6>
-<a name="id584248"></a>
+<a name="id584246"></a>
             <a href="fold.html#fusion.algorithm.iteration.metafunctions.fold.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id584383"></a><p class="title"><b>Table 1.36. Parameters</b></p>
+<a name="id584382"></a><p class="title"><b>Table 1.36. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -131,7 +131,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.iteration.metafunctions.fold.expression_semantics"></a><h6>
-<a name="id584733"></a>
+<a name="id584732"></a>
             <a href="fold.html#fusion.algorithm.iteration.metafunctions.fold.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -149,14 +149,14 @@
             and binary function object or function pointer of type <tt class="computeroutput"><span class="identifier">F</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.metafunctions.fold.complexity"></a><h6>
-<a name="id584907"></a>
+<a name="id584905"></a>
             <a href="fold.html#fusion.algorithm.iteration.metafunctions.fold.complexity">Complexity</a>
           </h6>
 <p>
             Linear, exactly <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> applications of <tt class="computeroutput"><span class="identifier">F</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.metafunctions.fold.header"></a><h6>
-<a name="id585003"></a>
+<a name="id585002"></a>
             <a href="fold.html#fusion.algorithm.iteration.metafunctions.fold.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,11 +30,11 @@
             return type of for_each is always <tt class="computeroutput"><span class="keyword">void</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.metafunctions.for_each.description"></a><h6>
-<a name="id586249"></a>
+<a name="id586247"></a>
             <a href="for_each.html#fusion.algorithm.iteration.metafunctions.for_each.description">Description</a>
           </h6>
 <a name="fusion.algorithm.iteration.metafunctions.for_each.synopsis"></a><h6>
-<a name="id586276"></a>
+<a name="id586274"></a>
             <a href="for_each.html#fusion.algorithm.iteration.metafunctions.for_each.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id586398"></a><p class="title"><b>Table 1.38. Parameters</b></p>
+<a name="id586396"></a><p class="title"><b>Table 1.38. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.iteration.metafunctions.for_each.expression_semantics"></a><h6>
-<a name="id586539"></a>
+<a name="id586537"></a>
             <a href="for_each.html#fusion.algorithm.iteration.metafunctions.for_each.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -131,14 +131,14 @@
             return type is always <tt class="computeroutput"><span class="keyword">void</span></tt>.
           </p>
 <a name="fusion.algorithm.iteration.metafunctions.for_each.complexity"></a><h6>
-<a name="id586721"></a>
+<a name="id586719"></a>
             <a href="for_each.html#fusion.algorithm.iteration.metafunctions.for_each.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.iteration.metafunctions.for_each.header"></a><h6>
-<a name="id586751"></a>
+<a name="id586749"></a>
             <a href="for_each.html#fusion.algorithm.iteration.metafunctions.for_each.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -33,7 +33,7 @@
         The query algorithms provide support for searching and analyzing sequences.
       </p>
 <a name="fusion.algorithm.query.header"></a><h4>
-<a name="id586949"></a>
+<a name="id586947"></a>
         <a href="query.html#fusion.algorithm.query.header">Header</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/all.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/all.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/all.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.functions.all"></a>all</h5></div></div></div>
 <a name="fusion.algorithm.query.functions.all.description"></a><h6>
-<a name="id385641"></a>
+<a name="id385696"></a>
             <a href="all.html#fusion.algorithm.query.functions.all.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             element of <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.query.functions.all.synopsis"></a><h6>
-<a name="id385718"></a>
+<a name="id385773"></a>
             <a href="all.html#fusion.algorithm.query.functions.all.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -49,7 +49,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id590090"></a><p class="title"><b>Table 1.40. Parameters</b></p>
+<a name="id590091"></a><p class="title"><b>Table 1.40. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -133,14 +133,14 @@
             element <tt class="computeroutput"><span class="identifier">e</span></tt> in <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.query.functions.all.complexity"></a><h6>
-<a name="id590430"></a>
+<a name="id590429"></a>
             <a href="all.html#fusion.algorithm.query.functions.all.complexity">Complexity</a>
           </h6>
 <p>
             Linear. At most <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> comparisons.
           </p>
 <a name="fusion.algorithm.query.functions.all.header"></a><h6>
-<a name="id590502"></a>
+<a name="id590501"></a>
             <a href="all.html#fusion.algorithm.query.functions.all.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -148,7 +148,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">all</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.query.functions.all.example"></a><h6>
-<a name="id590653"></a>
+<a name="id590652"></a>
             <a href="all.html#fusion.algorithm.query.functions.all.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/any.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/any.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/any.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.functions.any"></a>any</h5></div></div></div>
 <a name="fusion.algorithm.query.functions.any.description"></a><h6>
-<a name="id587147"></a>
+<a name="id587145"></a>
             <a href="any.html#fusion.algorithm.query.functions.any.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             least one element of <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.query.functions.any.synopsis"></a><h6>
-<a name="id587236"></a>
+<a name="id587235"></a>
             <a href="any.html#fusion.algorithm.query.functions.any.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -49,7 +49,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id587429"></a><p class="title"><b>Table 1.39. Parameters</b></p>
+<a name="id587428"></a><p class="title"><b>Table 1.39. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -116,7 +116,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.functions.any.expression_semantics"></a><h6>
-<a name="id587631"></a>
+<a name="id587629"></a>
             <a href="any.html#fusion.algorithm.query.functions.any.expression_semantics">Expression
             semantics</a>
           </h6>
@@ -133,14 +133,14 @@
             element <tt class="computeroutput"><span class="identifier">e</span></tt> in <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.query.functions.any.complexity"></a><h6>
-<a name="id587800"></a>
+<a name="id587799"></a>
             <a href="any.html#fusion.algorithm.query.functions.any.complexity">Complexity</a>
           </h6>
 <p>
             Linear. At most <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> comparisons.
           </p>
 <a name="fusion.algorithm.query.functions.any.header"></a><h6>
-<a name="id587883"></a>
+<a name="id587881"></a>
             <a href="any.html#fusion.algorithm.query.functions.any.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -148,7 +148,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">any</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.query.functions.any.example"></a><h6>
-<a name="id588051"></a>
+<a name="id588050"></a>
             <a href="any.html#fusion.algorithm.query.functions.any.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/count.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/count.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/count.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.functions.count"></a>count</h5></div></div></div>
 <a name="fusion.algorithm.query.functions.count.description"></a><h6>
-<a name="id594274"></a>
+<a name="id594273"></a>
             <a href="count.html#fusion.algorithm.query.functions.count.description">Description</a>
           </h6>
 <p>
             Returns the number of elements of a given type within a sequence.
           </p>
 <a name="fusion.algorithm.query.functions.count.synopsis"></a><h6>
-<a name="id594304"></a>
+<a name="id594303"></a>
             <a href="count.html#fusion.algorithm.query.functions.count.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">t</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id594508"></a><p class="title"><b>Table 1.44. Parameters</b></p>
+<a name="id594507"></a><p class="title"><b>Table 1.44. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.functions.count.expression_semantics"></a><h6>
-<a name="id594701"></a>
+<a name="id594700"></a>
             <a href="count.html#fusion.algorithm.query.functions.count.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -129,14 +129,14 @@
             <tt class="computeroutput"><span class="identifier">t</span></tt> in <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.query.functions.count.complexity"></a><h6>
-<a name="id594839"></a>
+<a name="id594838"></a>
             <a href="count.html#fusion.algorithm.query.functions.count.complexity">Complexity</a>
           </h6>
 <p>
             Linear. At most <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> comparisons.
           </p>
 <a name="fusion.algorithm.query.functions.count.header"></a><h6>
-<a name="id594920"></a>
+<a name="id594919"></a>
             <a href="count.html#fusion.algorithm.query.functions.count.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -144,7 +144,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">count</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.query.functions.count.example"></a><h6>
-<a name="id595086"></a>
+<a name="id595085"></a>
             <a href="count.html#fusion.algorithm.query.functions.count.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/count_if.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/count_if.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/count_if.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.functions.count_if"></a>count_if</h5></div></div></div>
 <a name="fusion.algorithm.query.functions.count_if.description"></a><h6>
-<a name="id595296"></a>
+<a name="id595295"></a>
             <a href="count_if.html#fusion.algorithm.query.functions.count_if.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             a given unary function object evaluates to <tt class="computeroutput"><span class="keyword">true</span></tt>.
           </p>
 <a name="fusion.algorithm.query.functions.count_if.synopsis"></a><h6>
-<a name="id595338"></a>
+<a name="id595337"></a>
             <a href="count_if.html#fusion.algorithm.query.functions.count_if.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id595533"></a><p class="title"><b>Table 1.45. Parameters</b></p>
+<a name="id595531"></a><p class="title"><b>Table 1.45. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.functions.count_if.expression_semantics"></a><h6>
-<a name="id595729"></a>
+<a name="id595728"></a>
             <a href="count_if.html#fusion.algorithm.query.functions.count_if.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -128,14 +128,14 @@
             in <tt class="computeroutput"><span class="identifier">seq</span></tt> where <tt class="computeroutput"><span class="identifier">f</span></tt> evaluates to <tt class="computeroutput"><span class="keyword">true</span></tt>.
           </p>
 <a name="fusion.algorithm.query.functions.count_if.complexity"></a><h6>
-<a name="id595867"></a>
+<a name="id595866"></a>
             <a href="count_if.html#fusion.algorithm.query.functions.count_if.complexity">Complexity</a>
           </h6>
 <p>
             Linear. At most <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> comparisons.
           </p>
 <a name="fusion.algorithm.query.functions.count_if.header"></a><h6>
-<a name="id595947"></a>
+<a name="id595946"></a>
             <a href="count_if.html#fusion.algorithm.query.functions.count_if.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -143,7 +143,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">count_if</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.query.functions.count_if.example"></a><h6>
-<a name="id596114"></a>
+<a name="id596113"></a>
             <a href="count_if.html#fusion.algorithm.query.functions.count_if.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/find.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/find.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/find.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -133,14 +133,14 @@
             to <tt class="computeroutput">find_if<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="identifier">seq</span><span class="special">)</span></tt>
           </p>
 <a name="fusion.algorithm.query.functions.find.complexity"></a><h6>
-<a name="id592722"></a>
+<a name="id592721"></a>
             <a href="find.html#fusion.algorithm.query.functions.find.complexity">Complexity</a>
           </h6>
 <p>
             Linear. At most <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> comparisons.
           </p>
 <a name="fusion.algorithm.query.functions.find.header"></a><h6>
-<a name="id592803"></a>
+<a name="id592802"></a>
             <a href="find.html#fusion.algorithm.query.functions.find.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -148,7 +148,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">find</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.query.functions.find.example"></a><h6>
-<a name="id592969"></a>
+<a name="id592968"></a>
             <a href="find.html#fusion.algorithm.query.functions.find.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/find_if.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/find_if.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/find_if.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,11 +31,11 @@
             Lambda Expression</a> evaluates to <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt>.
           </p>
 <a name="fusion.algorithm.query.functions.find_if.description"></a><h6>
-<a name="id593288"></a>
+<a name="id593287"></a>
             <a href="find_if.html#fusion.algorithm.query.functions.find_if.description">Description</a>
           </h6>
 <a name="fusion.algorithm.query.functions.find_if.synopsis"></a><h6>
-<a name="id593312"></a>
+<a name="id593311"></a>
             <a href="find_if.html#fusion.algorithm.query.functions.find_if.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -52,7 +52,7 @@
 <span class="emphasis"><em>unspecified</em></span> <span class="identifier">find_if</span><span class="special">(</span><span class="identifier">Sequence</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id593511"></a><p class="title"><b>Table 1.43. Parameters</b></p>
+<a name="id593510"></a><p class="title"><b>Table 1.43. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -118,7 +118,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.functions.find_if.expression_semantics"></a><h6>
-<a name="id593655"></a>
+<a name="id593654"></a>
             <a href="find_if.html#fusion.algorithm.query.functions.find_if.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -137,7 +137,7 @@
             if there is no such element.
           </p>
 <a name="fusion.algorithm.query.functions.find_if.complexity"></a><h6>
-<a name="id593858"></a>
+<a name="id593856"></a>
             <a href="find_if.html#fusion.algorithm.query.functions.find_if.complexity">Complexity</a>
           </h6>
 <p>
@@ -147,7 +147,7 @@
             /algorithm/query/find_if.hpp&gt;
           </p>
 <a name="fusion.algorithm.query.functions.find_if.example"></a><h6>
-<a name="id593943"></a>
+<a name="id593942"></a>
             <a href="find_if.html#fusion.algorithm.query.functions.find_if.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/none.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/none.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/functions/none.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.functions.none"></a>none</h5></div></div></div>
 <a name="fusion.algorithm.query.functions.none.description"></a><h6>
-<a name="id590975"></a>
+<a name="id590974"></a>
             <a href="none.html#fusion.algorithm.query.functions.none.description">Description</a>
           </h6>
 <p>
@@ -133,7 +133,7 @@
             element <tt class="computeroutput"><span class="identifier">e</span></tt> in <tt class="computeroutput"><span class="identifier">seq</span></tt>. Result equivalent to <tt class="computeroutput"><span class="special">!</span><span class="identifier">any</span><span class="special">(</span><span class="identifier">seq</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>.
           </p>
 <a name="fusion.algorithm.query.functions.none.complexity"></a><h6>
-<a name="id591604"></a>
+<a name="id591603"></a>
             <a href="none.html#fusion.algorithm.query.functions.none.complexity">Complexity</a>
           </h6>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/all.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/all.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/all.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.metafunctions.all"></a>all</h5></div></div></div>
 <a name="fusion.algorithm.query.metafunctions.all.description"></a><h6>
-<a name="id597048"></a>
+<a name="id597046"></a>
             <a href="all.html#fusion.algorithm.query.metafunctions.all.description">Description</a>
           </h6>
 <p>
             A metafunction returning the result type of all.
           </p>
 <a name="fusion.algorithm.query.metafunctions.all.synopsis"></a><h6>
-<a name="id597094"></a>
+<a name="id597092"></a>
             <a href="all.html#fusion.algorithm.query.metafunctions.all.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id597214"></a><p class="title"><b>Table 1.47. Parameters</b></p>
+<a name="id597212"></a><p class="title"><b>Table 1.47. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -114,7 +114,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.metafunctions.all.expression_semantics"></a><h6>
-<a name="id597358"></a>
+<a name="id597357"></a>
             <a href="all.html#fusion.algorithm.query.metafunctions.all.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -134,14 +134,14 @@
             The return type is always <tt class="computeroutput"><span class="keyword">bool</span></tt>.
           </p>
 <a name="fusion.algorithm.query.metafunctions.all.complexity"></a><h6>
-<a name="id597540"></a>
+<a name="id597539"></a>
             <a href="all.html#fusion.algorithm.query.metafunctions.all.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.query.metafunctions.all.header"></a><h6>
-<a name="id597568"></a>
+<a name="id597567"></a>
             <a href="all.html#fusion.algorithm.query.metafunctions.all.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/any.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/any.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/any.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.metafunctions.any"></a>any</h5></div></div></div>
 <a name="fusion.algorithm.query.metafunctions.any.description"></a><h6>
-<a name="id596343"></a>
+<a name="id596342"></a>
             <a href="any.html#fusion.algorithm.query.metafunctions.any.description">Description</a>
           </h6>
 <p>
             A metafunction returning the result type of any.
           </p>
 <a name="fusion.algorithm.query.metafunctions.any.synopsis"></a><h6>
-<a name="id596389"></a>
+<a name="id596387"></a>
             <a href="any.html#fusion.algorithm.query.metafunctions.any.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id596508"></a><p class="title"><b>Table 1.46. Parameters</b></p>
+<a name="id596507"></a><p class="title"><b>Table 1.46. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -114,7 +114,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.metafunctions.any.expression_semantics"></a><h6>
-<a name="id596655"></a>
+<a name="id596653"></a>
             <a href="any.html#fusion.algorithm.query.metafunctions.any.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -134,14 +134,14 @@
             The return type is always <tt class="computeroutput"><span class="keyword">bool</span></tt>.
           </p>
 <a name="fusion.algorithm.query.metafunctions.any.complexity"></a><h6>
-<a name="id596836"></a>
+<a name="id596835"></a>
             <a href="any.html#fusion.algorithm.query.metafunctions.any.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.query.metafunctions.any.header"></a><h6>
-<a name="id596865"></a>
+<a name="id596863"></a>
             <a href="any.html#fusion.algorithm.query.metafunctions.any.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/count.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/count.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/count.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.metafunctions.count"></a>count</h5></div></div></div>
 <a name="fusion.algorithm.query.metafunctions.count.description"></a><h6>
-<a name="id600032"></a>
+<a name="id600030"></a>
             <a href="count.html#fusion.algorithm.query.metafunctions.count.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             given the sequence and search types.
           </p>
 <a name="fusion.algorithm.query.metafunctions.count.synopsis"></a><h6>
-<a name="id600075"></a>
+<a name="id600074"></a>
             <a href="count.html#fusion.algorithm.query.metafunctions.count.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id600196"></a><p class="title"><b>Table 1.51. Parameters</b></p>
+<a name="id600194"></a><p class="title"><b>Table 1.51. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.metafunctions.count.expression_semantics"></a><h6>
-<a name="id600334"></a>
+<a name="id600333"></a>
             <a href="count.html#fusion.algorithm.query.metafunctions.count.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -129,14 +129,14 @@
             <tt class="computeroutput"><span class="keyword">int</span></tt>.
           </p>
 <a name="fusion.algorithm.query.metafunctions.count.complexity"></a><h6>
-<a name="id600478"></a>
+<a name="id600476"></a>
             <a href="count.html#fusion.algorithm.query.metafunctions.count.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.query.metafunctions.count.header"></a><h6>
-<a name="id600507"></a>
+<a name="id600505"></a>
             <a href="count.html#fusion.algorithm.query.metafunctions.count.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/count_if.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/count_if.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/count_if.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.metafunctions.count_if"></a>count_if</h5></div></div></div>
 <a name="fusion.algorithm.query.metafunctions.count_if.description"></a><h6>
-<a name="id600696"></a>
+<a name="id600694"></a>
             <a href="count_if.html#fusion.algorithm.query.metafunctions.count_if.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             given the sequence and predicate types.
           </p>
 <a name="fusion.algorithm.query.metafunctions.count_if.synopsis"></a><h6>
-<a name="id600739"></a>
+<a name="id600737"></a>
             <a href="count_if.html#fusion.algorithm.query.metafunctions.count_if.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id600861"></a><p class="title"><b>Table 1.52. Parameters</b></p>
+<a name="id600859"></a><p class="title"><b>Table 1.52. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.metafunctions.count_if.expression_semantics"></a><h6>
-<a name="id601001"></a>
+<a name="id600999"></a>
             <a href="count_if.html#fusion.algorithm.query.metafunctions.count_if.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -129,14 +129,14 @@
             always <tt class="computeroutput"><span class="keyword">int</span></tt>.
           </p>
 <a name="fusion.algorithm.query.metafunctions.count_if.complexity"></a><h6>
-<a name="id601157"></a>
+<a name="id601155"></a>
             <a href="count_if.html#fusion.algorithm.query.metafunctions.count_if.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.query.metafunctions.count_if.header"></a><h6>
-<a name="id601186"></a>
+<a name="id601184"></a>
             <a href="count_if.html#fusion.algorithm.query.metafunctions.count_if.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/find.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/find.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/find.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.metafunctions.find"></a>find</h5></div></div></div>
 <a name="fusion.algorithm.query.metafunctions.find.description"></a><h6>
-<a name="id598468"></a>
+<a name="id598466"></a>
             <a href="find.html#fusion.algorithm.query.metafunctions.find.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             given the sequence and search types.
           </p>
 <a name="fusion.algorithm.query.metafunctions.find.synopsis"></a><h6>
-<a name="id598511"></a>
+<a name="id598509"></a>
             <a href="find.html#fusion.algorithm.query.metafunctions.find.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id598629"></a><p class="title"><b>Table 1.49. Parameters</b></p>
+<a name="id598628"></a><p class="title"><b>Table 1.49. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.metafunctions.find.expression_semantics"></a><h6>
-<a name="id598769"></a>
+<a name="id598767"></a>
             <a href="find.html#fusion.algorithm.query.metafunctions.find.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -131,14 +131,14 @@
             if there is no such element.
           </p>
 <a name="fusion.algorithm.query.metafunctions.find.complexity"></a><h6>
-<a name="id598972"></a>
+<a name="id598971"></a>
             <a href="find.html#fusion.algorithm.query.metafunctions.find.complexity">Complexity</a>
           </h6>
 <p>
             Linear, at most <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> comparisons.
           </p>
 <a name="fusion.algorithm.query.metafunctions.find.header"></a><h6>
-<a name="id599055"></a>
+<a name="id599054"></a>
             <a href="find.html#fusion.algorithm.query.metafunctions.find.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/find_if.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/find_if.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/find_if.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.metafunctions.find_if"></a>find_if</h5></div></div></div>
 <a name="fusion.algorithm.query.metafunctions.find_if.description"></a><h6>
-<a name="id599245"></a>
+<a name="id599244"></a>
             <a href="find_if.html#fusion.algorithm.query.metafunctions.find_if.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             given the sequence and predicate types.
           </p>
 <a name="fusion.algorithm.query.metafunctions.find_if.synopsis"></a><h6>
-<a name="id599290"></a>
+<a name="id599288"></a>
             <a href="find_if.html#fusion.algorithm.query.metafunctions.find_if.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id599409"></a><p class="title"><b>Table 1.50. Parameters</b></p>
+<a name="id599408"></a><p class="title"><b>Table 1.50. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -114,7 +114,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.metafunctions.find_if.expression_semantics"></a><h6>
-<a name="id599557"></a>
+<a name="id599555"></a>
             <a href="find_if.html#fusion.algorithm.query.metafunctions.find_if.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -132,14 +132,14 @@
             to true. Returns <tt class="computeroutput">result_of::end<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">type</span></tt> if there is no such element.
           </p>
 <a name="fusion.algorithm.query.metafunctions.find_if.complexity"></a><h6>
-<a name="id599762"></a>
+<a name="id599760"></a>
             <a href="find_if.html#fusion.algorithm.query.metafunctions.find_if.complexity">Complexity</a>
           </h6>
 <p>
             Linear. At most <tt class="computeroutput">result_of::size<span class="special">&lt;</span><span class="identifier">Sequence</span><span class="special">&gt;::</span><span class="identifier">value</span></tt> comparisons.
           </p>
 <a name="fusion.algorithm.query.metafunctions.find_if.header"></a><h6>
-<a name="id599844"></a>
+<a name="id599842"></a>
             <a href="find_if.html#fusion.algorithm.query.metafunctions.find_if.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/none.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/none.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/query/metafunctions/none.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.query.metafunctions.none"></a>none</h5></div></div></div>
 <a name="fusion.algorithm.query.metafunctions.none.description"></a><h6>
-<a name="id597752"></a>
+<a name="id597751"></a>
             <a href="none.html#fusion.algorithm.query.metafunctions.none.description">Description</a>
           </h6>
 <p>
             A metafunction returning the result type of none.
           </p>
 <a name="fusion.algorithm.query.metafunctions.none.synopsis"></a><h6>
-<a name="id597798"></a>
+<a name="id597797"></a>
             <a href="none.html#fusion.algorithm.query.metafunctions.none.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id597918"></a><p class="title"><b>Table 1.48. Parameters</b></p>
+<a name="id597917"></a><p class="title"><b>Table 1.48. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -114,7 +114,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.query.metafunctions.none.expression_semantics"></a><h6>
-<a name="id598063"></a>
+<a name="id598062"></a>
             <a href="none.html#fusion.algorithm.query.metafunctions.none.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -134,14 +134,14 @@
             The return type is always <tt class="computeroutput"><span class="keyword">bool</span></tt>.
           </p>
 <a name="fusion.algorithm.query.metafunctions.none.complexity"></a><h6>
-<a name="id598247"></a>
+<a name="id598246"></a>
             <a href="none.html#fusion.algorithm.query.metafunctions.none.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.query.metafunctions.none.header"></a><h6>
-<a name="id598276"></a>
+<a name="id598275"></a>
             <a href="none.html#fusion.algorithm.query.metafunctions.none.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -46,7 +46,7 @@
         </p></td></tr>
 </table></div>
 <a name="fusion.algorithm.transformation.header"></a><h4>
-<a name="id601396"></a>
+<a name="id601394"></a>
         <a href="transformation.html#fusion.algorithm.transformation.header">Header</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/clear.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/clear.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/clear.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.clear"></a>clear</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.clear.description"></a><h6>
-<a name="id610950"></a>
+<a name="id610948"></a>
             <a href="clear.html#fusion.algorithm.transformation.functions.clear.description">Description</a>
           </h6>
 <p>
             <a href="clear.html" title="clear"><tt class="computeroutput"><span class="identifier">clear</span></tt></a> returns an empty sequence.
           </p>
 <a name="fusion.algorithm.transformation.functions.clear.synposis"></a><h6>
-<a name="id610998"></a>
+<a name="id610996"></a>
             <a href="clear.html#fusion.algorithm.transformation.functions.clear.synposis">Synposis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">typename</span> result_of::clear<span class="special">&lt;</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">clear</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id611155"></a><p class="title"><b>Table 1.62. Parameters</b></p>
+<a name="id611153"></a><p class="title"><b>Table 1.62. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -89,7 +89,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.clear.expression_semantics"></a><h6>
-<a name="id611259"></a>
+<a name="id611257"></a>
             <a href="clear.html#fusion.algorithm.transformation.functions.clear.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -106,14 +106,14 @@
             with no elements.
           </p>
 <a name="fusion.algorithm.transformation.functions.clear.complexity"></a><h6>
-<a name="id611357"></a>
+<a name="id611355"></a>
             <a href="clear.html#fusion.algorithm.transformation.functions.clear.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.functions.clear.header"></a><h6>
-<a name="id611386"></a>
+<a name="id611384"></a>
             <a href="clear.html#fusion.algorithm.transformation.functions.clear.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -121,7 +121,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">clear</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.clear.example"></a><h6>
-<a name="id611557"></a>
+<a name="id611555"></a>
             <a href="clear.html#fusion.algorithm.transformation.functions.clear.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/erase.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/erase.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/erase.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.erase"></a>erase</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.erase.description"></a><h6>
-<a name="id611719"></a>
+<a name="id611717"></a>
             <a href="erase.html#fusion.algorithm.transformation.functions.erase.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             those at a specified iterator, or between two iterators.
           </p>
 <a name="fusion.algorithm.transformation.functions.erase.synposis"></a><h6>
-<a name="id611752"></a>
+<a name="id611750"></a>
             <a href="erase.html#fusion.algorithm.transformation.functions.erase.synposis">Synposis</a>
           </h6>
 <pre class="programlisting">
@@ -54,7 +54,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">First</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">it1</span><span class="special">,</span> <span class="identifier">Last</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">it2</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id612214"></a><p class="title"><b>Table 1.63. Parameters</b></p>
+<a name="id612212"></a><p class="title"><b>Table 1.63. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -141,7 +141,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.erase.expression_semantics"></a><h6>
-<a name="id612441"></a>
+<a name="id612439"></a>
             <a href="erase.html#fusion.algorithm.transformation.functions.erase.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -172,14 +172,14 @@
             in their original order, except those in the range [<tt class="computeroutput"><span class="identifier">first</span></tt>,<tt class="computeroutput"><span class="identifier">last</span></tt>).
           </p>
 <a name="fusion.algorithm.transformation.functions.erase.complexity"></a><h6>
-<a name="id612699"></a>
+<a name="id612697"></a>
             <a href="erase.html#fusion.algorithm.transformation.functions.erase.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.erase.header"></a><h6>
-<a name="id612730"></a>
+<a name="id612728"></a>
             <a href="erase.html#fusion.algorithm.transformation.functions.erase.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -187,7 +187,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">erase</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.erase.example"></a><h6>
-<a name="id612899"></a>
+<a name="id612897"></a>
             <a href="erase.html#fusion.algorithm.transformation.functions.erase.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/erase_key.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/erase_key.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/erase_key.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.erase_key"></a>erase_key</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.erase_key.description"></a><h6>
-<a name="id613354"></a>
+<a name="id613352"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.functions.erase_key.description">Description</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
             with a given key.
           </p>
 <a name="fusion.algorithm.transformation.functions.erase_key.synposis"></a><h6>
-<a name="id613416"></a>
+<a name="id613414"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.functions.erase_key.synposis">Synposis</a>
           </h6>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
 <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">erase_key</span><span class="special">&lt;</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">,</span> <span class="identifier">Key</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">erase_key</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id613589"></a><p class="title"><b>Table 1.64. Parameters</b></p>
+<a name="id613587"></a><p class="title"><b>Table 1.64. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -115,7 +115,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.erase_key.expression_semantics"></a><h6>
-<a name="id613729"></a>
+<a name="id613727"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.functions.erase_key.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -133,14 +133,14 @@
             except those with key <tt class="computeroutput"><span class="identifier">Key</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.erase_key.complexity"></a><h6>
-<a name="id613861"></a>
+<a name="id613859"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.functions.erase_key.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.erase_key.header"></a><h6>
-<a name="id613891"></a>
+<a name="id613889"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.functions.erase_key.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -148,7 +148,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">erase_key</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.erase_key.example"></a><h6>
-<a name="id614061"></a>
+<a name="id614060"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.functions.erase_key.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/filter.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/filter.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/filter.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.filter"></a>filter</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.filter.description"></a><h6>
-<a name="id601596"></a>
+<a name="id601594"></a>
             <a href="filter.html#fusion.algorithm.transformation.functions.filter.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             the elements of a specified type.
           </p>
 <a name="fusion.algorithm.transformation.functions.filter.synopsis"></a><h6>
-<a name="id601629"></a>
+<a name="id601627"></a>
             <a href="filter.html#fusion.algorithm.transformation.functions.filter.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
 <span class="keyword">typename</span> result_of::filter<span class="special">&lt;</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">filter</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id601814"></a><p class="title"><b>Table 1.53. Parameters</b></p>
+<a name="id601812"></a><p class="title"><b>Table 1.53. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -110,7 +110,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.filter.expression_semantics"></a><h6>
-<a name="id601952"></a>
+<a name="id601950"></a>
             <a href="filter.html#fusion.algorithm.transformation.functions.filter.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -129,14 +129,14 @@
             to <tt class="computeroutput">filter_if<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">same_type</span><span class="special">&lt;</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="identifier">seq</span><span class="special">)</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.filter.complexity"></a><h6>
-<a name="id602167"></a>
+<a name="id602165"></a>
             <a href="filter.html#fusion.algorithm.transformation.functions.filter.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.filter.header"></a><h6>
-<a name="id602199"></a>
+<a name="id602197"></a>
             <a href="filter.html#fusion.algorithm.transformation.functions.filter.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -144,7 +144,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">filter</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.filter.example"></a><h6>
-<a name="id602368"></a>
+<a name="id602366"></a>
             <a href="filter.html#fusion.algorithm.transformation.functions.filter.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/filter_if.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/filter_if.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/filter_if.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.filter_if"></a>filter_if</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.filter_if.description"></a><h6>
-<a name="id602635"></a>
+<a name="id602633"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.functions.filter_if.description">Description</a>
           </h6>
 <p>
@@ -35,7 +35,7 @@
             Lambda Expression</a> evaluates to <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.filter_if.synopsis"></a><h6>
-<a name="id602726"></a>
+<a name="id602723"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.functions.filter_if.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="keyword">typename</span> result_of::filter_if<span class="special">&lt;</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">filter_if</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id602911"></a><p class="title"><b>Table 1.54. Parameters</b></p>
+<a name="id602909"></a><p class="title"><b>Table 1.54. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -112,7 +112,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.filter_if.expression_semantics"></a><h6>
-<a name="id603059"></a>
+<a name="id603057"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.functions.filter_if.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -132,14 +132,14 @@
             is the same as in the original sequence.
           </p>
 <a name="fusion.algorithm.transformation.functions.filter_if.complexity"></a><h6>
-<a name="id603224"></a>
+<a name="id603222"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.functions.filter_if.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.filter_if.header"></a><h6>
-<a name="id603255"></a>
+<a name="id603252"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.functions.filter_if.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -147,7 +147,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">filter_if</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.filter_if.example"></a><h6>
-<a name="id603425"></a>
+<a name="id603423"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.functions.filter_if.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/insert.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/insert.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/insert.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.insert"></a>insert</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.insert.description"></a><h6>
-<a name="id614267"></a>
+<a name="id614265"></a>
             <a href="insert.html#fusion.algorithm.transformation.functions.insert.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             element inserted the position described by a given iterator.
           </p>
 <a name="fusion.algorithm.transformation.functions.insert.synposis"></a><h6>
-<a name="id614299"></a>
+<a name="id614297"></a>
             <a href="insert.html#fusion.algorithm.transformation.functions.insert.synposis">Synposis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="emphasis"><em>unspecified</em></span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">Pos</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">pos</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">t</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id614489"></a><p class="title"><b>Table 1.65. Parameters</b></p>
+<a name="id614488"></a><p class="title"><b>Table 1.65. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -130,7 +130,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.insert.expression_semantics"></a><h6>
-<a name="id614674"></a>
+<a name="id614672"></a>
             <a href="insert.html#fusion.algorithm.transformation.functions.insert.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -150,14 +150,14 @@
             <tt class="computeroutput"><span class="identifier">pos</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.insert.complexity"></a><h6>
-<a name="id614828"></a>
+<a name="id614827"></a>
             <a href="insert.html#fusion.algorithm.transformation.functions.insert.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.insert.header"></a><h6>
-<a name="id614859"></a>
+<a name="id614858"></a>
             <a href="insert.html#fusion.algorithm.transformation.functions.insert.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -165,7 +165,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">insert</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.insert.example"></a><h6>
-<a name="id615028"></a>
+<a name="id615027"></a>
             <a href="insert.html#fusion.algorithm.transformation.functions.insert.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/insert_range.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/insert_range.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/insert_range.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.insert_range"></a>insert_range</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.insert_range.description"></a><h6>
-<a name="id615320"></a>
+<a name="id615319"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.functions.insert_range.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             iterator.
           </p>
 <a name="fusion.algorithm.transformation.functions.insert_range.synposis"></a><h6>
-<a name="id615353"></a>
+<a name="id615351"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.functions.insert_range.synposis">Synposis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">Pos</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">pos</span><span class="special">,</span> <span class="identifier">Range</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">range</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id615625"></a><p class="title"><b>Table 1.66. Parameters</b></p>
+<a name="id615623"></a><p class="title"><b>Table 1.66. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -133,7 +133,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.insert_range.expression_semantics"></a><h6>
-<a name="id615818"></a>
+<a name="id615816"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.functions.insert_range.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -153,14 +153,14 @@
             All elements retaining their ordering from the orignal sequences.
           </p>
 <a name="fusion.algorithm.transformation.functions.insert_range.complexity"></a><h6>
-<a name="id615978"></a>
+<a name="id615976"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.functions.insert_range.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.insert_range.header"></a><h6>
-<a name="id616008"></a>
+<a name="id616006"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.functions.insert_range.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -168,7 +168,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">insert_range</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.insert_range.example"></a><h6>
-<a name="id616178"></a>
+<a name="id616176"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.functions.insert_range.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/join.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/join.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/join.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.join"></a>join</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.join.description"></a><h6>
-<a name="id616509"></a>
+<a name="id616506"></a>
             <a href="join.html#fusion.algorithm.transformation.functions.join.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             first followed by the elements of the second.
           </p>
 <a name="fusion.algorithm.transformation.functions.join.synopsis"></a><h6>
-<a name="id616541"></a>
+<a name="id616539"></a>
             <a href="join.html#fusion.algorithm.transformation.functions.join.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="keyword">typename</span> result_of::join<span class="special">&lt;</span><span class="identifier">LhSequence</span><span class="special">,</span> <span class="identifier">RhSequence</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">join</span><span class="special">(</span><span class="identifier">LhSequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">RhSequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id616748"></a><p class="title"><b>Table 1.67. Parameters</b></p>
+<a name="id616746"></a><p class="title"><b>Table 1.67. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -111,7 +111,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.join.expression_semantics"></a><h6>
-<a name="id616895"></a>
+<a name="id616893"></a>
             <a href="join.html#fusion.algorithm.transformation.functions.join.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -130,14 +130,14 @@
             The order of th elements is preserved.
           </p>
 <a name="fusion.algorithm.transformation.functions.join.complexity"></a><h6>
-<a name="id617027"></a>
+<a name="id617025"></a>
             <a href="join.html#fusion.algorithm.transformation.functions.join.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.join.header"></a><h6>
-<a name="id617058"></a>
+<a name="id617056"></a>
             <a href="join.html#fusion.algorithm.transformation.functions.join.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -145,7 +145,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">join</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.join.example"></a><h6>
-<a name="id617227"></a>
+<a name="id617225"></a>
             <a href="join.html#fusion.algorithm.transformation.functions.join.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/pop_back.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/pop_back.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/pop_back.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.pop_back"></a>pop_back</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.pop_back.description"></a><h6>
-<a name="id618843"></a>
+<a name="id618842"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.functions.pop_back.description">Description</a>
           </h6>
 <p>
             Returns a new sequence, with the last element of the original removed.
           </p>
 <a name="fusion.algorithm.transformation.functions.pop_back.synopsis"></a><h6>
-<a name="id618875"></a>
+<a name="id618874"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.functions.pop_back.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">typename</span> result_of::pop_back<span class="special">&lt;</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">pop_back</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id619032"></a><p class="title"><b>Table 1.69. Parameters</b></p>
+<a name="id619030"></a><p class="title"><b>Table 1.69. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -89,7 +89,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.pop_back.expression_semantics"></a><h6>
-<a name="id619134"></a>
+<a name="id619132"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.functions.pop_back.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -108,14 +108,14 @@
             same order as they were in <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.pop_back.complexity"></a><h6>
-<a name="id619256"></a>
+<a name="id619254"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.functions.pop_back.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.pop_back.header"></a><h6>
-<a name="id619288"></a>
+<a name="id619286"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.functions.pop_back.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -123,7 +123,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">pop_back</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.pop_back.example"></a><h6>
-<a name="id619459"></a>
+<a name="id619457"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.functions.pop_back.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/pop_front.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/pop_front.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/pop_front.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.pop_front"></a>pop_front</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.pop_front.description"></a><h6>
-<a name="id619633"></a>
+<a name="id619631"></a>
             <a href="pop_front.html#fusion.algorithm.transformation.functions.pop_front.description">Description</a>
           </h6>
 <p>
             Returns a new sequence, with the first element of the original removed.
           </p>
 <a name="fusion.algorithm.transformation.functions.pop_front.synopsis"></a><h6>
-<a name="id619664"></a>
+<a name="id619662"></a>
             <a href="pop_front.html#fusion.algorithm.transformation.functions.pop_front.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">typename</span> result_of::pop_front<span class="special">&lt;</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">pop_front</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id619821"></a><p class="title"><b>Table 1.70. Parameters</b></p>
+<a name="id619819"></a><p class="title"><b>Table 1.70. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -89,7 +89,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.pop_front.expression_semantics"></a><h6>
-<a name="id619925"></a>
+<a name="id619923"></a>
             <a href="pop_front.html#fusion.algorithm.transformation.functions.pop_front.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -108,14 +108,14 @@
             same order as they were in <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.pop_front.complexity"></a><h6>
-<a name="id620049"></a>
+<a name="id620047"></a>
             <a href="pop_front.html#fusion.algorithm.transformation.functions.pop_front.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.pop_front.header"></a><h6>
-<a name="id620078"></a>
+<a name="id620077"></a>
             <a href="pop_front.html#fusion.algorithm.transformation.functions.pop_front.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -123,7 +123,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">pop_front</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.pop_front.example"></a><h6>
-<a name="id620248"></a>
+<a name="id620247"></a>
             <a href="pop_front.html#fusion.algorithm.transformation.functions.pop_front.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/push_back.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/push_back.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/push_back.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.push_back"></a>push_back</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.push_back.description"></a><h6>
-<a name="id620429"></a>
+<a name="id620427"></a>
             <a href="push_back.html#fusion.algorithm.transformation.functions.push_back.description">Description</a>
           </h6>
 <p>
             Returns a new sequence with an element added at the end.
           </p>
 <a name="fusion.algorithm.transformation.functions.push_back.synopsis"></a><h6>
-<a name="id620462"></a>
+<a name="id620460"></a>
             <a href="push_back.html#fusion.algorithm.transformation.functions.push_back.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">t</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id620670"></a><p class="title"><b>Table 1.71. Parameters</b></p>
+<a name="id620669"></a><p class="title"><b>Table 1.71. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -110,7 +110,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.push_back.expression_semantics"></a><h6>
-<a name="id620812"></a>
+<a name="id620810"></a>
             <a href="push_back.html#fusion.algorithm.transformation.functions.push_back.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -129,14 +129,14 @@
             to the end. The elements are in the same order as they were in <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.push_back.complexity"></a><h6>
-<a name="id620957"></a>
+<a name="id620955"></a>
             <a href="push_back.html#fusion.algorithm.transformation.functions.push_back.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.push_back.header"></a><h6>
-<a name="id620987"></a>
+<a name="id620985"></a>
             <a href="push_back.html#fusion.algorithm.transformation.functions.push_back.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -144,7 +144,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">push_back</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.push_back.example"></a><h6>
-<a name="id621158"></a>
+<a name="id621156"></a>
             <a href="push_back.html#fusion.algorithm.transformation.functions.push_back.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/push_front.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/push_front.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/push_front.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.push_front"></a>push_front</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.push_front.description"></a><h6>
-<a name="id621371"></a>
+<a name="id621369"></a>
             <a href="push_front.html#fusion.algorithm.transformation.functions.push_front.description">Description</a>
           </h6>
 <p>
             Returns a new sequence with an element added at the beginning.
           </p>
 <a name="fusion.algorithm.transformation.functions.push_front.synopsis"></a><h6>
-<a name="id621404"></a>
+<a name="id621401"></a>
             <a href="push_front.html#fusion.algorithm.transformation.functions.push_front.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">t</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id621613"></a><p class="title"><b>Table 1.72. Parameters</b></p>
+<a name="id621611"></a><p class="title"><b>Table 1.72. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -110,7 +110,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.push_front.expression_semantics"></a><h6>
-<a name="id621753"></a>
+<a name="id621751"></a>
             <a href="push_front.html#fusion.algorithm.transformation.functions.push_front.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -130,14 +130,14 @@
             <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.push_front.complexity"></a><h6>
-<a name="id621898"></a>
+<a name="id621895"></a>
             <a href="push_front.html#fusion.algorithm.transformation.functions.push_front.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.push_front.header"></a><h6>
-<a name="id621928"></a>
+<a name="id621926"></a>
             <a href="push_front.html#fusion.algorithm.transformation.functions.push_front.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -145,7 +145,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">push_front</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.push_front.example"></a><h6>
-<a name="id622098"></a>
+<a name="id622096"></a>
             <a href="push_front.html#fusion.algorithm.transformation.functions.push_front.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/remove.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/remove.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/remove.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.remove"></a>remove</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.remove.description"></a><h6>
-<a name="id608092"></a>
+<a name="id608090"></a>
             <a href="remove.html#fusion.algorithm.transformation.functions.remove.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             except those of a given type.
           </p>
 <a name="fusion.algorithm.transformation.functions.remove.synopsis"></a><h6>
-<a name="id608125"></a>
+<a name="id608123"></a>
             <a href="remove.html#fusion.algorithm.transformation.functions.remove.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
 <span class="keyword">typename</span> result_of::remove<span class="special">&lt;</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">replace</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id608310"></a><p class="title"><b>Table 1.59. Parameters</b></p>
+<a name="id608308"></a><p class="title"><b>Table 1.59. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -110,7 +110,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.remove.expression_semantics"></a><h6>
-<a name="id608448"></a>
+<a name="id608446"></a>
             <a href="remove.html#fusion.algorithm.transformation.functions.remove.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -129,14 +129,14 @@
             Equivalent to <tt class="computeroutput">remove_if<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">_</span><span class="special">,</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="identifier">seq</span><span class="special">)</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.remove.complexity"></a><h6>
-<a name="id608665"></a>
+<a name="id608663"></a>
             <a href="remove.html#fusion.algorithm.transformation.functions.remove.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.remove.header"></a><h6>
-<a name="id608696"></a>
+<a name="id608694"></a>
             <a href="remove.html#fusion.algorithm.transformation.functions.remove.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -144,7 +144,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">remove</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.remove.example"></a><h6>
-<a name="id608866"></a>
+<a name="id608863"></a>
             <a href="remove.html#fusion.algorithm.transformation.functions.remove.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/remove_if.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/remove_if.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/remove_if.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.remove_if"></a>remove_if</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.remove_if.description"></a><h6>
-<a name="id609084"></a>
+<a name="id609082"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.functions.remove_if.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             those where a given unary function object evaluates to <tt class="computeroutput"><span class="keyword">true</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.remove_if.synopsis"></a><h6>
-<a name="id609129"></a>
+<a name="id609127"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.functions.remove_if.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
 <span class="keyword">typename</span> result_of::remove_if<span class="special">&lt;</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">,</span> <span class="identifier">Pred</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">remove_if</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id609314"></a><p class="title"><b>Table 1.60. Parameters</b></p>
+<a name="id609312"></a><p class="title"><b>Table 1.60. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -111,7 +111,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.remove_if.expression_semantics"></a><h6>
-<a name="id609461"></a>
+<a name="id609459"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.functions.remove_if.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -131,14 +131,14 @@
             <span class="special">&gt;(</span><span class="identifier">seq</span><span class="special">)</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.remove_if.complexity"></a><h6>
-<a name="id609711"></a>
+<a name="id609708"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.functions.remove_if.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.remove_if.header"></a><h6>
-<a name="id609740"></a>
+<a name="id609738"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.functions.remove_if.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -146,7 +146,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">remove_if</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.remove_if.example"></a><h6>
-<a name="id609910"></a>
+<a name="id609908"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.functions.remove_if.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/replace.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/replace.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/replace.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.replace"></a>replace</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.replace.description"></a><h6>
-<a name="id605769"></a>
+<a name="id605766"></a>
             <a href="replace.html#fusion.algorithm.transformation.functions.replace.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             a new value.
           </p>
 <a name="fusion.algorithm.transformation.functions.replace.synopsis"></a><h6>
-<a name="id605801"></a>
+<a name="id605799"></a>
             <a href="replace.html#fusion.algorithm.transformation.functions.replace.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">old_value</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">new_value</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id606045"></a><p class="title"><b>Table 1.57. Parameters</b></p>
+<a name="id606043"></a><p class="title"><b>Table 1.57. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -132,7 +132,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.replace.expression_semantics"></a><h6>
-<a name="id606294"></a>
+<a name="id606291"></a>
             <a href="replace.html#fusion.algorithm.transformation.functions.replace.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -151,14 +151,14 @@
             to elements with the same type and equal to <tt class="computeroutput"><span class="identifier">old_value</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.replace.complexity"></a><h6>
-<a name="id606450"></a>
+<a name="id606448"></a>
             <a href="replace.html#fusion.algorithm.transformation.functions.replace.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.replace.header"></a><h6>
-<a name="id606482"></a>
+<a name="id606480"></a>
             <a href="replace.html#fusion.algorithm.transformation.functions.replace.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -166,7 +166,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">replace</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.replace.example"></a><h6>
-<a name="id606652"></a>
+<a name="id606649"></a>
             <a href="replace.html#fusion.algorithm.transformation.functions.replace.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/replace_if.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/replace_if.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/replace_if.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.replace_if"></a>replace_if</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.replace_if.description"></a><h6>
-<a name="id606847"></a>
+<a name="id606845"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.functions.replace_if.description">Description</a>
           </h6>
 <p>
@@ -35,7 +35,7 @@
             replaced with a new value.
           </p>
 <a name="fusion.algorithm.transformation.functions.replace_if.synopsis"></a><h6>
-<a name="id606892"></a>
+<a name="id606890"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.functions.replace_if.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">new_value</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id607151"></a><p class="title"><b>Table 1.58. Parameters</b></p>
+<a name="id607149"></a><p class="title"><b>Table 1.58. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -131,7 +131,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.replace_if.expression_semantics"></a><h6>
-<a name="id607390"></a>
+<a name="id607388"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.functions.replace_if.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -151,14 +151,14 @@
             evaluates to <tt class="computeroutput"><span class="keyword">true</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.replace_if.complexity"></a><h6>
-<a name="id607558"></a>
+<a name="id607556"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.functions.replace_if.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.replace_if.header"></a><h6>
-<a name="id607587"></a>
+<a name="id607585"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.functions.replace_if.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -166,7 +166,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">replace_if</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.replace_if.example"></a><h6>
-<a name="id607757"></a>
+<a name="id607755"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.functions.replace_if.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/reverse.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/reverse.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/reverse.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.reverse"></a>reverse</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.reverse.description"></a><h6>
-<a name="id610158"></a>
+<a name="id610156"></a>
             <a href="reverse.html#fusion.algorithm.transformation.functions.reverse.description">Description</a>
           </h6>
 <p>
             Returns a new sequence with the elements of the original in reverse order.
           </p>
 <a name="fusion.algorithm.transformation.functions.reverse.synposis"></a><h6>
-<a name="id610190"></a>
+<a name="id610188"></a>
             <a href="reverse.html#fusion.algorithm.transformation.functions.reverse.synposis">Synposis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">typename</span> result_of::reverse<span class="special">&lt;</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">reverse</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id610346"></a><p class="title"><b>Table 1.61. Parameters</b></p>
+<a name="id610344"></a><p class="title"><b>Table 1.61. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -89,7 +89,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.reverse.expression_semantics"></a><h6>
-<a name="id610450"></a>
+<a name="id610448"></a>
             <a href="reverse.html#fusion.algorithm.transformation.functions.reverse.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -107,14 +107,14 @@
             in reverse order.
           </p>
 <a name="fusion.algorithm.transformation.functions.reverse.complexity"></a><h6>
-<a name="id610558"></a>
+<a name="id610556"></a>
             <a href="reverse.html#fusion.algorithm.transformation.functions.reverse.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.reverse.header"></a><h6>
-<a name="id610589"></a>
+<a name="id610587"></a>
             <a href="reverse.html#fusion.algorithm.transformation.functions.reverse.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -122,7 +122,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">reverse</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.reverse.example"></a><h6>
-<a name="id610758"></a>
+<a name="id610756"></a>
             <a href="reverse.html#fusion.algorithm.transformation.functions.reverse.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/transform.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/transform.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/transform.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.transform"></a>transform</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.transform.description"></a><h6>
-<a name="id603720"></a>
+<a name="id603718"></a>
             <a href="transform.html#fusion.algorithm.transformation.functions.transform.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             of <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.transform.unary_version_synopsis"></a><h6>
-<a name="id603838"></a>
+<a name="id603836"></a>
             <a href="transform.html#fusion.algorithm.transformation.functions.transform.unary_version_synopsis">Unary
             version synopsis</a>
           </h6>
@@ -50,7 +50,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id604044"></a><p class="title"><b>Table 1.55. Parameters</b></p>
+<a name="id604042"></a><p class="title"><b>Table 1.55. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -118,7 +118,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.transform.expression_semantics"></a><h6>
-<a name="id604317"></a>
+<a name="id604314"></a>
             <a href="transform.html#fusion.algorithm.transformation.functions.transform.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -136,7 +136,7 @@
             within <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.functions.transform.binary_version_synopsis"></a><h6>
-<a name="id604476"></a>
+<a name="id604474"></a>
             <a href="transform.html#fusion.algorithm.transformation.functions.transform.binary_version_synopsis">Binary
             version synopsis</a>
           </h6>
@@ -150,7 +150,7 @@
     <span class="identifier">Sequence1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq1</span><span class="special">,</span> <span class="identifier">Sequence2</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq2</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id604743"></a><p class="title"><b>Table 1.56. Parameters</b></p>
+<a name="id604741"></a><p class="title"><b>Table 1.56. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -248,14 +248,14 @@
             within <tt class="computeroutput"><span class="identifier">seq1</span></tt> and <tt class="computeroutput"><span class="identifier">seq2</span></tt> respectively.
           </p>
 <a name="fusion.algorithm.transformation.functions.transform.complexity"></a><h6>
-<a name="id605230"></a>
+<a name="id605228"></a>
             <a href="transform.html#fusion.algorithm.transformation.functions.transform.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.transform.header"></a><h6>
-<a name="id605260"></a>
+<a name="id605258"></a>
             <a href="transform.html#fusion.algorithm.transformation.functions.transform.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -263,7 +263,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">transform</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.transform.example"></a><h6>
-<a name="id605430"></a>
+<a name="id605428"></a>
             <a href="transform.html#fusion.algorithm.transformation.functions.transform.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/zip.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/zip.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/functions/zip.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.functions.zip"></a>zip</h5></div></div></div>
 <a name="fusion.algorithm.transformation.functions.zip.description"></a><h6>
-<a name="id617543"></a>
+<a name="id617541"></a>
             <a href="zip.html#fusion.algorithm.transformation.functions.zip.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             of the members of the component sequences.
           </p>
 <a name="fusion.algorithm.transformation.functions.zip.synopsis"></a><h6>
-<a name="id617576"></a>
+<a name="id617573"></a>
             <a href="zip.html#fusion.algorithm.transformation.functions.zip.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="identifier">zip</span><span class="special">(</span><span class="identifier">Sequence1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq1</span><span class="special">,</span> <span class="identifier">Sequence2</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq2</span><span class="special">,</span> <span class="special">...</span> <span class="identifier">SequenceN</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seqN</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id617860"></a><p class="title"><b>Table 1.68. Parameters</b></p>
+<a name="id617858"></a><p class="title"><b>Table 1.68. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -94,7 +94,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.functions.zip.expression_semantics"></a><h6>
-<a name="id617976"></a>
+<a name="id617974"></a>
             <a href="zip.html#fusion.algorithm.transformation.functions.zip.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -117,14 +117,14 @@
             <span class="char">'c'</span><span class="special">))</span></tt>
           </p>
 <a name="fusion.algorithm.transformation.functions.zip.complexity"></a><h6>
-<a name="id618285"></a>
+<a name="id618283"></a>
             <a href="zip.html#fusion.algorithm.transformation.functions.zip.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.functions.zip.header"></a><h6>
-<a name="id618316"></a>
+<a name="id618314"></a>
             <a href="zip.html#fusion.algorithm.transformation.functions.zip.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -132,7 +132,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">zip</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.functions.zip.example"></a><h6>
-<a name="id618485"></a>
+<a name="id618483"></a>
             <a href="zip.html#fusion.algorithm.transformation.functions.zip.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/clear.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/clear.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.clear"></a>clear</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.clear.description"></a><h6>
-<a name="id629486"></a>
+<a name="id629484"></a>
             <a href="clear.html#fusion.algorithm.transformation.metafunctions.clear.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             type.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.clear.synopsis"></a><h6>
-<a name="id629535"></a>
+<a name="id629533"></a>
             <a href="clear.html#fusion.algorithm.transformation.metafunctions.clear.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id629637"></a><p class="title"><b>Table 1.82. Parameters</b></p>
+<a name="id629634"></a><p class="title"><b>Table 1.82. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -91,7 +91,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.clear.expression_semantics"></a><h6>
-<a name="id629733"></a>
+<a name="id629731"></a>
             <a href="clear.html#fusion.algorithm.transformation.metafunctions.clear.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -107,14 +107,14 @@
             <span class="bold"><b>Semantics</b></span>: Returns an empty sequence.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.clear.complexity"></a><h6>
-<a name="id629847"></a>
+<a name="id629844"></a>
             <a href="clear.html#fusion.algorithm.transformation.metafunctions.clear.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.clear.header"></a><h6>
-<a name="id629877"></a>
+<a name="id629875"></a>
             <a href="clear.html#fusion.algorithm.transformation.metafunctions.clear.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/erase.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/erase.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,11 +30,11 @@
             and range delimiting iterator types.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.erase.description"></a><h6>
-<a name="id630092"></a>
+<a name="id630090"></a>
             <a href="erase.html#fusion.algorithm.transformation.metafunctions.erase.description">Description</a>
           </h6>
 <a name="fusion.algorithm.transformation.metafunctions.erase.synopsis"></a><h6>
-<a name="id630118"></a>
+<a name="id630115"></a>
             <a href="erase.html#fusion.algorithm.transformation.metafunctions.erase.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id630263"></a><p class="title"><b>Table 1.83. Parameters</b></p>
+<a name="id630261"></a><p class="title"><b>Table 1.83. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -134,7 +134,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.erase.expression_semantics"></a><h6>
-<a name="id630457"></a>
+<a name="id630454"></a>
             <a href="erase.html#fusion.algorithm.transformation.metafunctions.erase.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -164,14 +164,14 @@
             and <tt class="computeroutput"><span class="identifier">It2</span></tt> removed.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.erase.complexity"></a><h6>
-<a name="id630726"></a>
+<a name="id630723"></a>
             <a href="erase.html#fusion.algorithm.transformation.metafunctions.erase.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.erase.header"></a><h6>
-<a name="id630756"></a>
+<a name="id630753"></a>
             <a href="erase.html#fusion.algorithm.transformation.metafunctions.erase.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.erase_key"></a>erase_key</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.erase_key.description"></a><h6>
-<a name="id630950"></a>
+<a name="id630947"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.metafunctions.erase_key.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             and key types.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.erase_key.synopsis"></a><h6>
-<a name="id631000"></a>
+<a name="id630998"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.metafunctions.erase_key.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id631120"></a><p class="title"><b>Table 1.84. Parameters</b></p>
+<a name="id631118"></a><p class="title"><b>Table 1.84. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.erase_key.expression_semantics"></a><h6>
-<a name="id631260"></a>
+<a name="id631258"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.metafunctions.erase_key.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -131,14 +131,14 @@
             except those with key <tt class="computeroutput"><span class="identifier">Key</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.erase_key.complexity"></a><h6>
-<a name="id631408"></a>
+<a name="id631405"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.metafunctions.erase_key.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.erase_key.header"></a><h6>
-<a name="id631439"></a>
+<a name="id631436"></a>
             <a href="erase_key.html#fusion.algorithm.transformation.metafunctions.erase_key.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/filter.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/filter.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.filter"></a>filter</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.filter.description"></a><h6>
-<a name="id622330"></a>
+<a name="id622327"></a>
             <a href="filter.html#fusion.algorithm.transformation.metafunctions.filter.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             and type to retain.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.filter.synopsis"></a><h6>
-<a name="id622380"></a>
+<a name="id622377"></a>
             <a href="filter.html#fusion.algorithm.transformation.metafunctions.filter.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id622499"></a><p class="title"><b>Table 1.73. Parameter</b></p>
+<a name="id622497"></a><p class="title"><b>Table 1.73. Parameter</b></p>
 <table class="table" summary="Parameter">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.filter.expression_semantics"></a><h6>
-<a name="id622640"></a>
+<a name="id622637"></a>
             <a href="filter.html#fusion.algorithm.transformation.metafunctions.filter.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -133,14 +133,14 @@
             <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.filter.complexity"></a><h6>
-<a name="id622900"></a>
+<a name="id622898"></a>
             <a href="filter.html#fusion.algorithm.transformation.metafunctions.filter.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.filter.header"></a><h6>
-<a name="id622931"></a>
+<a name="id622928"></a>
             <a href="filter.html#fusion.algorithm.transformation.metafunctions.filter.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.filter_if"></a>filter_if</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.filter_if.description"></a><h6>
-<a name="id623123"></a>
+<a name="id623121"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.metafunctions.filter_if.description">Description</a>
           </h6>
 <p>
@@ -35,7 +35,7 @@
             Lambda Expression</a> predicate type.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.filter_if.synopsis"></a><h6>
-<a name="id623182"></a>
+<a name="id623179"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.metafunctions.filter_if.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -49,7 +49,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id623303"></a><p class="title"><b>Table 1.74. Parameter</b></p>
+<a name="id623301"></a><p class="title"><b>Table 1.74. Parameter</b></p>
 <table class="table" summary="Parameter">
 <colgroup>
 <col>
@@ -115,7 +115,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.filter_if.expression_semantics"></a><h6>
-<a name="id623448"></a>
+<a name="id623445"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.metafunctions.filter_if.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -134,14 +134,14 @@
             to <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.filter_if.complexity"></a><h6>
-<a name="id623632"></a>
+<a name="id623629"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.metafunctions.filter_if.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.filter_if.header"></a><h6>
-<a name="id623663"></a>
+<a name="id623660"></a>
             <a href="filter_if.html#fusion.algorithm.transformation.metafunctions.filter_if.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/insert.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/insert.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.insert"></a>insert</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.insert.description"></a><h6>
-<a name="id631635"></a>
+<a name="id631632"></a>
             <a href="insert.html#fusion.algorithm.transformation.metafunctions.insert.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             position iterator and insertion types.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.insert.synopsis"></a><h6>
-<a name="id631686"></a>
+<a name="id631684"></a>
             <a href="insert.html#fusion.algorithm.transformation.metafunctions.insert.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -49,7 +49,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id631823"></a><p class="title"><b>Table 1.85. Parameters</b></p>
+<a name="id631820"></a><p class="title"><b>Table 1.85. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -133,7 +133,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.insert.expression_semantics"></a><h6>
-<a name="id632008"></a>
+<a name="id632006"></a>
             <a href="insert.html#fusion.algorithm.transformation.metafunctions.insert.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -152,14 +152,14 @@
             in <tt class="computeroutput"><span class="identifier">Sequence</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.insert.complexity"></a><h6>
-<a name="id632180"></a>
+<a name="id632177"></a>
             <a href="insert.html#fusion.algorithm.transformation.metafunctions.insert.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.insert.header"></a><h6>
-<a name="id632209"></a>
+<a name="id632207"></a>
             <a href="insert.html#fusion.algorithm.transformation.metafunctions.insert.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.insert_range"></a>insert_range</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.insert_range.description"></a><h6>
-<a name="id632401"></a>
+<a name="id632398"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.metafunctions.insert_range.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             sequence, position iterator and insertion range types.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.insert_range.synopsis"></a><h6>
-<a name="id632452"></a>
+<a name="id632450"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.metafunctions.insert_range.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -49,7 +49,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id632591"></a><p class="title"><b>Table 1.86. Parameters</b></p>
+<a name="id632588"></a><p class="title"><b>Table 1.86. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -135,7 +135,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.insert_range.expression_semantics"></a><h6>
-<a name="id632785"></a>
+<a name="id632782"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.metafunctions.insert_range.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -154,14 +154,14 @@
             into <tt class="computeroutput"><span class="identifier">Sequence</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.insert_range.complexity"></a><h6>
-<a name="id632959"></a>
+<a name="id632956"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.metafunctions.insert_range.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.insert_range.header"></a><h6>
-<a name="id632992"></a>
+<a name="id632988"></a>
             <a href="insert_range.html#fusion.algorithm.transformation.metafunctions.insert_range.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/join.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/join.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/join.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.join"></a>join</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.join.description"></a><h6>
-<a name="id633185"></a>
+<a name="id633181"></a>
             <a href="join.html#fusion.algorithm.transformation.metafunctions.join.description">Description</a>
           </h6>
 <p>
             Returns the result of joining 2 sequences, given the sequence types.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.join.synopsis"></a><h6>
-<a name="id633218"></a>
+<a name="id633214"></a>
             <a href="join.html#fusion.algorithm.transformation.metafunctions.join.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <a name="fusion.algorithm.transformation.metafunctions.join.expression_semantics"></a><h6>
-<a name="id633347"></a>
+<a name="id633343"></a>
             <a href="join.html#fusion.algorithm.transformation.metafunctions.join.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -66,14 +66,14 @@
             The order of the elements in the 2 sequences is preserved.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.join.complexity"></a><h6>
-<a name="id633497"></a>
+<a name="id633493"></a>
             <a href="join.html#fusion.algorithm.transformation.metafunctions.join.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.join.header"></a><h6>
-<a name="id633527"></a>
+<a name="id633523"></a>
             <a href="join.html#fusion.algorithm.transformation.metafunctions.join.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.pop_back"></a>pop_back</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.pop_back.description"></a><h6>
-<a name="id634437"></a>
+<a name="id634433"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.metafunctions.pop_back.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             type.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.pop_back.synopsis"></a><h6>
-<a name="id634487"></a>
+<a name="id634483"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.metafunctions.pop_back.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id634590"></a><p class="title"><b>Table 1.87. Parameters</b></p>
+<a name="id634586"></a><p class="title"><b>Table 1.87. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -93,7 +93,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.pop_back.expression_semantics"></a><h6>
-<a name="id634693"></a>
+<a name="id634690"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.metafunctions.pop_back.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -111,14 +111,14 @@
             except the last element.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.pop_back.complexity"></a><h6>
-<a name="id634821"></a>
+<a name="id634819"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.metafunctions.pop_back.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.pop_back.header"></a><h6>
-<a name="id634852"></a>
+<a name="id634849"></a>
             <a href="pop_back.html#fusion.algorithm.transformation.metafunctions.pop_back.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.pop_front"></a>pop_front</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.pop_front.description"></a><h6>
-<a name="id635044"></a>
+<a name="id635042"></a>
             <a href="pop_front.html#fusion.algorithm.transformation.metafunctions.pop_front.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             type.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.pop_front.synopsis"></a><h6>
-<a name="id635094"></a>
+<a name="id635092"></a>
             <a href="pop_front.html#fusion.algorithm.transformation.metafunctions.pop_front.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id635197"></a><p class="title"><b>Table 1.88. Parameters</b></p>
+<a name="id635195"></a><p class="title"><b>Table 1.88. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -93,7 +93,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.pop_front.expression_semantics"></a><h6>
-<a name="id635300"></a>
+<a name="id635297"></a>
             <a href="pop_front.html#fusion.algorithm.transformation.metafunctions.pop_front.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -111,7 +111,7 @@
             except the first element.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.pop_front.complexity"></a><h6>
-<a name="id635427"></a>
+<a name="id635425"></a>
             <a href="pop_front.html#fusion.algorithm.transformation.metafunctions.pop_front.complexity">Complexity</a>
           </h6>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.push_back"></a>push_back</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.push_back.description"></a><h6>
-<a name="id635486"></a>
+<a name="id635483"></a>
             <a href="push_back.html#fusion.algorithm.transformation.metafunctions.push_back.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             the input sequence and element to push.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.push_back.synopsis"></a><h6>
-<a name="id635538"></a>
+<a name="id635536"></a>
             <a href="push_back.html#fusion.algorithm.transformation.metafunctions.push_back.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id635658"></a><p class="title"><b>Table 1.89. Parameters</b></p>
+<a name="id635655"></a><p class="title"><b>Table 1.89. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.push_back.expression_semantics"></a><h6>
-<a name="id635798"></a>
+<a name="id635796"></a>
             <a href="push_back.html#fusion.algorithm.transformation.metafunctions.push_back.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -132,7 +132,7 @@
             added to the end.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.push_back.complexity"></a><h6>
-<a name="id635947"></a>
+<a name="id635944"></a>
             <a href="push_back.html#fusion.algorithm.transformation.metafunctions.push_back.complexity">Complexity</a>
           </h6>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.push_front"></a>push_front</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.push_front.description"></a><h6>
-<a name="id636005"></a>
+<a name="id636001"></a>
             <a href="push_front.html#fusion.algorithm.transformation.metafunctions.push_front.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             of the input sequence and element to push.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.push_front.synopsis"></a><h6>
-<a name="id636057"></a>
+<a name="id636054"></a>
             <a href="push_front.html#fusion.algorithm.transformation.metafunctions.push_front.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id636176"></a><p class="title"><b>Table 1.90. Parameters</b></p>
+<a name="id636174"></a><p class="title"><b>Table 1.90. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.push_front.expression_semantics"></a><h6>
-<a name="id636317"></a>
+<a name="id636314"></a>
             <a href="push_front.html#fusion.algorithm.transformation.metafunctions.push_front.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -132,7 +132,7 @@
             added to the beginning.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.push_front.complexity"></a><h6>
-<a name="id636466"></a>
+<a name="id636464"></a>
             <a href="push_front.html#fusion.algorithm.transformation.metafunctions.push_front.complexity">Complexity</a>
           </h6>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/remove.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/remove.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.remove"></a>remove</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.remove.description"></a><h6>
-<a name="id627330"></a>
+<a name="id627328"></a>
             <a href="remove.html#fusion.algorithm.transformation.metafunctions.remove.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             removal types.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.remove.synopsis"></a><h6>
-<a name="id627380"></a>
+<a name="id627378"></a>
             <a href="remove.html#fusion.algorithm.transformation.metafunctions.remove.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id627499"></a><p class="title"><b>Table 1.79. Parameters</b></p>
+<a name="id627497"></a><p class="title"><b>Table 1.79. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.remove.expression_semantics"></a><h6>
-<a name="id627638"></a>
+<a name="id627636"></a>
             <a href="remove.html#fusion.algorithm.transformation.metafunctions.remove.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -133,14 +133,14 @@
             <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">_</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.remove.complexity"></a><h6>
-<a name="id627898"></a>
+<a name="id627896"></a>
             <a href="remove.html#fusion.algorithm.transformation.metafunctions.remove.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.remove.header"></a><h6>
-<a name="id627928"></a>
+<a name="id627926"></a>
             <a href="remove.html#fusion.algorithm.transformation.metafunctions.remove.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.remove_if"></a>remove_if</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.remove_if.description"></a><h6>
-<a name="id628121"></a>
+<a name="id628119"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.metafunctions.remove_if.description">Description</a>
           </h6>
 <p>
@@ -35,7 +35,7 @@
             Lambda Expression</a> predicate types.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.remove_if.synopsis"></a><h6>
-<a name="id628179"></a>
+<a name="id628177"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.metafunctions.remove_if.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -49,7 +49,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id628299"></a><p class="title"><b>Table 1.80. Parameters</b></p>
+<a name="id628297"></a><p class="title"><b>Table 1.80. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -115,7 +115,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.remove_if.expression_semantics"></a><h6>
-<a name="id628477"></a>
+<a name="id628475"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.metafunctions.remove_if.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -134,14 +134,14 @@
             to <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.remove_if.complexity"></a><h6>
-<a name="id628662"></a>
+<a name="id628660"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.metafunctions.remove_if.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.remove_if.header"></a><h6>
-<a name="id628692"></a>
+<a name="id628690"></a>
             <a href="remove_if.html#fusion.algorithm.transformation.metafunctions.remove_if.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/replace.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/replace.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.replace"></a>replace</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.replace.description"></a><h6>
-<a name="id625898"></a>
+<a name="id625895"></a>
             <a href="replace.html#fusion.algorithm.transformation.metafunctions.replace.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             the input sequence and element to replace.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.replace.synopsis"></a><h6>
-<a name="id625949"></a>
+<a name="id625946"></a>
             <a href="replace.html#fusion.algorithm.transformation.metafunctions.replace.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id626068"></a><p class="title"><b>Table 1.77. Parameters</b></p>
+<a name="id626066"></a><p class="title"><b>Table 1.77. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.replace.expression_semantics"></a><h6>
-<a name="id626211"></a>
+<a name="id626208"></a>
             <a href="replace.html#fusion.algorithm.transformation.metafunctions.replace.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -130,14 +130,14 @@
             <a href="../functions/replace.html" title="replace"><tt class="computeroutput"><span class="identifier">replace</span></tt></a>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.replace.complexity"></a><h6>
-<a name="id626353"></a>
+<a name="id626350"></a>
             <a href="replace.html#fusion.algorithm.transformation.metafunctions.replace.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.replace.header"></a><h6>
-<a name="id626384"></a>
+<a name="id626381"></a>
             <a href="replace.html#fusion.algorithm.transformation.metafunctions.replace.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.replace_if"></a>replace_if</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.replace_if.description"></a><h6>
-<a name="id626576"></a>
+<a name="id626573"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.metafunctions.replace_if.description">Description</a>
           </h6>
 <p>
@@ -36,7 +36,7 @@
             Function Object</a> predicate and replacement object.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.replace_if.synopsis"></a><h6>
-<a name="id626636"></a>
+<a name="id626634"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.metafunctions.replace_if.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id626773"></a><p class="title"><b>Table 1.78. Parameters</b></p>
+<a name="id626771"></a><p class="title"><b>Table 1.78. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -134,7 +134,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.replace_if.expression_semantics"></a><h6>
-<a name="id626956"></a>
+<a name="id626954"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.metafunctions.replace_if.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -151,14 +151,14 @@
             <a href="../functions/replace_if.html" title="replace_if"><tt class="computeroutput"><span class="identifier">replace_if</span></tt></a>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.replace_if.complexity"></a><h6>
-<a name="id627109"></a>
+<a name="id627107"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.metafunctions.replace_if.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.replace_if.header"></a><h6>
-<a name="id627139"></a>
+<a name="id627137"></a>
             <a href="replace_if.html#fusion.algorithm.transformation.metafunctions.replace_if.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.reverse"></a>reverse</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.reverse.description"></a><h6>
-<a name="id628883"></a>
+<a name="id628881"></a>
             <a href="reverse.html#fusion.algorithm.transformation.metafunctions.reverse.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             type.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.reverse.synopsis"></a><h6>
-<a name="id628932"></a>
+<a name="id628930"></a>
             <a href="reverse.html#fusion.algorithm.transformation.metafunctions.reverse.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id629034"></a><p class="title"><b>Table 1.81. Parameters</b></p>
+<a name="id629032"></a><p class="title"><b>Table 1.81. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -93,7 +93,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.reverse.expression_semantics"></a><h6>
-<a name="id629137"></a>
+<a name="id629135"></a>
             <a href="reverse.html#fusion.algorithm.transformation.metafunctions.reverse.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -110,14 +110,14 @@
             elements in the reverse order to <tt class="computeroutput"><span class="identifier">Sequence</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.reverse.complexity"></a><h6>
-<a name="id629264"></a>
+<a name="id629261"></a>
             <a href="reverse.html#fusion.algorithm.transformation.metafunctions.reverse.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.reverse.header"></a><h6>
-<a name="id629295"></a>
+<a name="id629293"></a>
             <a href="reverse.html#fusion.algorithm.transformation.metafunctions.reverse.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/transform.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/transform.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.transform"></a>transform</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.transform.description"></a><h6>
-<a name="id623854"></a>
+<a name="id623852"></a>
             <a href="transform.html#fusion.algorithm.transformation.metafunctions.transform.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             of <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.transform.unary_version_synopsis"></a><h6>
-<a name="id623970"></a>
+<a name="id623967"></a>
             <a href="transform.html#fusion.algorithm.transformation.metafunctions.transform.unary_version_synopsis">Unary
             version synopsis</a>
           </h6>
@@ -50,7 +50,7 @@
     <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id624173"></a><p class="title"><b>Table 1.75. Parameters</b></p>
+<a name="id624171"></a><p class="title"><b>Table 1.75. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -118,7 +118,7 @@
 </table>
 </div>
 <a name="fusion.algorithm.transformation.metafunctions.transform.expression_semantics"></a><h6>
-<a name="id624445"></a>
+<a name="id624442"></a>
             <a href="transform.html#fusion.algorithm.transformation.metafunctions.transform.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -136,7 +136,7 @@
             within <tt class="computeroutput"><span class="identifier">seq</span></tt>.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.transform.binary_version_synopsis"></a><h6>
-<a name="id624605"></a>
+<a name="id624602"></a>
             <a href="transform.html#fusion.algorithm.transformation.metafunctions.transform.binary_version_synopsis">Binary
             version synopsis</a>
           </h6>
@@ -150,7 +150,7 @@
     <span class="identifier">Sequence1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq1</span><span class="special">,</span> <span class="identifier">Sequence2</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq2</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id624872"></a><p class="title"><b>Table 1.76. Parameters</b></p>
+<a name="id624870"></a><p class="title"><b>Table 1.76. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -248,14 +248,14 @@
             within <tt class="computeroutput"><span class="identifier">seq1</span></tt> and <tt class="computeroutput"><span class="identifier">seq2</span></tt> respectively.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.transform.complexity"></a><h6>
-<a name="id625361"></a>
+<a name="id625358"></a>
             <a href="transform.html#fusion.algorithm.transformation.metafunctions.transform.complexity">Complexity</a>
           </h6>
 <p>
             Constant. Returns a view which is lazily evaluated.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.transform.header"></a><h6>
-<a name="id625391"></a>
+<a name="id625388"></a>
             <a href="transform.html#fusion.algorithm.transformation.metafunctions.transform.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -263,7 +263,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">transform</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.algorithm.transformation.metafunctions.transform.example"></a><h6>
-<a name="id625560"></a>
+<a name="id625558"></a>
             <a href="transform.html#fusion.algorithm.transformation.metafunctions.transform.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/zip.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/algorithm/transformation/metafunctions/zip.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.algorithm.transformation.metafunctions.zip"></a>zip</h5></div></div></div>
 <a name="fusion.algorithm.transformation.metafunctions.zip.description"></a><h6>
-<a name="id633717"></a>
+<a name="id633713"></a>
             <a href="zip.html#fusion.algorithm.transformation.metafunctions.zip.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             of the members of the component sequences.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.zip.synopsis"></a><h6>
-<a name="id633750"></a>
+<a name="id633746"></a>
             <a href="zip.html#fusion.algorithm.transformation.metafunctions.zip.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
 <span class="special">};</span>
 </pre>
 <a name="fusion.algorithm.transformation.metafunctions.zip.expression_semantics"></a><h6>
-<a name="id633902"></a>
+<a name="id633898"></a>
             <a href="zip.html#fusion.algorithm.transformation.metafunctions.zip.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -73,14 +73,14 @@
             <span class="char">'c'</span><span class="special">))</span></tt>
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.zip.complexity"></a><h6>
-<a name="id634217"></a>
+<a name="id634213"></a>
             <a href="zip.html#fusion.algorithm.transformation.metafunctions.zip.complexity">Complexity</a>
           </h6>
 <p>
             Constant.
           </p>
 <a name="fusion.algorithm.transformation.metafunctions.zip.header"></a><h6>
-<a name="id634247"></a>
+<a name="id634243"></a>
             <a href="zip.html#fusion.algorithm.transformation.metafunctions.zip.header">Header</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/change_log.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/change_log.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/change_log.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -49,7 +49,7 @@
       These containers are more or less counterparts of those in STL.
     </p>
 <a name="fusion.container.header"></a><h3>
-<a name="id527657"></a>
+<a name="id527506"></a>
       <a href="container.html#fusion.container.header">Header</a>
     </h3>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/cons.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/cons.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/cons.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.container.cons"></a>cons</h3></div></div></div>
 <a name="fusion.container.cons.description"></a><h4>
-<a name="id530553"></a>
+<a name="id530402"></a>
         <a href="cons.html#fusion.container.cons.description">Description</a>
       </h4>
 <p>
@@ -42,7 +42,7 @@
         Inlined Functions</a>).
       </p>
 <a name="fusion.container.cons.header"></a><h4>
-<a name="id530698"></a>
+<a name="id530547"></a>
         <a href="cons.html#fusion.container.cons.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">cons</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.cons.synopsis"></a><h4>
-<a name="id530866"></a>
+<a name="id530715"></a>
         <a href="cons.html#fusion.container.cons.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -58,7 +58,7 @@
 <span class="keyword">struct</span> <span class="identifier">cons</span><span class="special">;</span>
 </pre>
 <a name="fusion.container.cons.template_parameters"></a><h4>
-<a name="id530974"></a>
+<a name="id530823"></a>
         <a href="cons.html#fusion.container.cons.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -121,7 +121,7 @@
 </tbody>
 </table></div>
 <a name="fusion.container.cons.model_of"></a><h4>
-<a name="id531124"></a>
+<a name="id530973"></a>
         <a href="cons.html#fusion.container.cons.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li><a href="../sequence/concepts/forward_sequence.html" title="Forward
@@ -163,7 +163,7 @@
 </dl>
 </div>
 <a name="fusion.container.cons.expression_semantics"></a><h4>
-<a name="id531405"></a>
+<a name="id531254"></a>
         <a href="cons.html#fusion.container.cons.expression_semantics">Expression Semantics</a>
       </h4>
 <p>
@@ -298,7 +298,7 @@
         Inlined Functions</a>).
       </p></div>
 <a name="fusion.container.cons.example"></a><h4>
-<a name="id532055"></a>
+<a name="id531904"></a>
         <a href="cons.html#fusion.container.cons.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
         types using one of these conversion functions.
       </p>
 <a name="fusion.container.conversion.header"></a><h4>
-<a name="id556536"></a>
+<a name="id556385"></a>
         <a href="conversion.html#fusion.container.conversion.header">Header</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_list.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_list.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_list.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.conversion.functions.as_list"></a>as_list</h5></div></div></div>
 <a name="fusion.container.conversion.functions.as_list.description"></a><h6>
-<a name="id556671"></a>
+<a name="id556518"></a>
             <a href="as_list.html#fusion.container.conversion.functions.as_list.description">Description</a>
           </h6>
 <p>
             Convert a fusion sequence to a list.
           </p>
 <a name="fusion.container.conversion.functions.as_list.synopsis"></a><h6>
-<a name="id556720"></a>
+<a name="id556568"></a>
             <a href="as_list.html#fusion.container.conversion.functions.as_list.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">as_list</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.container.conversion.functions.as_list.parameters"></a><h6>
-<a name="id556978"></a>
+<a name="id556826"></a>
             <a href="as_list.html#fusion.container.conversion.functions.as_list.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -91,7 +91,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.conversion.functions.as_list.expression_semantics"></a><h6>
-<a name="id557086"></a>
+<a name="id556934"></a>
             <a href="as_list.html#fusion.container.conversion.functions.as_list.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -106,7 +106,7 @@
             <tt class="computeroutput"><span class="identifier">seq</span></tt>, to a list.
           </p>
 <a name="fusion.container.conversion.functions.as_list.header"></a><h6>
-<a name="id557249"></a>
+<a name="id557096"></a>
             <a href="as_list.html#fusion.container.conversion.functions.as_list.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -114,7 +114,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">as_list</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.conversion.functions.as_list.example"></a><h6>
-<a name="id557418"></a>
+<a name="id557266"></a>
             <a href="as_list.html#fusion.container.conversion.functions.as_list.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_map.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_map.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_map.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.conversion.functions.as_map"></a>as_map</h5></div></div></div>
 <a name="fusion.container.conversion.functions.as_map.description"></a><h6>
-<a name="id559279"></a>
+<a name="id559126"></a>
             <a href="as_map.html#fusion.container.conversion.functions.as_map.description">Description</a>
           </h6>
 <p>
             Convert a fusion sequence to a map.
           </p>
 <a name="fusion.container.conversion.functions.as_map.synopsis"></a><h6>
-<a name="id559327"></a>
+<a name="id559175"></a>
             <a href="as_map.html#fusion.container.conversion.functions.as_map.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">as_map</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.container.conversion.functions.as_map.parameters"></a><h6>
-<a name="id559585"></a>
+<a name="id559432"></a>
             <a href="as_map.html#fusion.container.conversion.functions.as_map.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -91,7 +91,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.conversion.functions.as_map.expression_semantics"></a><h6>
-<a name="id559693"></a>
+<a name="id559540"></a>
             <a href="as_map.html#fusion.container.conversion.functions.as_map.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -111,7 +111,7 @@
             There may be no duplicate fusion::pair key types.
           </p>
 <a name="fusion.container.conversion.functions.as_map.header"></a><h6>
-<a name="id559900"></a>
+<a name="id559747"></a>
             <a href="as_map.html#fusion.container.conversion.functions.as_map.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -119,7 +119,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">as_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.conversion.functions.as_map.example"></a><h6>
-<a name="id560070"></a>
+<a name="id559917"></a>
             <a href="as_map.html#fusion.container.conversion.functions.as_map.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_set.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_set.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_set.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.conversion.functions.as_set"></a>as_set</h5></div></div></div>
 <a name="fusion.container.conversion.functions.as_set.description"></a><h6>
-<a name="id558404"></a>
+<a name="id558252"></a>
             <a href="as_set.html#fusion.container.conversion.functions.as_set.description">Description</a>
           </h6>
 <p>
             Convert a fusion sequence to a set.
           </p>
 <a name="fusion.container.conversion.functions.as_set.synopsis"></a><h6>
-<a name="id558452"></a>
+<a name="id558300"></a>
             <a href="as_set.html#fusion.container.conversion.functions.as_set.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">as_set</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.container.conversion.functions.as_set.parameters"></a><h6>
-<a name="id558710"></a>
+<a name="id558558"></a>
             <a href="as_set.html#fusion.container.conversion.functions.as_set.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -91,7 +91,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.conversion.functions.as_set.expression_semantics"></a><h6>
-<a name="id558818"></a>
+<a name="id558666"></a>
             <a href="as_set.html#fusion.container.conversion.functions.as_set.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -110,7 +110,7 @@
             key types.
           </p>
 <a name="fusion.container.conversion.functions.as_set.header"></a><h6>
-<a name="id558991"></a>
+<a name="id558839"></a>
             <a href="as_set.html#fusion.container.conversion.functions.as_set.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -118,7 +118,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">as_set</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.conversion.functions.as_set.example"></a><h6>
-<a name="id559160"></a>
+<a name="id559007"></a>
             <a href="as_set.html#fusion.container.conversion.functions.as_set.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_vector.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_vector.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/functions/as_vector.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.conversion.functions.as_vector"></a>as_vector</h5></div></div></div>
 <a name="fusion.container.conversion.functions.as_vector.description"></a><h6>
-<a name="id557538"></a>
+<a name="id557385"></a>
             <a href="as_vector.html#fusion.container.conversion.functions.as_vector.description">Description</a>
           </h6>
 <p>
             Convert a fusion sequence to a vector.
           </p>
 <a name="fusion.container.conversion.functions.as_vector.synopsis"></a><h6>
-<a name="id557586"></a>
+<a name="id557434"></a>
             <a href="as_vector.html#fusion.container.conversion.functions.as_vector.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">as_vector</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.container.conversion.functions.as_vector.parameters"></a><h6>
-<a name="id557845"></a>
+<a name="id557692"></a>
             <a href="as_vector.html#fusion.container.conversion.functions.as_vector.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -91,7 +91,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.conversion.functions.as_vector.expression_semantics"></a><h6>
-<a name="id557953"></a>
+<a name="id557800"></a>
             <a href="as_vector.html#fusion.container.conversion.functions.as_vector.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -106,7 +106,7 @@
             <tt class="computeroutput"><span class="identifier">seq</span></tt>, to a vector.
           </p>
 <a name="fusion.container.conversion.functions.as_vector.header"></a><h6>
-<a name="id558116"></a>
+<a name="id557963"></a>
             <a href="as_vector.html#fusion.container.conversion.functions.as_vector.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -114,7 +114,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">as_vector</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.conversion.functions.as_vector.example"></a><h6>
-<a name="id558285"></a>
+<a name="id558133"></a>
             <a href="as_vector.html#fusion.container.conversion.functions.as_vector.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_list.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_list.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_list.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.conversion.metafunctions.as_list"></a>as_list</h5></div></div></div>
 <a name="fusion.container.conversion.metafunctions.as_list.description"></a><h6>
-<a name="id560264"></a>
+<a name="id560111"></a>
             <a href="as_list.html#fusion.container.conversion.metafunctions.as_list.description">Description</a>
           </h6>
 <p>
             Returns the result type of as_list.
           </p>
 <a name="fusion.container.conversion.metafunctions.as_list.synopsis"></a><h6>
-<a name="id560314"></a>
+<a name="id560161"></a>
             <a href="as_list.html#fusion.container.conversion.metafunctions.as_list.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -41,7 +41,7 @@
 <span class="keyword">struct</span> <span class="identifier">as_list</span><span class="special">;</span>
 </pre>
 <a name="fusion.container.conversion.metafunctions.as_list.parameters"></a><h6>
-<a name="id560395"></a>
+<a name="id560242"></a>
             <a href="as_list.html#fusion.container.conversion.metafunctions.as_list.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -86,7 +86,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.conversion.metafunctions.as_list.expression_semantics"></a><h6>
-<a name="id560512"></a>
+<a name="id560359"></a>
             <a href="as_list.html#fusion.container.conversion.metafunctions.as_list.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -102,7 +102,7 @@
             <tt class="computeroutput"><span class="identifier">Sequence</span></tt>, to a list.
           </p>
 <a name="fusion.container.conversion.metafunctions.as_list.header"></a><h6>
-<a name="id560669"></a>
+<a name="id560516"></a>
             <a href="as_list.html#fusion.container.conversion.metafunctions.as_list.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -110,7 +110,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">as_list</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.conversion.metafunctions.as_list.example"></a><h6>
-<a name="id560839"></a>
+<a name="id560686"></a>
             <a href="as_list.html#fusion.container.conversion.metafunctions.as_list.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_map.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_map.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_map.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.conversion.metafunctions.as_map"></a>as_map</h5></div></div></div>
 <a name="fusion.container.conversion.metafunctions.as_map.description"></a><h6>
-<a name="id562386"></a>
+<a name="id562233"></a>
             <a href="as_map.html#fusion.container.conversion.metafunctions.as_map.description">Description</a>
           </h6>
 <p>
             Returns the result type of as_map.
           </p>
 <a name="fusion.container.conversion.metafunctions.as_map.synopsis"></a><h6>
-<a name="id562436"></a>
+<a name="id562283"></a>
             <a href="as_map.html#fusion.container.conversion.metafunctions.as_map.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -41,7 +41,7 @@
 <span class="keyword">struct</span> <span class="identifier">as_map</span><span class="special">;</span>
 </pre>
 <a name="fusion.container.conversion.metafunctions.as_map.parameters"></a><h6>
-<a name="id562518"></a>
+<a name="id562365"></a>
             <a href="as_map.html#fusion.container.conversion.metafunctions.as_map.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -86,7 +86,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.conversion.metafunctions.as_map.expression_semantics"></a><h6>
-<a name="id562633"></a>
+<a name="id562480"></a>
             <a href="as_map.html#fusion.container.conversion.metafunctions.as_map.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -107,7 +107,7 @@
             There may be no duplicate fusion::pair key types.
           </p>
 <a name="fusion.container.conversion.metafunctions.as_map.header"></a><h6>
-<a name="id562836"></a>
+<a name="id562683"></a>
             <a href="as_map.html#fusion.container.conversion.metafunctions.as_map.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -115,7 +115,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">as_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.conversion.metafunctions.as_map.example"></a><h6>
-<a name="id563006"></a>
+<a name="id562852"></a>
             <a href="as_map.html#fusion.container.conversion.metafunctions.as_map.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_set.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_set.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_set.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.conversion.metafunctions.as_set"></a>as_set</h5></div></div></div>
 <a name="fusion.container.conversion.metafunctions.as_set.description"></a><h6>
-<a name="id561671"></a>
+<a name="id561518"></a>
             <a href="as_set.html#fusion.container.conversion.metafunctions.as_set.description">Description</a>
           </h6>
 <p>
             Returns the result type of as_set.
           </p>
 <a name="fusion.container.conversion.metafunctions.as_set.synopsis"></a><h6>
-<a name="id561720"></a>
+<a name="id561567"></a>
             <a href="as_set.html#fusion.container.conversion.metafunctions.as_set.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -41,7 +41,7 @@
 <span class="keyword">struct</span> <span class="identifier">as_set</span><span class="special">;</span>
 </pre>
 <a name="fusion.container.conversion.metafunctions.as_set.parameters"></a><h6>
-<a name="id561802"></a>
+<a name="id561649"></a>
             <a href="as_set.html#fusion.container.conversion.metafunctions.as_set.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -86,7 +86,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.conversion.metafunctions.as_set.expression_semantics"></a><h6>
-<a name="id561919"></a>
+<a name="id561766"></a>
             <a href="as_set.html#fusion.container.conversion.metafunctions.as_set.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -106,7 +106,7 @@
             key types.
           </p>
 <a name="fusion.container.conversion.metafunctions.as_set.header"></a><h6>
-<a name="id562088"></a>
+<a name="id561935"></a>
             <a href="as_set.html#fusion.container.conversion.metafunctions.as_set.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -114,7 +114,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">as_set</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.conversion.metafunctions.as_set.example"></a><h6>
-<a name="id562258"></a>
+<a name="id562105"></a>
             <a href="as_set.html#fusion.container.conversion.metafunctions.as_set.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_vector.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_vector.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/conversion/metafunctions/as_vector.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.conversion.metafunctions.as_vector"></a>as_vector</h5></div></div></div>
 <a name="fusion.container.conversion.metafunctions.as_vector.description"></a><h6>
-<a name="id560967"></a>
+<a name="id560814"></a>
             <a href="as_vector.html#fusion.container.conversion.metafunctions.as_vector.description">Description</a>
           </h6>
 <p>
             Returns the result type of as_vector.
           </p>
 <a name="fusion.container.conversion.metafunctions.as_vector.synopsis"></a><h6>
-<a name="id561016"></a>
+<a name="id560863"></a>
             <a href="as_vector.html#fusion.container.conversion.metafunctions.as_vector.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -41,7 +41,7 @@
 <span class="keyword">struct</span> <span class="identifier">as_vector</span><span class="special">;</span>
 </pre>
 <a name="fusion.container.conversion.metafunctions.as_vector.parameters"></a><h6>
-<a name="id561098"></a>
+<a name="id560945"></a>
             <a href="as_vector.html#fusion.container.conversion.metafunctions.as_vector.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -86,7 +86,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.conversion.metafunctions.as_vector.expression_semantics"></a><h6>
-<a name="id561212"></a>
+<a name="id561059"></a>
             <a href="as_vector.html#fusion.container.conversion.metafunctions.as_vector.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -102,7 +102,7 @@
             <tt class="computeroutput"><span class="identifier">Sequence</span></tt>, to a vector.
           </p>
 <a name="fusion.container.conversion.metafunctions.as_vector.header"></a><h6>
-<a name="id561371"></a>
+<a name="id561218"></a>
             <a href="as_vector.html#fusion.container.conversion.metafunctions.as_vector.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -110,7 +110,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">as_vector</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.conversion.metafunctions.as_vector.example"></a><h6>
-<a name="id561541"></a>
+<a name="id561388"></a>
             <a href="as_vector.html#fusion.container.conversion.metafunctions.as_vector.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -33,7 +33,7 @@
         These are the functions that you can use to generate various forms of Container from elemental values.
       </p>
 <a name="fusion.container.generation.header"></a><h4>
-<a name="id538032"></a>
+<a name="id537881"></a>
         <a href="generation.html#fusion.container.generation.header">Header</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/list_tie.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/list_tie.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/list_tie.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.functions.list_tie"></a>list_tie</h5></div></div></div>
 <a name="fusion.container.generation.functions.list_tie.description"></a><h6>
-<a name="id545246"></a>
+<a name="id545095"></a>
             <a href="list_tie.html#fusion.container.generation.functions.list_tie.description">Description</a>
           </h6>
 <p>
             Constructs a tie using a list sequence.
           </p>
 <a name="fusion.container.generation.functions.list_tie.synopsis"></a><h6>
-<a name="id545295"></a>
+<a name="id545144"></a>
             <a href="list_tie.html#fusion.container.generation.functions.list_tie.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -53,7 +53,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_LIST_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.functions.list_tie.parameters"></a><h6>
-<a name="id545613"></a>
+<a name="id545462"></a>
             <a href="list_tie.html#fusion.container.generation.functions.list_tie.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -100,7 +100,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.generation.functions.list_tie.expression_semantics"></a><h6>
-<a name="id545790"></a>
+<a name="id545638"></a>
             <a href="list_tie.html#fusion.container.generation.functions.list_tie.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -115,7 +115,7 @@
             <span class="bold"><b>Semantics</b></span>: Create a list of references from <tt class="computeroutput"><span class="identifier">x0</span><span class="special">,</span> <span class="identifier">x1</span><span class="special">,...</span> <span class="identifier">xN</span></tt>.
           </p>
 <a name="fusion.container.generation.functions.list_tie.header"></a><h6>
-<a name="id545959"></a>
+<a name="id545808"></a>
             <a href="list_tie.html#fusion.container.generation.functions.list_tie.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -123,7 +123,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">list_tie</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.functions.list_tie.example"></a><h6>
-<a name="id546129"></a>
+<a name="id545978"></a>
             <a href="list_tie.html#fusion.container.generation.functions.list_tie.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_cons.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_cons.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_cons.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.functions.make_cons"></a>make_cons</h5></div></div></div>
 <a name="fusion.container.generation.functions.make_cons.description"></a><h6>
-<a name="id539374"></a>
+<a name="id539223"></a>
             <a href="make_cons.html#fusion.container.generation.functions.make_cons.description">Description</a>
           </h6>
 <p>
@@ -35,7 +35,7 @@
             and optional <tt class="computeroutput"><span class="identifier">cdr</span></tt> (<span class="emphasis"><em>tail</em></span>).
           </p>
 <a name="fusion.container.generation.functions.make_cons.synopsis"></a><h6>
-<a name="id539454"></a>
+<a name="id539302"></a>
             <a href="make_cons.html#fusion.container.generation.functions.make_cons.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="identifier">make_cons</span><span class="special">(</span><span class="identifier">Car</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">car</span><span class="special">,</span> <span class="identifier">Cdr</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">cdr</span><span class="special">);</span>
 </pre>
 <a name="fusion.container.generation.functions.make_cons.parameters"></a><h6>
-<a name="id539790"></a>
+<a name="id539638"></a>
             <a href="make_cons.html#fusion.container.generation.functions.make_cons.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -112,7 +112,7 @@
 </tbody>
 </table></div>
 <a name="fusion.container.generation.functions.make_cons.expression_semantics"></a><h6>
-<a name="id539956"></a>
+<a name="id539804"></a>
             <a href="make_cons.html#fusion.container.generation.functions.make_cons.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -128,7 +128,7 @@
             (<span class="emphasis"><em>tail</em></span>).
           </p>
 <a name="fusion.container.generation.functions.make_cons.header"></a><h6>
-<a name="id540211"></a>
+<a name="id540059"></a>
             <a href="make_cons.html#fusion.container.generation.functions.make_cons.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -136,14 +136,14 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_cons</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.functions.make_cons.example"></a><h6>
-<a name="id540380"></a>
+<a name="id540229"></a>
             <a href="make_cons.html#fusion.container.generation.functions.make_cons.example">Example</a>
           </h6>
 <pre class="programlisting">
 <span class="identifier">make_cons</span><span class="special">(</span><span class="char">'x'</span><span class="special">,</span> <span class="identifier">make_cons</span><span class="special">(</span><span class="number">123</span><span class="special">))</span>
 </pre>
 <a name="fusion.container.generation.functions.make_cons.see_also"></a><h6>
-<a name="id540456"></a>
+<a name="id540305"></a>
             <a href="make_cons.html#fusion.container.generation.functions.make_cons.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_list.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_list.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_list.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.functions.make_list"></a>make_list</h5></div></div></div>
 <a name="fusion.container.generation.functions.make_list.description"></a><h6>
-<a name="id538232"></a>
+<a name="id538080"></a>
             <a href="make_list.html#fusion.container.generation.functions.make_list.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             from one or more values.
           </p>
 <a name="fusion.container.generation.functions.make_list.synopsis"></a><h6>
-<a name="id538280"></a>
+<a name="id538129"></a>
             <a href="make_list.html#fusion.container.generation.functions.make_list.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -54,7 +54,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_LIST_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.functions.make_list.parameters"></a><h6>
-<a name="id538646"></a>
+<a name="id538494"></a>
             <a href="make_list.html#fusion.container.generation.functions.make_list.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -101,7 +101,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.generation.functions.make_list.expression_semantics"></a><h6>
-<a name="id538822"></a>
+<a name="id538670"></a>
             <a href="make_list.html#fusion.container.generation.functions.make_list.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -115,7 +115,7 @@
             <span class="bold"><b>Semantics</b></span>: Create a list from <tt class="computeroutput"><span class="identifier">x0</span><span class="special">,</span> <span class="identifier">x1</span><span class="special">,...</span> <span class="identifier">xN</span></tt>.
           </p>
 <a name="fusion.container.generation.functions.make_list.header"></a><h6>
-<a name="id539048"></a>
+<a name="id538896"></a>
             <a href="make_list.html#fusion.container.generation.functions.make_list.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -123,14 +123,14 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_list</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.functions.make_list.example"></a><h6>
-<a name="id539217"></a>
+<a name="id539066"></a>
             <a href="make_list.html#fusion.container.generation.functions.make_list.example">Example</a>
           </h6>
 <pre class="programlisting">
 <span class="identifier">make_list</span><span class="special">(</span><span class="number">123</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">,</span> <span class="number">12.5</span><span class="special">)</span>
 </pre>
 <a name="fusion.container.generation.functions.make_list.see_also"></a><h6>
-<a name="id539295"></a>
+<a name="id539143"></a>
             <a href="make_list.html#fusion.container.generation.functions.make_list.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_map.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_map.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_map.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.functions.make_map"></a>make_map</h5></div></div></div>
 <a name="fusion.container.generation.functions.make_map.description"></a><h6>
-<a name="id542858"></a>
+<a name="id542706"></a>
             <a href="make_map.html#fusion.container.generation.functions.make_map.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             from one or more key/data pairs.
           </p>
 <a name="fusion.container.generation.functions.make_map.synopsis"></a><h6>
-<a name="id542907"></a>
+<a name="id542756"></a>
             <a href="make_map.html#fusion.container.generation.functions.make_map.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <p>
             The variadic function accepts <tt class="computeroutput"><span class="number">0</span></tt>
             to <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
- <sup>[<a name="id543284" href="#ftn.id543284">9</a>]</sup>
+ <sup>[<a name="id543133" href="#ftn.id543133">10</a>]</sup>
             elements, where <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
             is a user definable predefined maximum that defaults to <tt class="computeroutput"><span class="number">10</span></tt>. You may define the preprocessor constant
             <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
@@ -57,7 +57,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_VECTOR_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.functions.make_map.parameters"></a><h6>
-<a name="id543389"></a>
+<a name="id543238"></a>
             <a href="make_map.html#fusion.container.generation.functions.make_map.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -125,7 +125,7 @@
 </tbody>
 </table></div>
 <a name="fusion.container.generation.functions.make_map.expression_semantics"></a><h6>
-<a name="id543656"></a>
+<a name="id543505"></a>
             <a href="make_map.html#fusion.container.generation.functions.make_map.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -146,7 +146,7 @@
             key types.
           </p>
 <a name="fusion.container.generation.functions.make_map.header"></a><h6>
-<a name="id543993"></a>
+<a name="id543841"></a>
             <a href="make_map.html#fusion.container.generation.functions.make_map.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -154,7 +154,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.functions.make_map.example"></a><h6>
-<a name="id544163"></a>
+<a name="id544012"></a>
             <a href="make_map.html#fusion.container.generation.functions.make_map.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -163,7 +163,7 @@
   <span class="special">,</span> make_pair<span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;(</span><span class="string">"Men"</span><span class="special">))</span>
 </pre>
 <a name="fusion.container.generation.functions.make_map.see_also"></a><h6>
-<a name="id544295"></a>
+<a name="id544143"></a>
             <a href="make_map.html#fusion.container.generation.functions.make_map.see_also">See
             also</a>
           </h6>
@@ -173,7 +173,7 @@
           </p>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id543284" href="#id543284">9</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id543133" href="#id543133">10</a>] </sup>
                 <tt class="computeroutput"><span class="identifier">map</span></tt> is implemented
                 in terms of the vector. That is why we reuse <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
               </p></div>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_set.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_set.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_set.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.functions.make_set"></a>make_set</h5></div></div></div>
 <a name="fusion.container.generation.functions.make_set.description"></a><h6>
-<a name="id541675"></a>
+<a name="id541524"></a>
             <a href="make_set.html#fusion.container.generation.functions.make_set.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             from one or more values.
           </p>
 <a name="fusion.container.generation.functions.make_set.synopsis"></a><h6>
-<a name="id541724"></a>
+<a name="id541573"></a>
             <a href="make_set.html#fusion.container.generation.functions.make_set.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
 <p>
             The variadic function accepts <tt class="computeroutput"><span class="number">0</span></tt>
             to <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
- <sup>[<a name="id542013" href="#ftn.id542013">8</a>]</sup>
+ <sup>[<a name="id541862" href="#ftn.id541862">9</a>]</sup>
             elements, where <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
             is a user definable predefined maximum that defaults to <tt class="computeroutput"><span class="number">10</span></tt>. You may define the preprocessor constant
             <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
@@ -55,7 +55,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_VECTOR_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.functions.make_set.parameters"></a><h6>
-<a name="id542118"></a>
+<a name="id541967"></a>
             <a href="make_set.html#fusion.container.generation.functions.make_set.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -102,7 +102,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.generation.functions.make_set.expression_semantics"></a><h6>
-<a name="id542294"></a>
+<a name="id542143"></a>
             <a href="make_set.html#fusion.container.generation.functions.make_set.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -120,7 +120,7 @@
             key types.
           </p>
 <a name="fusion.container.generation.functions.make_set.header"></a><h6>
-<a name="id542532"></a>
+<a name="id542380"></a>
             <a href="make_set.html#fusion.container.generation.functions.make_set.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -128,14 +128,14 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_set</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.functions.make_set.example"></a><h6>
-<a name="id542702"></a>
+<a name="id542550"></a>
             <a href="make_set.html#fusion.container.generation.functions.make_set.example">Example</a>
           </h6>
 <pre class="programlisting">
 <span class="identifier">make_set</span><span class="special">(</span><span class="number">123</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">,</span> <span class="number">12.5</span><span class="special">)</span>
 </pre>
 <a name="fusion.container.generation.functions.make_set.see_also"></a><h6>
-<a name="id542779"></a>
+<a name="id542627"></a>
             <a href="make_set.html#fusion.container.generation.functions.make_set.see_also">See
             also</a>
           </h6>
@@ -144,7 +144,7 @@
           </p>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id542013" href="#id542013">8</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id541862" href="#id541862">9</a>] </sup>
                 <tt class="computeroutput"><span class="identifier">set</span></tt> is implemented
                 in terms of the vector. That is why we reuse <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
               </p></div>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_vector.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_vector.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/make_vector.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.functions.make_vector"></a>make_vector</h5></div></div></div>
 <a name="fusion.container.generation.functions.make_vector.description"></a><h6>
-<a name="id540534"></a>
+<a name="id540382"></a>
             <a href="make_vector.html#fusion.container.generation.functions.make_vector.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             from one or more values.
           </p>
 <a name="fusion.container.generation.functions.make_vector.synopsis"></a><h6>
-<a name="id540581"></a>
+<a name="id540430"></a>
             <a href="make_vector.html#fusion.container.generation.functions.make_vector.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -54,7 +54,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_VECTOR_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.functions.make_vector.parameters"></a><h6>
-<a name="id540945"></a>
+<a name="id540794"></a>
             <a href="make_vector.html#fusion.container.generation.functions.make_vector.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -101,7 +101,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.generation.functions.make_vector.expression_semantics"></a><h6>
-<a name="id541121"></a>
+<a name="id540970"></a>
             <a href="make_vector.html#fusion.container.generation.functions.make_vector.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -115,7 +115,7 @@
             <span class="bold"><b>Semantics</b></span>: Create a vector from <tt class="computeroutput"><span class="identifier">x0</span><span class="special">,</span> <span class="identifier">x1</span><span class="special">,...</span> <span class="identifier">xN</span></tt>.
           </p>
 <a name="fusion.container.generation.functions.make_vector.header"></a><h6>
-<a name="id541348"></a>
+<a name="id541196"></a>
             <a href="make_vector.html#fusion.container.generation.functions.make_vector.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -123,14 +123,14 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_vector</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.functions.make_vector.example"></a><h6>
-<a name="id541518"></a>
+<a name="id541367"></a>
             <a href="make_vector.html#fusion.container.generation.functions.make_vector.example">Example</a>
           </h6>
 <pre class="programlisting">
 <span class="identifier">make_vector</span><span class="special">(</span><span class="number">123</span><span class="special">,</span> <span class="string">"hello"</span><span class="special">,</span> <span class="number">12.5</span><span class="special">)</span>
 </pre>
 <a name="fusion.container.generation.functions.make_vector.see_also"></a><h6>
-<a name="id541596"></a>
+<a name="id541445"></a>
             <a href="make_vector.html#fusion.container.generation.functions.make_vector.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/map_tie.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/map_tie.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/map_tie.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.functions.map_tie"></a>map_tie</h5></div></div></div>
 <a name="fusion.container.generation.functions.map_tie.description"></a><h6>
-<a name="id547306"></a>
+<a name="id547155"></a>
             <a href="map_tie.html#fusion.container.generation.functions.map_tie.description">Description</a>
           </h6>
 <p>
             Constructs a tie using a map sequence.
           </p>
 <a name="fusion.container.generation.functions.map_tie.synopsis"></a><h6>
-<a name="id547355"></a>
+<a name="id547204"></a>
             <a href="map_tie.html#fusion.container.generation.functions.map_tie.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -53,7 +53,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_MAP_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.functions.map_tie.parameters"></a><h6>
-<a name="id547825"></a>
+<a name="id547674"></a>
             <a href="map_tie.html#fusion.container.generation.functions.map_tie.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -122,7 +122,7 @@
 </tbody>
 </table></div>
 <a name="fusion.container.generation.functions.map_tie.expression_semantics"></a><h6>
-<a name="id548092"></a>
+<a name="id547940"></a>
             <a href="map_tie.html#fusion.container.generation.functions.map_tie.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -138,7 +138,7 @@
             <span class="bold"><b>Semantics</b></span>: Create a map of references from <tt class="computeroutput"><span class="identifier">x0</span><span class="special">,</span> <span class="identifier">x1</span><span class="special">,...</span> <span class="identifier">xN</span></tt> with keys <tt class="computeroutput"><span class="identifier">K0</span><span class="special">,</span> <span class="identifier">K1</span><span class="special">,...</span> <span class="identifier">KN</span></tt>
           </p>
 <a name="fusion.container.generation.functions.map_tie.header"></a><h6>
-<a name="id548377"></a>
+<a name="id548225"></a>
             <a href="map_tie.html#fusion.container.generation.functions.map_tie.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -146,7 +146,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">map_tie</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.functions.map_tie.example"></a><h6>
-<a name="id548546"></a>
+<a name="id548395"></a>
             <a href="map_tie.html#fusion.container.generation.functions.map_tie.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/tiers.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/tiers.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/tiers.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -49,7 +49,7 @@
             a vector
             of type <tt class="computeroutput">vector<span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;,</span> <span class="keyword">char</span><span class="special">&amp;,</span> <span class="keyword">double</span><span class="special">&amp;&gt;</span></tt>. The same result could be achieved
             with the call make_vector(ref(i), ref(c), ref(a))
- <sup>[<a name="id544767" href="#ftn.id544767">10</a>]</sup>
+ <sup>[<a name="id544616" href="#ftn.id544616">11</a>]</sup>
             .
           </p>
 <p>
@@ -67,7 +67,7 @@
             when calling functions which return sequences.
           </p>
 <a name="fusion.container.generation.functions.tiers.ignore"></a><h6>
-<a name="id545073"></a>
+<a name="id544922"></a>
             <a href="tiers.html#fusion.container.generation.functions.tiers.ignore">Ignore</a>
           </h6>
 <p>
@@ -82,7 +82,7 @@
 </pre>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id544767" href="#id544767">10</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id544616" href="#id544616">11</a>] </sup>
                 see Boost.Ref
                 for details about <tt class="computeroutput"><span class="identifier">ref</span></tt>
               </p></div>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/vector_tie.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/vector_tie.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/functions/vector_tie.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.functions.vector_tie"></a>vector_tie</h5></div></div></div>
 <a name="fusion.container.generation.functions.vector_tie.description"></a><h6>
-<a name="id546274"></a>
+<a name="id546123"></a>
             <a href="vector_tie.html#fusion.container.generation.functions.vector_tie.description">Description</a>
           </h6>
 <p>
             Constructs a tie using a vector sequence.
           </p>
 <a name="fusion.container.generation.functions.vector_tie.synopsis"></a><h6>
-<a name="id546324"></a>
+<a name="id546172"></a>
             <a href="vector_tie.html#fusion.container.generation.functions.vector_tie.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -53,7 +53,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_VECTOR_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.functions.vector_tie.parameters"></a><h6>
-<a name="id546643"></a>
+<a name="id546492"></a>
             <a href="vector_tie.html#fusion.container.generation.functions.vector_tie.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -100,7 +100,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.generation.functions.vector_tie.expression_semantics"></a><h6>
-<a name="id546820"></a>
+<a name="id546668"></a>
             <a href="vector_tie.html#fusion.container.generation.functions.vector_tie.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -115,7 +115,7 @@
             <span class="bold"><b>Semantics</b></span>: Create a vector of references from <tt class="computeroutput"><span class="identifier">x0</span><span class="special">,</span> <span class="identifier">x1</span><span class="special">,...</span> <span class="identifier">xN</span></tt>.
           </p>
 <a name="fusion.container.generation.functions.vector_tie.header"></a><h6>
-<a name="id546989"></a>
+<a name="id546838"></a>
             <a href="vector_tie.html#fusion.container.generation.functions.vector_tie.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -123,7 +123,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">vector_tie</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.functions.vector_tie.example"></a><h6>
-<a name="id547159"></a>
+<a name="id547008"></a>
             <a href="vector_tie.html#fusion.container.generation.functions.vector_tie.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/list_tie.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/list_tie.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/list_tie.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.metafunctions.list_tie"></a>list_tie</h5></div></div></div>
 <a name="fusion.container.generation.metafunctions.list_tie.description"></a><h6>
-<a name="id553618"></a>
+<a name="id553467"></a>
             <a href="list_tie.html#fusion.container.generation.metafunctions.list_tie.description">Description</a>
           </h6>
 <p>
             Returns the result type of list_tie.
           </p>
 <a name="fusion.container.generation.metafunctions.list_tie.synopsis"></a><h6>
-<a name="id553668"></a>
+<a name="id553517"></a>
             <a href="list_tie.html#fusion.container.generation.metafunctions.list_tie.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -52,7 +52,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_LIST_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.list_tie.parameters"></a><h6>
-<a name="id553876"></a>
+<a name="id553725"></a>
             <a href="list_tie.html#fusion.container.generation.metafunctions.list_tie.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.generation.metafunctions.list_tie.expression_semantics"></a><h6>
-<a name="id554019"></a>
+<a name="id553868"></a>
             <a href="list_tie.html#fusion.container.generation.metafunctions.list_tie.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -114,7 +114,7 @@
             <span class="bold"><b>Semantics</b></span>: Create a list of references from <tt class="computeroutput"><span class="identifier">T0</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="identifier">TN</span></tt>.
           </p>
 <a name="fusion.container.generation.metafunctions.list_tie.header"></a><h6>
-<a name="id554208"></a>
+<a name="id554057"></a>
             <a href="list_tie.html#fusion.container.generation.metafunctions.list_tie.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -122,7 +122,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">list_tie</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.list_tie.example"></a><h6>
-<a name="id554378"></a>
+<a name="id554228"></a>
             <a href="list_tie.html#fusion.container.generation.metafunctions.list_tie.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_cons.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_cons.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_cons.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.metafunctions.make_cons"></a>make_cons</h5></div></div></div>
 <a name="fusion.container.generation.metafunctions.make_cons.description"></a><h6>
-<a name="id549673"></a>
+<a name="id549522"></a>
             <a href="make_cons.html#fusion.container.generation.metafunctions.make_cons.description">Description</a>
           </h6>
 <p>
             Returns the result type of make_cons.
           </p>
 <a name="fusion.container.generation.metafunctions.make_cons.synopsis"></a><h6>
-<a name="id549723"></a>
+<a name="id549572"></a>
             <a href="make_cons.html#fusion.container.generation.metafunctions.make_cons.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -41,7 +41,7 @@
 <span class="keyword">struct</span> <span class="identifier">make_cons</span><span class="special">;</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_cons.parameters"></a><h6>
-<a name="id549834"></a>
+<a name="id549682"></a>
             <a href="make_cons.html#fusion.container.generation.metafunctions.make_cons.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -105,7 +105,7 @@
 </tbody>
 </table></div>
 <a name="fusion.container.generation.metafunctions.make_cons.expression_semantics"></a><h6>
-<a name="id549989"></a>
+<a name="id549838"></a>
             <a href="make_cons.html#fusion.container.generation.metafunctions.make_cons.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -123,7 +123,7 @@
             (<span class="emphasis"><em>tail</em></span>).
           </p>
 <a name="fusion.container.generation.metafunctions.make_cons.header"></a><h6>
-<a name="id550194"></a>
+<a name="id550042"></a>
             <a href="make_cons.html#fusion.container.generation.metafunctions.make_cons.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -131,7 +131,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_cons</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_cons.example"></a><h6>
-<a name="id550364"></a>
+<a name="id550213"></a>
             <a href="make_cons.html#fusion.container.generation.metafunctions.make_cons.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_list.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_list.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_list.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.metafunctions.make_list"></a>make_list</h5></div></div></div>
 <a name="fusion.container.generation.metafunctions.make_list.description"></a><h6>
-<a name="id548775"></a>
+<a name="id548624"></a>
             <a href="make_list.html#fusion.container.generation.metafunctions.make_list.description">Description</a>
           </h6>
 <p>
             Returns the result type of make_list.
           </p>
 <a name="fusion.container.generation.metafunctions.make_list.synopsis"></a><h6>
-<a name="id548825"></a>
+<a name="id548673"></a>
             <a href="make_list.html#fusion.container.generation.metafunctions.make_list.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -52,7 +52,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_LIST_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_list.parameters"></a><h6>
-<a name="id549032"></a>
+<a name="id548881"></a>
             <a href="make_list.html#fusion.container.generation.metafunctions.make_list.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.generation.metafunctions.make_list.expression_semantics"></a><h6>
-<a name="id549176"></a>
+<a name="id549025"></a>
             <a href="make_list.html#fusion.container.generation.metafunctions.make_list.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -115,7 +115,7 @@
             <span class="bold"><b>Semantics</b></span>: Create a list from <tt class="computeroutput"><span class="identifier">T0</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="identifier">TN</span></tt>.
           </p>
 <a name="fusion.container.generation.metafunctions.make_list.header"></a><h6>
-<a name="id549371"></a>
+<a name="id549220"></a>
             <a href="make_list.html#fusion.container.generation.metafunctions.make_list.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -123,7 +123,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_list</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_list.example"></a><h6>
-<a name="id549542"></a>
+<a name="id549390"></a>
             <a href="make_list.html#fusion.container.generation.metafunctions.make_list.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_map.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_map.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_map.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.metafunctions.make_map"></a>make_map</h5></div></div></div>
 <a name="fusion.container.generation.metafunctions.make_map.description"></a><h6>
-<a name="id552320"></a>
+<a name="id552168"></a>
             <a href="make_map.html#fusion.container.generation.metafunctions.make_map.description">Description</a>
           </h6>
 <p>
             Returns the result type of make_map.
           </p>
 <a name="fusion.container.generation.metafunctions.make_map.synopsis"></a><h6>
-<a name="id552370"></a>
+<a name="id552218"></a>
             <a href="make_map.html#fusion.container.generation.metafunctions.make_map.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
 <p>
             The variadic function accepts <tt class="computeroutput"><span class="number">0</span></tt>
             to <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
- <sup>[<a name="id552558" href="#ftn.id552558">12</a>]</sup>
+ <sup>[<a name="id552407" href="#ftn.id552407">13</a>]</sup>
             elements, where <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
             is a user definable predefined maximum that defaults to <tt class="computeroutput"><span class="number">10</span></tt>. You may define the preprocessor constant
             <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
@@ -55,7 +55,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_VECTOR_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_map.parameters"></a><h6>
-<a name="id552665"></a>
+<a name="id552514"></a>
             <a href="make_map.html#fusion.container.generation.metafunctions.make_map.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -123,7 +123,7 @@
 </tbody>
 </table></div>
 <a name="fusion.container.generation.metafunctions.make_map.expression_semantics"></a><h6>
-<a name="id552922"></a>
+<a name="id552770"></a>
             <a href="make_map.html#fusion.container.generation.metafunctions.make_map.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -143,7 +143,7 @@
             key types.
           </p>
 <a name="fusion.container.generation.metafunctions.make_map.header"></a><h6>
-<a name="id553261"></a>
+<a name="id553110"></a>
             <a href="make_map.html#fusion.container.generation.metafunctions.make_map.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -151,14 +151,14 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_map.example"></a><h6>
-<a name="id553432"></a>
+<a name="id553281"></a>
             <a href="make_map.html#fusion.container.generation.metafunctions.make_map.example">Example</a>
           </h6>
 <pre class="programlisting">
 <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">make_map</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">char</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">type</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_map.see_also"></a><h6>
-<a name="id553537"></a>
+<a name="id553386"></a>
             <a href="make_map.html#fusion.container.generation.metafunctions.make_map.see_also">See
             also</a>
           </h6>
@@ -167,7 +167,7 @@
           </p>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id552558" href="#id552558">12</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id552407" href="#id552407">13</a>] </sup>
                 <tt class="computeroutput"><span class="identifier">map</span></tt> is implemented
                 in terms of the vector. That is why we reuse <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
               </p></div>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_set.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_set.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_set.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.metafunctions.make_set"></a>make_set</h5></div></div></div>
 <a name="fusion.container.generation.metafunctions.make_set.description"></a><h6>
-<a name="id551398"></a>
+<a name="id551247"></a>
             <a href="make_set.html#fusion.container.generation.metafunctions.make_set.description">Description</a>
           </h6>
 <p>
             Returns the result type of make_set.
           </p>
 <a name="fusion.container.generation.metafunctions.make_set.synopsis"></a><h6>
-<a name="id551448"></a>
+<a name="id551296"></a>
             <a href="make_set.html#fusion.container.generation.metafunctions.make_set.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <p>
             The variadic function accepts <tt class="computeroutput"><span class="number">0</span></tt>
             to <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
- <sup>[<a name="id551582" href="#ftn.id551582">11</a>]</sup>
+ <sup>[<a name="id551430" href="#ftn.id551430">12</a>]</sup>
             elements, where <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
             is a user definable predefined maximum that defaults to <tt class="computeroutput"><span class="number">10</span></tt>. You may define the preprocessor constant
             <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
@@ -53,7 +53,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_VECTOR_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_set.parameters"></a><h6>
-<a name="id551687"></a>
+<a name="id551535"></a>
             <a href="make_set.html#fusion.container.generation.metafunctions.make_set.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -100,7 +100,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.generation.metafunctions.make_set.expression_semantics"></a><h6>
-<a name="id551830"></a>
+<a name="id551679"></a>
             <a href="make_set.html#fusion.container.generation.metafunctions.make_set.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -120,7 +120,7 @@
             key types.
           </p>
 <a name="fusion.container.generation.metafunctions.make_set.header"></a><h6>
-<a name="id552034"></a>
+<a name="id551882"></a>
             <a href="make_set.html#fusion.container.generation.metafunctions.make_set.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -128,7 +128,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_set</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_set.example"></a><h6>
-<a name="id552205"></a>
+<a name="id552053"></a>
             <a href="make_set.html#fusion.container.generation.metafunctions.make_set.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -136,7 +136,7 @@
 </pre>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id551582" href="#id551582">11</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id551430" href="#id551430">12</a>] </sup>
                 <tt class="computeroutput"><span class="identifier">set</span></tt> is implemented
                 in terms of the vector. That is why we reuse <tt class="computeroutput"><span class="identifier">FUSION_MAX_VECTOR_SIZE</span></tt>
               </p></div>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_vector.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_vector.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/make_vector.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.metafunctions.make_vector"></a>make_vector</h5></div></div></div>
 <a name="fusion.container.generation.metafunctions.make_vector.description"></a><h6>
-<a name="id550501"></a>
+<a name="id550349"></a>
             <a href="make_vector.html#fusion.container.generation.metafunctions.make_vector.description">Description</a>
           </h6>
 <p>
             Returns the result type of make_vector.
           </p>
 <a name="fusion.container.generation.metafunctions.make_vector.synopsis"></a><h6>
-<a name="id550551"></a>
+<a name="id550400"></a>
             <a href="make_vector.html#fusion.container.generation.metafunctions.make_vector.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -52,7 +52,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_VECTOR_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_vector.parameters"></a><h6>
-<a name="id550760"></a>
+<a name="id550609"></a>
             <a href="make_vector.html#fusion.container.generation.metafunctions.make_vector.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.generation.metafunctions.make_vector.expression_semantics"></a><h6>
-<a name="id550903"></a>
+<a name="id550752"></a>
             <a href="make_vector.html#fusion.container.generation.metafunctions.make_vector.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -115,7 +115,7 @@
             <span class="bold"><b>Semantics</b></span>: Create a vector from <tt class="computeroutput"><span class="identifier">T0</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="identifier">TN</span></tt>.
           </p>
 <a name="fusion.container.generation.metafunctions.make_vector.header"></a><h6>
-<a name="id551096"></a>
+<a name="id550945"></a>
             <a href="make_vector.html#fusion.container.generation.metafunctions.make_vector.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -123,7 +123,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_list</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.make_vector.example"></a><h6>
-<a name="id551267"></a>
+<a name="id551116"></a>
             <a href="make_vector.html#fusion.container.generation.metafunctions.make_vector.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/map_tie.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/map_tie.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/map_tie.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.metafunctions.map_tie"></a>map_tie</h5></div></div></div>
 <a name="fusion.container.generation.metafunctions.map_tie.description"></a><h6>
-<a name="id555353"></a>
+<a name="id555203"></a>
             <a href="map_tie.html#fusion.container.generation.metafunctions.map_tie.description">Description</a>
           </h6>
 <p>
             Returns the result type of map_tie.
           </p>
 <a name="fusion.container.generation.metafunctions.map_tie.synopsis"></a><h6>
-<a name="id555403"></a>
+<a name="id555253"></a>
             <a href="map_tie.html#fusion.container.generation.metafunctions.map_tie.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -52,7 +52,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_MAP_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.map_tie.parameters"></a><h6>
-<a name="id555665"></a>
+<a name="id555514"></a>
             <a href="map_tie.html#fusion.container.generation.metafunctions.map_tie.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -120,7 +120,7 @@
 </tbody>
 </table></div>
 <a name="fusion.container.generation.metafunctions.map_tie.expression_semantics"></a><h6>
-<a name="id555877"></a>
+<a name="id555726"></a>
             <a href="map_tie.html#fusion.container.generation.metafunctions.map_tie.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -136,7 +136,7 @@
             <span class="bold"><b>Semantics</b></span>: Create a map of references from <tt class="computeroutput"><span class="identifier">D0</span><span class="special">,</span> <span class="identifier">D1</span><span class="special">,...</span> <span class="identifier">DN</span></tt> with keys <tt class="computeroutput"><span class="identifier">K0</span><span class="special">,</span> <span class="identifier">K1</span><span class="special">,...</span> <span class="identifier">KN</span></tt>
           </p>
 <a name="fusion.container.generation.metafunctions.map_tie.header"></a><h6>
-<a name="id556182"></a>
+<a name="id556032"></a>
             <a href="map_tie.html#fusion.container.generation.metafunctions.map_tie.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -144,7 +144,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">map_tie</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.map_tie.example"></a><h6>
-<a name="id556353"></a>
+<a name="id556202"></a>
             <a href="map_tie.html#fusion.container.generation.metafunctions.map_tie.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/vector_tie.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/vector_tie.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/generation/metafunctions/vector_tie.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.container.generation.metafunctions.vector_tie"></a>vector_tie</h5></div></div></div>
 <a name="fusion.container.generation.metafunctions.vector_tie.description"></a><h6>
-<a name="id554485"></a>
+<a name="id554335"></a>
             <a href="vector_tie.html#fusion.container.generation.metafunctions.vector_tie.description">Description</a>
           </h6>
 <p>
             Returns the result type of vector_tie.
           </p>
 <a name="fusion.container.generation.metafunctions.vector_tie.synopsis"></a><h6>
-<a name="id554535"></a>
+<a name="id554385"></a>
             <a href="vector_tie.html#fusion.container.generation.metafunctions.vector_tie.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -52,7 +52,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_VECTOR_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.vector_tie.parameters"></a><h6>
-<a name="id554743"></a>
+<a name="id554592"></a>
             <a href="vector_tie.html#fusion.container.generation.metafunctions.vector_tie.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.generation.metafunctions.vector_tie.expression_semantics"></a><h6>
-<a name="id554886"></a>
+<a name="id554736"></a>
             <a href="vector_tie.html#fusion.container.generation.metafunctions.vector_tie.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -114,7 +114,7 @@
             <span class="bold"><b>Semantics</b></span>: Create a vector of references from <tt class="computeroutput"><span class="identifier">T0</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="identifier">TN</span></tt>.
           </p>
 <a name="fusion.container.generation.metafunctions.vector_tie.header"></a><h6>
-<a name="id555076"></a>
+<a name="id554926"></a>
             <a href="vector_tie.html#fusion.container.generation.metafunctions.vector_tie.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -122,7 +122,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">vector_tie</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.generation.metafunctions.vector_tie.example"></a><h6>
-<a name="id555247"></a>
+<a name="id555096"></a>
             <a href="vector_tie.html#fusion.container.generation.metafunctions.vector_tie.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/list.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/list.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/list.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.container.list"></a>list</h3></div></div></div>
 <a name="fusion.container.list.description"></a><h4>
-<a name="id532388"></a>
+<a name="id532236"></a>
         <a href="list.html#fusion.container.list.description">Description</a>
       </h4>
 <p>
@@ -38,7 +38,7 @@
         runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).
       </p>
 <a name="fusion.container.list.header"></a><h4>
-<a name="id532485"></a>
+<a name="id532333"></a>
         <a href="list.html#fusion.container.list.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">list_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.list.synopsis"></a><h4>
-<a name="id532778"></a>
+<a name="id532626"></a>
         <a href="list.html#fusion.container.list.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -79,7 +79,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_LIST_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.list.template_parameters"></a><h4>
-<a name="id533108"></a>
+<a name="id532957"></a>
         <a href="list.html#fusion.container.list.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -124,7 +124,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.list.model_of"></a><h4>
-<a name="id533227"></a>
+<a name="id533076"></a>
         <a href="list.html#fusion.container.list.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li><a href="../sequence/concepts/forward_sequence.html" title="Forward
@@ -157,7 +157,7 @@
 </dl>
 </div>
 <a name="fusion.container.list.expression_semantics"></a><h4>
-<a name="id533440"></a>
+<a name="id533289"></a>
         <a href="list.html#fusion.container.list.expression_semantics">Expression Semantics</a>
       </h4>
 <p>
@@ -265,7 +265,7 @@
         Inlined Functions</a>).
       </p></div>
 <a name="fusion.container.list.example"></a><h4>
-<a name="id534016"></a>
+<a name="id533865"></a>
         <a href="list.html#fusion.container.list.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/map.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/map.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/map.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.container.map"></a>map</h3></div></div></div>
 <a name="fusion.container.map.description"></a><h4>
-<a name="id536066"></a>
+<a name="id535915"></a>
         <a href="map.html#fusion.container.map.description">Description</a>
       </h4>
 <p>
@@ -40,7 +40,7 @@
         (see Overloaded Functions).
       </p>
 <a name="fusion.container.map.header"></a><h4>
-<a name="id536147"></a>
+<a name="id535996"></a>
         <a href="map.html#fusion.container.map.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">map_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.map.synopsis"></a><h4>
-<a name="id536429"></a>
+<a name="id536278"></a>
         <a href="map.html#fusion.container.map.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -81,7 +81,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_MAP_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.map.template_parameters"></a><h4>
-<a name="id536859"></a>
+<a name="id536707"></a>
         <a href="map.html#fusion.container.map.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -126,7 +126,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.map.model_of"></a><h4>
-<a name="id536978"></a>
+<a name="id536827"></a>
         <a href="map.html#fusion.container.map.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc">
@@ -159,7 +159,7 @@
 </dl>
 </div>
 <a name="fusion.container.map.expression_semantics"></a><h4>
-<a name="id537201"></a>
+<a name="id537050"></a>
         <a href="map.html#fusion.container.map.expression_semantics">Expression Semantics</a>
       </h4>
 <p>
@@ -246,7 +246,7 @@
 </tbody>
 </table></div>
 <a name="fusion.container.map.example"></a><h4>
-<a name="id537549"></a>
+<a name="id537398"></a>
         <a href="map.html#fusion.container.map.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/set.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/set.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/set.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.container.set"></a>set</h3></div></div></div>
 <a name="fusion.container.set.description"></a><h4>
-<a name="id534310"></a>
+<a name="id534159"></a>
         <a href="set.html#fusion.container.set.description">Description</a>
       </h4>
 <p>
@@ -39,7 +39,7 @@
         Functions</a>).
       </p>
 <a name="fusion.container.set.header"></a><h4>
-<a name="id534365"></a>
+<a name="id534214"></a>
         <a href="set.html#fusion.container.set.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -49,7 +49,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">set_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.set.synopsis"></a><h4>
-<a name="id534648"></a>
+<a name="id534497"></a>
         <a href="set.html#fusion.container.set.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -80,7 +80,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_SET_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.set.template_parameters"></a><h4>
-<a name="id534980"></a>
+<a name="id534829"></a>
         <a href="set.html#fusion.container.set.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -125,7 +125,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.set.model_of"></a><h4>
-<a name="id535099"></a>
+<a name="id534948"></a>
         <a href="set.html#fusion.container.set.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc">
@@ -158,7 +158,7 @@
 </dl>
 </div>
 <a name="fusion.container.set.expression_semantics"></a><h4>
-<a name="id535294"></a>
+<a name="id535143"></a>
         <a href="set.html#fusion.container.set.expression_semantics">Expression Semantics</a>
       </h4>
 <p>
@@ -245,7 +245,7 @@
 </tbody>
 </table></div>
 <a name="fusion.container.set.example"></a><h4>
-<a name="id535643"></a>
+<a name="id535491"></a>
         <a href="set.html#fusion.container.set.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/container/vector.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/container/vector.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/container/vector.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.container.vector"></a>vector</h3></div></div></div>
 <a name="fusion.container.vector.description"></a><h4>
-<a name="id527820"></a>
+<a name="id527669"></a>
         <a href="vector.html#fusion.container.vector.description">Description</a>
       </h4>
 <p>
@@ -39,7 +39,7 @@
         efficient.
       </p>
 <a name="fusion.container.vector.header"></a><h4>
-<a name="id527897"></a>
+<a name="id527746"></a>
         <a href="vector.html#fusion.container.vector.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -61,7 +61,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">vector50</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.container.vector.synopsis"></a><h4>
-<a name="id528875"></a>
+<a name="id528724"></a>
         <a href="vector.html#fusion.container.vector.synopsis">Synopsis</a>
       </h4>
 <p>
@@ -122,7 +122,7 @@
 <span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_VECTOR_SIZE</span> <span class="number">20</span>
 </pre>
 <a name="fusion.container.vector.template_parameters"></a><h4>
-<a name="id529619"></a>
+<a name="id529468"></a>
         <a href="vector.html#fusion.container.vector.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -167,7 +167,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.container.vector.model_of"></a><h4>
-<a name="id529738"></a>
+<a name="id529587"></a>
         <a href="vector.html#fusion.container.vector.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li><a href="../sequence/concepts/random_access_sequence.html" title="Random
@@ -196,7 +196,7 @@
 </dl>
 </div>
 <a name="fusion.container.vector.expression_semantics"></a><h4>
-<a name="id529922"></a>
+<a name="id529771"></a>
         <a href="vector.html#fusion.container.vector.expression_semantics">Expression Semantics</a>
       </h4>
 <p>
@@ -281,7 +281,7 @@
 </tbody>
 </table></div>
 <a name="fusion.container.vector.example"></a><h4>
-<a name="id530261"></a>
+<a name="id530110"></a>
         <a href="vector.html#fusion.container.vector.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/extension.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/extension.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/extension.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/extension/ext_full.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/extension/ext_full.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/extension/ext_full.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -48,7 +48,7 @@
         </li>
 </ol></div>
 <a name="fusion.extension.ext_full.our_example"></a><h4>
-<a name="id643994"></a>
+<a name="id643992"></a>
         <a href="ext_full.html#fusion.extension.ext_full.our_example">Our example</a>
       </h4>
 <p>
@@ -80,7 +80,7 @@
         Start</a> guide.
       </p>
 <a name="fusion.extension.ext_full.enabling_tag_dispatching"></a><h4>
-<a name="id644283"></a>
+<a name="id644280"></a>
         <a href="ext_full.html#fusion.extension.ext_full.enabling_tag_dispatching">Enabling
         Tag Dispatching</a>
       </h4>
@@ -124,7 +124,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">tag_of</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.extension.ext_full.designing_a_suitable_iterator"></a><h4>
-<a name="id644909"></a>
+<a name="id644907"></a>
         <a href="ext_full.html#fusion.extension.ext_full.designing_a_suitable_iterator">Designing
         a suitable iterator</a>
       </h4>
@@ -187,7 +187,7 @@
         clearer as we add features to our implementation.
       </p>
 <a name="fusion.extension.ext_full.a_first_couple_of_instructive_features"></a><h4>
-<a name="id645569"></a>
+<a name="id645568"></a>
         <a href="ext_full.html#fusion.extension.ext_full.a_first_couple_of_instructive_features">A
         first couple of instructive features</a>
       </h4>
@@ -331,7 +331,7 @@
         </p></td></tr>
 </table></div>
 <a name="fusion.extension.ext_full.implementing_the_remaining_iterator_functionality"></a><h4>
-<a name="id647881"></a>
+<a name="id647880"></a>
         <a href="ext_full.html#fusion.extension.ext_full.implementing_the_remaining_iterator_functionality">Implementing
         the remaining iterator functionality</a>
       </h4>
@@ -386,7 +386,7 @@
         are provided in the example code.
       </p>
 <a name="fusion.extension.ext_full.implementing_the_intrinsic_functions_of_the_sequence"></a><h4>
-<a name="id648533"></a>
+<a name="id648532"></a>
         <a href="ext_full.html#fusion.extension.ext_full.implementing_the_intrinsic_functions_of_the_sequence">Implementing
         the intrinsic functions of the sequence</a>
       </h4>
@@ -445,7 +445,7 @@
         <tt class="computeroutput"><span class="identifier">value_at_impl</span></tt> and <tt class="computeroutput"><span class="identifier">at_impl</span></tt>.
       </p>
 <a name="fusion.extension.ext_full.enabling_our_type_as_an_associative_container"></a><h4>
-<a name="id649141"></a>
+<a name="id649140"></a>
         <a href="ext_full.html#fusion.extension.ext_full.enabling_our_type_as_an_associative_container">Enabling
         our type as an associative container</a>
       </h4>
@@ -513,7 +513,7 @@
         of <tt class="computeroutput"><span class="identifier">is_associative_impl</span></tt>.
       </p>
 <a name="fusion.extension.ext_full.summary"></a><h4>
-<a name="id650150"></a>
+<a name="id650149"></a>
         <a href="ext_full.html#fusion.extension.ext_full.summary">Summary</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/extension/iterator_facade.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/extension/iterator_facade.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/extension/iterator_facade.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.extension.iterator_facade"></a>Iterator Facade</h3></div></div></div>
 <a name="fusion.extension.iterator_facade.description"></a><h4>
-<a name="id651774"></a>
+<a name="id651772"></a>
         <a href="iterator_facade.html#fusion.extension.iterator_facade.description">Description</a>
       </h4>
 <p>
@@ -35,7 +35,7 @@
         iterator.
       </p>
 <a name="fusion.extension.iterator_facade.synopsis"></a><h4>
-<a name="id651822"></a>
+<a name="id651821"></a>
         <a href="iterator_facade.html#fusion.extension.iterator_facade.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">struct</span> <span class="identifier">iterator_facade</span><span class="special">;</span>
 </pre>
 <a name="fusion.extension.iterator_facade.usage"></a><h4>
-<a name="id651917"></a>
+<a name="id651916"></a>
         <a href="iterator_facade.html#fusion.extension.iterator_facade.usage">Usage</a>
       </h4>
 <p>
@@ -57,7 +57,7 @@
         type.
       </p>
 <div class="table">
-<a name="id651943"></a><p class="title"><b>Table 1.93. Parameters</b></p>
+<a name="id651942"></a><p class="title"><b>Table 1.93. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -106,7 +106,7 @@
 </table>
 </div>
 <div class="table">
-<a name="id652101"></a><p class="title"><b>Table 1.94. Key Expressions</b></p>
+<a name="id652100"></a><p class="title"><b>Table 1.94. Key Expressions</b></p>
 <table class="table" summary="Key Expressions">
 <colgroup>
 <col>
@@ -365,7 +365,7 @@
 </table>
 </div>
 <a name="fusion.extension.iterator_facade.header"></a><h4>
-<a name="id653660"></a>
+<a name="id653659"></a>
         <a href="iterator_facade.html#fusion.extension.iterator_facade.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -373,7 +373,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">iterator_facade</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.extension.iterator_facade.example"></a><h4>
-<a name="id653820"></a>
+<a name="id653819"></a>
         <a href="iterator_facade.html#fusion.extension.iterator_facade.example">Example</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/extension/sequence_facade.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/extension/sequence_facade.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/extension/sequence_facade.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.extension.sequence_facade"></a>Sequence Facade</h3></div></div></div>
 <a name="fusion.extension.sequence_facade.description"></a><h4>
-<a name="id650261"></a>
+<a name="id650260"></a>
         <a href="sequence_facade.html#fusion.extension.sequence_facade.description">Description</a>
       </h4>
 <p>
@@ -35,7 +35,7 @@
         iterator.
       </p>
 <a name="fusion.extension.sequence_facade.synopsis"></a><h4>
-<a name="id650310"></a>
+<a name="id650309"></a>
         <a href="sequence_facade.html#fusion.extension.sequence_facade.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">struct</span> <span class="identifier">sequence_facade</span><span class="special">;</span>
 </pre>
 <a name="fusion.extension.sequence_facade.usage"></a><h4>
-<a name="id650445"></a>
+<a name="id650444"></a>
         <a href="sequence_facade.html#fusion.extension.sequence_facade.usage">Usage</a>
       </h4>
 <p>
@@ -59,7 +59,7 @@
         type.
       </p>
 <div class="table">
-<a name="id650534"></a><p class="title"><b>Table 1.91. Parameters</b></p>
+<a name="id650532"></a><p class="title"><b>Table 1.91. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -107,7 +107,7 @@
 </table>
 </div>
 <div class="table">
-<a name="id650668"></a><p class="title"><b>Table 1.92. Key Expressions</b></p>
+<a name="id650666"></a><p class="title"><b>Table 1.92. Key Expressions</b></p>
 <table class="table" summary="Key Expressions">
 <colgroup>
 <col>
@@ -243,7 +243,7 @@
 </table>
 </div>
 <a name="fusion.extension.sequence_facade.include"></a><h4>
-<a name="id651548"></a>
+<a name="id651546"></a>
         <a href="sequence_facade.html#fusion.extension.sequence_facade.include">Include</a>
       </h4>
 <pre class="programlisting">
@@ -251,7 +251,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">sequence_facade</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.extension.sequence_facade.example"></a><h4>
-<a name="id651706"></a>
+<a name="id651705"></a>
         <a href="sequence_facade.html#fusion.extension.sequence_facade.example">Example</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -65,7 +65,7 @@
       /functional.hpp&gt;
     </p>
 <a name="fusion.functional.fused_and_unfused_forms"></a><h3>
-<a name="id653898"></a>
+<a name="id653897"></a>
       <a href="functional.html#fusion.functional.fused_and_unfused_forms">Fused and unfused
       forms</a>
     </h3>
@@ -102,7 +102,7 @@
       form of <tt class="literal">f'</tt>.
     </p>
 <a name="fusion.functional.calling_functions_and_function_objects"></a><h3>
-<a name="id654164"></a>
+<a name="id654163"></a>
       <a href="functional.html#fusion.functional.calling_functions_and_function_objects">Calling
       functions and function objects</a>
     </h3>
@@ -130,7 +130,7 @@
       instance for the given argument.
     </p>
 <a name="fusion.functional.making_fusion_code_callable_through_a_function_object_interface"></a><h3>
-<a name="id654240"></a>
+<a name="id654239"></a>
       <a href="functional.html#fusion.functional.making_fusion_code_callable_through_a_function_object_interface">Making
       Fusion code callable through a function object interface</a>
     </h3>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.functional.adapters.fused"></a>fused</h4></div></div></div>
 <a name="fusion.functional.adapters.fused.description"></a><h5>
-<a name="id661998"></a>
+<a name="id661860"></a>
           <a href="fused.html#fusion.functional.adapters.fused.description">Description</a>
         </h5>
 <p>
@@ -59,7 +59,7 @@
           /functional/adapter/fused.hpp&gt;
         </p>
 <a name="fusion.functional.adapters.fused.synopsis"></a><h5>
-<a name="id662134"></a>
+<a name="id661996"></a>
           <a href="fused.html#fusion.functional.adapters.fused.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -67,7 +67,7 @@
 <span class="keyword">class</span> <span class="identifier">fused</span><span class="special">;</span>
 </pre>
 <a name="fusion.functional.adapters.fused.template_parameters"></a><h5>
-<a name="id662214"></a>
+<a name="id662075"></a>
           <a href="fused.html#fusion.functional.adapters.fused.template_parameters">Template
           parameters</a>
         </h5>
@@ -114,7 +114,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.adapters.fused.model_of"></a><h5>
-<a name="id662329"></a>
+<a name="id662190"></a>
           <a href="fused.html#fusion.functional.adapters.fused.model_of">Model of</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">
@@ -150,7 +150,7 @@
 </dl>
 </div>
 <a name="fusion.functional.adapters.fused.expression_semantics"></a><h5>
-<a name="id662549"></a>
+<a name="id662410"></a>
           <a href="fused.html#fusion.functional.adapters.fused.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -214,7 +214,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.adapters.fused.example"></a><h5>
-<a name="id662804"></a>
+<a name="id662665"></a>
           <a href="fused.html#fusion.functional.adapters.fused.example">Example</a>
         </h5>
 <pre class="programlisting">
@@ -222,7 +222,7 @@
 <span class="identifier">assert</span><span class="special">(</span><span class="identifier">f</span><span class="special">(</span>make_vector<span class="special">(</span><span class="number">1</span><span class="special">,</span><span class="number">2l</span><span class="special">))</span> <span class="special">==</span> <span class="number">3l</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.adapters.fused.see_also"></a><h5>
-<a name="id662981"></a>
+<a name="id662842"></a>
           <a href="fused.html#fusion.functional.adapters.fused.see_also">See also</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused_function_object.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused_function_object.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused_function_object.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.functional.adapters.fused_function_object"></a>fused_function_object</h4></div></div></div>
 <a name="fusion.functional.adapters.fused_function_object.description"></a><h5>
-<a name="id664673"></a>
+<a name="id664533"></a>
           <a href="fused_function_object.html#fusion.functional.adapters.fused_function_object.description">Description</a>
         </h5>
 <p>
@@ -49,7 +49,7 @@
           /functional/adapter/fused_function_object.hpp&gt;
         </p>
 <a name="fusion.functional.adapters.fused_function_object.synopsis"></a><h5>
-<a name="id664755"></a>
+<a name="id664615"></a>
           <a href="fused_function_object.html#fusion.functional.adapters.fused_function_object.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -57,7 +57,7 @@
 <span class="keyword">class</span> <span class="identifier">fused_function_object</span><span class="special">;</span>
 </pre>
 <a name="fusion.functional.adapters.fused_function_object.template_parameters"></a><h5>
-<a name="id664839"></a>
+<a name="id664700"></a>
           <a href="fused_function_object.html#fusion.functional.adapters.fused_function_object.template_parameters">Template
           parameters</a>
         </h5>
@@ -104,7 +104,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.adapters.fused_function_object.model_of"></a><h5>
-<a name="id664956"></a>
+<a name="id664816"></a>
           <a href="fused_function_object.html#fusion.functional.adapters.fused_function_object.model_of">Model
           of</a>
         </h5>
@@ -141,7 +141,7 @@
 </dl>
 </div>
 <a name="fusion.functional.adapters.fused_function_object.expression_semantics"></a><h5>
-<a name="id665176"></a>
+<a name="id665037"></a>
           <a href="fused_function_object.html#fusion.functional.adapters.fused_function_object.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -205,7 +205,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.adapters.fused_function_object.example"></a><h5>
-<a name="id665433"></a>
+<a name="id665293"></a>
           <a href="fused_function_object.html#fusion.functional.adapters.fused_function_object.example">Example</a>
         </h5>
 <pre class="programlisting">
@@ -243,7 +243,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.adapters.fused_function_object.see_also"></a><h5>
-<a name="id666490"></a>
+<a name="id666351"></a>
           <a href="fused_function_object.html#fusion.functional.adapters.fused_function_object.see_also">See
           also</a>
         </h5>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused_procedure.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused_procedure.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/fused_procedure.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.functional.adapters.fused_procedure"></a>fused_procedure</h4></div></div></div>
 <a name="fusion.functional.adapters.fused_procedure.description"></a><h5>
-<a name="id663113"></a>
+<a name="id662974"></a>
           <a href="fused_procedure.html#fusion.functional.adapters.fused_procedure.description">Description</a>
         </h5>
 <p>
@@ -66,7 +66,7 @@
           /functional/adapter/fused_procedure.hpp&gt;
         </p>
 <a name="fusion.functional.adapters.fused_procedure.synopsis"></a><h5>
-<a name="id663277"></a>
+<a name="id663138"></a>
           <a href="fused_procedure.html#fusion.functional.adapters.fused_procedure.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -74,7 +74,7 @@
 <span class="keyword">class</span> <span class="identifier">fused_procedure</span><span class="special">;</span>
 </pre>
 <a name="fusion.functional.adapters.fused_procedure.template_parameters"></a><h5>
-<a name="id663358"></a>
+<a name="id663219"></a>
           <a href="fused_procedure.html#fusion.functional.adapters.fused_procedure.template_parameters">Template
           parameters</a>
         </h5>
@@ -120,7 +120,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.adapters.fused_procedure.model_of"></a><h5>
-<a name="id663473"></a>
+<a name="id663333"></a>
           <a href="fused_procedure.html#fusion.functional.adapters.fused_procedure.model_of">Model
           of</a>
         </h5>
@@ -156,7 +156,7 @@
 </dl>
 </div>
 <a name="fusion.functional.adapters.fused_procedure.expression_semantics"></a><h5>
-<a name="id663693"></a>
+<a name="id663554"></a>
           <a href="fused_procedure.html#fusion.functional.adapters.fused_procedure.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -220,7 +220,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.adapters.fused_procedure.example"></a><h5>
-<a name="id663950"></a>
+<a name="id663811"></a>
           <a href="fused_procedure.html#fusion.functional.adapters.fused_procedure.example">Example</a>
         </h5>
 <pre class="programlisting">
@@ -241,7 +241,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.adapters.fused_procedure.see_also"></a><h5>
-<a name="id664558"></a>
+<a name="id664419"></a>
           <a href="fused_procedure.html#fusion.functional.adapters.fused_procedure.see_also">See
           also</a>
         </h5>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_generic.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_generic.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_generic.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.functional.adapters.unfused_generic"></a>unfused_generic</h4></div></div></div>
 <a name="fusion.functional.adapters.unfused_generic.description"></a><h5>
-<a name="id666625"></a>
+<a name="id666486"></a>
           <a href="unfused_generic.html#fusion.functional.adapters.unfused_generic.description">Description</a>
         </h5>
 <p>
@@ -58,7 +58,7 @@
           /functional/adapter/unfused_generic.hpp&gt;
         </p>
 <a name="fusion.functional.adapters.unfused_generic.synopsis"></a><h5>
-<a name="id666783"></a>
+<a name="id666643"></a>
           <a href="unfused_generic.html#fusion.functional.adapters.unfused_generic.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -66,7 +66,7 @@
 <span class="keyword">class</span> <span class="identifier">unfused_generic</span><span class="special">;</span>
 </pre>
 <a name="fusion.functional.adapters.unfused_generic.template_parameters"></a><h5>
-<a name="id666864"></a>
+<a name="id666724"></a>
           <a href="unfused_generic.html#fusion.functional.adapters.unfused_generic.template_parameters">Template
           parameters</a>
         </h5>
@@ -113,7 +113,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.adapters.unfused_generic.model_of"></a><h5>
-<a name="id666979"></a>
+<a name="id666840"></a>
           <a href="unfused_generic.html#fusion.functional.adapters.unfused_generic.model_of">Model
           of</a>
         </h5>
@@ -154,7 +154,7 @@
 </dl>
 </div>
 <a name="fusion.functional.adapters.unfused_generic.expression_semantics"></a><h5>
-<a name="id667248"></a>
+<a name="id667108"></a>
           <a href="unfused_generic.html#fusion.functional.adapters.unfused_generic.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -218,7 +218,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.adapters.unfused_generic.example"></a><h5>
-<a name="id667514"></a>
+<a name="id667374"></a>
           <a href="unfused_generic.html#fusion.functional.adapters.unfused_generic.example">Example</a>
         </h5>
 <pre class="programlisting">
@@ -269,7 +269,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.adapters.unfused_generic.see_also"></a><h5>
-<a name="id668910"></a>
+<a name="id668770"></a>
           <a href="unfused_generic.html#fusion.functional.adapters.unfused_generic.see_also">See
           also</a>
         </h5>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_lvalue_args.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_lvalue_args.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_lvalue_args.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.functional.adapters.unfused_lvalue_args"></a>unfused_lvalue_args</h4></div></div></div>
 <a name="fusion.functional.adapters.unfused_lvalue_args.description"></a><h5>
-<a name="id669068"></a>
+<a name="id668928"></a>
           <a href="unfused_lvalue_args.html#fusion.functional.adapters.unfused_lvalue_args.description">Description</a>
         </h5>
 <p>
@@ -51,7 +51,7 @@
           /functional/adapter/unfused_lvalue_args.hpp&gt;
         </p>
 <a name="fusion.functional.adapters.unfused_lvalue_args.synopsis"></a><h5>
-<a name="id669152"></a>
+<a name="id669012"></a>
           <a href="unfused_lvalue_args.html#fusion.functional.adapters.unfused_lvalue_args.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -59,7 +59,7 @@
 <span class="keyword">class</span> <span class="identifier">unfused_lvalue_args</span><span class="special">;</span>
 </pre>
 <a name="fusion.functional.adapters.unfused_lvalue_args.template_parameters"></a><h5>
-<a name="id669234"></a>
+<a name="id669094"></a>
           <a href="unfused_lvalue_args.html#fusion.functional.adapters.unfused_lvalue_args.template_parameters">Template
           parameters</a>
         </h5>
@@ -106,7 +106,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.adapters.unfused_lvalue_args.model_of"></a><h5>
-<a name="id669349"></a>
+<a name="id669209"></a>
           <a href="unfused_lvalue_args.html#fusion.functional.adapters.unfused_lvalue_args.model_of">Model
           of</a>
         </h5>
@@ -147,7 +147,7 @@
 </dl>
 </div>
 <a name="fusion.functional.adapters.unfused_lvalue_args.expression_semantics"></a><h5>
-<a name="id669619"></a>
+<a name="id669479"></a>
           <a href="unfused_lvalue_args.html#fusion.functional.adapters.unfused_lvalue_args.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -211,7 +211,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.adapters.unfused_lvalue_args.example"></a><h5>
-<a name="id669886"></a>
+<a name="id669746"></a>
           <a href="unfused_lvalue_args.html#fusion.functional.adapters.unfused_lvalue_args.example">Example</a>
         </h5>
 <pre class="programlisting">
@@ -239,7 +239,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.adapters.unfused_lvalue_args.see_also"></a><h5>
-<a name="id670385"></a>
+<a name="id670245"></a>
           <a href="unfused_lvalue_args.html#fusion.functional.adapters.unfused_lvalue_args.see_also">See
           also</a>
         </h5>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_rvalue_args.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_rvalue_args.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_rvalue_args.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.functional.adapters.unfused_rvalue_args"></a>unfused_rvalue_args</h4></div></div></div>
 <a name="fusion.functional.adapters.unfused_rvalue_args.description"></a><h5>
-<a name="id670499"></a>
+<a name="id670359"></a>
           <a href="unfused_rvalue_args.html#fusion.functional.adapters.unfused_rvalue_args.description">Description</a>
         </h5>
 <p>
@@ -51,7 +51,7 @@
           /functional/adapter/unfused_rvalue_args.hpp&gt;
         </p>
 <a name="fusion.functional.adapters.unfused_rvalue_args.synopsis"></a><h5>
-<a name="id670583"></a>
+<a name="id670443"></a>
           <a href="unfused_rvalue_args.html#fusion.functional.adapters.unfused_rvalue_args.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -59,7 +59,7 @@
 <span class="keyword">class</span> <span class="identifier">unfused_rvalue_args</span><span class="special">;</span>
 </pre>
 <a name="fusion.functional.adapters.unfused_rvalue_args.template_parameters"></a><h5>
-<a name="id670665"></a>
+<a name="id670525"></a>
           <a href="unfused_rvalue_args.html#fusion.functional.adapters.unfused_rvalue_args.template_parameters">Template
           parameters</a>
         </h5>
@@ -106,7 +106,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.adapters.unfused_rvalue_args.model_of"></a><h5>
-<a name="id670781"></a>
+<a name="id670641"></a>
           <a href="unfused_rvalue_args.html#fusion.functional.adapters.unfused_rvalue_args.model_of">Model
           of</a>
         </h5>
@@ -147,7 +147,7 @@
 </dl>
 </div>
 <a name="fusion.functional.adapters.unfused_rvalue_args.expression_semantics"></a><h5>
-<a name="id671051"></a>
+<a name="id670911"></a>
           <a href="unfused_rvalue_args.html#fusion.functional.adapters.unfused_rvalue_args.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -211,7 +211,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.adapters.unfused_rvalue_args.example"></a><h5>
-<a name="id671318"></a>
+<a name="id671178"></a>
           <a href="unfused_rvalue_args.html#fusion.functional.adapters.unfused_rvalue_args.example">Example</a>
         </h5>
 <pre class="programlisting">
@@ -237,7 +237,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.adapters.unfused_rvalue_args.see_also"></a><h5>
-<a name="id671716"></a>
+<a name="id671575"></a>
           <a href="unfused_rvalue_args.html#fusion.functional.adapters.unfused_rvalue_args.see_also">See
           also</a>
         </h5>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_typed.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_typed.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/adapters/unfused_typed.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.functional.adapters.unfused_typed"></a>unfused_typed</h4></div></div></div>
 <a name="fusion.functional.adapters.unfused_typed.description"></a><h5>
-<a name="id671870"></a>
+<a name="id671729"></a>
           <a href="unfused_typed.html#fusion.functional.adapters.unfused_typed.description">Description</a>
         </h5>
 <p>
@@ -65,7 +65,7 @@
           /functional/adapter/unfused_typed.hpp&gt;
         </p>
 <a name="fusion.functional.adapters.unfused_typed.synopsis"></a><h5>
-<a name="id672026"></a>
+<a name="id671885"></a>
           <a href="unfused_typed.html#fusion.functional.adapters.unfused_typed.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -73,7 +73,7 @@
 <span class="keyword">class</span> <span class="identifier">unfused_typed</span><span class="special">;</span>
 </pre>
 <a name="fusion.functional.adapters.unfused_typed.template_parameters"></a><h5>
-<a name="id672124"></a>
+<a name="id671984"></a>
           <a href="unfused_typed.html#fusion.functional.adapters.unfused_typed.template_parameters">Template
           parameters</a>
         </h5>
@@ -138,7 +138,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.adapters.unfused_typed.model_of"></a><h5>
-<a name="id672282"></a>
+<a name="id672142"></a>
           <a href="unfused_typed.html#fusion.functional.adapters.unfused_typed.model_of">Model
           of</a>
         </h5>
@@ -184,7 +184,7 @@
 </dl>
 </div>
 <a name="fusion.functional.adapters.unfused_typed.expression_semantics"></a><h5>
-<a name="id672606"></a>
+<a name="id672466"></a>
           <a href="unfused_typed.html#fusion.functional.adapters.unfused_typed.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -250,7 +250,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.adapters.unfused_typed.example"></a><h5>
-<a name="id672890"></a>
+<a name="id672749"></a>
           <a href="unfused_typed.html#fusion.functional.adapters.unfused_typed.example">Example</a>
         </h5>
 <pre class="programlisting">
@@ -319,7 +319,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.adapters.unfused_typed.see_also"></a><h5>
-<a name="id674380"></a>
+<a name="id674239"></a>
           <a href="unfused_typed.html#fusion.functional.adapters.unfused_typed.see_also">See also</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/callable.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/callable.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/callable.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.functional.concepts.callable"></a> Callable Object</h4></div></div></div>
 <a name="fusion.functional.concepts.callable.description"></a><h5>
-<a name="id654608"></a>
+<a name="id654333"></a>
           <a href="callable.html#fusion.functional.concepts.callable.description">Description</a>
         </h5>
 <p>
@@ -36,7 +36,7 @@
           of a function call operator.
         </p>
 <a name="fusion.functional.concepts.callable.models"></a><h5>
-<a name="id654640"></a>
+<a name="id654365"></a>
           <a href="callable.html#fusion.functional.concepts.callable.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">
@@ -51,7 +51,7 @@
           </li>
 </ul></div>
 <a name="fusion.functional.concepts.callable.examples"></a><h5>
-<a name="id385021"></a>
+<a name="id654407"></a>
           <a href="callable.html#fusion.functional.concepts.callable.examples">Examples</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/def_callable.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/def_callable.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/def_callable.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
         Callable Object"> Deferred
         Callable Object</a></h4></div></div></div>
 <a name="fusion.functional.concepts.def_callable.description"></a><h5>
-<a name="id655582"></a>
+<a name="id655444"></a>
           <a href="def_callable.html#fusion.functional.concepts.def_callable.description">Description</a>
         </h5>
 <p>
@@ -40,7 +40,7 @@
           to determine the result of a call.
         </p>
 <a name="fusion.functional.concepts.def_callable.refinement_of"></a><h5>
-<a name="id655629"></a>
+<a name="id655491"></a>
           <a href="def_callable.html#fusion.functional.concepts.def_callable.refinement_of">Refinement
           of</a>
         </h5>
@@ -81,7 +81,7 @@
 </dl>
 </div>
 <a name="fusion.functional.concepts.def_callable.expression_requirements"></a><h5>
-<a name="id655935"></a>
+<a name="id655797"></a>
           <a href="def_callable.html#fusion.functional.concepts.def_callable.expression_requirements">Expression
           requirements</a>
         </h5>
@@ -119,7 +119,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.concepts.def_callable.models"></a><h5>
-<a name="id656119"></a>
+<a name="id655980"></a>
           <a href="def_callable.html#fusion.functional.concepts.def_callable.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">
@@ -133,7 +133,7 @@
           </li>
 </ul></div>
 <a name="fusion.functional.concepts.def_callable.examples"></a><h5>
-<a name="id656165"></a>
+<a name="id656027"></a>
           <a href="def_callable.html#fusion.functional.concepts.def_callable.examples">Examples</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/poly.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/poly.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/poly.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
         Object"> Polymorphic Function
         Object</a></h4></div></div></div>
 <a name="fusion.functional.concepts.poly.description"></a><h5>
-<a name="id656467"></a>
+<a name="id656328"></a>
           <a href="poly.html#fusion.functional.concepts.poly.description">Description</a>
         </h5>
 <p>
@@ -39,7 +39,7 @@
           Callable Object</a> type.
         </p>
 <a name="fusion.functional.concepts.poly.refinement_of"></a><h5>
-<a name="id656506"></a>
+<a name="id656368"></a>
           <a href="poly.html#fusion.functional.concepts.poly.refinement_of">Refinement
           of</a>
         </h5>
@@ -83,7 +83,7 @@
 </dl>
 </div>
 <a name="fusion.functional.concepts.poly.expression_requirements"></a><h5>
-<a name="id656797"></a>
+<a name="id656658"></a>
           <a href="poly.html#fusion.functional.concepts.poly.expression_requirements">Expression
           requirements</a>
         </h5>
@@ -132,7 +132,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.concepts.poly.models"></a><h5>
-<a name="id656995"></a>
+<a name="id656856"></a>
           <a href="poly.html#fusion.functional.concepts.poly.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">
@@ -147,7 +147,7 @@
 </li>
 </ul></div>
 <a name="fusion.functional.concepts.poly.examples"></a><h5>
-<a name="id657049"></a>
+<a name="id656910"></a>
           <a href="poly.html#fusion.functional.concepts.poly.examples">Examples</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/reg_callable.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/reg_callable.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/concepts/reg_callable.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
         Object"> Regular Callable
         Object</a></h4></div></div></div>
 <a name="fusion.functional.concepts.reg_callable.description"></a><h5>
-<a name="id654884"></a>
+<a name="id654747"></a>
           <a href="reg_callable.html#fusion.functional.concepts.reg_callable.description">Description</a>
         </h5>
 <p>
@@ -39,7 +39,7 @@
           can appear immediately to the left of a function call operator.
         </p>
 <a name="fusion.functional.concepts.reg_callable.refinement_of"></a><h5>
-<a name="id654927"></a>
+<a name="id654790"></a>
           <a href="reg_callable.html#fusion.functional.concepts.reg_callable.refinement_of">Refinement
           of</a>
         </h5>
@@ -69,7 +69,7 @@
 </dl>
 </div>
 <a name="fusion.functional.concepts.reg_callable.expression_requirements"></a><h5>
-<a name="id655114"></a>
+<a name="id654976"></a>
           <a href="reg_callable.html#fusion.functional.concepts.reg_callable.expression_requirements">Expression
           requirements</a>
         </h5>
@@ -116,7 +116,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.concepts.reg_callable.models"></a><h5>
-<a name="id655250"></a>
+<a name="id655112"></a>
           <a href="reg_callable.html#fusion.functional.concepts.reg_callable.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">
@@ -128,7 +128,7 @@
           </li>
 </ul></div>
 <a name="fusion.functional.concepts.reg_callable.examples"></a><h5>
-<a name="id655288"></a>
+<a name="id655150"></a>
           <a href="reg_callable.html#fusion.functional.concepts.reg_callable.examples">Examples</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
           make_fused">
           make_fused</a></h5></div></div></div>
 <a name="fusion.functional.generation.functions.mk_fused.description"></a><h6>
-<a name="id674578"></a>
+<a name="id674437"></a>
             <a href="mk_fused.html#fusion.functional.generation.functions.mk_fused.description">Description</a>
           </h6>
 <p>
@@ -40,7 +40,7 @@
             conversion</em></span></a> is applied to the target function.
           </p>
 <a name="fusion.functional.generation.functions.mk_fused.synopsis"></a><h6>
-<a name="id674646"></a>
+<a name="id674506"></a>
             <a href="mk_fused.html#fusion.functional.generation.functions.mk_fused.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
 <span class="identifier">make_fused</span><span class="special">(</span><span class="identifier">F</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_fused.parameters"></a><h6>
-<a name="id674801"></a>
+<a name="id674660"></a>
             <a href="mk_fused.html#fusion.functional.generation.functions.mk_fused.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -97,7 +97,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.generation.functions.mk_fused.expression_semantics"></a><h6>
-<a name="id674919"></a>
+<a name="id674778"></a>
             <a href="mk_fused.html#fusion.functional.generation.functions.mk_fused.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -111,7 +111,7 @@
             <span class="bold"><b>Semantics</b></span>: Returns a fused adapter for <tt class="computeroutput"><span class="identifier">f</span></tt>.
           </p>
 <a name="fusion.functional.generation.functions.mk_fused.header"></a><h6>
-<a name="id675043"></a>
+<a name="id674903"></a>
             <a href="mk_fused.html#fusion.functional.generation.functions.mk_fused.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -119,7 +119,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_fused</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_fused.example"></a><h6>
-<a name="id675212"></a>
+<a name="id675072"></a>
             <a href="mk_fused.html#fusion.functional.generation.functions.mk_fused.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -135,7 +135,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_fused.see_also"></a><h6>
-<a name="id675816"></a>
+<a name="id675676"></a>
             <a href="mk_fused.html#fusion.functional.generation.functions.mk_fused.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
           make_fused_function_object">
           make_fused_function_object</a></h5></div></div></div>
 <a name="fusion.functional.generation.functions.mk_fused_fobj.description"></a><h6>
-<a name="id676957"></a>
+<a name="id676818"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.functions.mk_fused_fobj.description">Description</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
             conversion</em></span></a> is applied to the target function.
           </p>
 <a name="fusion.functional.generation.functions.mk_fused_fobj.synopsis"></a><h6>
-<a name="id677028"></a>
+<a name="id676888"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.functions.mk_fused_fobj.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -52,7 +52,7 @@
 <span class="identifier">make_fused_function_object</span><span class="special">(</span><span class="identifier">F</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_fused_fobj.parameters"></a><h6>
-<a name="id677185"></a>
+<a name="id677045"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.functions.mk_fused_fobj.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.generation.functions.mk_fused_fobj.expression_semantics"></a><h6>
-<a name="id677299"></a>
+<a name="id677159"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.functions.mk_fused_fobj.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -114,7 +114,7 @@
             for <tt class="computeroutput"><span class="identifier">f</span></tt>.
           </p>
 <a name="fusion.functional.generation.functions.mk_fused_fobj.header"></a><h6>
-<a name="id677426"></a>
+<a name="id677286"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.functions.mk_fused_fobj.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -122,7 +122,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_fused_function_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_fused_fobj.example"></a><h6>
-<a name="id677598"></a>
+<a name="id677458"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.functions.mk_fused_fobj.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -151,7 +151,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_fused_fobj.see_also"></a><h6>
-<a name="id678338"></a>
+<a name="id678198"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.functions.mk_fused_fobj.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused_proc.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused_proc.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_fused_proc.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
           make_fused_procedure">
           make_fused_procedure</a></h5></div></div></div>
 <a name="fusion.functional.generation.functions.mk_fused_proc.description"></a><h6>
-<a name="id675933"></a>
+<a name="id675793"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.functions.mk_fused_proc.description">Description</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
             conversion</em></span></a> applied to the target function.
           </p>
 <a name="fusion.functional.generation.functions.mk_fused_proc.synopsis"></a><h6>
-<a name="id676002"></a>
+<a name="id675862"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.functions.mk_fused_proc.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -52,7 +52,7 @@
 <span class="identifier">make_fused_procedure</span><span class="special">(</span><span class="identifier">F</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_fused_proc.parameters"></a><h6>
-<a name="id676158"></a>
+<a name="id676018"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.functions.mk_fused_proc.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -98,7 +98,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.generation.functions.mk_fused_proc.expression_semantics"></a><h6>
-<a name="id676274"></a>
+<a name="id676134"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.functions.mk_fused_proc.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -113,7 +113,7 @@
             <tt class="computeroutput"><span class="identifier">f</span></tt>.
           </p>
 <a name="fusion.functional.generation.functions.mk_fused_proc.header"></a><h6>
-<a name="id676400"></a>
+<a name="id676260"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.functions.mk_fused_proc.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -121,7 +121,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_fused_procedure</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_fused_proc.example"></a><h6>
-<a name="id676570"></a>
+<a name="id676430"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.functions.mk_fused_proc.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -131,7 +131,7 @@
 <span class="identifier">assert</span><span class="special">(</span>front<span class="special">(</span><span class="identifier">v</span><span class="special">)</span> <span class="special">==</span> <span class="number">0</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_fused_proc.see_also"></a><h6>
-<a name="id676840"></a>
+<a name="id676700"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.functions.mk_fused_proc.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_genrc.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
           make_unfused_generic">
           make_unfused_generic</a></h5></div></div></div>
 <a name="fusion.functional.generation.functions.mk_unfused_genrc.description"></a><h6>
-<a name="id678457"></a>
+<a name="id678317"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.functions.mk_unfused_genrc.description">Description</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
             conversion</em></span></a> is applied to the target function.
           </p>
 <a name="fusion.functional.generation.functions.mk_unfused_genrc.synopsis"></a><h6>
-<a name="id678526"></a>
+<a name="id678386"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.functions.mk_unfused_genrc.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -52,7 +52,7 @@
 <span class="identifier">make_unfused_generic</span><span class="special">(</span><span class="identifier">F</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_unfused_genrc.parameters"></a><h6>
-<a name="id678684"></a>
+<a name="id678544"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.functions.mk_unfused_genrc.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.generation.functions.mk_unfused_genrc.expression_semantics"></a><h6>
-<a name="id678800"></a>
+<a name="id678661"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.functions.mk_unfused_genrc.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -114,7 +114,7 @@
             <tt class="computeroutput"><span class="identifier">f</span></tt>.
           </p>
 <a name="fusion.functional.generation.functions.mk_unfused_genrc.header"></a><h6>
-<a name="id678926"></a>
+<a name="id678786"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.functions.mk_unfused_genrc.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -122,7 +122,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_unfused_generic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_unfused_genrc.example"></a><h6>
-<a name="id679096"></a>
+<a name="id678956"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.functions.mk_unfused_genrc.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -158,7 +158,7 @@
 </span><span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_unfused_genrc.see_also"></a><h6>
-<a name="id679900"></a>
+<a name="id679760"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.functions.mk_unfused_genrc.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_lvargs.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
           make_unfused_lvalue_args">
           make_unfused_lvalue_args</a></h5></div></div></div>
 <a name="fusion.functional.generation.functions.mk_unfused_lvargs.description"></a><h6>
-<a name="id680019"></a>
+<a name="id679879"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.functions.mk_unfused_lvargs.description">Description</a>
           </h6>
 <p>
@@ -42,7 +42,7 @@
             conversion</em></span></a> is applied to the target function.
           </p>
 <a name="fusion.functional.generation.functions.mk_unfused_lvargs.synopsis"></a><h6>
-<a name="id680089"></a>
+<a name="id679949"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.functions.mk_unfused_lvargs.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -52,7 +52,7 @@
 <span class="identifier">make_unfused_lvalue_args</span><span class="special">(</span><span class="identifier">F</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_unfused_lvargs.parameters"></a><h6>
-<a name="id680245"></a>
+<a name="id680106"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.functions.mk_unfused_lvargs.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.generation.functions.mk_unfused_lvargs.expression_semantics"></a><h6>
-<a name="id680362"></a>
+<a name="id680222"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.functions.mk_unfused_lvargs.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -114,7 +114,7 @@
             for <tt class="computeroutput"><span class="identifier">f</span></tt>.
           </p>
 <a name="fusion.functional.generation.functions.mk_unfused_lvargs.header"></a><h6>
-<a name="id680488"></a>
+<a name="id680348"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.functions.mk_unfused_lvargs.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -122,7 +122,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_unfused_lvalue_args</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_unfused_lvargs.example"></a><h6>
-<a name="id680661"></a>
+<a name="id680522"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.functions.mk_unfused_lvargs.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -149,7 +149,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_unfused_lvargs.see_also"></a><h6>
-<a name="id681139"></a>
+<a name="id681000"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.functions.mk_unfused_lvargs.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/functions/mk_unfused_rvargs.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
           make_unfused_rvalue_args">
           make_unfused_rvalue_args</a></h5></div></div></div>
 <a name="fusion.functional.generation.functions.mk_unfused_rvargs.description"></a><h6>
-<a name="id681257"></a>
+<a name="id681117"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.functions.mk_unfused_rvargs.description">Description</a>
           </h6>
 <p>
@@ -41,7 +41,7 @@
             conversion</em></span></a> is applied to the target function.
           </p>
 <a name="fusion.functional.generation.functions.mk_unfused_rvargs.synopsis"></a><h6>
-<a name="id681326"></a>
+<a name="id681187"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.functions.mk_unfused_rvargs.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -51,7 +51,7 @@
 <span class="identifier">make_unfused_rvalue_args</span><span class="special">(</span><span class="identifier">F</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">f</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_unfused_rvargs.parameters"></a><h6>
-<a name="id681483"></a>
+<a name="id681344"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.functions.mk_unfused_rvargs.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -98,7 +98,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.functional.generation.functions.mk_unfused_rvargs.expression_semantics"></a><h6>
-<a name="id681600"></a>
+<a name="id681460"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.functions.mk_unfused_rvargs.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -113,7 +113,7 @@
             for <tt class="computeroutput"><span class="identifier">f</span></tt>.
           </p>
 <a name="fusion.functional.generation.functions.mk_unfused_rvargs.header"></a><h6>
-<a name="id681725"></a>
+<a name="id681585"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.functions.mk_unfused_rvargs.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -121,7 +121,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_unfused_rvalue_args</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_unfused_rvargs.example"></a><h6>
-<a name="id681897"></a>
+<a name="id681757"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.functions.mk_unfused_rvargs.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -147,7 +147,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.functions.mk_unfused_rvargs.see_also"></a><h6>
-<a name="id682279"></a>
+<a name="id682139"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.functions.mk_unfused_rvargs.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
           make_fused">
           make_fused</a></h5></div></div></div>
 <a name="fusion.functional.generation.metafunctions.mk_fused.description"></a><h6>
-<a name="id682417"></a>
+<a name="id682277"></a>
             <a href="mk_fused.html#fusion.functional.generation.metafunctions.mk_fused.description">Description</a>
           </h6>
 <p>
@@ -38,7 +38,7 @@
           make_fused"><tt class="computeroutput"><span class="identifier">make_fused</span></tt></a>.
           </p>
 <a name="fusion.functional.generation.metafunctions.mk_fused.header"></a><h6>
-<a name="id682467"></a>
+<a name="id682327"></a>
             <a href="mk_fused.html#fusion.functional.generation.metafunctions.mk_fused.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_fused</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_fused.synopsis"></a><h6>
-<a name="id682638"></a>
+<a name="id682498"></a>
             <a href="mk_fused.html#fusion.functional.generation.metafunctions.mk_fused.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -60,7 +60,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_fused.see_also"></a><h6>
-<a name="id682771"></a>
+<a name="id682632"></a>
             <a href="mk_fused.html#fusion.functional.generation.metafunctions.mk_fused.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
           make_fused_function_object">
           make_fused_function_object</a></h5></div></div></div>
 <a name="fusion.functional.generation.metafunctions.mk_fused_fobj.description"></a><h6>
-<a name="id683273"></a>
+<a name="id683133"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.metafunctions.mk_fused_fobj.description">Description</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
           make_fused_function_object"><tt class="computeroutput"><span class="identifier">make_fused_function_object</span></tt></a>.
           </p>
 <a name="fusion.functional.generation.metafunctions.mk_fused_fobj.header"></a><h6>
-<a name="id683324"></a>
+<a name="id683184"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.metafunctions.mk_fused_fobj.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_fused_function_object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_fused_fobj.synopsis"></a><h6>
-<a name="id683495"></a>
+<a name="id683355"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.metafunctions.mk_fused_fobj.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -61,7 +61,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_fused_fobj.see_also"></a><h6>
-<a name="id683629"></a>
+<a name="id683489"></a>
             <a href="mk_fused_fobj.html#fusion.functional.generation.metafunctions.mk_fused_fobj.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
           make_fused_procedure">
           make_fused_procedure</a></h5></div></div></div>
 <a name="fusion.functional.generation.metafunctions.mk_fused_proc.description"></a><h6>
-<a name="id682844"></a>
+<a name="id682704"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.metafunctions.mk_fused_proc.description">Description</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
           make_fused_procedure"><tt class="computeroutput"><span class="identifier">make_fused_procedure</span></tt></a>.
           </p>
 <a name="fusion.functional.generation.metafunctions.mk_fused_proc.header"></a><h6>
-<a name="id682894"></a>
+<a name="id682755"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.metafunctions.mk_fused_proc.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_fused_procedure</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_fused_proc.synopsis"></a><h6>
-<a name="id683066"></a>
+<a name="id682926"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.metafunctions.mk_fused_proc.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -61,7 +61,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_fused_proc.see_also"></a><h6>
-<a name="id683201"></a>
+<a name="id683061"></a>
             <a href="mk_fused_proc.html#fusion.functional.generation.metafunctions.mk_fused_proc.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_genrc.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
           make_unfused_generic">
           make_unfused_generic</a></h5></div></div></div>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_genrc.description"></a><h6>
-<a name="id683703"></a>
+<a name="id683563"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.metafunctions.mk_unfused_genrc.description">Description</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
           make_unfused_generic"><tt class="computeroutput"><span class="identifier">make_unfused_generic</span></tt></a>.
           </p>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_genrc.header"></a><h6>
-<a name="id683754"></a>
+<a name="id683614"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.metafunctions.mk_unfused_genrc.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_unfused_generic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_genrc.synopsis"></a><h6>
-<a name="id683926"></a>
+<a name="id683786"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.metafunctions.mk_unfused_genrc.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -61,7 +61,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_genrc.see_also"></a><h6>
-<a name="id684062"></a>
+<a name="id683922"></a>
             <a href="mk_unfused_genrc.html#fusion.functional.generation.metafunctions.mk_unfused_genrc.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_lvargs.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
           make_unfused_lvalue_args">
           make_unfused_lvalue_args</a></h5></div></div></div>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_lvargs.description"></a><h6>
-<a name="id684135"></a>
+<a name="id683995"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.metafunctions.mk_unfused_lvargs.description">Description</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
           make_unfused_lvalue_args"><tt class="computeroutput"><span class="identifier">make_unfused_lvalue_args</span></tt></a>.
           </p>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_lvargs.header"></a><h6>
-<a name="id684187"></a>
+<a name="id684047"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.metafunctions.mk_unfused_lvargs.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_unfused_lvalue_args</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_lvargs.synopsis"></a><h6>
-<a name="id684358"></a>
+<a name="id684218"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.metafunctions.mk_unfused_lvargs.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -61,7 +61,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_lvargs.see_also"></a><h6>
-<a name="id684493"></a>
+<a name="id684352"></a>
             <a href="mk_unfused_lvargs.html#fusion.functional.generation.metafunctions.mk_unfused_lvargs.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/generation/metafunctions/mk_unfused_rvargs.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
           make_unfused_rvalue_args">
           make_unfused_rvalue_args</a></h5></div></div></div>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_rvargs.description"></a><h6>
-<a name="id684567"></a>
+<a name="id684427"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.metafunctions.mk_unfused_rvargs.description">Description</a>
           </h6>
 <p>
@@ -38,7 +38,7 @@
           make_unfused_rvalue_args"><tt class="computeroutput"><span class="identifier">make_unfused_rvalue_args</span></tt></a>.
           </p>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_rvargs.header"></a><h6>
-<a name="id684619"></a>
+<a name="id684479"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.metafunctions.mk_unfused_rvargs.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">make_unfused_rvalue_args</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_rvargs.synopsis"></a><h6>
-<a name="id684790"></a>
+<a name="id684650"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.metafunctions.mk_unfused_rvargs.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -60,7 +60,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.generation.metafunctions.mk_unfused_rvargs.see_also"></a><h6>
-<a name="id684925"></a>
+<a name="id684784"></a>
             <a href="mk_unfused_rvargs.html#fusion.functional.generation.metafunctions.mk_unfused_rvargs.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.functional.invocation.functions.invoke"></a>invoke</h5></div></div></div>
 <a name="fusion.functional.invocation.functions.invoke.description"></a><h6>
-<a name="id657347"></a>
+<a name="id657208"></a>
             <a href="invoke.html#fusion.functional.invocation.functions.invoke.description">Description</a>
           </h6>
 <p>
@@ -47,7 +47,7 @@
             and boost::shared_ptr).
           </p>
 <a name="fusion.functional.invocation.functions.invoke.synopsis"></a><h6>
-<a name="id657450"></a>
+<a name="id657311"></a>
             <a href="invoke.html#fusion.functional.invocation.functions.invoke.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -66,7 +66,7 @@
 <span class="identifier">invoke</span><span class="special">(</span><span class="identifier">Function</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">Sequence</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">s</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.invocation.functions.invoke.parameters"></a><h6>
-<a name="id657828"></a>
+<a name="id657689"></a>
             <a href="invoke.html#fusion.functional.invocation.functions.invoke.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -134,7 +134,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.invocation.functions.invoke.expression_semantics"></a><h6>
-<a name="id657989"></a>
+<a name="id657851"></a>
             <a href="invoke.html#fusion.functional.invocation.functions.invoke.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -154,7 +154,7 @@
             /functional/invocation/invoke.hpp&gt;
           </p>
 <a name="fusion.functional.invocation.functions.invoke.example"></a><h6>
-<a name="id658132"></a>
+<a name="id657993"></a>
             <a href="invoke.html#fusion.functional.invocation.functions.invoke.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -162,7 +162,7 @@
 <span class="identifier">assert</span><span class="special">(</span><span class="identifier">invoke</span><span class="special">(</span><span class="identifier">add</span><span class="special">,</span>make_vector<span class="special">(</span><span class="number">1</span><span class="special">,</span><span class="number">1</span><span class="special">))</span> <span class="special">==</span> <span class="number">2</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.invocation.functions.invoke.see_also"></a><h6>
-<a name="id658300"></a>
+<a name="id658162"></a>
             <a href="invoke.html#fusion.functional.invocation.functions.invoke.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke_fobj.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke_fobj.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke_fobj.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
           invoke_function_object">
           invoke_function_object</a></h5></div></div></div>
 <a name="fusion.functional.invocation.functions.invoke_fobj.description"></a><h6>
-<a name="id659620"></a>
+<a name="id659482"></a>
             <a href="invoke_fobj.html#fusion.functional.invocation.functions.invoke_fobj.description">Description</a>
           </h6>
 <p>
@@ -43,7 +43,7 @@
             and/or to control the const qualification of a function object.
           </p>
 <a name="fusion.functional.invocation.functions.invoke_fobj.synopsis"></a><h6>
-<a name="id659675"></a>
+<a name="id659537"></a>
             <a href="invoke_fobj.html#fusion.functional.invocation.functions.invoke_fobj.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -64,7 +64,7 @@
 <span class="identifier">invoke_function_object</span><span class="special">(</span><span class="identifier">Function</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">Sequence</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">s</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.invocation.functions.invoke_fobj.parameters"></a><h6>
-<a name="id660056"></a>
+<a name="id659917"></a>
             <a href="invoke_fobj.html#fusion.functional.invocation.functions.invoke_fobj.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -132,7 +132,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.invocation.functions.invoke_fobj.expression_semantics"></a><h6>
-<a name="id660216"></a>
+<a name="id660078"></a>
             <a href="invoke_fobj.html#fusion.functional.invocation.functions.invoke_fobj.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -152,7 +152,7 @@
             /functional/invocation/invoke_function_object.hpp&gt;
           </p>
 <a name="fusion.functional.invocation.functions.invoke_fobj.example"></a><h6>
-<a name="id660359"></a>
+<a name="id660221"></a>
             <a href="invoke_fobj.html#fusion.functional.invocation.functions.invoke_fobj.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -179,7 +179,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.invocation.functions.invoke_fobj.see_also"></a><h6>
-<a name="id660909"></a>
+<a name="id660771"></a>
             <a href="invoke_fobj.html#fusion.functional.invocation.functions.invoke_fobj.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke_proc.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke_proc.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/functions/invoke_proc.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
           invoke_procedure">
           invoke_procedure</a></h5></div></div></div>
 <a name="fusion.functional.invocation.functions.invoke_proc.description"></a><h6>
-<a name="id658453"></a>
+<a name="id658315"></a>
             <a href="invoke_proc.html#fusion.functional.invocation.functions.invoke_proc.description">Description</a>
           </h6>
 <p>
@@ -54,7 +54,7 @@
             isn't implemented).
           </p>
 <a name="fusion.functional.invocation.functions.invoke_proc.synopsis"></a><h6>
-<a name="id658563"></a>
+<a name="id658425"></a>
             <a href="invoke_proc.html#fusion.functional.invocation.functions.invoke_proc.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -75,7 +75,7 @@
 <span class="identifier">invoke_procedure</span><span class="special">(</span><span class="identifier">Function</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">Sequence</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">s</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.invocation.functions.invoke_proc.parameters"></a><h6>
-<a name="id658942"></a>
+<a name="id658804"></a>
             <a href="invoke_proc.html#fusion.functional.invocation.functions.invoke_proc.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -142,7 +142,7 @@
 </tbody>
 </table></div>
 <a name="fusion.functional.invocation.functions.invoke_proc.expression_semantics"></a><h6>
-<a name="id659102"></a>
+<a name="id658964"></a>
             <a href="invoke_proc.html#fusion.functional.invocation.functions.invoke_proc.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -161,7 +161,7 @@
             /functional/invocation/invoke_procedure.hpp&gt;
           </p>
 <a name="fusion.functional.invocation.functions.invoke_proc.example"></a><h6>
-<a name="id659230"></a>
+<a name="id659092"></a>
             <a href="invoke_proc.html#fusion.functional.invocation.functions.invoke_proc.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -171,7 +171,7 @@
 <span class="identifier">assert</span><span class="special">(</span>front<span class="special">(</span><span class="identifier">v</span><span class="special">)</span> <span class="special">==</span> <span class="number">3</span><span class="special">);</span>
 </pre>
 <a name="fusion.functional.invocation.functions.invoke_proc.see_also"></a><h6>
-<a name="id659471"></a>
+<a name="id659332"></a>
             <a href="invoke_proc.html#fusion.functional.invocation.functions.invoke_proc.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,14 +27,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.functional.invocation.metafunctions.invoke"></a>invoke</h5></div></div></div>
 <a name="fusion.functional.invocation.metafunctions.invoke.description"></a><h6>
-<a name="id661082"></a>
+<a name="id660943"></a>
             <a href="invoke.html#fusion.functional.invocation.metafunctions.invoke.description">Description</a>
           </h6>
 <p>
             Returns the result type of invoke.
           </p>
 <a name="fusion.functional.invocation.metafunctions.invoke.synopsis"></a><h6>
-<a name="id661131"></a>
+<a name="id660992"></a>
             <a href="invoke.html#fusion.functional.invocation.metafunctions.invoke.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -51,7 +51,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.invocation.metafunctions.invoke.see_also"></a><h6>
-<a name="id661284"></a>
+<a name="id661146"></a>
             <a href="invoke.html#fusion.functional.invocation.metafunctions.invoke.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
           invoke_function_object">
           invoke_function_object</a></h5></div></div></div>
 <a name="fusion.functional.invocation.metafunctions.invoke_fobj.description"></a><h6>
-<a name="id661675"></a>
+<a name="id661536"></a>
             <a href="invoke_fobj.html#fusion.functional.invocation.metafunctions.invoke_fobj.description">Description</a>
           </h6>
 <p>
@@ -38,7 +38,7 @@
           invoke_function_object"><tt class="computeroutput"><span class="identifier">invoke_function_object</span></tt></a>.
           </p>
 <a name="fusion.functional.invocation.metafunctions.invoke_fobj.synopsis"></a><h6>
-<a name="id661726"></a>
+<a name="id661587"></a>
             <a href="invoke_fobj.html#fusion.functional.invocation.metafunctions.invoke_fobj.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -55,7 +55,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.invocation.metafunctions.invoke_fobj.see_also"></a><h6>
-<a name="id661880"></a>
+<a name="id661742"></a>
             <a href="invoke_fobj.html#fusion.functional.invocation.metafunctions.invoke_fobj.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
           invoke_procedure">
           invoke_procedure</a></h5></div></div></div>
 <a name="fusion.functional.invocation.metafunctions.invoke_proc.description"></a><h6>
-<a name="id661378"></a>
+<a name="id661240"></a>
             <a href="invoke_proc.html#fusion.functional.invocation.metafunctions.invoke_proc.description">Description</a>
           </h6>
 <p>
@@ -38,7 +38,7 @@
           invoke_procedure"><tt class="computeroutput"><span class="identifier">invoke_procedure</span></tt></a>.
           </p>
 <a name="fusion.functional.invocation.metafunctions.invoke_proc.synopsis"></a><h6>
-<a name="id661428"></a>
+<a name="id661290"></a>
             <a href="invoke_proc.html#fusion.functional.invocation.metafunctions.invoke_proc.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -55,7 +55,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.functional.invocation.metafunctions.invoke_proc.see_also"></a><h6>
-<a name="id661582"></a>
+<a name="id661443"></a>
             <a href="invoke_proc.html#fusion.functional.invocation.metafunctions.invoke_proc.see_also">See
             also</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/introduction.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/introduction.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/introduction.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -115,8 +115,10 @@
       sequences and MPL
       sequences are fully compatible with Fusion. You can work with Fusion sequences
       on MPL if you
- wish to work solely on types. In MPL,
- Fusion sequences follow MPL's
+ wish to work solely on types
+ <sup>[<a name="id456150" href="#ftn.id456150">1</a>]</sup>
+ . In MPL, Fusion
+ sequences follow MPL's
       sequence-type preserving semantics (i.e. algorithms preserve the original sequence
       type. e.g. transforming a vector returns a vector). You can also convert from
       an MPL sequence
@@ -127,6 +129,15 @@
       instantiation of real runtime objects with data. You have the best of both
       worlds.
     </p>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id456150" href="#id456150">1</a>] </sup>
+ Choose MPL
+ over fusion when doing pure type calculations. Once the static type calculation
+ is finished, you can instantiate a fusion sequence (see Conversion)
+ for the runtime part.
+ </p></div>
+</div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -74,7 +74,7 @@
       <a href="sequence.html" title="Sequence">Sequence</a>.
     </p>
 <a name="fusion.iterator.header"></a><h3>
-<a name="id468413"></a>
+<a name="id468260"></a>
       <a href="iterator.html#fusion.iterator.header">Header</a>
     </h3>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/bidirectional_iterator.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/bidirectional_iterator.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/bidirectional_iterator.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
         Iterator">Bidirectional
         Iterator</a></h4></div></div></div>
 <a name="fusion.iterator.concepts.bidirectional_iterator.description"></a><h5>
-<a name="id471561"></a>
+<a name="id471408"></a>
           <a href="bidirectional_iterator.html#fusion.iterator.concepts.bidirectional_iterator.description">Description</a>
         </h5>
 <p>
@@ -61,7 +61,7 @@
 </dl>
 </div>
 <a name="fusion.iterator.concepts.bidirectional_iterator.refinement_of"></a><h5>
-<a name="id471709"></a>
+<a name="id471556"></a>
           <a href="bidirectional_iterator.html#fusion.iterator.concepts.bidirectional_iterator.refinement_of">Refinement
           of</a>
         </h5>
@@ -70,7 +70,7 @@
         Iterator">Forward Iterator</a>
         </p>
 <a name="fusion.iterator.concepts.bidirectional_iterator.expression_requirements"></a><h5>
-<a name="id471749"></a>
+<a name="id471596"></a>
           <a href="bidirectional_iterator.html#fusion.iterator.concepts.bidirectional_iterator.expression_requirements">Expression
           requirements</a>
         </h5>
@@ -182,7 +182,7 @@
 </tbody>
 </table></div>
 <a name="fusion.iterator.concepts.bidirectional_iterator.meta_expressions"></a><h5>
-<a name="id472132"></a>
+<a name="id471979"></a>
           <a href="bidirectional_iterator.html#fusion.iterator.concepts.bidirectional_iterator.meta_expressions">Meta
           Expressions</a>
         </h5>
@@ -217,7 +217,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.iterator.concepts.bidirectional_iterator.expression_semantics"></a><h5>
-<a name="id472268"></a>
+<a name="id472116"></a>
           <a href="bidirectional_iterator.html#fusion.iterator.concepts.bidirectional_iterator.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -258,7 +258,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.iterator.concepts.bidirectional_iterator.invariants"></a><h5>
-<a name="id472413"></a>
+<a name="id472260"></a>
           <a href="bidirectional_iterator.html#fusion.iterator.concepts.bidirectional_iterator.invariants">Invariants</a>
         </h5>
 <p>
@@ -275,7 +275,7 @@
           </li>
 </ul></div>
 <a name="fusion.iterator.concepts.bidirectional_iterator.models"></a><h5>
-<a name="id472752"></a>
+<a name="id472599"></a>
           <a href="bidirectional_iterator.html#fusion.iterator.concepts.bidirectional_iterator.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/forward_iterator.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/forward_iterator.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/forward_iterator.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
         Iterator">Forward
         Iterator</a></h4></div></div></div>
 <a name="fusion.iterator.concepts.forward_iterator.description"></a><h5>
-<a name="id468656"></a>
+<a name="id468503"></a>
           <a href="forward_iterator.html#fusion.iterator.concepts.forward_iterator.description">Description</a>
         </h5>
 <p>
@@ -63,7 +63,7 @@
 </dl>
 </div>
 <a name="fusion.iterator.concepts.forward_iterator.expression_requirements"></a><h5>
-<a name="id468827"></a>
+<a name="id468674"></a>
           <a href="forward_iterator.html#fusion.iterator.concepts.forward_iterator.expression_requirements">Expression
           requirements</a>
         </h5>
@@ -244,7 +244,7 @@
 </tbody>
 </table></div>
 <a name="fusion.iterator.concepts.forward_iterator.meta_expressions"></a><h5>
-<a name="id469573"></a>
+<a name="id469420"></a>
           <a href="forward_iterator.html#fusion.iterator.concepts.forward_iterator.meta_expressions">Meta
           Expressions</a>
         </h5>
@@ -355,7 +355,7 @@
 </tbody>
 </table></div>
 <a name="fusion.iterator.concepts.forward_iterator.expression_semantics"></a><h5>
-<a name="id470176"></a>
+<a name="id470023"></a>
           <a href="forward_iterator.html#fusion.iterator.concepts.forward_iterator.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -481,7 +481,7 @@
 </tbody>
 </table></div>
 <a name="fusion.iterator.concepts.forward_iterator.invariants"></a><h5>
-<a name="id470784"></a>
+<a name="id470631"></a>
           <a href="forward_iterator.html#fusion.iterator.concepts.forward_iterator.invariants">Invariants</a>
         </h5>
 <p>
@@ -505,7 +505,7 @@
 </li>
 </ul></div>
 <a name="fusion.iterator.concepts.forward_iterator.models"></a><h5>
-<a name="id471208"></a>
+<a name="id471055"></a>
           <a href="forward_iterator.html#fusion.iterator.concepts.forward_iterator.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/random_access_iterator.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/random_access_iterator.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/concepts/random_access_iterator.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
         Access Iterator">Random
         Access Iterator</a></h4></div></div></div>
 <a name="fusion.iterator.concepts.random_access_iterator.description"></a><h5>
-<a name="id472969"></a>
+<a name="id472816"></a>
           <a href="random_access_iterator.html#fusion.iterator.concepts.random_access_iterator.description">Description</a>
         </h5>
 <p>
@@ -63,7 +63,7 @@
 </dl>
 </div>
 <a name="fusion.iterator.concepts.random_access_iterator.refinement_of"></a><h5>
-<a name="id473140"></a>
+<a name="id472988"></a>
           <a href="random_access_iterator.html#fusion.iterator.concepts.random_access_iterator.refinement_of">Refinement
           of</a>
         </h5>
@@ -73,7 +73,7 @@
           Iterator</a>
         </p>
 <a name="fusion.iterator.concepts.random_access_iterator.expression_requirements"></a><h5>
-<a name="id473179"></a>
+<a name="id473027"></a>
           <a href="random_access_iterator.html#fusion.iterator.concepts.random_access_iterator.expression_requirements">Expression
           requirements</a>
         </h5>
@@ -185,7 +185,7 @@
 </tbody>
 </table></div>
 <a name="fusion.iterator.concepts.random_access_iterator.meta_expressions"></a><h5>
-<a name="id473562"></a>
+<a name="id473410"></a>
           <a href="random_access_iterator.html#fusion.iterator.concepts.random_access_iterator.meta_expressions">Meta
           Expressions</a>
         </h5>
@@ -248,7 +248,7 @@
 </tbody>
 </table></div>
 <a name="fusion.iterator.concepts.random_access_iterator.models"></a><h5>
-<a name="id473868"></a>
+<a name="id473716"></a>
           <a href="random_access_iterator.html#fusion.iterator.concepts.random_access_iterator.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/advance.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/advance.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/advance.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.functions.advance"></a>advance</h4></div></div></div>
 <a name="fusion.iterator.functions.advance.description"></a><h5>
-<a name="id477979"></a>
+<a name="id477827"></a>
           <a href="advance.html#fusion.iterator.functions.advance.description">Description</a>
         </h5>
 <p>
           Moves an iterator by a specified distance.
         </p>
 <a name="fusion.iterator.functions.advance.synopsis"></a><h5>
-<a name="id478008"></a>
+<a name="id477856"></a>
           <a href="advance.html#fusion.iterator.functions.advance.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="keyword">typename</span> result_of::advance<span class="special">&lt;</span><span class="identifier">I</span><span class="special">,</span> <span class="identifier">M</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">advance</span><span class="special">(</span><span class="identifier">I</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id478181"></a><p class="title"><b>Table 1.6. Parameters</b></p>
+<a name="id478029"></a><p class="title"><b>Table 1.6. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -110,7 +110,7 @@
 </table>
 </div>
 <a name="fusion.iterator.functions.advance.expression_semantics"></a><h5>
-<a name="id478326"></a>
+<a name="id478174"></a>
           <a href="advance.html#fusion.iterator.functions.advance.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -131,7 +131,7 @@
           may be negative.
         </p>
 <a name="fusion.iterator.functions.advance.header"></a><h5>
-<a name="id478490"></a>
+<a name="id478338"></a>
           <a href="advance.html#fusion.iterator.functions.advance.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -139,7 +139,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">advance</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.functions.advance.example"></a><h5>
-<a name="id478648"></a>
+<a name="id478496"></a>
           <a href="advance.html#fusion.iterator.functions.advance.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/advance_c.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/advance_c.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/advance_c.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.functions.advance_c"></a>advance_c</h4></div></div></div>
 <a name="fusion.iterator.functions.advance_c.description"></a><h5>
-<a name="id478945"></a>
+<a name="id478793"></a>
           <a href="advance_c.html#fusion.iterator.functions.advance_c.description">Description</a>
         </h5>
 <p>
           Moves an iterator by a specified distance.
         </p>
 <a name="fusion.iterator.functions.advance_c.synopsis"></a><h5>
-<a name="id478975"></a>
+<a name="id478823"></a>
           <a href="advance_c.html#fusion.iterator.functions.advance_c.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="keyword">typename</span> result_of::advance_c<span class="special">&lt;</span><span class="identifier">I</span><span class="special">,</span> <span class="identifier">N</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">advance_c</span><span class="special">(</span><span class="identifier">I</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id479147"></a><p class="title"><b>Table 1.7. Parameters</b></p>
+<a name="id478995"></a><p class="title"><b>Table 1.7. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -109,7 +109,7 @@
 </table>
 </div>
 <a name="fusion.iterator.functions.advance_c.expression_semantics"></a><h5>
-<a name="id479287"></a>
+<a name="id479135"></a>
           <a href="advance_c.html#fusion.iterator.functions.advance_c.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -130,7 +130,7 @@
           may be negative.
         </p>
 <a name="fusion.iterator.functions.advance_c.header"></a><h5>
-<a name="id479452"></a>
+<a name="id479300"></a>
           <a href="advance_c.html#fusion.iterator.functions.advance_c.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -138,7 +138,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">advance</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.functions.advance_c.example"></a><h5>
-<a name="id479610"></a>
+<a name="id479458"></a>
           <a href="advance_c.html#fusion.iterator.functions.advance_c.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/deref.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/deref.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/deref.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.functions.deref"></a>deref</h4></div></div></div>
 <a name="fusion.iterator.functions.deref.description"></a><h5>
-<a name="id474125"></a>
+<a name="id473973"></a>
           <a href="deref.html#fusion.iterator.functions.deref.description">Description</a>
         </h5>
 <p>
           Deferences an iterator.
         </p>
 <a name="fusion.iterator.functions.deref.synopsis"></a><h5>
-<a name="id474155"></a>
+<a name="id474003"></a>
           <a href="deref.html#fusion.iterator.functions.deref.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">typename</span> result_of::deref<span class="special">&lt;</span><span class="identifier">I</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">deref</span><span class="special">(</span><span class="identifier">I</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id474300"></a><p class="title"><b>Table 1.2. Parameters</b></p>
+<a name="id474148"></a><p class="title"><b>Table 1.2. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -89,7 +89,7 @@
 </table>
 </div>
 <a name="fusion.iterator.functions.deref.expression_semantics"></a><h5>
-<a name="id474402"></a>
+<a name="id474250"></a>
           <a href="deref.html#fusion.iterator.functions.deref.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -104,7 +104,7 @@
           <tt class="computeroutput"><span class="identifier">i</span></tt>.
         </p>
 <a name="fusion.iterator.functions.deref.header"></a><h5>
-<a name="id474550"></a>
+<a name="id474398"></a>
           <a href="deref.html#fusion.iterator.functions.deref.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -112,7 +112,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">deref</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.functions.deref.example"></a><h5>
-<a name="id474707"></a>
+<a name="id474555"></a>
           <a href="deref.html#fusion.iterator.functions.deref.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/distance.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/distance.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/distance.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.functions.distance"></a>distance</h4></div></div></div>
 <a name="fusion.iterator.functions.distance.description"></a><h5>
-<a name="id477036"></a>
+<a name="id476884"></a>
           <a href="distance.html#fusion.iterator.functions.distance.description">Description</a>
         </h5>
 <p>
           Returns the distance between 2 iterators.
         </p>
 <a name="fusion.iterator.functions.distance.synopsis"></a><h5>
-<a name="id477066"></a>
+<a name="id476914"></a>
           <a href="distance.html#fusion.iterator.functions.distance.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="keyword">typename</span> result_of::distance<span class="special">&lt;</span><span class="identifier">I</span><span class="special">,</span> <span class="identifier">J</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">I</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">J</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">j</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id477267"></a><p class="title"><b>Table 1.5. Parameters</b></p>
+<a name="id477115"></a><p class="title"><b>Table 1.5. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -90,7 +90,7 @@
 </table>
 </div>
 <a name="fusion.iterator.functions.distance.expression_semantics"></a><h5>
-<a name="id477381"></a>
+<a name="id477229"></a>
           <a href="distance.html#fusion.iterator.functions.distance.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -105,7 +105,7 @@
           iterators <tt class="computeroutput"><span class="identifier">i</span></tt> and <tt class="computeroutput"><span class="identifier">j</span></tt>.
         </p>
 <a name="fusion.iterator.functions.distance.header"></a><h5>
-<a name="id477511"></a>
+<a name="id477359"></a>
           <a href="distance.html#fusion.iterator.functions.distance.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -113,7 +113,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">distance</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.functions.distance.example"></a><h5>
-<a name="id477669"></a>
+<a name="id477517"></a>
           <a href="distance.html#fusion.iterator.functions.distance.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/next.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/next.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/next.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.functions.next"></a>next</h4></div></div></div>
 <a name="fusion.iterator.functions.next.description"></a><h5>
-<a name="id475155"></a>
+<a name="id475003"></a>
           <a href="next.html#fusion.iterator.functions.next.description">Description</a>
         </h5>
 <p>
           Moves an iterator 1 position forwards.
         </p>
 <a name="fusion.iterator.functions.next.synopsis"></a><h5>
-<a name="id475183"></a>
+<a name="id475032"></a>
           <a href="next.html#fusion.iterator.functions.next.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">typename</span> result_of::next<span class="special">&lt;</span><span class="identifier">I</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">next</span><span class="special">(</span><span class="identifier">I</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id475328"></a><p class="title"><b>Table 1.3. Parameters</b></p>
+<a name="id475177"></a><p class="title"><b>Table 1.3. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -89,7 +89,7 @@
 </table>
 </div>
 <a name="fusion.iterator.functions.next.expression_semantics"></a><h5>
-<a name="id475429"></a>
+<a name="id475278"></a>
           <a href="next.html#fusion.iterator.functions.next.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -105,7 +105,7 @@
           next element after <tt class="computeroutput"><span class="identifier">i</span></tt>.
         </p>
 <a name="fusion.iterator.functions.next.header"></a><h5>
-<a name="id475528"></a>
+<a name="id475376"></a>
           <a href="next.html#fusion.iterator.functions.next.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -113,7 +113,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">next</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.functions.next.example"></a><h5>
-<a name="id475686"></a>
+<a name="id475534"></a>
           <a href="next.html#fusion.iterator.functions.next.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/prior.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/prior.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/functions/prior.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.functions.prior"></a>prior</h4></div></div></div>
 <a name="fusion.iterator.functions.prior.description"></a><h5>
-<a name="id476138"></a>
+<a name="id475986"></a>
           <a href="prior.html#fusion.iterator.functions.prior.description">Description</a>
         </h5>
 <p>
           Moves an iterator 1 position backwards.
         </p>
 <a name="fusion.iterator.functions.prior.synopsis"></a><h5>
-<a name="id476168"></a>
+<a name="id476016"></a>
           <a href="prior.html#fusion.iterator.functions.prior.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">typename</span> result_of::prior<span class="special">&lt;</span><span class="identifier">I</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">prior</span><span class="special">(</span><span class="identifier">I</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id476312"></a><p class="title"><b>Table 1.4. Parameters</b></p>
+<a name="id476160"></a><p class="title"><b>Table 1.4. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -89,7 +89,7 @@
 </table>
 </div>
 <a name="fusion.iterator.functions.prior.expression_semantics"></a><h5>
-<a name="id476414"></a>
+<a name="id476262"></a>
           <a href="prior.html#fusion.iterator.functions.prior.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -105,7 +105,7 @@
           element prior to <tt class="computeroutput"><span class="identifier">i</span></tt>.
         </p>
 <a name="fusion.iterator.functions.prior.header"></a><h5>
-<a name="id476522"></a>
+<a name="id476370"></a>
           <a href="prior.html#fusion.iterator.functions.prior.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -113,7 +113,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">prior</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.functions.prior.example"></a><h5>
-<a name="id476679"></a>
+<a name="id476527"></a>
           <a href="prior.html#fusion.iterator.functions.prior.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/advance.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/advance.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/advance.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.metafunctions.advance"></a>advance</h4></div></div></div>
 <a name="fusion.iterator.metafunctions.advance.description"></a><h5>
-<a name="id488212"></a>
+<a name="id488059"></a>
           <a href="advance.html#fusion.iterator.metafunctions.advance.description">Description</a>
         </h5>
 <p>
           Moves an iterator a specified distance.
         </p>
 <a name="fusion.iterator.metafunctions.advance.synopsis"></a><h5>
-<a name="id488244"></a>
+<a name="id488091"></a>
           <a href="advance.html#fusion.iterator.metafunctions.advance.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id488361"></a><p class="title"><b>Table 1.17. Parameters</b></p>
+<a name="id488208"></a><p class="title"><b>Table 1.17. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.iterator.metafunctions.advance.expression_semantics"></a><h5>
-<a name="id488507"></a>
+<a name="id488354"></a>
           <a href="advance.html#fusion.iterator.metafunctions.advance.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -133,7 +133,7 @@
           may be negative.
         </p>
 <a name="fusion.iterator.metafunctions.advance.header"></a><h5>
-<a name="id488686"></a>
+<a name="id488533"></a>
           <a href="advance.html#fusion.iterator.metafunctions.advance.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -141,7 +141,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">advance</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.metafunctions.advance.example"></a><h5>
-<a name="id488844"></a>
+<a name="id488691"></a>
           <a href="advance.html#fusion.iterator.metafunctions.advance.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/advance_c.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/advance_c.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/advance_c.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.metafunctions.advance_c"></a>advance_c</h4></div></div></div>
 <a name="fusion.iterator.metafunctions.advance_c.description"></a><h5>
-<a name="id489305"></a>
+<a name="id489152"></a>
           <a href="advance_c.html#fusion.iterator.metafunctions.advance_c.description">Description</a>
         </h5>
 <p>
           Moves an iterator by a specified distance.
         </p>
 <a name="fusion.iterator.metafunctions.advance_c.synopsis"></a><h5>
-<a name="id489336"></a>
+<a name="id489183"></a>
           <a href="advance_c.html#fusion.iterator.metafunctions.advance_c.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id489455"></a><p class="title"><b>Table 1.18. Parameters</b></p>
+<a name="id489302"></a><p class="title"><b>Table 1.18. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -112,7 +112,7 @@
 </table>
 </div>
 <a name="fusion.iterator.metafunctions.advance_c.expression_semantics"></a><h5>
-<a name="id489593"></a>
+<a name="id489440"></a>
           <a href="advance_c.html#fusion.iterator.metafunctions.advance_c.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -132,7 +132,7 @@
           may be negative. Equivalent to <tt class="computeroutput">result_of::advance<span class="special">&lt;</span><span class="identifier">I</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span></tt>.
         </p>
 <a name="fusion.iterator.metafunctions.advance_c.header"></a><h5>
-<a name="id489874"></a>
+<a name="id489721"></a>
           <a href="advance_c.html#fusion.iterator.metafunctions.advance_c.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -140,7 +140,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">advance</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.metafunctions.advance_c.example"></a><h5>
-<a name="id490032"></a>
+<a name="id489879"></a>
           <a href="advance_c.html#fusion.iterator.metafunctions.advance_c.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/deref.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/deref.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/deref.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.metafunctions.deref"></a>deref</h4></div></div></div>
 <a name="fusion.iterator.metafunctions.deref.description"></a><h5>
-<a name="id483305"></a>
+<a name="id483152"></a>
           <a href="deref.html#fusion.iterator.metafunctions.deref.description">Description</a>
         </h5>
 <p>
           Returns the type that will be returned by dereferencing an iterator.
         </p>
 <a name="fusion.iterator.metafunctions.deref.synposis"></a><h5>
-<a name="id483336"></a>
+<a name="id483183"></a>
           <a href="deref.html#fusion.iterator.metafunctions.deref.synposis">Synposis</a>
         </h5>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id483436"></a><p class="title"><b>Table 1.12. Parameters</b></p>
+<a name="id483283"></a><p class="title"><b>Table 1.12. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -92,7 +92,7 @@
 </table>
 </div>
 <a name="fusion.iterator.metafunctions.deref.expression_semantics"></a><h5>
-<a name="id483538"></a>
+<a name="id483385"></a>
           <a href="deref.html#fusion.iterator.metafunctions.deref.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -107,7 +107,7 @@
           an iterator of type <tt class="computeroutput"><span class="identifier">I</span></tt>.
         </p>
 <a name="fusion.iterator.metafunctions.deref.header"></a><h5>
-<a name="id483653"></a>
+<a name="id483500"></a>
           <a href="deref.html#fusion.iterator.metafunctions.deref.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -115,7 +115,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">deref</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.metafunctions.deref.example"></a><h5>
-<a name="id483811"></a>
+<a name="id483658"></a>
           <a href="deref.html#fusion.iterator.metafunctions.deref.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/distance.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/distance.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/distance.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.metafunctions.distance"></a>distance</h4></div></div></div>
 <a name="fusion.iterator.metafunctions.distance.description"></a><h5>
-<a name="id487212"></a>
+<a name="id487059"></a>
           <a href="distance.html#fusion.iterator.metafunctions.distance.description">Description</a>
         </h5>
 <p>
           Returns the distance between two iterators.
         </p>
 <a name="fusion.iterator.metafunctions.distance.synopsis"></a><h5>
-<a name="id487243"></a>
+<a name="id487090"></a>
           <a href="distance.html#fusion.iterator.metafunctions.distance.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id487361"></a><p class="title"><b>Table 1.16. Parameters</b></p>
+<a name="id487208"></a><p class="title"><b>Table 1.16. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -93,7 +93,7 @@
 </table>
 </div>
 <a name="fusion.iterator.metafunctions.distance.expression_semantics"></a><h5>
-<a name="id487475"></a>
+<a name="id487322"></a>
           <a href="distance.html#fusion.iterator.metafunctions.distance.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -110,7 +110,7 @@
           <tt class="computeroutput"><span class="identifier">J</span></tt>.
         </p>
 <a name="fusion.iterator.metafunctions.distance.header"></a><h5>
-<a name="id487620"></a>
+<a name="id487468"></a>
           <a href="distance.html#fusion.iterator.metafunctions.distance.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -118,7 +118,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">distance</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.metafunctions.distance.example"></a><h5>
-<a name="id487779"></a>
+<a name="id487626"></a>
           <a href="distance.html#fusion.iterator.metafunctions.distance.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/equal_to.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/equal_to.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/equal_to.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.metafunctions.equal_to"></a>equal_to</h4></div></div></div>
 <a name="fusion.iterator.metafunctions.equal_to.description"></a><h5>
-<a name="id486198"></a>
+<a name="id486044"></a>
           <a href="equal_to.html#fusion.iterator.metafunctions.equal_to.description">Description</a>
         </h5>
 <p>
@@ -35,7 +35,7 @@
           and <tt class="computeroutput"><span class="identifier">J</span></tt> are equal.
         </p>
 <a name="fusion.iterator.metafunctions.equal_to.synopsis"></a><h5>
-<a name="id486260"></a>
+<a name="id486107"></a>
           <a href="equal_to.html#fusion.iterator.metafunctions.equal_to.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -49,7 +49,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id486377"></a><p class="title"><b>Table 1.15. Parameters</b></p>
+<a name="id486224"></a><p class="title"><b>Table 1.15. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -93,7 +93,7 @@
 </table>
 </div>
 <a name="fusion.iterator.metafunctions.equal_to.expression_semantics"></a><h5>
-<a name="id486482"></a>
+<a name="id486329"></a>
           <a href="equal_to.html#fusion.iterator.metafunctions.equal_to.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -110,7 +110,7 @@
           Returns <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></tt> otherwise.
         </p>
 <a name="fusion.iterator.metafunctions.equal_to.header"></a><h5>
-<a name="id486689"></a>
+<a name="id486536"></a>
           <a href="equal_to.html#fusion.iterator.metafunctions.equal_to.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -118,7 +118,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">equal_to</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.metafunctions.equal_to.example"></a><h5>
-<a name="id486848"></a>
+<a name="id486695"></a>
           <a href="equal_to.html#fusion.iterator.metafunctions.equal_to.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/next.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/next.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/next.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.metafunctions.next"></a>next</h4></div></div></div>
 <a name="fusion.iterator.metafunctions.next.description"></a><h5>
-<a name="id484392"></a>
+<a name="id484240"></a>
           <a href="next.html#fusion.iterator.metafunctions.next.description">Description</a>
         </h5>
 <p>
           Returns the type of the next iterator in a sequence.
         </p>
 <a name="fusion.iterator.metafunctions.next.synposis"></a><h5>
-<a name="id484423"></a>
+<a name="id484270"></a>
           <a href="next.html#fusion.iterator.metafunctions.next.synposis">Synposis</a>
         </h5>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id484523"></a><p class="title"><b>Table 1.13. Parameters</b></p>
+<a name="id484371"></a><p class="title"><b>Table 1.13. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -92,7 +92,7 @@
 </table>
 </div>
 <a name="fusion.iterator.metafunctions.next.expression_semantics"></a><h5>
-<a name="id484625"></a>
+<a name="id484472"></a>
           <a href="next.html#fusion.iterator.metafunctions.next.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -108,7 +108,7 @@
           next element in the sequence after <tt class="computeroutput"><span class="identifier">I</span></tt>.
         </p>
 <a name="fusion.iterator.metafunctions.next.header"></a><h5>
-<a name="id484751"></a>
+<a name="id484598"></a>
           <a href="next.html#fusion.iterator.metafunctions.next.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -116,7 +116,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">next</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.metafunctions.next.example"></a><h5>
-<a name="id484910"></a>
+<a name="id484757"></a>
           <a href="next.html#fusion.iterator.metafunctions.next.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/prior.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/prior.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/prior.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.metafunctions.prior"></a>prior</h4></div></div></div>
 <a name="fusion.iterator.metafunctions.prior.description"></a><h5>
-<a name="id485216"></a>
+<a name="id485063"></a>
           <a href="prior.html#fusion.iterator.metafunctions.prior.description">Description</a>
         </h5>
 <p>
           Returns the type of the previous iterator in a sequence.
         </p>
 <a name="fusion.iterator.metafunctions.prior.synopsis"></a><h5>
-<a name="id485247"></a>
+<a name="id485094"></a>
           <a href="prior.html#fusion.iterator.metafunctions.prior.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id485347"></a><p class="title"><b>Table 1.14. Parameters</b></p>
+<a name="id485194"></a><p class="title"><b>Table 1.14. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -92,7 +92,7 @@
 </table>
 </div>
 <a name="fusion.iterator.metafunctions.prior.expression_semantics"></a><h5>
-<a name="id485448"></a>
+<a name="id485295"></a>
           <a href="prior.html#fusion.iterator.metafunctions.prior.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -108,7 +108,7 @@
           previous element in the sequence before <tt class="computeroutput"><span class="identifier">I</span></tt>.
         </p>
 <a name="fusion.iterator.metafunctions.prior.header"></a><h5>
-<a name="id485575"></a>
+<a name="id485422"></a>
           <a href="prior.html#fusion.iterator.metafunctions.prior.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -116,7 +116,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">prior</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.metafunctions.prior.example"></a><h5>
-<a name="id485734"></a>
+<a name="id485581"></a>
           <a href="prior.html#fusion.iterator.metafunctions.prior.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/value_of.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/value_of.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/metafunctions/value_of.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.iterator.metafunctions.value_of"></a>value_of</h4></div></div></div>
 <a name="fusion.iterator.metafunctions.value_of.description"></a><h5>
-<a name="id482198"></a>
+<a name="id482045"></a>
           <a href="value_of.html#fusion.iterator.metafunctions.value_of.description">Description</a>
         </h5>
 <p>
           Returns the type stored at the position of an iterator.
         </p>
 <a name="fusion.iterator.metafunctions.value_of.synopsis"></a><h5>
-<a name="id482230"></a>
+<a name="id482077"></a>
           <a href="value_of.html#fusion.iterator.metafunctions.value_of.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id482329"></a><p class="title"><b>Table 1.11. Parameters</b></p>
+<a name="id482176"></a><p class="title"><b>Table 1.11. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -92,7 +92,7 @@
 </table>
 </div>
 <a name="fusion.iterator.metafunctions.value_of.expression_semantics"></a><h5>
-<a name="id482429"></a>
+<a name="id482276"></a>
           <a href="value_of.html#fusion.iterator.metafunctions.value_of.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -107,7 +107,7 @@
           a sequence at iterator position <tt class="computeroutput"><span class="identifier">I</span></tt>.
         </p>
 <a name="fusion.iterator.metafunctions.value_of.header"></a><h5>
-<a name="id482543"></a>
+<a name="id482390"></a>
           <a href="value_of.html#fusion.iterator.metafunctions.value_of.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -115,7 +115,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">value_of</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.metafunctions.value_of.example"></a><h5>
-<a name="id482702"></a>
+<a name="id482549"></a>
           <a href="value_of.html#fusion.iterator.metafunctions.value_of.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_equality.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_equality.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_equality.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,14 +31,14 @@
         =="> Operator
         ==</a></h4></div></div></div>
 <a name="fusion.iterator.operator.operator_equality.description"></a><h5>
-<a name="id480895"></a>
+<a name="id480742"></a>
           <a href="operator_equality.html#fusion.iterator.operator.operator_equality.description">Description</a>
         </h5>
 <p>
           Compares 2 iterators for equality.
         </p>
 <a name="fusion.iterator.operator.operator_equality.synopsis"></a><h5>
-<a name="id480926"></a>
+<a name="id480773"></a>
           <a href="operator_equality.html#fusion.iterator.operator.operator_equality.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -49,7 +49,7 @@
 <span class="emphasis"><em>unspecified</em></span> <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">I</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">J</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id481068"></a><p class="title"><b>Table 1.9. Parameters</b></p>
+<a name="id480915"></a><p class="title"><b>Table 1.9. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -93,7 +93,7 @@
 </table>
 </div>
 <a name="fusion.iterator.operator.operator_equality.expression_semantics"></a><h5>
-<a name="id481172"></a>
+<a name="id481019"></a>
           <a href="operator_equality.html#fusion.iterator.operator.operator_equality.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -109,7 +109,7 @@
           and <tt class="computeroutput"><span class="identifier">j</span></tt> respectively.
         </p>
 <a name="fusion.iterator.operator.operator_equality.header"></a><h5>
-<a name="id481366"></a>
+<a name="id481213"></a>
           <a href="operator_equality.html#fusion.iterator.operator.operator_equality.header">Header</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_inequality.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_inequality.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_inequality.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,14 +30,14 @@
         !="> Operator
         !=</a></h4></div></div></div>
 <a name="fusion.iterator.operator.operator_inequality.description"></a><h5>
-<a name="id481546"></a>
+<a name="id481393"></a>
           <a href="operator_inequality.html#fusion.iterator.operator.operator_inequality.description">Description</a>
         </h5>
 <p>
           Compares 2 iterators for inequality.
         </p>
 <a name="fusion.iterator.operator.operator_inequality.synopsis"></a><h5>
-<a name="id481578"></a>
+<a name="id481425"></a>
           <a href="operator_inequality.html#fusion.iterator.operator.operator_inequality.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="emphasis"><em>unspecified</em></span> <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">I</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">J</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id481722"></a><p class="title"><b>Table 1.10. Parameters</b></p>
+<a name="id481569"></a><p class="title"><b>Table 1.10. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -92,7 +92,7 @@
 </table>
 </div>
 <a name="fusion.iterator.operator.operator_inequality.expression_semantics"></a><h5>
-<a name="id481826"></a>
+<a name="id481673"></a>
           <a href="operator_inequality.html#fusion.iterator.operator.operator_inequality.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -105,7 +105,7 @@
           and <tt class="computeroutput"><span class="identifier">j</span></tt> respectively.
         </p>
 <a name="fusion.iterator.operator.operator_inequality.header"></a><h5>
-<a name="id481999"></a>
+<a name="id481846"></a>
           <a href="operator_inequality.html#fusion.iterator.operator.operator_inequality.header">Header</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_unary_star.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_unary_star.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/iterator/operator/operator_unary_star.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,14 +30,14 @@
         *"> Operator
         *</a></h4></div></div></div>
 <a name="fusion.iterator.operator.operator_unary_star.description"></a><h5>
-<a name="id479910"></a>
+<a name="id479758"></a>
           <a href="operator_unary_star.html#fusion.iterator.operator.operator_unary_star.description">Description</a>
         </h5>
 <p>
           Dereferences an iterator.
         </p>
 <a name="fusion.iterator.operator.operator_unary_star.synopsis"></a><h5>
-<a name="id479942"></a>
+<a name="id479790"></a>
           <a href="operator_unary_star.html#fusion.iterator.operator.operator_unary_star.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="keyword">typename</span> result_of::deref<span class="special">&lt;</span><span class="identifier">I</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="keyword">operator</span><span class="special">*(</span><span class="emphasis"><em>unspecified</em></span><span class="special">&lt;</span><span class="identifier">I</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">i</span><span class="special">);</span>
 </pre>
 <div class="table">
-<a name="id480101"></a><p class="title"><b>Table 1.8. Parameters</b></p>
+<a name="id479949"></a><p class="title"><b>Table 1.8. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -93,7 +93,7 @@
 </table>
 </div>
 <a name="fusion.iterator.operator.operator_unary_star.expression_semantics"></a><h5>
-<a name="id480203"></a>
+<a name="id480051"></a>
           <a href="operator_unary_star.html#fusion.iterator.operator.operator_unary_star.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -108,7 +108,7 @@
           <span class="bold"><b>Semantics</b></span>: Equivalent to <tt class="computeroutput">deref<span class="special">(</span><span class="identifier">i</span><span class="special">)</span></tt>.
         </p>
 <a name="fusion.iterator.operator.operator_unary_star.header"></a><h5>
-<a name="id480344"></a>
+<a name="id480192"></a>
           <a href="operator_unary_star.html#fusion.iterator.operator.operator_unary_star.header">Header</a>
         </h5>
 <pre class="programlisting">
@@ -116,7 +116,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">deref</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.iterator.operator.operator_unary_star.example"></a><h5>
-<a name="id480503"></a>
+<a name="id480351"></a>
           <a href="operator_unary_star.html#fusion.iterator.operator.operator_unary_star.example">Example</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/notes.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/notes.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/notes.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="fusion.notes"></a>Notes</h2></div></div></div>
 <a name="fusion.notes.recursive_inlined_functions"></a><h3>
-<a name="id685001"></a>
+<a name="id684861"></a>
       <a href="notes.html#fusion.notes.recursive_inlined_functions">Recursive Inlined
       Functions</a>
     </h3>
@@ -41,7 +41,7 @@
       remains linear.
     </p>
 <a name="fusion.notes.overloaded_functions"></a><h3>
-<a name="id685076"></a>
+<a name="id684935"></a>
       <a href="notes.html#fusion.notes.overloaded_functions">Overloaded Functions</a>
     </h3>
 <p>
@@ -51,7 +51,7 @@
       given a key, <tt class="computeroutput"><span class="identifier">k</span></tt>.
     </p>
 <a name="fusion.notes.tag_dispatching"></a><h3>
-<a name="id685159"></a>
+<a name="id685019"></a>
       <a href="notes.html#fusion.notes.tag_dispatching">Tag Dispatching</a>
     </h3>
 <p>
@@ -103,7 +103,7 @@
       </li>
 </ol></div>
 <a name="fusion.notes.extensibility"></a><h3>
-<a name="id685543"></a>
+<a name="id685403"></a>
       <a href="notes.html#fusion.notes.extensibility">Extensibility</a>
     </h3>
 <p>
@@ -138,7 +138,7 @@
       it very cheap to pass around.
     </p>
 <a name="fusion.notes.element_conversion"></a><h3>
-<a name="id685862"></a>
+<a name="id685722"></a>
       <a href="notes.html#fusion.notes.element_conversion">Element Conversion</a>
     </h3>
 <p>
@@ -161,7 +161,7 @@
     </p>
 <p>
       Array arguments are deduced to reference to const types. For example
- <sup>[<a name="id686021" href="#ftn.id686021">14</a>]</sup>
+ <sup>[<a name="id685881" href="#ftn.id685881">14</a>]</sup>
       :
     </p>
 <pre class="programlisting">
@@ -194,7 +194,7 @@
 <a href="container/list.html" title="list"><tt class="computeroutput"><span class="identifier">list</span></tt></a><span class="special">&lt;</span><span class="keyword">void</span> <span class="special">(*)(</span><span class="keyword">int</span><span class="special">)&gt;</span>
 </pre>
 <a name="fusion.notes.boost__ref"></a><h3>
-<a name="id686456"></a>
+<a name="id686316"></a>
       <a href="notes.html#fusion.notes.boost__ref">boost::ref</a>
     </h3>
 <p>
@@ -237,7 +237,7 @@
     </p>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id686021" href="#id686021">14</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id685881" href="#id685881">14</a>] </sup>
           Note that the type of a string literal is an array of const characters,
           not <tt class="computeroutput"><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span></tt>. To get make_list to create a list with an element of a non-const
           array type one must use the <tt class="computeroutput"><span class="identifier">ref</span></tt>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/organization.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/organization.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/organization.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
       The library is organized in three layers:
     </p>
 <a name="fusion.organization.layers"></a><h3>
-<a name="id459044"></a>
+<a name="id459129"></a>
       <a href="organization.html#fusion.organization.layers">Layers</a>
     </h3>
 <div class="blockquote"><blockquote class="blockquote">
@@ -65,7 +65,7 @@
       against.
     </p>
 <a name="fusion.organization.directory"></a><h3>
-<a name="id459143"></a>
+<a name="id459228"></a>
       <a href="organization.html#fusion.organization.directory">Directory</a>
     </h3>
 <div class="itemizedlist"><ul type="disc">
@@ -186,7 +186,7 @@
       </li>
 </ul></div>
 <a name="fusion.organization.example"></a><h3>
-<a name="id459322"></a>
+<a name="id459407"></a>
       <a href="organization.html#fusion.organization.example">Example</a>
     </h3>
 <p>
@@ -202,12 +202,12 @@
 </pre>
 <p>
       The first includes all containers The second includes only <tt class="computeroutput"><span class="identifier">list</span></tt>
- <sup>[<a name="id459620" href="#ftn.id459620">3</a>]</sup>
+ <sup>[<a name="id459705" href="#ftn.id459705">4</a>]</sup>
       .
     </p>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id459620" href="#id459620">3</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id459705" href="#id459705">4</a>] </sup>
           Modules may contain smaller components. Header file information for each
           component will be provided as part of the component's documentation.
         </p></div>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/preface.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/preface.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/preface.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -44,7 +44,7 @@
       </p>
 </blockquote></div>
 <a name="fusion.preface.description"></a><h3>
-<a name="id386985"></a>
+<a name="id385667"></a>
       <a href="preface.html#fusion.preface.description">Description</a>
     </h3>
 <p>
@@ -62,7 +62,7 @@
       of compile time metaprogramming with runtime programming.
     </p>
 <a name="fusion.preface.motivation"></a><h3>
-<a name="id385817"></a>
+<a name="id385326"></a>
       <a href="preface.html#fusion.preface.motivation">Motivation</a>
     </h3>
 <p>
@@ -88,7 +88,7 @@
       an instant <span class="emphasis"><em>AHA!</em></span> moment.
     </p>
 <a name="fusion.preface.how_to_use_this_manual"></a><h3>
-<a name="id387066"></a>
+<a name="id385889"></a>
       <a href="preface.html#fusion.preface.how_to_use_this_manual">How to use this manual</a>
     </h3>
 <p>
@@ -96,7 +96,7 @@
       icons precede some text to indicate:
     </p>
 <div class="table">
-<a name="id387202"></a><p class="title"><b>Table 1.1. Icons</b></p>
+<a name="id386588"></a><p class="title"><b>Table 1.1. Icons</b></p>
 <table class="table" summary="Icons">
 <colgroup>
 <col>
@@ -199,7 +199,7 @@
       Tools</a>.
     </p>
 <a name="fusion.preface.support"></a><h3>
-<a name="id387431"></a>
+<a name="id386356"></a>
       <a href="preface.html#fusion.preface.support">Support</a>
     </h3>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/quick_start.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/quick_start.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/quick_start.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -33,7 +33,7 @@
     </p>
 <p>
       For starters, we shall include all of Fusion's Sequence(s)
- <sup>[<a name="id456245" href="#ftn.id456245">1</a>]</sup>
+ <sup>[<a name="id456330" href="#ftn.id456330">2</a>]</sup>
       :
     </p>
 <pre class="programlisting">
@@ -42,7 +42,7 @@
 </pre>
 <p>
       Let's begin with a <tt class="computeroutput">vector</tt>
- <sup>[<a name="id456412" href="#ftn.id456412">2</a>]</sup>
+ <sup>[<a name="id456497" href="#ftn.id456497">3</a>]</sup>
       :
     </p>
 <pre class="programlisting">
@@ -60,7 +60,7 @@
       Let's see some examples.
     </p>
 <a name="fusion.quick_start.print_the_vector_as_xml"></a><h3>
-<a name="id456876"></a>
+<a name="id456960"></a>
       <a href="quick_start.html#fusion.quick_start.print_the_vector_as_xml">Print the vector
       as XML</a>
     </h3>
@@ -118,7 +118,7 @@
       print just about any Fusion Sequence.
     </p>
 <a name="fusion.quick_start.print_only_pointers"></a><h3>
-<a name="id457533"></a>
+<a name="id457618"></a>
       <a href="quick_start.html#fusion.quick_start.print_only_pointers">Print only pointers</a>
     </h3>
 <p>
@@ -152,7 +152,7 @@
       Easy, right?
     </p>
 <a name="fusion.quick_start.associative_tuples"></a><h3>
-<a name="id457944"></a>
+<a name="id458029"></a>
       <a href="quick_start.html#fusion.quick_start.associative_tuples">Associative tuples</a>
     </h3>
 <p>
@@ -227,7 +227,7 @@
       a <tt class="computeroutput"><span class="identifier">dog</span></tt> or a whole <tt class="computeroutput"><span class="identifier">alternate_universe</span></tt>.
     </p>
 <a name="fusion.quick_start.tip_of_the_iceberg"></a><h3>
-<a name="id458985"></a>
+<a name="id459070"></a>
       <a href="quick_start.html#fusion.quick_start.tip_of_the_iceberg">Tip of the Iceberg</a>
     </h3>
 <p>
@@ -238,12 +238,12 @@
     </p>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id456245" href="#id456245">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id456330" href="#id456330">2</a>] </sup>
           There are finer grained header files available if you wish to have more
           control over which components to include (see section Orgainization
           for details).
         </p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id456412" href="#id456412">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id456497" href="#id456497">3</a>] </sup>
           Unless otherwise noted, components are in namespace <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span></tt>.
           For the sake of simplicity, code in this quick start implies <tt class="computeroutput"><span class="keyword">using</span></tt> directives for the fusion components
           we will be using.

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/references.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/references.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/references.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,10 +11,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -59,7 +59,7 @@
       type that can be used to iterate through the Sequence's elements.
     </p>
 <a name="fusion.sequence.header"></a><h3>
-<a name="id490500"></a>
+<a name="id490347"></a>
       <a href="sequence.html#fusion.sequence.header">Header</a>
     </h3>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -40,7 +40,7 @@
         Fusion Sequences are organized into a hierarchy of concepts.
       </p>
 <a name="fusion.sequence.concepts.traversal"></a><h4>
-<a name="id490670"></a>
+<a name="id490517"></a>
         <a href="concepts.html#fusion.sequence.concepts.traversal">Traversal</a>
       </h4>
 <p>
@@ -58,7 +58,7 @@
         Sequence</a>. These concepts pertain to sequence traversal.
       </p>
 <a name="fusion.sequence.concepts.associativity"></a><h4>
-<a name="id490756"></a>
+<a name="id490603"></a>
         <a href="concepts.html#fusion.sequence.concepts.associativity">Associativity</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/associative_sequence.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/associative_sequence.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/associative_sequence.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
         Sequence">Associative
         Sequence</a></h4></div></div></div>
 <a name="fusion.sequence.concepts.associative_sequence.description"></a><h5>
-<a name="id496069"></a>
+<a name="id495917"></a>
           <a href="associative_sequence.html#fusion.sequence.concepts.associative_sequence.description">Description</a>
         </h5>
 <p>
@@ -71,7 +71,7 @@
 </dl>
 </div>
 <a name="fusion.sequence.concepts.associative_sequence.valid_expressions"></a><h5>
-<a name="id496259"></a>
+<a name="id496106"></a>
           <a href="associative_sequence.html#fusion.sequence.concepts.associative_sequence.valid_expressions">Valid
           Expressions</a>
         </h5>
@@ -180,7 +180,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.concepts.associative_sequence.result_type_expressions"></a><h5>
-<a name="id496643"></a>
+<a name="id496491"></a>
           <a href="associative_sequence.html#fusion.sequence.concepts.associative_sequence.result_type_expressions">Result
           Type Expressions</a>
         </h5>
@@ -252,7 +252,7 @@
           <tt class="computeroutput">result_of::value_at_key<span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span> <span class="identifier">N</span><span class="special">&gt;</span></tt>.
         </p></div>
 <a name="fusion.sequence.concepts.associative_sequence.expression_semantics"></a><h5>
-<a name="id497218"></a>
+<a name="id497066"></a>
           <a href="associative_sequence.html#fusion.sequence.concepts.associative_sequence.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -307,7 +307,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.concepts.associative_sequence.models"></a><h5>
-<a name="id497540"></a>
+<a name="id497387"></a>
           <a href="associative_sequence.html#fusion.sequence.concepts.associative_sequence.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/bidirectional_sequence.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/bidirectional_sequence.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/bidirectional_sequence.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
         Sequence">Bidirectional
         Sequence</a></h4></div></div></div>
 <a name="fusion.sequence.concepts.bidirectional_sequence.description"></a><h5>
-<a name="id493098"></a>
+<a name="id492945"></a>
           <a href="bidirectional_sequence.html#fusion.sequence.concepts.bidirectional_sequence.description">Description</a>
         </h5>
 <p>
@@ -42,7 +42,7 @@
           Iterator</a>.
         </p>
 <a name="fusion.sequence.concepts.bidirectional_sequence.refinement_of"></a><h5>
-<a name="id493148"></a>
+<a name="id492995"></a>
           <a href="bidirectional_sequence.html#fusion.sequence.concepts.bidirectional_sequence.refinement_of">Refinement
           of</a>
         </h5>
@@ -72,7 +72,7 @@
 </dl>
 </div>
 <a name="fusion.sequence.concepts.bidirectional_sequence.valid_expressions"></a><h5>
-<a name="id493289"></a>
+<a name="id493135"></a>
           <a href="bidirectional_sequence.html#fusion.sequence.concepts.bidirectional_sequence.valid_expressions">Valid
           Expressions</a>
         </h5>
@@ -207,7 +207,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.concepts.bidirectional_sequence.result_type_expressions"></a><h5>
-<a name="id493728"></a>
+<a name="id493575"></a>
           <a href="bidirectional_sequence.html#fusion.sequence.concepts.bidirectional_sequence.result_type_expressions">Result
           Type Expressions</a>
         </h5>
@@ -268,7 +268,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.concepts.bidirectional_sequence.expression_semantics"></a><h5>
-<a name="id494005"></a>
+<a name="id493852"></a>
           <a href="bidirectional_sequence.html#fusion.sequence.concepts.bidirectional_sequence.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -309,7 +309,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.concepts.bidirectional_sequence.models"></a><h5>
-<a name="id494158"></a>
+<a name="id494005"></a>
           <a href="bidirectional_sequence.html#fusion.sequence.concepts.bidirectional_sequence.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/forward_sequence.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/forward_sequence.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/forward_sequence.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
         Sequence">Forward
         Sequence</a></h4></div></div></div>
 <a name="fusion.sequence.concepts.forward_sequence.description"></a><h5>
-<a name="id490819"></a>
+<a name="id490666"></a>
           <a href="forward_sequence.html#fusion.sequence.concepts.forward_sequence.description">Description</a>
         </h5>
 <p>
@@ -62,7 +62,7 @@
 </dl>
 </div>
 <a name="fusion.sequence.concepts.forward_sequence.valid_expressions"></a><h5>
-<a name="id490955"></a>
+<a name="id490802"></a>
           <a href="forward_sequence.html#fusion.sequence.concepts.forward_sequence.valid_expressions">Valid
           Expressions</a>
         </h5>
@@ -239,7 +239,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.concepts.forward_sequence.result_type_expressions"></a><h5>
-<a name="id491539"></a>
+<a name="id491386"></a>
           <a href="forward_sequence.html#fusion.sequence.concepts.forward_sequence.result_type_expressions">Result
           Type Expressions</a>
         </h5>
@@ -324,7 +324,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.concepts.forward_sequence.expression_semantics"></a><h5>
-<a name="id491958"></a>
+<a name="id491805"></a>
           <a href="forward_sequence.html#fusion.sequence.concepts.forward_sequence.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -412,7 +412,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.concepts.forward_sequence.invariants"></a><h5>
-<a name="id492427"></a>
+<a name="id492274"></a>
           <a href="forward_sequence.html#fusion.sequence.concepts.forward_sequence.invariants">Invariants</a>
         </h5>
 <p>
@@ -438,7 +438,7 @@
           </li>
 </ul></div>
 <a name="fusion.sequence.concepts.forward_sequence.models"></a><h5>
-<a name="id492740"></a>
+<a name="id492587"></a>
           <a href="forward_sequence.html#fusion.sequence.concepts.forward_sequence.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/random_access_sequence.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/random_access_sequence.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/concepts/random_access_sequence.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
         Access Sequence">Random
         Access Sequence</a></h4></div></div></div>
 <a name="fusion.sequence.concepts.random_access_sequence.description"></a><h5>
-<a name="id494377"></a>
+<a name="id494225"></a>
           <a href="random_access_sequence.html#fusion.sequence.concepts.random_access_sequence.description">Description</a>
         </h5>
 <p>
@@ -43,7 +43,7 @@
           sequence elements.
         </p>
 <a name="fusion.sequence.concepts.random_access_sequence.refinement_of"></a><h5>
-<a name="id494429"></a>
+<a name="id494276"></a>
           <a href="random_access_sequence.html#fusion.sequence.concepts.random_access_sequence.refinement_of">Refinement
           of</a>
         </h5>
@@ -79,7 +79,7 @@
 </dl>
 </div>
 <a name="fusion.sequence.concepts.random_access_sequence.valid_expressions"></a><h5>
-<a name="id494600"></a>
+<a name="id494447"></a>
           <a href="random_access_sequence.html#fusion.sequence.concepts.random_access_sequence.valid_expressions">Valid
           Expressions</a>
         </h5>
@@ -214,7 +214,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.concepts.random_access_sequence.result_type_expressions"></a><h5>
-<a name="id495059"></a>
+<a name="id494906"></a>
           <a href="random_access_sequence.html#fusion.sequence.concepts.random_access_sequence.result_type_expressions">Result
           Type Expressions</a>
         </h5>
@@ -297,7 +297,7 @@
           <tt class="computeroutput">result_of::value_at<span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span> <span class="identifier">N</span><span class="special">&gt;</span></tt>.
         </p></div>
 <a name="fusion.sequence.concepts.random_access_sequence.expression_semantics"></a><h5>
-<a name="id495690"></a>
+<a name="id495537"></a>
           <a href="random_access_sequence.html#fusion.sequence.concepts.random_access_sequence.expression_semantics">Expression
           Semantics</a>
         </h5>
@@ -338,7 +338,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.concepts.random_access_sequence.models"></a><h5>
-<a name="id495851"></a>
+<a name="id495699"></a>
           <a href="random_access_sequence.html#fusion.sequence.concepts.random_access_sequence.models">Models</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -37,11 +37,11 @@
         Intrinsic functions, unlike Algorithms,
         are not generic across the full Sequence
         repertoire. They need to be implemented for each Fusion Sequence
- <sup>[<a name="id497665" href="#ftn.id497665">4</a>]</sup>
+ <sup>[<a name="id497513" href="#ftn.id497513">5</a>]</sup>
         .
       </p>
 <a name="fusion.sequence.intrinsic.header"></a><h4>
-<a name="id497685"></a>
+<a name="id497532"></a>
         <a href="intrinsic.html#fusion.sequence.intrinsic.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
 </pre>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id497665" href="#id497665">4</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id497513" href="#id497513">5</a>] </sup>
             In practice, many of intrinsic functions have default implementations
             that will work in majority of cases
           </p></div>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.at"></a>at</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.at.description"></a><h6>
-<a name="id503408"></a>
+<a name="id503256"></a>
             <a href="at.html#fusion.sequence.intrinsic.functions.at.description">Description</a>
           </h6>
 <p>
             Returns the N-th element from the beginning of the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.at.synopsis"></a><h6>
-<a name="id503439"></a>
+<a name="id503287"></a>
             <a href="at.html#fusion.sequence.intrinsic.functions.at.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">at</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.at.parameters"></a><h6>
-<a name="id503770"></a>
+<a name="id503618"></a>
             <a href="at.html#fusion.sequence.intrinsic.functions.at.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -113,7 +113,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.at.expression_semantics"></a><h6>
-<a name="id503930"></a>
+<a name="id503778"></a>
             <a href="at.html#fusion.sequence.intrinsic.functions.at.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -141,7 +141,7 @@
 <a href="../../../iterator/functions/deref.html" title="deref"><tt class="computeroutput"><span class="identifier">deref</span></tt></a><span class="special">(</span><a href="../../../iterator/functions/advance.html" title="advance"><tt class="computeroutput"><span class="identifier">advance</span></tt></a><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;(</span><a href="begin.html" title="begin"><tt class="computeroutput"><span class="identifier">begin</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)))</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.at.header"></a><h6>
-<a name="id504249"></a>
+<a name="id504097"></a>
             <a href="at.html#fusion.sequence.intrinsic.functions.at.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -149,7 +149,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">at</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.at.example"></a><h6>
-<a name="id504416"></a>
+<a name="id504263"></a>
             <a href="at.html#fusion.sequence.intrinsic.functions.at.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at_c.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at_c.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at_c.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.at_c"></a>at_c</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.at_c.description"></a><h6>
-<a name="id504646"></a>
+<a name="id504493"></a>
             <a href="at_c.html#fusion.sequence.intrinsic.functions.at_c.description">Description</a>
           </h6>
 <p>
             Returns the N-th element from the beginning of the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.at_c.synopsis"></a><h6>
-<a name="id504677"></a>
+<a name="id504525"></a>
             <a href="at_c.html#fusion.sequence.intrinsic.functions.at_c.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">at_c</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.at_c.parameters"></a><h6>
-<a name="id505012"></a>
+<a name="id504860"></a>
             <a href="at_c.html#fusion.sequence.intrinsic.functions.at_c.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -112,7 +112,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.at_c.expression_semantics"></a><h6>
-<a name="id505165"></a>
+<a name="id505012"></a>
             <a href="at_c.html#fusion.sequence.intrinsic.functions.at_c.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -141,7 +141,7 @@
 <a href="../../../iterator/functions/deref.html" title="deref"><tt class="computeroutput"><span class="identifier">deref</span></tt></a><span class="special">(</span><a href="../../../iterator/functions/advance.html" title="advance"><tt class="computeroutput"><span class="identifier">advance</span></tt></a><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;(</span><a href="begin.html" title="begin"><tt class="computeroutput"><span class="identifier">begin</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)))</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.at_c.header"></a><h6>
-<a name="id505474"></a>
+<a name="id505322"></a>
             <a href="at_c.html#fusion.sequence.intrinsic.functions.at_c.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -149,7 +149,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">at_c</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.at_c.example"></a><h6>
-<a name="id505643"></a>
+<a name="id505490"></a>
             <a href="at_c.html#fusion.sequence.intrinsic.functions.at_c.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at_key.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at_key.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/at_key.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.at_key"></a>at_key</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.at_key.description"></a><h6>
-<a name="id506755"></a>
+<a name="id506603"></a>
             <a href="at_key.html#fusion.sequence.intrinsic.functions.at_key.description">Description</a>
           </h6>
 <p>
             Returns the element associated with a Key from the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.at_key.synopsis"></a><h6>
-<a name="id506786"></a>
+<a name="id506634"></a>
             <a href="at_key.html#fusion.sequence.intrinsic.functions.at_key.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">at_key</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.at_key.parameters"></a><h6>
-<a name="id507120"></a>
+<a name="id506968"></a>
             <a href="at_key.html#fusion.sequence.intrinsic.functions.at_key.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -112,7 +112,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.at_key.expression_semantics"></a><h6>
-<a name="id507272"></a>
+<a name="id507120"></a>
             <a href="at_key.html#fusion.sequence.intrinsic.functions.at_key.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -136,7 +136,7 @@
             with Key.
           </p>
 <a name="fusion.sequence.intrinsic.functions.at_key.header"></a><h6>
-<a name="id507480"></a>
+<a name="id507328"></a>
             <a href="at_key.html#fusion.sequence.intrinsic.functions.at_key.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -144,7 +144,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">at_key</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.at_key.example"></a><h6>
-<a name="id507649"></a>
+<a name="id507497"></a>
             <a href="at_key.html#fusion.sequence.intrinsic.functions.at_key.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/back.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/back.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/back.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.back"></a>back</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.back.description"></a><h6>
-<a name="id501656"></a>
+<a name="id501503"></a>
             <a href="back.html#fusion.sequence.intrinsic.functions.back.description">Description</a>
           </h6>
 <p>
             Returns the last element in the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.back.synopsis"></a><h6>
-<a name="id501687"></a>
+<a name="id501534"></a>
             <a href="back.html#fusion.sequence.intrinsic.functions.back.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">back</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.back.parameters"></a><h6>
-<a name="id501964"></a>
+<a name="id501812"></a>
             <a href="back.html#fusion.sequence.intrinsic.functions.back.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -93,7 +93,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.back.expression_semantics"></a><h6>
-<a name="id502079"></a>
+<a name="id501927"></a>
             <a href="back.html#fusion.sequence.intrinsic.functions.back.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -117,7 +117,7 @@
             in the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.back.header"></a><h6>
-<a name="id502277"></a>
+<a name="id502125"></a>
             <a href="back.html#fusion.sequence.intrinsic.functions.back.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -125,7 +125,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">back</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.back.example"></a><h6>
-<a name="id502447"></a>
+<a name="id502294"></a>
             <a href="back.html#fusion.sequence.intrinsic.functions.back.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/begin.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/begin.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/begin.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.begin"></a>begin</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.begin.description"></a><h6>
-<a name="id497883"></a>
+<a name="id497730"></a>
             <a href="begin.html#fusion.sequence.intrinsic.functions.begin.description">Description</a>
           </h6>
 <p>
             Returns an iterator pointing to the first element in the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.begin.synopsis"></a><h6>
-<a name="id497914"></a>
+<a name="id497762"></a>
             <a href="begin.html#fusion.sequence.intrinsic.functions.begin.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">begin</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.begin.parameters"></a><h6>
-<a name="id498191"></a>
+<a name="id498038"></a>
             <a href="begin.html#fusion.sequence.intrinsic.functions.begin.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -93,7 +93,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.begin.expression_semantics"></a><h6>
-<a name="id498306"></a>
+<a name="id498153"></a>
             <a href="begin.html#fusion.sequence.intrinsic.functions.begin.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -123,7 +123,7 @@
             to the first element in the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.begin.header"></a><h6>
-<a name="id498476"></a>
+<a name="id498324"></a>
             <a href="begin.html#fusion.sequence.intrinsic.functions.begin.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -131,7 +131,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">begin</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.begin.example"></a><h6>
-<a name="id498647"></a>
+<a name="id498494"></a>
             <a href="begin.html#fusion.sequence.intrinsic.functions.begin.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/empty.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/empty.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/empty.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.empty"></a>empty</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.empty.description"></a><h6>
-<a name="id499854"></a>
+<a name="id499701"></a>
             <a href="empty.html#fusion.sequence.intrinsic.functions.empty.description">Description</a>
           </h6>
 <p>
@@ -35,7 +35,7 @@
             the sequence is empty, else, evaluates to <tt class="computeroutput"><span class="keyword">false</span></tt>.
           </p>
 <a name="fusion.sequence.intrinsic.functions.empty.synopsis"></a><h6>
-<a name="id499920"></a>
+<a name="id499768"></a>
             <a href="empty.html#fusion.sequence.intrinsic.functions.empty.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="identifier">empty</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.empty.parameters"></a><h6>
-<a name="id500076"></a>
+<a name="id499924"></a>
             <a href="empty.html#fusion.sequence.intrinsic.functions.empty.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -91,7 +91,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.empty.expression_semantics"></a><h6>
-<a name="id500191"></a>
+<a name="id500039"></a>
             <a href="empty.html#fusion.sequence.intrinsic.functions.empty.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -106,7 +106,7 @@
             to <tt class="computeroutput"><span class="keyword">false</span></tt>.
           </p>
 <a name="fusion.sequence.intrinsic.functions.empty.header"></a><h6>
-<a name="id500306"></a>
+<a name="id500154"></a>
             <a href="empty.html#fusion.sequence.intrinsic.functions.empty.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -114,7 +114,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">empty</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.empty.example"></a><h6>
-<a name="id500475"></a>
+<a name="id500323"></a>
             <a href="empty.html#fusion.sequence.intrinsic.functions.empty.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/end.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/end.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/end.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.end"></a>end</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.end.description"></a><h6>
-<a name="id498860"></a>
+<a name="id498708"></a>
             <a href="end.html#fusion.sequence.intrinsic.functions.end.description">Description</a>
           </h6>
 <p>
             Returns an iterator pointing to one element past the end of the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.end.synopsis"></a><h6>
-<a name="id498892"></a>
+<a name="id498739"></a>
             <a href="end.html#fusion.sequence.intrinsic.functions.end.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">end</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.end.parameters"></a><h6>
-<a name="id499166"></a>
+<a name="id499014"></a>
             <a href="end.html#fusion.sequence.intrinsic.functions.end.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -93,7 +93,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.end.expression_semantics"></a><h6>
-<a name="id499281"></a>
+<a name="id499128"></a>
             <a href="end.html#fusion.sequence.intrinsic.functions.end.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -123,7 +123,7 @@
             to one element past the end of the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.end.header"></a><h6>
-<a name="id499451"></a>
+<a name="id499299"></a>
             <a href="end.html#fusion.sequence.intrinsic.functions.end.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -131,7 +131,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">end</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.end.example"></a><h6>
-<a name="id499620"></a>
+<a name="id499468"></a>
             <a href="end.html#fusion.sequence.intrinsic.functions.end.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/front.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/front.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/front.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.front"></a>front</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.front.description"></a><h6>
-<a name="id500670"></a>
+<a name="id500518"></a>
             <a href="front.html#fusion.sequence.intrinsic.functions.front.description">Description</a>
           </h6>
 <p>
             Returns the first element in the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.front.synopsis"></a><h6>
-<a name="id500701"></a>
+<a name="id500549"></a>
             <a href="front.html#fusion.sequence.intrinsic.functions.front.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="identifier">front</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.front.parameters"></a><h6>
-<a name="id500978"></a>
+<a name="id500826"></a>
             <a href="front.html#fusion.sequence.intrinsic.functions.front.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -93,7 +93,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.front.expression_semantics"></a><h6>
-<a name="id501092"></a>
+<a name="id500940"></a>
             <a href="front.html#fusion.sequence.intrinsic.functions.front.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -117,7 +117,7 @@
             in the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.front.header"></a><h6>
-<a name="id501292"></a>
+<a name="id501139"></a>
             <a href="front.html#fusion.sequence.intrinsic.functions.front.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -125,7 +125,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">front</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.front.example"></a><h6>
-<a name="id501461"></a>
+<a name="id501308"></a>
             <a href="front.html#fusion.sequence.intrinsic.functions.front.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/has_key.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/has_key.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/has_key.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.has_key"></a>has_key</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.has_key.description"></a><h6>
-<a name="id505848"></a>
+<a name="id505696"></a>
             <a href="has_key.html#fusion.sequence.intrinsic.functions.has_key.description">Description</a>
           </h6>
 <p>
@@ -36,7 +36,7 @@
             to <tt class="computeroutput"><span class="keyword">false</span></tt>.
           </p>
 <a name="fusion.sequence.intrinsic.functions.has_key.synopsis"></a><h6>
-<a name="id505916"></a>
+<a name="id505764"></a>
             <a href="has_key.html#fusion.sequence.intrinsic.functions.has_key.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
 <span class="identifier">has_key</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.has_key.parameters"></a><h6>
-<a name="id506100"></a>
+<a name="id505948"></a>
             <a href="has_key.html#fusion.sequence.intrinsic.functions.has_key.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -111,7 +111,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.has_key.expression_semantics"></a><h6>
-<a name="id506254"></a>
+<a name="id506102"></a>
             <a href="has_key.html#fusion.sequence.intrinsic.functions.has_key.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -126,7 +126,7 @@
             associated with Key, else, evaluates to <tt class="computeroutput"><span class="keyword">false</span></tt>.
           </p>
 <a name="fusion.sequence.intrinsic.functions.has_key.header"></a><h6>
-<a name="id506379"></a>
+<a name="id506227"></a>
             <a href="has_key.html#fusion.sequence.intrinsic.functions.has_key.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -134,7 +134,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">has_key</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.has_key.example"></a><h6>
-<a name="id506549"></a>
+<a name="id506397"></a>
             <a href="has_key.html#fusion.sequence.intrinsic.functions.has_key.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/size.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/size.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/size.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.size"></a>size</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.size.description"></a><h6>
-<a name="id502642"></a>
+<a name="id502490"></a>
             <a href="size.html#fusion.sequence.intrinsic.functions.size.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             that evaluates the number of elements in the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.size.synopsis"></a><h6>
-<a name="id502686"></a>
+<a name="id502534"></a>
             <a href="size.html#fusion.sequence.intrinsic.functions.size.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="identifier">size</span><span class="special">(</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.size.parameters"></a><h6>
-<a name="id502841"></a>
+<a name="id502689"></a>
             <a href="size.html#fusion.sequence.intrinsic.functions.size.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -90,7 +90,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.size.expression_semantics"></a><h6>
-<a name="id502956"></a>
+<a name="id502804"></a>
             <a href="size.html#fusion.sequence.intrinsic.functions.size.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -105,7 +105,7 @@
             in the sequence.
           </p>
 <a name="fusion.sequence.intrinsic.functions.size.header"></a><h6>
-<a name="id503046"></a>
+<a name="id502894"></a>
             <a href="size.html#fusion.sequence.intrinsic.functions.size.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -113,7 +113,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">size</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.size.example"></a><h6>
-<a name="id503215"></a>
+<a name="id503062"></a>
             <a href="size.html#fusion.sequence.intrinsic.functions.size.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/swap.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/swap.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/functions/swap.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.functions.swap"></a>swap</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.functions.swap.description"></a><h6>
-<a name="id507857"></a>
+<a name="id507705"></a>
             <a href="swap.html#fusion.sequence.intrinsic.functions.swap.description">Description</a>
           </h6>
 <p>
             Performs an element by element swap of the elements in 2 sequences.
           </p>
 <a name="fusion.sequence.intrinsic.functions.swap.synopsis"></a><h6>
-<a name="id507888"></a>
+<a name="id507737"></a>
             <a href="swap.html#fusion.sequence.intrinsic.functions.swap.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -41,7 +41,7 @@
 <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">Seq1</span><span class="special">&amp;</span> <span class="identifier">seq1</span><span class="special">,</span> <span class="identifier">Seq2</span><span class="special">&amp;</span> <span class="identifier">seq2</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.intrinsic.functions.swap.parameters"></a><h6>
-<a name="id508030"></a>
+<a name="id507878"></a>
             <a href="swap.html#fusion.sequence.intrinsic.functions.swap.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -88,7 +88,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.intrinsic.functions.swap.expression_semantics"></a><h6>
-<a name="id508157"></a>
+<a name="id508005"></a>
             <a href="swap.html#fusion.sequence.intrinsic.functions.swap.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -108,7 +108,7 @@
             /sequence/intrinsic/swap.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.functions.swap.example"></a><h6>
-<a name="id508407"></a>
+<a name="id508255"></a>
             <a href="swap.html#fusion.sequence.intrinsic.functions.swap.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,16 +26,16 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.at"></a>at</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.at.description"></a><h6>
-<a name="id512690"></a>
+<a name="id512540"></a>
             <a href="at.html#fusion.sequence.intrinsic.metafunctions.at.description">Description</a>
           </h6>
 <p>
             Returns the result type of at
- <sup>[<a name="id512728" href="#ftn.id512728">5</a>]</sup>
+ <sup>[<a name="id512578" href="#ftn.id512578">6</a>]</sup>
             .
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.at.synopsis"></a><h6>
-<a name="id512847"></a>
+<a name="id512695"></a>
             <a href="at.html#fusion.sequence.intrinsic.metafunctions.at.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id512964"></a><p class="title"><b>Table 1.25. Parameters</b></p>
+<a name="id512812"></a><p class="title"><b>Table 1.25. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -114,7 +114,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.at.expression_semantics"></a><h6>
-<a name="id513109"></a>
+<a name="id512957"></a>
             <a href="at.html#fusion.sequence.intrinsic.metafunctions.at.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -132,7 +132,7 @@
             /sequence/intrinsic/at.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.at.example"></a><h6>
-<a name="id513259"></a>
+<a name="id513107"></a>
             <a href="at.html#fusion.sequence.intrinsic.metafunctions.at.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -141,7 +141,7 @@
 </pre>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id512728" href="#id512728">5</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id512578" href="#id512578">6</a>] </sup>
                 <a href="at.html" title="at"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at</span></tt></a> reflects the actual return
                 type of the function at. Sequence(s)
                 typically return references to its elements via the at function. If you want

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,16 +26,16 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.at_c"></a>at_c</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.at_c.description"></a><h6>
-<a name="id513520"></a>
+<a name="id513370"></a>
             <a href="at_c.html#fusion.sequence.intrinsic.metafunctions.at_c.description">Description</a>
           </h6>
 <p>
             Returns the result type of at_c
- <sup>[<a name="id513559" href="#ftn.id513559">6</a>]</sup>
+ <sup>[<a name="id513409" href="#ftn.id513409">7</a>]</sup>
             .
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.at_c.synopsis"></a><h6>
-<a name="id513682"></a>
+<a name="id513531"></a>
             <a href="at_c.html#fusion.sequence.intrinsic.metafunctions.at_c.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id513800"></a><p class="title"><b>Table 1.26. Parameters</b></p>
+<a name="id513648"></a><p class="title"><b>Table 1.26. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.at_c.expression_semantics"></a><h6>
-<a name="id513940"></a>
+<a name="id513788"></a>
             <a href="at_c.html#fusion.sequence.intrinsic.metafunctions.at_c.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -131,7 +131,7 @@
             /sequence/intrinsic/at.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.at_c.example"></a><h6>
-<a name="id514091"></a>
+<a name="id513939"></a>
             <a href="at_c.html#fusion.sequence.intrinsic.metafunctions.at_c.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -140,7 +140,7 @@
 </pre>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id513559" href="#id513559">6</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id513409" href="#id513409">7</a>] </sup>
                 <a href="at_c.html" title="at_c"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_c</span></tt></a> reflects the actual
                 return type of the function at_c. Sequence(s)
                 typically return references to its elements via the at_c function. If you want

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,16 +26,16 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.at_key"></a>at_key</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.at_key.description"></a><h6>
-<a name="id516509"></a>
+<a name="id516357"></a>
             <a href="at_key.html#fusion.sequence.intrinsic.metafunctions.at_key.description">Description</a>
           </h6>
 <p>
             Returns the result type of at_key
- <sup>[<a name="id516548" href="#ftn.id516548">7</a>]</sup>
+ <sup>[<a name="id516396" href="#ftn.id516396">8</a>]</sup>
             .
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.at_key.synopsis"></a><h6>
-<a name="id516667"></a>
+<a name="id516515"></a>
             <a href="at_key.html#fusion.sequence.intrinsic.metafunctions.at_key.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -48,7 +48,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id516785"></a><p class="title"><b>Table 1.30. Parameters</b></p>
+<a name="id516633"></a><p class="title"><b>Table 1.30. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -113,7 +113,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.at_key.expression_semantics"></a><h6>
-<a name="id516924"></a>
+<a name="id516772"></a>
             <a href="at_key.html#fusion.sequence.intrinsic.metafunctions.at_key.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -133,7 +133,7 @@
             /sequence/intrinsic/at_key.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.at_key.example"></a><h6>
-<a name="id517076"></a>
+<a name="id516924"></a>
             <a href="at_key.html#fusion.sequence.intrinsic.metafunctions.at_key.example">Example</a>
           </h6>
 <pre class="programlisting">
@@ -142,7 +142,7 @@
 </pre>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id516548" href="#id516548">7</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id516396" href="#id516396">8</a>] </sup>
                 <a href="at_key.html" title="at_key"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span></tt></a> reflects the actual
                 return type of the function at_key. <span class="underline">_sequence</span>_s
                 typically return references to its elements via the at_key function. If you

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/back.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/back.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/back.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.back"></a>back</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.back.description"></a><h6>
-<a name="id511404"></a>
+<a name="id511253"></a>
             <a href="back.html#fusion.sequence.intrinsic.metafunctions.back.description">Description</a>
           </h6>
 <p>
             Returns the result type of back.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.back.synopsis"></a><h6>
-<a name="id511453"></a>
+<a name="id511302"></a>
             <a href="back.html#fusion.sequence.intrinsic.metafunctions.back.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id511552"></a><p class="title"><b>Table 1.23. Parameters</b></p>
+<a name="id511402"></a><p class="title"><b>Table 1.23. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -90,7 +90,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.back.expression_semantics"></a><h6>
-<a name="id511653"></a>
+<a name="id511503"></a>
             <a href="back.html#fusion.sequence.intrinsic.metafunctions.back.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -108,7 +108,7 @@
             /sequence/intrinsic/back.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.back.example"></a><h6>
-<a name="id511886"></a>
+<a name="id511736"></a>
             <a href="back.html#fusion.sequence.intrinsic.metafunctions.back.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.begin"></a>begin</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.begin.description"></a><h6>
-<a name="id508760"></a>
+<a name="id508608"></a>
             <a href="begin.html#fusion.sequence.intrinsic.metafunctions.begin.description">Description</a>
           </h6>
 <p>
             Returns the result type of begin.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.begin.synopsis"></a><h6>
-<a name="id508809"></a>
+<a name="id508657"></a>
             <a href="begin.html#fusion.sequence.intrinsic.metafunctions.begin.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id508908"></a><p class="title"><b>Table 1.19. Parameters</b></p>
+<a name="id508756"></a><p class="title"><b>Table 1.19. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -90,7 +90,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.begin.expression_semantics"></a><h6>
-<a name="id509009"></a>
+<a name="id508858"></a>
             <a href="begin.html#fusion.sequence.intrinsic.metafunctions.begin.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -109,7 +109,7 @@
             /sequence/intrinsic/begin.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.begin.example"></a><h6>
-<a name="id509132"></a>
+<a name="id508981"></a>
             <a href="begin.html#fusion.sequence.intrinsic.metafunctions.begin.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.empty"></a>empty</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.empty.description"></a><h6>
-<a name="id510069"></a>
+<a name="id509917"></a>
             <a href="empty.html#fusion.sequence.intrinsic.metafunctions.empty.description">Description</a>
           </h6>
 <p>
             Returns the result type of empty.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.empty.synopsis"></a><h6>
-<a name="id510118"></a>
+<a name="id509966"></a>
             <a href="empty.html#fusion.sequence.intrinsic.metafunctions.empty.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id510217"></a><p class="title"><b>Table 1.21. Parameters</b></p>
+<a name="id510066"></a><p class="title"><b>Table 1.21. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -90,7 +90,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.empty.expression_semantics"></a><h6>
-<a name="id510320"></a>
+<a name="id510168"></a>
             <a href="empty.html#fusion.sequence.intrinsic.metafunctions.empty.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -110,7 +110,7 @@
             /sequence/intrinsic/empty.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.empty.example"></a><h6>
-<a name="id510482"></a>
+<a name="id510330"></a>
             <a href="empty.html#fusion.sequence.intrinsic.metafunctions.empty.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/end.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/end.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.end"></a>end</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.end.description"></a><h6>
-<a name="id509389"></a>
+<a name="id509237"></a>
             <a href="end.html#fusion.sequence.intrinsic.metafunctions.end.description">Description</a>
           </h6>
 <p>
             Returns the result type of end.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.end.synopsis"></a><h6>
-<a name="id509438"></a>
+<a name="id509286"></a>
             <a href="end.html#fusion.sequence.intrinsic.metafunctions.end.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id509536"></a><p class="title"><b>Table 1.20. Parameters</b></p>
+<a name="id509385"></a><p class="title"><b>Table 1.20. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -90,7 +90,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.end.expression_semantics"></a><h6>
-<a name="id509638"></a>
+<a name="id509487"></a>
             <a href="end.html#fusion.sequence.intrinsic.metafunctions.end.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -109,7 +109,7 @@
             /sequence/intrinsic/end.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.end.example"></a><h6>
-<a name="id509760"></a>
+<a name="id509609"></a>
             <a href="end.html#fusion.sequence.intrinsic.metafunctions.end.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/front.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/front.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.front"></a>front</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.front.description"></a><h6>
-<a name="id510745"></a>
+<a name="id510593"></a>
             <a href="front.html#fusion.sequence.intrinsic.metafunctions.front.description">Description</a>
           </h6>
 <p>
             Returns the result type of front.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.front.synopsis"></a><h6>
-<a name="id510794"></a>
+<a name="id510642"></a>
             <a href="front.html#fusion.sequence.intrinsic.metafunctions.front.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id510893"></a><p class="title"><b>Table 1.22. Parameters</b></p>
+<a name="id510742"></a><p class="title"><b>Table 1.22. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -90,7 +90,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.front.expression_semantics"></a><h6>
-<a name="id510995"></a>
+<a name="id510844"></a>
             <a href="front.html#fusion.sequence.intrinsic.metafunctions.front.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -109,7 +109,7 @@
             /sequence/intrinsic/front.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.front.example"></a><h6>
-<a name="id511200"></a>
+<a name="id511050"></a>
             <a href="front.html#fusion.sequence.intrinsic.metafunctions.front.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.has_key"></a>has_key</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.has_key.description"></a><h6>
-<a name="id515674"></a>
+<a name="id515522"></a>
             <a href="has_key.html#fusion.sequence.intrinsic.metafunctions.has_key.description">Description</a>
           </h6>
 <p>
             Returns the result type of has_key.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.has_key.synopsis"></a><h6>
-<a name="id515724"></a>
+<a name="id515572"></a>
             <a href="has_key.html#fusion.sequence.intrinsic.metafunctions.has_key.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id515842"></a><p class="title"><b>Table 1.29. Parameters</b></p>
+<a name="id515690"></a><p class="title"><b>Table 1.29. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -111,7 +111,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.has_key.expression_semantics"></a><h6>
-<a name="id515979"></a>
+<a name="id515828"></a>
             <a href="has_key.html#fusion.sequence.intrinsic.metafunctions.has_key.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -132,7 +132,7 @@
             /sequence/intrinsic/has_key.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.has_key.example"></a><h6>
-<a name="id516163"></a>
+<a name="id516011"></a>
             <a href="has_key.html#fusion.sequence.intrinsic.metafunctions.has_key.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/size.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/size.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.size"></a>size</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.size.description"></a><h6>
-<a name="id512090"></a>
+<a name="id511939"></a>
             <a href="size.html#fusion.sequence.intrinsic.metafunctions.size.description">Description</a>
           </h6>
 <p>
             Returns the result type of size.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.size.synopsis"></a><h6>
-<a name="id512139"></a>
+<a name="id511989"></a>
             <a href="size.html#fusion.sequence.intrinsic.metafunctions.size.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id512238"></a><p class="title"><b>Table 1.24. Parameters</b></p>
+<a name="id512088"></a><p class="title"><b>Table 1.24. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -90,7 +90,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.size.expression_semantics"></a><h6>
-<a name="id512339"></a>
+<a name="id512189"></a>
             <a href="size.html#fusion.sequence.intrinsic.metafunctions.size.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -109,7 +109,7 @@
             /sequence/intrinsic/size.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.size.example"></a><h6>
-<a name="id512457"></a>
+<a name="id512307"></a>
             <a href="size.html#fusion.sequence.intrinsic.metafunctions.size.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.swap"></a>swap</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.swap.description"></a><h6>
-<a name="id518158"></a>
+<a name="id518006"></a>
             <a href="swap.html#fusion.sequence.intrinsic.metafunctions.swap.description">Description</a>
           </h6>
 <p>
             Returns the return type of swap.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.swap.synopsis"></a><h6>
-<a name="id518190"></a>
+<a name="id518038"></a>
             <a href="swap.html#fusion.sequence.intrinsic.metafunctions.swap.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -44,7 +44,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id518310"></a><p class="title"><b>Table 1.32. Parameters</b></p>
+<a name="id518158"></a><p class="title"><b>Table 1.32. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -90,7 +90,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.swap.expression_semantics"></a><h6>
-<a name="id518425"></a>
+<a name="id518273"></a>
             <a href="swap.html#fusion.sequence.intrinsic.metafunctions.swap.expression_semantics">Expression
             Semantics</a>
           </h6>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.value_at"></a>value_at</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at.description"></a><h6>
-<a name="id514317"></a>
+<a name="id514165"></a>
             <a href="value_at.html#fusion.sequence.intrinsic.metafunctions.value_at.description">Description</a>
           </h6>
 <p>
             Returns the actual type at a given index from the Sequence.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at.synopsis"></a><h6>
-<a name="id514357"></a>
+<a name="id514205"></a>
             <a href="value_at.html#fusion.sequence.intrinsic.metafunctions.value_at.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id514474"></a><p class="title"><b>Table 1.27. Parameters</b></p>
+<a name="id514323"></a><p class="title"><b>Table 1.27. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -112,7 +112,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at.expression_semantics"></a><h6>
-<a name="id514619"></a>
+<a name="id514468"></a>
             <a href="value_at.html#fusion.sequence.intrinsic.metafunctions.value_at.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -130,7 +130,7 @@
             /sequence/intrinsic/value_at.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at.example"></a><h6>
-<a name="id514753"></a>
+<a name="id514601"></a>
             <a href="value_at.html#fusion.sequence.intrinsic.metafunctions.value_at.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.value_at_c"></a>value_at_c</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at_c.description"></a><h6>
-<a name="id515016"></a>
+<a name="id514865"></a>
             <a href="value_at_c.html#fusion.sequence.intrinsic.metafunctions.value_at_c.description">Description</a>
           </h6>
 <p>
             Returns the actual type at a given index from the Sequence.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at_c.synopsis"></a><h6>
-<a name="id515057"></a>
+<a name="id514905"></a>
             <a href="value_at_c.html#fusion.sequence.intrinsic.metafunctions.value_at_c.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id515175"></a><p class="title"><b>Table 1.28. Parameters</b></p>
+<a name="id515023"></a><p class="title"><b>Table 1.28. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -111,7 +111,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at_c.expression_semantics"></a><h6>
-<a name="id515313"></a>
+<a name="id515162"></a>
             <a href="value_at_c.html#fusion.sequence.intrinsic.metafunctions.value_at_c.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -129,7 +129,7 @@
             /sequence/intrinsic/value_at.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at_c.example"></a><h6>
-<a name="id515446"></a>
+<a name="id515295"></a>
             <a href="value_at_c.html#fusion.sequence.intrinsic.metafunctions.value_at_c.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,14 +26,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.intrinsic.metafunctions.value_at_key"></a>value_at_key</h5></div></div></div>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at_key.description"></a><h6>
-<a name="id517402"></a>
+<a name="id517250"></a>
             <a href="value_at_key.html#fusion.sequence.intrinsic.metafunctions.value_at_key.description">Description</a>
           </h6>
 <p>
             Returns the actual element type associated with a Key from the Sequence.
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at_key.synopsis"></a><h6>
-<a name="id517442"></a>
+<a name="id517290"></a>
             <a href="value_at_key.html#fusion.sequence.intrinsic.metafunctions.value_at_key.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id517560"></a><p class="title"><b>Table 1.31. Parameters</b></p>
+<a name="id517408"></a><p class="title"><b>Table 1.31. Parameters</b></p>
 <table class="table" summary="Parameters">
 <colgroup>
 <col>
@@ -111,7 +111,7 @@
 </table>
 </div>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at_key.expression_semantics"></a><h6>
-<a name="id517700"></a>
+<a name="id517548"></a>
             <a href="value_at_key.html#fusion.sequence.intrinsic.metafunctions.value_at_key.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -130,7 +130,7 @@
             /sequence/intrinsic/value_at_key.hpp&gt;
           </p>
 <a name="fusion.sequence.intrinsic.metafunctions.value_at_key.example"></a><h6>
-<a name="id517832"></a>
+<a name="id517680"></a>
             <a href="value_at_key.html#fusion.sequence.intrinsic.metafunctions.value_at_key.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -48,7 +48,7 @@
           only until the result is clear.
         </p>
 <a name="fusion.sequence.operator.comparison.header"></a><h5>
-<a name="id521551"></a>
+<a name="id521400"></a>
           <a href="comparison.html#fusion.sequence.operator.comparison.header">Header</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/equal.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/equal.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/equal.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,14 +27,14 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.operator.comparison.equal"></a>equal</h5></div></div></div>
 <a name="fusion.sequence.operator.comparison.equal.description"></a><h6>
-<a name="id521729"></a>
+<a name="id521578"></a>
             <a href="equal.html#fusion.sequence.operator.comparison.equal.description">Description</a>
           </h6>
 <p>
             Compare two sequences for equality.
           </p>
 <a name="fusion.sequence.operator.comparison.equal.synopsis"></a><h6>
-<a name="id521760"></a>
+<a name="id521609"></a>
             <a href="equal.html#fusion.sequence.operator.comparison.equal.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">operator</span><span class="special">==(</span><span class="identifier">Seq1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">Seq2</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.equal.parameters"></a><h6>
-<a name="id521915"></a>
+<a name="id521764"></a>
             <a href="equal.html#fusion.sequence.operator.comparison.equal.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -89,7 +89,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.operator.comparison.equal.expression_semantics"></a><h6>
-<a name="id522047"></a>
+<a name="id521895"></a>
             <a href="equal.html#fusion.sequence.operator.comparison.equal.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -125,7 +125,7 @@
             true.
           </p>
 <a name="fusion.sequence.operator.comparison.equal.header"></a><h6>
-<a name="id522310"></a>
+<a name="id522158"></a>
             <a href="equal.html#fusion.sequence.operator.comparison.equal.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -133,7 +133,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">equal_to</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.equal.example"></a><h6>
-<a name="id522480"></a>
+<a name="id522328"></a>
             <a href="equal.html#fusion.sequence.operator.comparison.equal.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/greater_than.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/greater_than.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/greater_than.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           </p>
 <a name="fusion.sequence.operator.comparison.greater_than.synopsis"></a><h6>
-<a name="id525665"></a>
+<a name="id525513"></a>
             <a href="greater_than.html#fusion.sequence.operator.comparison.greater_than.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">operator</span><span class="special">&gt;(</span><span class="identifier">Seq1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">Seq2</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.greater_than.parameters"></a><h6>
-<a name="id525821"></a>
+<a name="id525669"></a>
             <a href="greater_than.html#fusion.sequence.operator.comparison.greater_than.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -89,7 +89,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.operator.comparison.greater_than.expression_semantics"></a><h6>
-<a name="id525955"></a>
+<a name="id525803"></a>
             <a href="greater_than.html#fusion.sequence.operator.comparison.greater_than.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -117,7 +117,7 @@
             <span class="bold"><b>Semantics</b></span>: Returns b &lt; a.
           </p>
 <a name="fusion.sequence.operator.comparison.greater_than.header"></a><h6>
-<a name="id526134"></a>
+<a name="id525983"></a>
             <a href="greater_than.html#fusion.sequence.operator.comparison.greater_than.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -125,7 +125,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">less_equal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.greater_than.example"></a><h6>
-<a name="id526305"></a>
+<a name="id526153"></a>
             <a href="greater_than.html#fusion.sequence.operator.comparison.greater_than.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -33,7 +33,7 @@
             Lexicographically compare two sequences.
           </p>
 <a name="fusion.sequence.operator.comparison.greater_than_equal.synopsis"></a><h6>
-<a name="id526652"></a>
+<a name="id526500"></a>
             <a href="greater_than_equal.html#fusion.sequence.operator.comparison.greater_than_equal.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -42,7 +42,7 @@
 <span class="keyword">operator</span><span class="special">&gt;=(</span><span class="identifier">Seq1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">Seq2</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.greater_than_equal.parameters"></a><h6>
-<a name="id526809"></a>
+<a name="id526657"></a>
             <a href="greater_than_equal.html#fusion.sequence.operator.comparison.greater_than_equal.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -88,7 +88,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.operator.comparison.greater_than_equal.expression_semantics"></a><h6>
-<a name="id526942"></a>
+<a name="id526791"></a>
             <a href="greater_than_equal.html#fusion.sequence.operator.comparison.greater_than_equal.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -116,7 +116,7 @@
             <span class="bold"><b>Semantics</b></span>: Returns !(a &lt; b).
           </p>
 <a name="fusion.sequence.operator.comparison.greater_than_equal.header"></a><h6>
-<a name="id527122"></a>
+<a name="id526971"></a>
             <a href="greater_than_equal.html#fusion.sequence.operator.comparison.greater_than_equal.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -124,7 +124,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">greater_equal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.greater_than_equal.example"></a><h6>
-<a name="id527293"></a>
+<a name="id527142"></a>
             <a href="greater_than_equal.html#fusion.sequence.operator.comparison.greater_than_equal.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/less_than.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/less_than.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/less_than.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           </p>
 <a name="fusion.sequence.operator.comparison.less_than.synopsis"></a><h6>
-<a name="id523665"></a>
+<a name="id523514"></a>
             <a href="less_than.html#fusion.sequence.operator.comparison.less_than.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">operator</span><span class="special">&lt;(</span><span class="identifier">Seq1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">Seq2</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.less_than.parameters"></a><h6>
-<a name="id523820"></a>
+<a name="id523668"></a>
             <a href="less_than.html#fusion.sequence.operator.comparison.less_than.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -89,7 +89,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.operator.comparison.less_than.expression_semantics"></a><h6>
-<a name="id523953"></a>
+<a name="id523802"></a>
             <a href="less_than.html#fusion.sequence.operator.comparison.less_than.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -119,7 +119,7 @@
             and <tt class="computeroutput"><span class="identifier">b</span></tt>.
           </p>
 <a name="fusion.sequence.operator.comparison.less_than.header"></a><h6>
-<a name="id524157"></a>
+<a name="id524005"></a>
             <a href="less_than.html#fusion.sequence.operator.comparison.less_than.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -127,7 +127,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">less</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.less_than.example"></a><h6>
-<a name="id524326"></a>
+<a name="id524175"></a>
             <a href="less_than.html#fusion.sequence.operator.comparison.less_than.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/less_than_equal.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/less_than_equal.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
             Lexicographically compare two sequences.
           </p>
 <a name="fusion.sequence.operator.comparison.less_than_equal.synopsis"></a><h6>
-<a name="id524674"></a>
+<a name="id524523"></a>
             <a href="less_than_equal.html#fusion.sequence.operator.comparison.less_than_equal.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">operator</span><span class="special">&lt;=(</span><span class="identifier">Seq1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">Seq2</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.less_than_equal.parameters"></a><h6>
-<a name="id524830"></a>
+<a name="id524678"></a>
             <a href="less_than_equal.html#fusion.sequence.operator.comparison.less_than_equal.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -89,7 +89,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.operator.comparison.less_than_equal.expression_semantics"></a><h6>
-<a name="id524965"></a>
+<a name="id524813"></a>
             <a href="less_than_equal.html#fusion.sequence.operator.comparison.less_than_equal.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -117,7 +117,7 @@
             <span class="bold"><b>Semantics</b></span>: Returns !(b &lt; a).
           </p>
 <a name="fusion.sequence.operator.comparison.less_than_equal.header"></a><h6>
-<a name="id525145"></a>
+<a name="id524993"></a>
             <a href="less_than_equal.html#fusion.sequence.operator.comparison.less_than_equal.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -125,7 +125,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">less_equal</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.less_than_equal.example"></a><h6>
-<a name="id525316"></a>
+<a name="id525164"></a>
             <a href="less_than_equal.html#fusion.sequence.operator.comparison.less_than_equal.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/not_equal.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/not_equal.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/comparison/not_equal.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -33,7 +33,7 @@
             Compare two sequences for inequality.
           </p>
 <a name="fusion.sequence.operator.comparison.not_equal.synopsis"></a><h6>
-<a name="id522719"></a>
+<a name="id522567"></a>
             <a href="not_equal.html#fusion.sequence.operator.comparison.not_equal.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -42,7 +42,7 @@
 <span class="keyword">operator</span><span class="special">!=(</span><span class="identifier">Seq1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">Seq2</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">b</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.not_equal.parameters"></a><h6>
-<a name="id522874"></a>
+<a name="id522722"></a>
             <a href="not_equal.html#fusion.sequence.operator.comparison.not_equal.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -88,7 +88,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.sequence.operator.comparison.not_equal.expression_semantics"></a><h6>
-<a name="id523008"></a>
+<a name="id522856"></a>
             <a href="not_equal.html#fusion.sequence.operator.comparison.not_equal.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -119,7 +119,7 @@
             Returns !(a == b).
           </p>
 <a name="fusion.sequence.operator.comparison.not_equal.header"></a><h6>
-<a name="id523191"></a>
+<a name="id523040"></a>
             <a href="not_equal.html#fusion.sequence.operator.comparison.not_equal.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -127,7 +127,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">not_equal_to</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.operator.comparison.not_equal.example"></a><h6>
-<a name="id523361"></a>
+<a name="id523210"></a>
             <a href="not_equal.html#fusion.sequence.operator.comparison.not_equal.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -116,7 +116,7 @@
           representation may not be unambiguously parseable.
         </p>
 <a name="fusion.sequence.operator.i_o.header"></a><h5>
-<a name="id519768"></a>
+<a name="id519616"></a>
           <a href="i_o.html#fusion.sequence.operator.i_o.header">Header</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o/in.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o/in.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o/in.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.operator.i_o.in"></a>in</h5></div></div></div>
 <a name="fusion.sequence.operator.i_o.in.description"></a><h6>
-<a name="id519947"></a>
+<a name="id519795"></a>
             <a href="in.html#fusion.sequence.operator.i_o.in.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             stream.
           </p>
 <a name="fusion.sequence.operator.i_o.in.synopsis"></a><h6>
-<a name="id519985"></a>
+<a name="id519834"></a>
             <a href="in.html#fusion.sequence.operator.i_o.in.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">operator</span><span class="special">&gt;&gt;(</span><span class="identifier">IStream</span><span class="special">&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">Sequence</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.operator.i_o.in.parameters"></a><h6>
-<a name="id520131"></a>
+<a name="id519980"></a>
             <a href="in.html#fusion.sequence.operator.i_o.in.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -107,7 +107,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.operator.i_o.in.expression_semantics"></a><h6>
-<a name="id520262"></a>
+<a name="id520110"></a>
             <a href="in.html#fusion.sequence.operator.i_o.in.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -123,7 +123,7 @@
             <span class="identifier">e</span></tt>.
           </p>
 <a name="fusion.sequence.operator.i_o.in.header"></a><h6>
-<a name="id520382"></a>
+<a name="id520231"></a>
             <a href="in.html#fusion.sequence.operator.i_o.in.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -131,7 +131,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">in</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.operator.i_o.in.example"></a><h6>
-<a name="id520550"></a>
+<a name="id520398"></a>
             <a href="in.html#fusion.sequence.operator.i_o.in.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o/out.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o/out.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/sequence/operator/i_o/out.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h5 class="title">
 <a name="fusion.sequence.operator.i_o.out"></a>out</h5></div></div></div>
 <a name="fusion.sequence.operator.i_o.out.description"></a><h6>
-<a name="id520711"></a>
+<a name="id520559"></a>
             <a href="out.html#fusion.sequence.operator.i_o.out.description">Description</a>
           </h6>
 <p>
@@ -34,7 +34,7 @@
             stream.
           </p>
 <a name="fusion.sequence.operator.i_o.out.synopsis"></a><h6>
-<a name="id520749"></a>
+<a name="id520598"></a>
             <a href="out.html#fusion.sequence.operator.i_o.out.synopsis">Synopsis</a>
           </h6>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="keyword">operator</span><span class="special">&lt;&lt;(</span><span class="identifier">OStream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">Sequence</span><span class="special">&amp;</span> <span class="identifier">seq</span><span class="special">);</span>
 </pre>
 <a name="fusion.sequence.operator.i_o.out.parameters"></a><h6>
-<a name="id520896"></a>
+<a name="id520745"></a>
             <a href="out.html#fusion.sequence.operator.i_o.out.parameters">Parameters</a>
           </h6>
 <div class="informaltable"><table class="table">
@@ -107,7 +107,7 @@
 </tbody>
 </table></div>
 <a name="fusion.sequence.operator.i_o.out.expression_semantics"></a><h6>
-<a name="id521026"></a>
+<a name="id520875"></a>
             <a href="out.html#fusion.sequence.operator.i_o.out.expression_semantics">Expression
             Semantics</a>
           </h6>
@@ -123,7 +123,7 @@
             <span class="identifier">e</span></tt>.
           </p>
 <a name="fusion.sequence.operator.i_o.out.header"></a><h6>
-<a name="id521147"></a>
+<a name="id520995"></a>
             <a href="out.html#fusion.sequence.operator.i_o.out.header">Header</a>
           </h6>
 <pre class="programlisting">
@@ -131,7 +131,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">out</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.sequence.operator.i_o.out.example"></a><h6>
-<a name="id521315"></a>
+<a name="id521164"></a>
             <a href="out.html#fusion.sequence.operator.i_o.out.example">Example</a>
           </h6>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/support.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/support.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/support.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/support/category_of.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/support/category_of.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/support/category_of.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.support.category_of"></a>category_of</h3></div></div></div>
 <a name="fusion.support.category_of.description"></a><h4>
-<a name="id462934"></a>
+<a name="id463019"></a>
         <a href="category_of.html#fusion.support.category_of.description">Description</a>
       </h4>
 <p>
@@ -36,7 +36,7 @@
         <a href="../sequence/concepts.html" title="Concepts">Sequence Concepts</a>).
       </p>
 <a name="fusion.support.category_of.synopsis"></a><h4>
-<a name="id463002"></a>
+<a name="id463087"></a>
         <a href="category_of.html#fusion.support.category_of.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.support.category_of.parameters"></a><h4>
-<a name="id463132"></a>
+<a name="id463218"></a>
         <a href="category_of.html#fusion.support.category_of.parameters">Parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -95,7 +95,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.support.category_of.expression_semantics"></a><h4>
-<a name="id463238"></a>
+<a name="id463324"></a>
         <a href="category_of.html#fusion.support.category_of.expression_semantics">Expression
         Semantics</a>
       </h4>
@@ -161,7 +161,7 @@
         of a particular Sequence or Iterator.
       </p>
 <a name="fusion.support.category_of.header"></a><h4>
-<a name="id463842"></a>
+<a name="id463928"></a>
         <a href="category_of.html#fusion.support.category_of.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -169,7 +169,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">category_of</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.support.category_of.example"></a><h4>
-<a name="id463999"></a>
+<a name="id464085"></a>
         <a href="category_of.html#fusion.support.category_of.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/support/deduce.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/support/deduce.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/support/deduce.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.support.deduce"></a>deduce</h3></div></div></div>
 <a name="fusion.support.deduce.description"></a><h4>
-<a name="id464319"></a>
+<a name="id464405"></a>
         <a href="deduce.html#fusion.support.deduce.description">Description</a>
       </h4>
 <p>
@@ -39,7 +39,7 @@
         Reference wrappers are removed (see boost::ref).
       </p>
 <a name="fusion.support.deduce.header"></a><h4>
-<a name="id464418"></a>
+<a name="id464504"></a>
         <a href="deduce.html#fusion.support.deduce.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">deduce</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.support.deduce.synopsis"></a><h4>
-<a name="id464575"></a>
+<a name="id464661"></a>
         <a href="deduce.html#fusion.support.deduce.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -61,7 +61,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.support.deduce.example"></a><h4>
-<a name="id464706"></a>
+<a name="id464792"></a>
         <a href="deduce.html#fusion.support.deduce.example">Example</a>
       </h4>
 <pre class="programlisting">
@@ -82,7 +82,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.support.deduce.see_also"></a><h4>
-<a name="id465070"></a>
+<a name="id465157"></a>
         <a href="deduce.html#fusion.support.deduce.see_also">See also</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li>deduce_sequence</li></ul></div>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/support/deduce_sequence.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/support/deduce_sequence.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/support/deduce_sequence.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.support.deduce_sequence"></a>deduce_sequence</h3></div></div></div>
 <a name="fusion.support.deduce_sequence.description"></a><h4>
-<a name="id465139"></a>
+<a name="id465225"></a>
         <a href="deduce_sequence.html#fusion.support.deduce_sequence.description">Description</a>
       </h4>
 <p>
@@ -39,7 +39,7 @@
         original type as its argument.
       </p>
 <a name="fusion.support.deduce_sequence.header"></a><h4>
-<a name="id465200"></a>
+<a name="id465287"></a>
         <a href="deduce_sequence.html#fusion.support.deduce_sequence.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">deduce_sequence</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.support.deduce_sequence.synopsis"></a><h4>
-<a name="id465358"></a>
+<a name="id465444"></a>
         <a href="deduce_sequence.html#fusion.support.deduce_sequence.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -61,7 +61,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.support.deduce_sequence.example"></a><h4>
-<a name="id465490"></a>
+<a name="id465576"></a>
         <a href="deduce_sequence.html#fusion.support.deduce_sequence.example">Example</a>
       </h4>
 <pre class="programlisting">
@@ -84,7 +84,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.support.deduce_sequence.see_also"></a><h4>
-<a name="id466049"></a>
+<a name="id466136"></a>
         <a href="deduce_sequence.html#fusion.support.deduce_sequence.see_also">See also</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li>deduce</li></ul></div>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/support/is_sequence.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/support/is_sequence.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/support/is_sequence.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.support.is_sequence"></a>is_sequence</h3></div></div></div>
 <a name="fusion.support.is_sequence.description"></a><h4>
-<a name="id459681"></a>
+<a name="id459766"></a>
         <a href="is_sequence.html#fusion.support.is_sequence.description">Description</a>
       </h4>
 <p>
@@ -37,7 +37,7 @@
         conforming sequences.
       </p>
 <a name="fusion.support.is_sequence.synopsis"></a><h4>
-<a name="id459774"></a>
+<a name="id459859"></a>
         <a href="is_sequence.html#fusion.support.is_sequence.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -51,7 +51,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.support.is_sequence.parameters"></a><h4>
-<a name="id459906"></a>
+<a name="id459990"></a>
         <a href="is_sequence.html#fusion.support.is_sequence.parameters">Parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -96,7 +96,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.support.is_sequence.expression_semantics"></a><h4>
-<a name="id460012"></a>
+<a name="id460096"></a>
         <a href="is_sequence.html#fusion.support.is_sequence.expression_semantics">Expression
         Semantics</a>
       </h4>
@@ -114,7 +114,7 @@
         otherwise.
       </p>
 <a name="fusion.support.is_sequence.header"></a><h4>
-<a name="id460182"></a>
+<a name="id460267"></a>
         <a href="is_sequence.html#fusion.support.is_sequence.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -122,7 +122,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">is_sequence</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.support.is_sequence.example"></a><h4>
-<a name="id460339"></a>
+<a name="id460424"></a>
         <a href="is_sequence.html#fusion.support.is_sequence.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/support/is_view.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/support/is_view.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/support/is_view.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.support.is_view"></a>is_view</h3></div></div></div>
 <a name="fusion.support.is_view.description"></a><h4>
-<a name="id460784"></a>
+<a name="id460869"></a>
         <a href="is_view.html#fusion.support.is_view.description">Description</a>
       </h4>
 <p>
@@ -40,7 +40,7 @@
         specialized to accomodate clients providing Fusion conforming views.
       </p>
 <a name="fusion.support.is_view.synopsis"></a><h4>
-<a name="id460896"></a>
+<a name="id460981"></a>
         <a href="is_view.html#fusion.support.is_view.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -54,7 +54,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.support.is_view.parameters"></a><h4>
-<a name="id461026"></a>
+<a name="id461111"></a>
         <a href="is_view.html#fusion.support.is_view.parameters">Parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.support.is_view.expression_semantics"></a><h4>
-<a name="id461132"></a>
+<a name="id461217"></a>
         <a href="is_view.html#fusion.support.is_view.expression_semantics">Expression Semantics</a>
       </h4>
 <pre class="programlisting">
@@ -116,7 +116,7 @@
         otherwise.
       </p>
 <a name="fusion.support.is_view.header"></a><h4>
-<a name="id461302"></a>
+<a name="id461388"></a>
         <a href="is_view.html#fusion.support.is_view.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -124,7 +124,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">is_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.support.is_view.example"></a><h4>
-<a name="id461458"></a>
+<a name="id461544"></a>
         <a href="is_view.html#fusion.support.is_view.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/support/pair.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/support/pair.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/support/pair.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.support.pair"></a>pair</h3></div></div></div>
 <a name="fusion.support.pair.description"></a><h4>
-<a name="id466114"></a>
+<a name="id466201"></a>
         <a href="pair.html#fusion.support.pair.description">Description</a>
       </h4>
 <p>
@@ -37,7 +37,7 @@
         for example.
       </p>
 <a name="fusion.support.pair.synopsis"></a><h4>
-<a name="id466219"></a>
+<a name="id466305"></a>
         <a href="pair.html#fusion.support.pair.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -46,10 +46,10 @@
 
 <span class="keyword">namespace</span> <span class="identifier">result_of</span>
 <span class="special">{</span>
- <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">First</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Second</span><span class="special">&gt;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Pair</span><span class="special">&gt;</span>
     <span class="keyword">struct</span> <span class="identifier">first</span><span class="special">;</span>
 
- <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">First</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Second</span><span class="special">&gt;</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Pair</span><span class="special">&gt;</span>
     <span class="keyword">struct</span> <span class="identifier">second</span><span class="special">;</span>
 
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">First</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Second</span><span class="special">&gt;</span>
@@ -61,7 +61,7 @@
 <span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">Second</span> <span class="keyword">const</span> <span class="special">&amp;);</span>
 </pre>
 <a name="fusion.support.pair.template_parameters"></a><h4>
-<a name="id466662"></a>
+<a name="id466713"></a>
         <a href="pair.html#fusion.support.pair.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -140,14 +140,13 @@
 </dl>
 </div>
 <a name="fusion.support.pair.expression_semantics"></a><h4>
-<a name="id466942"></a>
+<a name="id466993"></a>
         <a href="pair.html#fusion.support.pair.expression_semantics">Expression Semantics</a>
       </h4>
 <div class="informaltable"><table class="table">
 <colgroup>
 <col>
 <col>
-<col>
 </colgroup>
 <thead><tr>
 <th>
@@ -160,7 +159,6 @@
                 Semantics
               </p>
               </th>
-<td class="auto-generated"> </td>
 </tr></thead>
 <tbody>
 <tr>
@@ -175,7 +173,6 @@
                 equivalent to <tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">first</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>.
               </p>
               </td>
-<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
@@ -189,7 +186,6 @@
                 equivalent to <tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">second</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>.
               </p>
               </td>
-<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
@@ -202,7 +198,6 @@
                 Default construction.
               </p>
               </td>
-<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
@@ -215,7 +210,6 @@
                 Construct a pair given value for the second type, <tt class="computeroutput"><span class="identifier">s</span></tt>.
               </p>
               </td>
-<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
@@ -228,7 +222,6 @@
                 Copy constructs a pair from another pair, <tt class="computeroutput"><span class="identifier">p2</span></tt>.
               </p>
               </td>
-<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
@@ -238,32 +231,84 @@
               </td>
 <td>
               <p>
- Get the data from <tt class="computeroutput"><span class="identifier">p1</span><span class="special">.]]</span> <span class="special">[[</span></tt>p
- = p2<tt class="computeroutput"><span class="special">]</span> <span class="special">[</span><span class="identifier">Assigns</span> <span class="identifier">a</span>
- <span class="identifier">pair</span><span class="special">,</span>
- </tt>p1<tt class="computeroutput"><span class="special">,</span> <span class="identifier">from</span>
- <span class="identifier">another</span> <span class="identifier">pair</span><span class="special">,</span> </tt>p2<tt class="computeroutput"><span class="special">.]]</span>
- <span class="special">[[</span><span class="identifier">make_pair</span><span class="special">&lt;</span><span class="identifier">F</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)]</span> <span class="special">[</span><span class="identifier">Make</span> <span class="identifier">a</span>
- <span class="identifier">pair</span> <span class="identifier">given</span>
- <span class="identifier">the</span> <span class="identifier">first</span>
- <span class="identifier">type</span><span class="special">,</span>
- </tt>F<tt class="computeroutput"><span class="special">,</span> <span class="keyword">and</span>
- <span class="identifier">a</span> <span class="identifier">value</span>
- <span class="keyword">for</span> <span class="identifier">the</span>
- <span class="identifier">second</span> <span class="identifier">type</span><span class="special">,</span> </tt>s<tt class="computeroutput"><span class="special">.</span>
- <span class="identifier">The</span> <span class="identifier">second</span>
- <span class="identifier">type</span> <span class="identifier">assumes</span>
- <span class="identifier">the</span> <span class="identifier">type</span>
- <span class="identifier">of</span> </tt>s<tt class="computeroutput"><span class="special">]]</span>
- <span class="special">[[</span></tt>o &lt;&lt; p<tt class="computeroutput"><span class="special">]</span> <span class="special">[</span><span class="identifier">Output</span> </tt>p<tt class="computeroutput"> <span class="identifier">to</span>
- <span class="identifier">output</span> <span class="identifier">stream</span><span class="special">,</span> </tt>o<tt class="computeroutput"><span class="special">.]]</span>
- <span class="special">[[</span></tt>i &gt;&gt; p<tt class="computeroutput"><span class="special">]</span> <span class="special">[</span><span class="identifier">Input</span> </tt>p<tt class="computeroutput"> <span class="identifier">from</span>
- <span class="identifier">input</span> <span class="identifier">stream</span><span class="special">,</span> </tt>i<tt class="computeroutput"><span class="special">.]]</span>
- <span class="special">[[</span></tt>p == p2<tt class="computeroutput"><span class="special">]</span>
- <span class="special">[</span><span class="identifier">Tests</span>
- <span class="identifier">two</span> <span class="identifier">pairs</span>
- <span class="keyword">for</span> <span class="identifier">equality</span><span class="special">.]]</span> <span class="special">[[</span></tt>p
- != p2`
+ Get the data from <tt class="computeroutput"><span class="identifier">p1</span></tt>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">p</span> <span class="special">=</span>
+ <span class="identifier">p2</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ Assigns a pair, <tt class="computeroutput"><span class="identifier">p1</span></tt>,
+ from another pair, <tt class="computeroutput"><span class="identifier">p2</span></tt>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ make_pair&lt;F&gt;(s)
+ </p>
+ </td>
+<td>
+ <p>
+ Make a pair given the first type, <tt class="computeroutput"><span class="identifier">F</span></tt>,
+ and a value for the second type, <tt class="computeroutput"><span class="identifier">s</span></tt>.
+ The second type assumes the type of <tt class="computeroutput"><span class="identifier">s</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">o</span> <span class="special">&lt;&lt;</span>
+ <span class="identifier">p</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ Output <tt class="computeroutput"><span class="identifier">p</span></tt> to output
+ stream, <tt class="computeroutput"><span class="identifier">o</span></tt>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">i</span> <span class="special">&gt;&gt;</span>
+ <span class="identifier">p</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ Input <tt class="computeroutput"><span class="identifier">p</span></tt> from input
+ stream, <tt class="computeroutput"><span class="identifier">i</span></tt>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">p</span> <span class="special">==</span>
+ <span class="identifier">p2</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ Tests two pairs for equality.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">p</span> <span class="special">!=</span>
+ <span class="identifier">p2</span></tt>
               </p>
               </td>
 <td>
@@ -275,7 +320,7 @@
 </tbody>
 </table></div>
 <a name="fusion.support.pair.header"></a><h4>
-<a name="id467922"></a>
+<a name="id467770"></a>
         <a href="pair.html#fusion.support.pair.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -283,7 +328,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.support.pair.example"></a><h4>
-<a name="id468079"></a>
+<a name="id467926"></a>
         <a href="pair.html#fusion.support.pair.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/support/tag_of.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/support/tag_of.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/support/tag_of.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.support.tag_of"></a>tag_of</h3></div></div></div>
 <a name="fusion.support.tag_of.description"></a><h4>
-<a name="id461908"></a>
+<a name="id461994"></a>
         <a href="tag_of.html#fusion.support.tag_of.description">Description</a>
       </h4>
 <p>
@@ -40,7 +40,7 @@
         conforming sequences.
       </p>
 <a name="fusion.support.tag_of.synopsis"></a><h4>
-<a name="id461968"></a>
+<a name="id462053"></a>
         <a href="tag_of.html#fusion.support.tag_of.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -54,7 +54,7 @@
 <span class="special">}</span>
 </pre>
 <a name="fusion.support.tag_of.parameters"></a><h4>
-<a name="id462098"></a>
+<a name="id462183"></a>
         <a href="tag_of.html#fusion.support.tag_of.parameters">Parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.support.tag_of.expression_semantics"></a><h4>
-<a name="id462204"></a>
+<a name="id462289"></a>
         <a href="tag_of.html#fusion.support.tag_of.expression_semantics">Expression Semantics</a>
       </h4>
 <pre class="programlisting">
@@ -113,7 +113,7 @@
         with <tt class="computeroutput"><span class="identifier">T</span></tt>.
       </p>
 <a name="fusion.support.tag_of.header"></a><h4>
-<a name="id462322"></a>
+<a name="id462408"></a>
         <a href="tag_of.html#fusion.support.tag_of.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -121,7 +121,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">tag_of</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.support.tag_of.example"></a><h4>
-<a name="id462478"></a>
+<a name="id462564"></a>
         <a href="tag_of.html#fusion.support.tag_of.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/tuple.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/tuple.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/tuple.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -48,7 +48,7 @@
         in future releases of fusion.
       </p>
 <a name="fusion.tuple.class_template_tuple.synopsis"></a><h4>
-<a name="id636654"></a>
+<a name="id636651"></a>
         <a href="class_template_tuple.html#fusion.tuple.class_template_tuple.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/construction.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/construction.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/construction.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <div class="titlepage"><div><div><h4 class="title">
 <a name="fusion.tuple.class_template_tuple.construction"></a>Construction</h4></div></div></div>
 <a name="fusion.tuple.class_template_tuple.construction.description"></a><h5>
-<a name="id636829"></a>
+<a name="id636827"></a>
           <a href="construction.html#fusion.tuple.class_template_tuple.construction.description">Description</a>
         </h5>
 <p>
@@ -38,7 +38,7 @@
           in this section.
         </p>
 <a name="fusion.tuple.class_template_tuple.construction.specification"></a><h5>
-<a name="id636873"></a>
+<a name="id636870"></a>
           <a href="construction.html#fusion.tuple.class_template_tuple.construction.specification">Specification</a>
         </h5>
 <div class="variablelist">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/element_access.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/element_access.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/element_access.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
         access">Element
         access</a></h4></div></div></div>
 <a name="fusion.tuple.class_template_tuple.element_access.description"></a><h5>
-<a name="id638870"></a>
+<a name="id638868"></a>
           <a href="element_access.html#fusion.tuple.class_template_tuple.element_access.description">Description</a>
         </h5>
 <p>
@@ -40,7 +40,7 @@
           function to provide access to it's elements by zero based numeric index.
         </p>
 <a name="fusion.tuple.class_template_tuple.element_access.specification"></a><h5>
-<a name="id638922"></a>
+<a name="id638920"></a>
           <a href="element_access.html#fusion.tuple.class_template_tuple.element_access.specification">Specification</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/relational_operators.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/relational_operators.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
         operators">Relational
         operators</a></h4></div></div></div>
 <a name="fusion.tuple.class_template_tuple.relational_operators.description"></a><h5>
-<a name="id639556"></a>
+<a name="id639554"></a>
           <a href="relational_operators.html#fusion.tuple.class_template_tuple.relational_operators.description">Description</a>
         </h5>
 <p>
@@ -38,7 +38,7 @@
           Tuple</a> provides the standard boolean relational operators.
         </p>
 <a name="fusion.tuple.class_template_tuple.relational_operators.specification"></a><h5>
-<a name="id639596"></a>
+<a name="id639594"></a>
           <a href="relational_operators.html#fusion.tuple.class_template_tuple.relational_operators.specification">Specification</a>
         </h5>
 <div class="variablelist">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
         creation functions">Tuple
         creation functions</a></h4></div></div></div>
 <a name="fusion.tuple.class_template_tuple.tuple_creation_functions.description"></a><h5>
-<a name="id637624"></a>
+<a name="id637621"></a>
           <a href="tuple_creation_functions.html#fusion.tuple.class_template_tuple.tuple_creation_functions.description">Description</a>
         </h5>
 <p>
@@ -40,7 +40,7 @@
           functions are described in this section.
         </p>
 <a name="fusion.tuple.class_template_tuple.tuple_creation_functions.specification"></a><h5>
-<a name="id637698"></a>
+<a name="id637695"></a>
           <a href="tuple_creation_functions.html#fusion.tuple.class_template_tuple.tuple_creation_functions.specification">Specification</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
         helper classes">Tuple
         helper classes</a></h4></div></div></div>
 <a name="fusion.tuple.class_template_tuple.tuple_helper_classes.description"></a><h5>
-<a name="id638419"></a>
+<a name="id638417"></a>
           <a href="tuple_helper_classes.html#fusion.tuple.class_template_tuple.tuple_helper_classes.description">Description</a>
         </h5>
 <p>
@@ -40,7 +40,7 @@
           tuple size, and the element types.
         </p>
 <a name="fusion.tuple.class_template_tuple.tuple_helper_classes.specification"></a><h5>
-<a name="id638459"></a>
+<a name="id638457"></a>
           <a href="tuple_helper_classes.html#fusion.tuple.class_template_tuple.tuple_helper_classes.specification">Specification</a>
         </h5>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/tuple/pairs.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/tuple/pairs.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/tuple/pairs.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,10 +13,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.tuple.pairs"></a>Pairs</h3></div></div></div>
 <a name="fusion.tuple.pairs.description"></a><h4>
-<a name="id642910"></a>
+<a name="id642908"></a>
         <a href="pairs.html#fusion.tuple.pairs.description">Description</a>
       </h4>
 <p>
@@ -36,7 +36,7 @@
         as if it were a 2 element tuple.
       </p>
 <a name="fusion.tuple.pairs.specification"></a><h4>
-<a name="id642967"></a>
+<a name="id642964"></a>
         <a href="pairs.html#fusion.tuple.pairs.specification">Specification</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/view.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/view.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/view.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -44,7 +44,7 @@
       to copy and be passed around by value.
     </p>
 <a name="fusion.view.header"></a><h3>
-<a name="id563241"></a>
+<a name="id563087"></a>
       <a href="view.html#fusion.view.header">Header</a>
     </h3>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/view/filter_view.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/view/filter_view.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/view/filter_view.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.view.filter_view"></a>filter_view</h3></div></div></div>
 <a name="fusion.view.filter_view.description"></a><h4>
-<a name="id564385"></a>
+<a name="id564232"></a>
         <a href="filter_view.html#fusion.view.filter_view.description">Description</a>
       </h4>
 <p>
@@ -37,7 +37,7 @@
         only those elements for which its predicate evaluates to <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt>.
       </p>
 <a name="fusion.view.filter_view.header"></a><h4>
-<a name="id564468"></a>
+<a name="id564315"></a>
         <a href="filter_view.html#fusion.view.filter_view.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">filter_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.view.filter_view.synopsis"></a><h4>
-<a name="id564625"></a>
+<a name="id564472"></a>
         <a href="filter_view.html#fusion.view.filter_view.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -53,7 +53,7 @@
 <span class="keyword">struct</span> <span class="identifier">filter_view</span><span class="special">;</span>
 </pre>
 <a name="fusion.view.filter_view.template_parameters"></a><h4>
-<a name="id564724"></a>
+<a name="id564570"></a>
         <a href="filter_view.html#fusion.view.filter_view.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -117,7 +117,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.filter_view.model_of"></a><h4>
-<a name="id564892"></a>
+<a name="id564739"></a>
         <a href="filter_view.html#fusion.view.filter_view.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li><a href="../sequence/concepts/forward_sequence.html" title="Forward
@@ -142,7 +142,7 @@
 </dl>
 </div>
 <a name="fusion.view.filter_view.expression_semantics"></a><h4>
-<a name="id565054"></a>
+<a name="id564901"></a>
         <a href="filter_view.html#fusion.view.filter_view.expression_semantics">Expression Semantics</a>
       </h4>
 <p>
@@ -214,7 +214,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.filter_view.example"></a><h4>
-<a name="id565367"></a>
+<a name="id565214"></a>
         <a href="filter_view.html#fusion.view.filter_view.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/view/iterator_range.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/view/iterator_range.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/view/iterator_range.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.view.iterator_range"></a>iterator_range</h3></div></div></div>
 <a name="fusion.view.iterator_range.description"></a><h4>
-<a name="id565842"></a>
+<a name="id565688"></a>
         <a href="iterator_range.html#fusion.view.iterator_range.description">Description</a>
       </h4>
 <p>
@@ -34,7 +34,7 @@
         sub-range of its underlying sequence delimited by a pair of iterators.
       </p>
 <a name="fusion.view.iterator_range.header"></a><h4>
-<a name="id565883"></a>
+<a name="id565729"></a>
         <a href="iterator_range.html#fusion.view.iterator_range.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -42,7 +42,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">iterator_range</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.view.iterator_range.synopsis"></a><h4>
-<a name="id566041"></a>
+<a name="id565887"></a>
         <a href="iterator_range.html#fusion.view.iterator_range.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
 <span class="keyword">struct</span> <span class="identifier">iterator_range</span><span class="special">;</span>
 </pre>
 <a name="fusion.view.iterator_range.template_parameters"></a><h4>
-<a name="id566139"></a>
+<a name="id565986"></a>
         <a href="iterator_range.html#fusion.view.iterator_range.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -112,7 +112,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.iterator_range.model_of"></a><h4>
-<a name="id566294"></a>
+<a name="id566140"></a>
         <a href="iterator_range.html#fusion.view.iterator_range.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -149,7 +149,7 @@
 </dl>
 </div>
 <a name="fusion.view.iterator_range.expression_semantics"></a><h4>
-<a name="id566523"></a>
+<a name="id566370"></a>
         <a href="iterator_range.html#fusion.view.iterator_range.expression_semantics">Expression
         Semantics</a>
       </h4>
@@ -224,7 +224,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.iterator_range.example"></a><h4>
-<a name="id566859"></a>
+<a name="id566706"></a>
         <a href="iterator_range.html#fusion.view.iterator_range.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/view/joint_view.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/view/joint_view.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/view/joint_view.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.view.joint_view"></a>joint_view</h3></div></div></div>
 <a name="fusion.view.joint_view.description"></a><h4>
-<a name="id567525"></a>
+<a name="id567371"></a>
         <a href="joint_view.html#fusion.view.joint_view.description">Description</a>
       </h4>
 <p>
@@ -34,7 +34,7 @@
         which is a concatenation of two sequences.
       </p>
 <a name="fusion.view.joint_view.header"></a><h4>
-<a name="id567566"></a>
+<a name="id567413"></a>
         <a href="joint_view.html#fusion.view.joint_view.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -42,7 +42,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">joint_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.view.joint_view.synopsis"></a><h4>
-<a name="id567724"></a>
+<a name="id567571"></a>
         <a href="joint_view.html#fusion.view.joint_view.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -50,7 +50,7 @@
 <span class="keyword">struct</span> <span class="identifier">joint_view</span><span class="special">;</span>
 </pre>
 <a name="fusion.view.joint_view.template_parameters"></a><h4>
-<a name="id567821"></a>
+<a name="id567668"></a>
         <a href="joint_view.html#fusion.view.joint_view.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -116,7 +116,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.joint_view.model_of"></a><h4>
-<a name="id567978"></a>
+<a name="id567825"></a>
         <a href="joint_view.html#fusion.view.joint_view.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li><a href="../sequence/concepts/forward_sequence.html" title="Forward
@@ -144,7 +144,7 @@
 </dl>
 </div>
 <a name="fusion.view.joint_view.expression_semantics"></a><h4>
-<a name="id568178"></a>
+<a name="id568025"></a>
         <a href="joint_view.html#fusion.view.joint_view.expression_semantics">Expression Semantics</a>
       </h4>
 <p>
@@ -217,7 +217,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.joint_view.example"></a><h4>
-<a name="id568513"></a>
+<a name="id568360"></a>
         <a href="joint_view.html#fusion.view.joint_view.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/view/reverse_view.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/view/reverse_view.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/view/reverse_view.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
         element will be its first.
       </p>
 <a name="fusion.view.reverse_view.header"></a><h4>
-<a name="id572620"></a>
+<a name="id572467"></a>
         <a href="reverse_view.html#fusion.view.reverse_view.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -39,7 +39,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">reverse_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.view.reverse_view.synopsis"></a><h4>
-<a name="id572778"></a>
+<a name="id572624"></a>
         <a href="reverse_view.html#fusion.view.reverse_view.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -47,7 +47,7 @@
 <span class="keyword">struct</span> <span class="identifier">reverse_view</span><span class="special">;</span>
 </pre>
 <a name="fusion.view.reverse_view.template_parameters"></a><h4>
-<a name="id572858"></a>
+<a name="id572705"></a>
         <a href="reverse_view.html#fusion.view.reverse_view.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -93,7 +93,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.view.reverse_view.model_of"></a><h4>
-<a name="id572971"></a>
+<a name="id572818"></a>
         <a href="reverse_view.html#fusion.view.reverse_view.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li><a href="../sequence/concepts/bidirectional_sequence.html" title="Bidirectional
@@ -118,7 +118,7 @@
 </dl>
 </div>
 <a name="fusion.view.reverse_view.expression_semantics"></a><h4>
-<a name="id573137"></a>
+<a name="id572983"></a>
         <a href="reverse_view.html#fusion.view.reverse_view.expression_semantics">Expression
         Semantics</a>
       </h4>
@@ -191,7 +191,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.reverse_view.example"></a><h4>
-<a name="id573449"></a>
+<a name="id573296"></a>
         <a href="reverse_view.html#fusion.view.reverse_view.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/view/single_view.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/view/single_view.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/view/single_view.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
         a value as a single element sequence.
       </p>
 <a name="fusion.view.single_view.header"></a><h4>
-<a name="id563420"></a>
+<a name="id563267"></a>
         <a href="single_view.html#fusion.view.single_view.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -38,7 +38,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">single_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.view.single_view.synopsis"></a><h4>
-<a name="id563577"></a>
+<a name="id563424"></a>
         <a href="single_view.html#fusion.view.single_view.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -46,7 +46,7 @@
 <span class="keyword">struct</span> <span class="identifier">single_view</span><span class="special">;</span>
 </pre>
 <a name="fusion.view.single_view.template_parameters"></a><h4>
-<a name="id563658"></a>
+<a name="id563504"></a>
         <a href="single_view.html#fusion.view.single_view.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -90,7 +90,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.view.single_view.model_of"></a><h4>
-<a name="id563762"></a>
+<a name="id563608"></a>
         <a href="single_view.html#fusion.view.single_view.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li><a href="../sequence/concepts/forward_sequence.html" title="Forward
@@ -114,7 +114,7 @@
 </dl>
 </div>
 <a name="fusion.view.single_view.expression_semantics"></a><h4>
-<a name="id563926"></a>
+<a name="id563773"></a>
         <a href="single_view.html#fusion.view.single_view.expression_semantics">Expression Semantics</a>
       </h4>
 <p>
@@ -186,7 +186,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.single_view.example"></a><h4>
-<a name="id564238"></a>
+<a name="id564085"></a>
         <a href="single_view.html#fusion.view.single_view.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/view/transform_view.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/view/transform_view.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/view/transform_view.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -35,7 +35,7 @@
         Traversal Concept</a>) of its underlying sequence or sequences.
       </p>
 <a name="fusion.view.transform_view.header"></a><h4>
-<a name="id570320"></a>
+<a name="id570168"></a>
         <a href="transform_view.html#fusion.view.transform_view.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -43,7 +43,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">transform_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.view.transform_view.synopsis"></a><h4>
-<a name="id570478"></a>
+<a name="id570326"></a>
         <a href="transform_view.html#fusion.view.transform_view.synopsis">Synopsis</a>
       </h4>
 <p>
@@ -61,7 +61,7 @@
 <span class="keyword">struct</span> <span class="identifier">transform_view</span><span class="special">;</span>
 </pre>
 <a name="fusion.view.transform_view.template_parameters"></a><h4>
-<a name="id570686"></a>
+<a name="id570533"></a>
         <a href="transform_view.html#fusion.view.transform_view.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -183,7 +183,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.transform_view.model_of"></a><h4>
-<a name="id571151"></a>
+<a name="id570998"></a>
         <a href="transform_view.html#fusion.view.transform_view.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -242,7 +242,7 @@
 </dl>
 </div>
 <a name="fusion.view.transform_view.expression_semantics"></a><h4>
-<a name="id571552"></a>
+<a name="id571400"></a>
         <a href="transform_view.html#fusion.view.transform_view.expression_semantics">Expression
         Semantics</a>
       </h4>
@@ -337,7 +337,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.transform_view.example"></a><h4>
-<a name="id572032"></a>
+<a name="id571879"></a>
         <a href="transform_view.html#fusion.view.transform_view.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/fusion/view/zip_view.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/fusion/view/zip_view.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/fusion/view/zip_view.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="fusion.view.zip_view"></a>zip_view</h3></div></div></div>
 <a name="fusion.view.zip_view.description"></a><h4>
-<a name="id568921"></a>
+<a name="id568768"></a>
         <a href="zip_view.html#fusion.view.zip_view.description">Description</a>
       </h4>
 <p>
@@ -37,7 +37,7 @@
         to the component <span class="underline">_sequence</span>_s.
       </p>
 <a name="fusion.view.zip_view.header"></a><h4>
-<a name="id568999"></a>
+<a name="id568846"></a>
         <a href="zip_view.html#fusion.view.zip_view.header">Header</a>
       </h4>
 <pre class="programlisting">
@@ -45,7 +45,7 @@
 <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">zip_view</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="fusion.view.zip_view.synopsis"></a><h4>
-<a name="id569157"></a>
+<a name="id569004"></a>
         <a href="zip_view.html#fusion.view.zip_view.synopsis">Synopsis</a>
       </h4>
 <pre class="programlisting">
@@ -53,7 +53,7 @@
 <span class="keyword">struct</span> <span class="identifier">zip_view</span><span class="special">;</span>
 </pre>
 <a name="fusion.view.zip_view.template_parameters"></a><h4>
-<a name="id569236"></a>
+<a name="id569083"></a>
         <a href="zip_view.html#fusion.view.zip_view.template_parameters">Template parameters</a>
       </h4>
 <div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
 </tr></tbody>
 </table></div>
 <a name="fusion.view.zip_view.model_of"></a><h4>
-<a name="id569356"></a>
+<a name="id569203"></a>
         <a href="zip_view.html#fusion.view.zip_view.model_of">Model of</a>
       </h4>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -132,7 +132,7 @@
 </dl>
 </div>
 <a name="fusion.view.zip_view.expression_semantics"></a><h4>
-<a name="id569552"></a>
+<a name="id569399"></a>
         <a href="zip_view.html#fusion.view.zip_view.expression_semantics">Expression Semantics</a>
       </h4>
 <p>
@@ -204,7 +204,7 @@
 </tbody>
 </table></div>
 <a name="fusion.view.zip_view.example"></a><h4>
-<a name="id569861"></a>
+<a name="id569708"></a>
         <a href="zip_view.html#fusion.view.zip_view.example">Example</a>
       </h4>
 <pre class="programlisting">

Modified: branches/proto/v4/libs/fusion/doc/html/index.html
==============================================================================
--- branches/proto/v4/libs/fusion/doc/html/index.html (original)
+++ branches/proto/v4/libs/fusion/doc/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,10 +10,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
 <div><p class="copyright">Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias
       Schwinger</p></div>
 <div><div class="legalnotice">
-<a name="id385249"></a><p>
+<a name="id456012"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -240,7 +240,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: December 20, 2007 at 05:09:32 GMT</small></p></td>
+<td align="left"><p><small>Last revised: July 21, 2008 at 07:17:27 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/fusion/doc/introduction.qbk
==============================================================================
--- branches/proto/v4/libs/fusion/doc/introduction.qbk (original)
+++ branches/proto/v4/libs/fusion/doc/introduction.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -74,15 +74,17 @@
 sequences are now implemented only once.
 
 Fusion provides full round compatibility with __mpl__. Fusion sequences are
-fully conforming __mpl__ sequences and __mpl__ sequences are fully
-compatible with Fusion. You can work with Fusion sequences on __mpl__ if
-you wish to work solely on types. In __mpl__, Fusion sequences follow
-__mpl__'s sequence-type preserving semantics (i.e. algorithms preserve the
-original sequence type. e.g. transforming a vector returns a vector). You
-can also convert from an __mpl__ sequence to a Fusion sequence. For
-example, there are times when it is convenient to work solely on __mpl__
-using pure __mpl__ sequences, then, convert them to Fusion sequences as a
-final step before actual instantiation of real runtime objects with data.
-You have the best of both worlds.
+fully conforming __mpl__ sequences and __mpl__ sequences are fully compatible
+with Fusion. You can work with Fusion sequences on __mpl__ if you wish to work
+solely on types [footnote Choose __mpl__ over fusion when doing pure type
+calculations. Once the static type calculation is finished, you can instantiate
+a fusion sequence (see __conversion__) for the runtime part.]. In __mpl__,
+Fusion sequences follow __mpl__'s sequence-type preserving semantics (i.e.
+algorithms preserve the original sequence type. e.g. transforming a vector
+returns a vector). You can also convert from an __mpl__ sequence to a Fusion
+sequence. For example, there are times when it is convenient to work solely on
+__mpl__ using pure __mpl__ sequences, then, convert them to Fusion sequences as
+a final step before actual instantiation of real runtime objects with data. You
+have the best of both worlds.
 
 [endsect]

Modified: branches/proto/v4/libs/fusion/doc/support.qbk
==============================================================================
--- branches/proto/v4/libs/fusion/doc/support.qbk (original)
+++ branches/proto/v4/libs/fusion/doc/support.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -204,48 +204,48 @@
 
 For Iterators, the return type is derived from one of:
 
- namespace boost { namespace fusion
- {
- struct incrementable_traversal_tag {};
-
- struct single_pass_traversal_tag
- : incrementable_traversal_tag {};
-
- struct forward_traversal_tag
- : single_pass_traversal_tag {};
-
- struct bidirectional_traversal_tag
- : forward_traversal_tag {};
-
- struct random_access_traversal_tag
- : bidirectional_traversal_tag {};
- }}
+ namespace boost { namespace fusion
+ {
+ struct incrementable_traversal_tag {};
+
+ struct single_pass_traversal_tag
+ : incrementable_traversal_tag {};
+
+ struct forward_traversal_tag
+ : single_pass_traversal_tag {};
+
+ struct bidirectional_traversal_tag
+ : forward_traversal_tag {};
+
+ struct random_access_traversal_tag
+ : bidirectional_traversal_tag {};
+ }}
 
 For Sequences, the return type is derived from one of:
 
- namespace boost { namespace fusion
- {
- struct incrementable_sequence_tag {};
-
- struct single_pass_sequence_tag
- : incrementable_sequence_tag {};
-
- struct forward_traversal_tag
- : single_pass_sequence_tag {};
-
- struct bidirectional_traversal_tag
- : forward_traversal_tag {};
-
- struct random_access_traversal_tag
- : bidirectional_traversal_tag {};
- }}
+ namespace boost { namespace fusion
+ {
+ struct incrementable_sequence_tag {};
+
+ struct single_pass_sequence_tag
+ : incrementable_sequence_tag {};
+
+ struct forward_traversal_tag
+ : single_pass_sequence_tag {};
+
+ struct bidirectional_traversal_tag
+ : forward_traversal_tag {};
+
+ struct random_access_traversal_tag
+ : bidirectional_traversal_tag {};
+ }}
 
 And optionally from:
 
- namespace boost { namespace fusion
- {
- struct associative_sequence_tag {};
- }}
+ namespace boost { namespace fusion
+ {
+ struct associative_sequence_tag {};
+ }}
 
 [*Semantics]: Establishes the conceptual classification of a particular
 __sequence__ or __iterator__.
@@ -372,10 +372,10 @@
 
     namespace result_of
     {
- template <typename First, typename Second>
+ template <typename Pair>
         struct first;
 
- template <typename First, typename Second>
+ template <typename Pair>
         struct second;
 
         template <typename First, typename Second>
@@ -414,7 +414,7 @@
     [[`P()`] [Default construction.]]
     [[`P(s)`] [Construct a pair given value for the second type, `s`.]]
     [[`P(p2)`] [Copy constructs a pair from another pair, `p2`.]]
- [[`p.second`] [Get the data from `p1.]]
+ [[`p.second`] [Get the data from `p1`.]]
     [[`p = p2`] [Assigns a pair, `p1`, from another pair, `p2`.]]
     [[make_pair<F>(s)] [Make a pair given the first type, `F`, and a value for
                         the second type, `s`. The second type assumes the type of `s`]]

Modified: branches/proto/v4/libs/fusion/test/functional/invoke.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/functional/invoke.cpp (original)
+++ branches/proto/v4/libs/fusion/test/functional/invoke.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,8 @@
 /*=============================================================================
- Copyright (c) 2005-2006 João Abecasis
+ Copyright (c) 2005-2006 Joao Abecasis
     Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are subject to the Boost Software
+
+ 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).
 ==============================================================================*/
@@ -127,10 +127,10 @@
 {
   public:
     int data;
-
+
     members()
         : data(20)
- { }
+ { }
 
     int nullary() { return data + 1; }
     int nullary_c() const { return data + 2; }
@@ -340,17 +340,17 @@
     using boost::is_same;
 
     BOOST_TEST(( is_same<
- fusion::result_of::invoke<int (*)(), fusion::vector0 >::type, int
+ fusion::result_of::invoke<int (*)(), fusion::vector0 >::type, int
>::value ));
 // disabled until boost::result_of supports it
 // BOOST_TEST(( is_same<
-// fusion::result_of::invoke<int (*)(...), fusion::vector1<int> >::type, int
+// fusion::result_of::invoke<int (*)(...), fusion::vector1<int> >::type, int
 // >::value ));
- BOOST_TEST(( is_same<
- fusion::result_of::invoke<int (members::*)(), fusion::vector1<members*> >::type, int
+ BOOST_TEST(( is_same<
+ fusion::result_of::invoke<int (members::*)(), fusion::vector1<members*> >::type, int
>::value ));
 // disabled until boost::result_of supports it
-// BOOST_TEST(( is_same<
+// BOOST_TEST(( is_same<
 // fusion::result_of::invoke<int (members::*)(...), fusion::vector2<members*,int> >::type, int
 // >::value ));
 }

Modified: branches/proto/v4/libs/fusion/test/functional/invoke_function_object.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/functional/invoke_function_object.cpp (original)
+++ branches/proto/v4/libs/fusion/test/functional/invoke_function_object.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,8 @@
 /*=============================================================================
- Copyright (c) 2005-2006 João Abecasis
+ Copyright (c) 2005-2006 Joao Abecasis
     Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are subject to the Boost Software
+
+ 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).
 ==============================================================================*/
@@ -41,7 +41,7 @@
 struct fobj
 {
     // Handle nullary separately to exercise result_of support
- template <typename Sig>
+ template <typename Sig>
     struct result;
 
     template <class Self, typename T0>
@@ -97,7 +97,7 @@
     {
         typedef int type;
     };
-
+
     int operator()(int i) { return 14 + i; }
     int operator()(int i) const { return 15 + i; }
 };

Modified: branches/proto/v4/libs/fusion/test/functional/invoke_procedure.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/functional/invoke_procedure.cpp (original)
+++ branches/proto/v4/libs/fusion/test/functional/invoke_procedure.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,8 @@
 /*=============================================================================
- Copyright (c) 2005-2006 João Abecasis
+ Copyright (c) 2005-2006 Joao Abecasis
     Copyright (c) 2006-2007 Tobias Schwinger
-
- Use modification and distribution are subject to the Boost Software
+
+ 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).
 ==============================================================================*/
@@ -48,10 +48,10 @@
 {
   public:
     int data;
-
+
     members()
         : data(20)
- { }
+ { }
 
     int nullary() { return element1 = data + 1; }
     int nullary_c() const { return element1 = data + 2; }

Modified: branches/proto/v4/libs/fusion/test/sequence/back_extended_deque.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/back_extended_deque.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/back_extended_deque.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 

Modified: branches/proto/v4/libs/fusion/test/sequence/comparison.hpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/comparison.hpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/comparison.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/construction.hpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/construction.hpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/construction.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/copy.hpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/copy.hpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/copy.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/deque_comparison.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/deque_comparison.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/deque_comparison.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 

Modified: branches/proto/v4/libs/fusion/test/sequence/deque_construction.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/deque_construction.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/deque_construction.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 

Modified: branches/proto/v4/libs/fusion/test/sequence/deque_copy.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/deque_copy.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/deque_copy.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 

Modified: branches/proto/v4/libs/fusion/test/sequence/deque_make.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/deque_make.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/deque_make.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 

Modified: branches/proto/v4/libs/fusion/test/sequence/deque_misc.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/deque_misc.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/deque_misc.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 

Modified: branches/proto/v4/libs/fusion/test/sequence/deque_mutate.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/deque_mutate.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/deque_mutate.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006
 

Modified: branches/proto/v4/libs/fusion/test/sequence/deque_tie.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/deque_tie.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/deque_tie.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 

Modified: branches/proto/v4/libs/fusion/test/sequence/deque_value_at.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/deque_value_at.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/deque_value_at.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 

Modified: branches/proto/v4/libs/fusion/test/sequence/front_extended_deque.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/front_extended_deque.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/front_extended_deque.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 

Modified: branches/proto/v4/libs/fusion/test/sequence/io.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/io.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/io.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (C) 1999-2003 Jaakko Järvi
+ Copyright (C) 1999-2003 Jaakko Jarvi
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/fusion/test/sequence/list_comparison.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/list_comparison.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/list_comparison.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/list_construction.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/list_construction.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/list_construction.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/list_copy.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/list_copy.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/list_copy.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/list_make.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/list_make.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/list_make.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/list_misc.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/list_misc.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/list_misc.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/list_mutate.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/list_mutate.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/list_mutate.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/list_tie.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/list_tie.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/list_tie.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/list_value_at.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/list_value_at.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/list_value_at.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/make.hpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/make.hpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/make.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/make_list.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/make_list.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/make_list.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/make_vector.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/make_vector.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/make_vector.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/misc.hpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/misc.hpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/misc.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (C) 1999-2003 Jaakko Järvi
+ Copyright (C) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/mutate.hpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/mutate.hpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/mutate.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/tie.hpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/tie.hpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/tie.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/tuple_comparison.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/tuple_comparison.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/tuple_comparison.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/tuple_construction.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/tuple_construction.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/tuple_construction.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/tuple_copy.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/tuple_copy.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/tuple_copy.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/tuple_element.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/tuple_element.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/tuple_element.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/tuple_make.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/tuple_make.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/tuple_make.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/tuple_misc.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/tuple_misc.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/tuple_misc.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/tuple_mutate.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/tuple_mutate.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/tuple_mutate.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/tuple_tie.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/tuple_tie.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/tuple_tie.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/value_at.hpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/value_at.hpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/value_at.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/vector_comparison.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/vector_comparison.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/vector_comparison.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/vector_construction.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/vector_construction.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/vector_construction.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/vector_copy.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/vector_copy.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/vector_copy.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/vector_make.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/vector_make.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/vector_make.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/vector_misc.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/vector_misc.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/vector_misc.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/vector_mutate.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/vector_mutate.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/vector_mutate.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/vector_tie.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/vector_tie.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/vector_tie.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/fusion/test/sequence/vector_value_at.cpp
==============================================================================
--- branches/proto/v4/libs/fusion/test/sequence/vector_value_at.cpp (original)
+++ branches/proto/v4/libs/fusion/test/sequence/vector_value_at.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 1999-2003 Jaakko Järvi
+ Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
     Distributed under the Boost Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/graph/build/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/graph/build/Jamfile.v2 (original)
+++ branches/proto/v4/libs/graph/build/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,7 +26,7 @@
   optional_sources += graphml.cpp ;
   optional_reqs += <include>$(EXPAT_INCLUDE)
                    <library-path>$(EXPAT_LIBPATH)
- <find-static-library>expat
+ <find-shared-library>expat
                 ;
 }
 else

Modified: branches/proto/v4/libs/graph/doc/cuthill_mckee_ordering.html
==============================================================================
--- branches/proto/v4/libs/graph/doc/cuthill_mckee_ordering.html (original)
+++ branches/proto/v4/libs/graph/doc/cuthill_mckee_ordering.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -44,24 +44,24 @@
             class ColorMap, class DegreeMap&gt;
   OutputIterator
   cuthill_mckee_ordering(const IncidenceGraph&amp; g,
- typename graph_traits&lt;Graph&gt;::vertex_descriptor s,
+ typename graph_traits&lt;IncidenceGraph&gt;::vertex_descriptor s,
                          OutputIterator inverse_permutation,
                          ColorMap color, DegreeMap degree)
 
   (2)
   template &lt;class VertexListGraph, class OutputIterator&gt;
   OutputIterator
- cuthill_mckee_ordering(const VertexIndexMap&amp; G, OutputIterator inverse_permutation);
+ cuthill_mckee_ordering(const VertexListGraph&amp; g, OutputIterator inverse_permutation);
 
   template &lt;class VertexListGraph, class OutputIterator, class VertexIndexMap&gt;
   OutputIterator
- cuthill_mckee_ordering(const VertexIndexMap&amp; G, OutputIterator inverse_permutation,
+ cuthill_mckee_ordering(const VertexListGraph&amp; g, OutputIterator inverse_permutation,
                          VertexIndexMap index_map);
  
   template &lt;class VertexListGraph, class OutputIterator,
             class ColorMap, class DegreeMap&gt;
   OutputIterator
- cuthill_mckee_ordering(const VertexListGraph&amp; G, OutputIterator inverse_permutation,
+ cuthill_mckee_ordering(const VertexListGraph&amp; g, OutputIterator inverse_permutation,
                          ColorMap color, DegreeMap degree)
                          
   (3)
@@ -70,7 +70,7 @@
   OutputIterator
   cuthill_mckee_ordering(const IncidenceGraph&amp; g,
                              std::deque&lt; typename
- graph_traits&lt;Graph&gt;::vertex_descriptor &gt; vertex_queue,
+ graph_traits&lt;IncidenceGraph&gt;::vertex_descriptor &gt; vertex_queue,
                          OutputIterator inverse_permutation,
                          ColorMap color, DegreeMap degree)
 </pre>
@@ -172,7 +172,7 @@
 
 <li> <tt>VertexListGraph&amp; g</tt> &nbsp;(IN) <br>
   An undirected graph. The graph's type must be a model of <a
- href="./VertexListGraph.html">VertexListGraph</a>.<br>
+ href="./VertexListGraph.html">VertexListGraph</a> and IncidenceGraph.<br>
   <b>Python</b>: The parameter is named <tt>graph</tt>.
 
 <li> <tt><a href="http://www.sgi.com/tech/stl/OutputIterator.html">

Modified: branches/proto/v4/libs/graph/doc/topological_sort.html
==============================================================================
--- branches/proto/v4/libs/graph/doc/topological_sort.html (original)
+++ branches/proto/v4/libs/graph/doc/topological_sort.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -45,7 +45,8 @@
 IN: <tt>VertexListGraph&amp; g</tt>
 <blockquote>
   A directed acylic graph (DAG). The graph type must
- be a model of Vertex List Graph.
+ be a model of Vertex List Graph
+ and Incidence Graph.
   If the graph is not a DAG then a not_a_dag
   exception will be thrown and the
   user should discard the contents of <tt>result</tt> range.<br>

Modified: branches/proto/v4/libs/integer/cstdint.htm
==============================================================================
--- branches/proto/v4/libs/integer/cstdint.htm (original)
+++ branches/proto/v4/libs/integer/cstdint.htm 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,7 +18,7 @@
 header &lt;stdint.h&gt;.&nbsp; The 64-bit types required by the C standard are not
 required in the boost header, and may not be supplied in all implementations,
 because <code>long long</code> is not [yet] included in the C++ standard.</p>
-<p>See cstdint_test.cpp for a test program.</p>
+<p>See cstdint_test.cpp for a test program.</p>
 <h2>Exact-width integer types</h2>
 <p>The typedef <code>int#_t</code>, with # replaced by the width, designates a
 signed integer type of exactly # bits; <code>int8_t</code> denotes an 8-bit

Modified: branches/proto/v4/libs/integer/doc/integer_mask.html
==============================================================================
--- branches/proto/v4/libs/integer/doc/integer_mask.html (original)
+++ branches/proto/v4/libs/integer/doc/integer_mask.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,11 @@
 <h1><img src="../../../boost.png" alt="boost.png (6897 bytes)"
 align="middle" width="277" height="86">Integer Bit Mask Templates</h1>
 
-<p>The class templates in <cite><boost/integer/integer_mask.hpp></cite> provide bit masks for a certain bit position or a contiguous-bit pack of a certain size. The types of the masking constants come from the integer type selection templates header.</p>
+<p>The class templates in <cite><a
+href="../../../boost/integer/integer_mask.hpp">&lt;boost/integer/integer_mask.hpp&gt;</a></cite>
+provide bit masks for a certain bit position or a contiguous-bit pack of a
+certain size. The types of the masking constants come from the <a
+href="../integer.htm">integer type selection templates</a> header.</p>
 
 <h2><a name="contents">Contents</a></h2>
 
@@ -17,6 +21,7 @@
         <li>Synopsis</li>
         <li>Single Bit-Mask Class Template</li>
         <li>Group Bit-Mask Class Template</li>
+ <li>MPL-Compatible Variants</li>
         <li>Example</li>
         <li>Demonstration Program</li>
         <li>Rationale</li>
@@ -26,39 +31,68 @@
 <h2><a name="synopsis">Synopsis</a></h2>
 
 <blockquote><pre>
-#include &lt;cstddef&gt; <i>// for std::size_t</i>
+#include &lt;boost/integer_fwd.hpp&gt; <i>// forwarding header</i>
+#include &lt;boost/integer.hpp&gt; <i>// for boost::int_fast_t</i>
+#include &lt;cstddef&gt; <i>// for std::size_t</i>
 
 namespace boost
 {
 
+// MPL-compatible
+template &lt; int Offset &gt;
+struct integer_hi_mask
+{
+ static bool const is_specialized = <em>implementation_supplied</em>;
+ static int const bit_offset = Offset;
+
+ typedef <em>implementation_supplied</em> type;
+ typedef <em>implementation_supplied</em> value_type;
+ static value_type const value = <em>implementation_supplied</em>;
+ // There are other (optional) operations....
+};
+
+template &lt; int Length &gt;
+struct integer_lo_mask
+{
+ static bool const is_specialized = <em>implementation_supplied</em>;
+ static int const bit_count = Length;
+
+ typedef <em>implementation_supplied</em> type;
+ typedef <em>implementation_supplied</em> value_type;
+ static value_type const value = <em>implementation_supplied</em>;
+ // There are other (optional) operations....
+};
+
+// single
 template &lt; std::size_t Bit &gt;
-struct high_bit_mask_t
+class high_bit_mask_t
 {
- typedef <em>implementation_supplied</em> least;
- typedef <em>implementation_supplied</em> fast;
+public:
+ typedef typename integer_hi_mask&lt;Bit&gt;::value_type least;
+ typedef int_fast_t&lt;least&gt;::fast fast;
 
- static const least high_bit = <em>implementation_defined</em>;
- static const fast high_bit_fast = <em>implementation_defined</em>;
+ static const least high_bit = integer_hi_mask&lt;Bit&gt;::value;
+ static const fast high_bit_fast = high_bit;
 
     static const std::size_t bit_position = Bit;
 
 };
 
+// group
 template &lt; std::size_t Bits &gt;
-struct low_bits_mask_t
+class low_bits_mask_t
 {
- typedef <em>implementation_supplied</em> least;
- typedef <em>implementation_supplied</em> fast;
+public:
+ typedef typename integer_lo_mask&lt;Bits&gt;::value_type least;
+ typedef int_fast_t&lt;least&gt;::fast fast;
 
- static const least sig_bits = <em>implementation_defined</em>;
- static const fast sig_bits_fast = <em>implementation_defined</em>;
+ static const least sig_bits = integer_lo_mask&lt;Bits&gt;::value;
+ static const fast sig_bits_fast = sig_bits;
 
     static const std::size_t bit_count = Bits;
 
 };
 
-// Specializations for low_bits_mask_t exist for certain bit counts.
-
 } // namespace boost
 </pre></blockquote>
 
@@ -149,16 +183,149 @@
         </tr>
 </table>
 
-<p><strong>Implementation Note</strong><br>
-When <code>Bits</code> is the exact size of a built-in unsigned type,
-the implementation has to change to prevent undefined behavior.
-Therefore, there are specializations of <code>low_bits_mask_t</code> at
-those bit counts.</p>
+<h2><a name="mpl">MPL-Compatible Variants</a></h2>
+
+<p>The single and group bit-mask class templates have several drawbacks:</p>
+
+<ul>
+ <li>You must know the valid bit-lengths in advance.</li>
+ <li>Using an inappropriate parameter value results in a compiler
+ diagnostic.</li>
+ <li>The type names used are inconsistent with other transformations in
+ Boost, like in MPL.</li>
+ <li>The above two facts make use of the regular bit-mask class templates
+ incompatible with template meta-programming techniques.</li>
+</ul>
+
+<p>The <code>integer_hi_mask</code> and <code>integer_lo_mask</code> class
+templates provide MPL-compatible alternatives. These alternatives have the
+form:</p>
+
+<blockquote><pre>
+template&lt; int <var>Size</var> &gt;
+struct <var>name</var>
+{
+ static bool const is_specialized = <em>implementation_supplied</em>;
+ static int const <var>switch_id</var> = <var>Size</var>;
+
+ typedef <em>implementation_supplied</em> type;
+ typedef <em>implementation_supplied</em> value_type;
+ static value_type const value = <em>implementation_supplied</em>;
+ // with other operations...
+};
+</pre></blockquote>
+
+<p>Only some of the members are always present. The presence of other members
+and operations is flagged by the (always-present) <code>is_specialized</code>.</p>
+
+<table border="2" cellpadding="5" align="center">
+ <caption>Permanent Members of the MPL-Compatible Masking Class Template
+ Types</caption>
+ <tr>
+ <th>Class Template Member</th>
+ <th>Meaning</th>
+ </tr>
+ <tr>
+ <td><code>is_specialized</code></td>
+ <td>Flag indicating when a particular template class instantiation is a
+ valid meta-function (<code>true</code>) or not (<code>false</code>).</td>
+ </tr>
+ <tr>
+ <td><code><var>switch_id</var></code> (Actual name is template-specific.)</td>
+ <td>The value of the main control parameter, accessible even if the
+ template class instantiation is aliased.</td>
+ </tr>
+</table>
+
+<p>The optional members are based from inheriting from a <a
+href="../../mpl/doc/refmanual/integral-constant.html">MPL-style Integral
+Constant</a> type, but only if <code>is_specialized</code> is <code>true</code>.</p>
+
+<table border="2" cellpadding="5" align="center">
+ <caption>Optional Members of the MPL-Compatible Masking Types</caption>
+ <tr>
+ <th>Class Template Member</th>
+ <th>Meaning</th>
+ </tr>
+ <tr>
+ <td><code>value</code></td>
+ <td>The actual bit mask.</td>
+ </tr>
+ <tr>
+ <td><code>value_type</code></td>
+ <td>The type of the bit mask value.</td>
+ </tr>
+ <tr>
+ <td><code>type</code></td>
+ <td>The Integral Constant</a> implementation type, which should be
+ <code><a href="../../mpl/doc/refmanual/integral-c.html">boost::mpl::
+ integral_c</a>&lt; <var>value_type</var>, <var>value</var>
+ &gt;</code>.</td>
+ </tr>
+</table>
+
+<p>The Integral Constant prototype also adds the following operations:</p>
+
+<table border="2" cellpadding="5" align="center">
+ <caption>Optional Operations of the MPL-Compatible Masking Types</caption>
+ <tr>
+ <th>Operation (with <var>n</var> as a masking type)</th>
+ <th>Meaning</th>
+ </tr>
+ <tr>
+ <td><code>boost::mpl::next&lt; n &gt;::type</code></td>
+ <td><code>boost::mpl::next&lt; n::type &gt;::type</code>, i.e.
+ <code>boost::mpl::integral_c&lt; n::value_type, n::value + 1
+ &gt;</code>.</td>
+ </tr>
+ <tr>
+ <td><code>boost::mpl::prior&lt; n &gt;::type</code></td>
+ <td><code>boost::mpl::prior&lt; n::type &gt;::type</code>, i.e.
+ <code>boost::mpl::integral_c&lt; n::value_type, n::value - 1
+ &gt;</code>.</td>
+ </tr>
+ <tr>
+ <td><code>n::value_type const c = n();</code></td>
+ <td><var>c</var> is set to <code>n::value</code>.</td>
+ </tr>
+</table>
+
+<p>The specifics for each masking class template are:</p>
+
+<table border="2" cellpadding="5" align="center">
+ <caption>Criteria for the MPL-Compatible Masking Types<br>
+ (Everything besides the parameter ID is in name-space
+ <code>boost</code> except where indicated.)</caption>
+ <tr>
+ <th>Class Template</th>
+ <th>Parameter Member ID</th>
+ <th>Classic Equivalent</th>
+ <th>Value Type</th>
+ <th>Value</th>
+ <th>Valid Range</th>
+ </tr>
+ <tr>
+ <td><code>integer_hi_mask</code></td>
+ <td><code>bit_offset</code></td>
+ <td><code>high_bit_mask_t</code></td>
+ <td><code>sized_integral &lt; bit_offset + 1, unsigned &gt;</code></td>
+ <td>2<sup><code>bit_offset</code></sup></td>
+ <td><code>0 &lt;= bit_offset &lt; std::numeric_limits&lt; uintmax_t &gt;::digits</code></td>
+ </tr>
+ <tr>
+ <td><code>integer_lo_mask</code></td>
+ <td><code>bit_count</code></td>
+ <td><code>low_bits_mask_t</code></td>
+ <td><code>sized_integral &lt; bit_count, unsigned &gt;</code></td>
+ <td>2<sup><code>bit_offset</code></sup> - 1</td>
+ <td><code>0 &lt;= bit_count &lt;= std::numeric_limits&lt; uintmax_t &gt;::digits</code></td>
+ </tr>
+</table>
 
 <h2><a name="example">Example</a></h2>
 
 <blockquote><pre>
-#include &lt;boost/integer/integer_mask.hpp&gt;
+#include &lt;boost/integer/integer_mask.hpp&gt;
 
 //...
 
@@ -200,7 +367,7 @@
 
 <hr>
 
-<p>Revised September 23, 2001</p>
+<p>Revised July 29, 2008</p>
 
 <p>&copy; Copyright Daryle Walker 2001. Use, modification, and distribution are
 subject to the Boost Software License, Version 1.0. (See accompanying file <a

Modified: branches/proto/v4/libs/integer/integer.htm
==============================================================================
--- branches/proto/v4/libs/integer/integer.htm (original)
+++ branches/proto/v4/libs/integer/integer.htm 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,8 +21,9 @@
 <ul>
         <li>Contents</li>
         <li>Synopsis</li>
- <li>Easiest-to-Manipulate Types</li>
+ <li>Processor-Optimized Types</li>
         <li>Sized Types</li>
+ <li>MPL-Compatible Variants</li>
         <li>Example</li>
         <li>Demonstration Program</li>
         <li>Rationale</li>
@@ -32,67 +33,145 @@
 
 <h2><a name="synopsis">Synopsis</a></h2>
 
-<blockquote><pre>namespace boost
+<blockquote><pre>
+#include &lt;boost/integer_fwd.hpp&gt; // forwarding header
+#include &lt;boost/cstdint.hpp&gt; // for boost::uintmax_t, intmax_t
+
+namespace boost
 {
   // fast integers from least integers
+ template&lt; typename BaseInt &gt;
+ struct fast_integral
+ {
+ typedef <em>implementation_supplied</em> type;
+ };
+
   template&lt; typename LeastInt &gt;
   struct int_fast_t
   {
- typedef <em>implementation_supplied</em> fast;
+ typedef typename fast_integral&lt;LeastInt&gt;::type fast;
+ };
+
+ // MPL-compatible
+ template&lt; int Bits, typename Signedness &gt;
+ struct sized_integral
+ {
+ static bool const is_specialized = <em>implementation_supplied</em>;
+ static bool const is_signed = <em>implementation_supplied</em>;
+ static int const bit_count = Bits;
+
+ typedef <em>implementation_supplied</em> type;
+ };
+
+ template&lt; int Bits, typename Signedness &gt;
+ struct exact_integral
+ {
+ static bool const is_specialized = <em>implementation_supplied</em>;
+ static bool const is_signed = <em>implementation_supplied</em>;
+ static int const bit_count = Bits;
+
+ typedef <em>implementation_supplied</em> type;
+ };
+
+ template&lt; intmax_t MaxValue &gt;
+ struct maximum_signed_integral
+ {
+ static bool const is_specialized = <em>implementation_supplied</em>;
+ static bool const is_signed = true;
+ static intmax_t const bound = MaxValue;
+
+ typedef <em>implementation_supplied</em> type;
+ };
+
+ template&lt; intmax_t MinValue &gt;
+ struct minimum_signed_integral
+ {
+ static bool const is_specialized = <em>implementation_supplied</em>;
+ static bool const is_signed = true;
+ static intmax_t const bound = MinValue;
+
+ typedef <em>implementation_supplied</em> type;
+ };
+
+ template&lt; uintmax_t Value &gt;
+ struct maximum_unsigned_integral
+ {
+ static bool const is_specialized = <em>implementation_supplied</em>;
+ static bool const is_signed = false;
+ static uintmax_t const bound = Value;
+
+ typedef <em>implementation_supplied</em> type;
   };
 
   // signed
   template&lt; int Bits &gt;
   struct int_t
   {
- typedef <em>implementation_supplied</em> least;
- typedef int_fast_t&lt;least&gt;::fast fast;
+ typedef typename sized_integral&lt;Bits, signed&gt;::type least;
+ typedef int_fast_t&lt;least&gt;::fast fast;
+ };
+
+ template&lt; int Bits &gt;
+ struct int_exact_t
+ {
+ typedef typename exact_integral&lt;Bits, signed&gt;::type exact;
   };
 
   // unsigned
   template&lt; int Bits &gt;
   struct uint_t
   {
- typedef <em>implementation_supplied</em> least;
- typedef int_fast_t&lt;least&gt;::fast fast;
+ typedef typename sized_integral&lt;Bits, unsigned&gt;::type least;
+ typedef int_fast_t&lt;least&gt;::fast fast;
+ };
+
+ template&lt; int Bits &gt;
+ struct uint_exact_t
+ {
+ typedef typename exact_integral&lt;Bits, unsigned&gt;::type exact;
   };
 
   // signed
- template&lt; long MaxValue &gt;
+ template&lt; intmax_t MaxValue &gt;
   struct int_max_value_t
   {
- typedef <em>implementation_supplied</em> least;
- typedef int_fast_t&lt;least&gt;::fast fast;
+ typedef typename maximum_signed_integral&lt;MaxValue&gt;::type least;
+ typedef int_fast_t&lt;least&gt;::fast fast;
   };
 
- template&lt; long MinValue &gt;
+ template&lt; intmax_t MinValue &gt;
   struct int_min_value_t
   {
- typedef <em>implementation_supplied</em> least;
- typedef int_fast_t&lt;least&gt;::fast fast;
+ typedef typename minimum_signed_integral&lt;MinValue&gt;::type least;
+ typedef int_fast_t&lt;least&gt;::fast fast;
   };
 
   // unsigned
- template&lt; unsigned long Value &gt;
+ template&lt; uintmax_t Value &gt;
   struct uint_value_t
   {
- typedef <em>implementation_supplied</em> least;
- typedef int_fast_t&lt;least&gt;::fast fast;
+ typedef typename maximum_unsigned_integral&lt;Value&gt;::type least;
+ typedef int_fast_t&lt;least&gt;::fast fast;
   };
 } // namespace boost
 </pre></blockquote>
 
-<h2><a name="easy">Easiest-to-Manipulate Types</a></h2>
+<h2><a name="easy">Processor-Optimized Types</a></h2>
 
-<p>The <code>int_fast_t</code> class template maps its input type to the
+<p>The <code>fast_integral</code> class template maps its input type to the
 next-largest type that the processor can manipulate the easiest, or to
 itself if the input type is already an easy-to-manipulate type. For
 instance, processing a bunch of <code>char</code> objects may go faster
 if they were converted to <code>int</code> objects before processing.
-The input type, passed as the only template parameter, must be a
-built-in integral type, except <code>bool</code>. Unsigned integral
-types can be used, as well as signed integral types, despite the name.
-The output type is given as the class member <code>fast</code>.</p>
+The input type, passed as the only template parameter, can be any built-in
+integral type besides <code>bool</code>. The output type is given as the class
+member <code>type</code>.</p>
+
+<p>The <code>int_fast_t</code> class template is the classic meta-function for
+this operation. Despite the name, it works for unsigned integral types just
+like it works for the signed integral types. The output type is given as the
+class member <code>fast</code>, defined to be the same as the corresponding
+result from the <code>fast_integral</code> meta-function.</p>
 
 <p><strong>Implementation Notes</strong><br>
 By default, the output type is identical to the input type. Eventually,
@@ -104,72 +183,286 @@
 
 <h2><a name="sized">Sized Types</a></h2>
 
-<p>The <code>int_t</code>, <code>uint_t</code>,
-<code>int_max_value_t</code>, <code>int_min_value_t</code>, and
-<code>uint_value_t</code> class templates find the most appropiate
-built-in integral type for the given template parameter. This type is
-given by the class member <code>least</code>. The easiest-to-manipulate
-version of that type is given by the class member <code>fast</code>.
-The following table describes each template's criteria.</p>
+<p>The <code>int_t</code>, <code>int_exact_t</code>, <code>uint_t</code>,
+<code>uint_exact_t</code>, <code>int_max_value_t</code>,
+<code>int_min_value_t</code>, and <code>uint_value_t</code> class templates find
+the most appropriate built-in integral type for the given template parameter.
+This type is given by the class member <code>least</code> or <code>exact</code>.
+For the non-exact class templates, the easiest-to-manipulate version of that
+type is given by the class member <code>fast</code>. The following table
+describes each template's criteria.</p>
 
-<table border="1" cellpadding="5">
+<table border="2" cellpadding="5">
         <caption>Criteria for the Sized Type Class Templates</caption>
         <tr>
- <th>Class Template</th>
+ <th>Class Template (all in name-space <code>boost</code>)</th>
                 <th>Template Parameter Mapping</th>
         </tr>
         <tr>
- <td><code>boost::int_t</code></td>
+ <td><code>int_t</code></td>
                 <td>The smallest built-in signed integral type with at least the
                         given number of bits, including the sign bit. The parameter
- should be a positive number. A compile-time error results if
+ <em>must</em> be a positive number. A compile-time error results if
                         the parameter is larger than the number of bits in a
- <code>long</code>.</td>
+ <code>boost::intmax_t</code>.</td>
+ </tr>
+ <tr>
+ <td><code>int_exact_t</code></td>
+ <td>The smallest built-in signed integral type with exactly the
+ given number of bits, including the sign bit. A compile-time error
+ results if no qualifying type exists.</td>
         </tr>
         <tr>
- <td><code>boost::uint_t</code></td>
+ <td><code>uint_t</code></td>
                 <td>The smallest built-in unsigned integral type with at least
- the given number of bits. The parameter should be a positive
- number. A compile-time error results if the parameter is
- larger than the number of bits in an <code>unsigned
- long</code>.</td>
+ the given number of bits. The parameter <em>must</em> be a
+ non-negative number. A compile-time error results if the parameter
+ is larger than the number of bits in a
+ <code>boost::uintmax_t</code>.</td>
+ </tr>
+ <tr>
+ <td><code>uint_exact_t</code></td>
+ <td>The smallest built-in unsigned integral type with exactly the given
+ number of bits. A compile-time error results if no qualifying type
+ exists.</td>
         </tr>
         <tr>
- <td><code>boost::int_max_value_t</code></td>
+ <td><code>int_max_value_t</code></td>
                 <td>The smallest built-in signed integral type that supports the
- given value as a maximum. The parameter should be a
+ given value as a maximum. The parameter <em>must</em> be a
                         positive number.</td>
         </tr>
         <tr>
- <td><code>boost::int_min_value_t</code></td>
+ <td><code>int_min_value_t</code></td>
                 <td>The smallest built-in signed integral type that supports the
- given value as a minimum. The parameter should be a
+ given value as a minimum. The parameter <em>must</em> be a
                         negative number.</td>
         </tr>
         <tr>
- <td><code>boost::uint_value_t</code></td>
+ <td><code>uint_value_t</code></td>
                 <td>The smallest built-in unsigned integral type that supports
                         the given value as a maximum. The parameter should be a
                         positive number.</td>
         </tr>
 </table>
 
+<h2><a name="mpl">MPL-Compatible Variants</a></h2>
+
+<p>The bit-length sized-type class templates have several drawbacks:</p>
+
+<ul>
+ <li>You must know the valid bit-lengths in advance.</li>
+ <li>There is no way to inspect the parameter used after a size-type template
+ class is aliased.</li>
+ <li>Using an inappropriate parameter value results in a compiler
+ diagnostic.</li>
+ <li>The type names used are inconsistent with other transformations in
+ Boost, like in MPL.</li>
+ <li>The above two facts make use of the size-type class templates
+ incompatible with template meta-programming techniques.</li>
+</ul>
+
+<p>The <code>sized_integral</code>, <code>exact_integral</code>,
+<code>maximum_signed_integral</code>, <code>minimum_signed_integral</code>, and
+<code>maximum_unsigned_integral</code> class templates provide MPL-compatible
+alternatives. These alternatives generally have the form:</p>
+
+<blockquote><pre>
+template&lt; <var>SwitchType</var> <var>SwitchValue</var>, typename Signedness &gt;
+struct <var>name</var>
+{
+ static bool const is_specialized = <em>implementation_supplied</em>;
+ static bool const is_signed = <em>implementation_supplied</em>;
+ static <var>SwitchType</var> const <var>switch_id</var> = <var>SwitchValue</var>;
+
+ typedef <em>implementation_supplied</em> type;
+};
+</pre></blockquote>
+
+<p>Each member, if present, is defined by:</p>
+
+<table border="2" cellpadding="5">
+ <caption>Members in MPL-Compatible Class Templates</caption>
+ <tr>
+ <th>Class Template Member</th>
+ <th>When Defined</th>
+ <th>Meaning</th>
+ </tr>
+ <tr>
+ <td><code>is_specialized</code></td>
+ <td>Always</td>
+ <td>Flag indicating when a particular template class instantiation is a
+ valid meta-function (<code>true</code>) or not (<code>false</code>).</td>
+ </tr>
+ <tr>
+ <td><code>is_signed</code></td>
+ <td><code>is_specialized == true</code></td>
+ <td>Flag indicating whether the signed-variant (<code>true</code>) or
+ the unsigned-variant (<code>false</code>) of the meta-function is
+ used. This is controlled by the <code>Signedness</code> template
+ parameter:
+ <table border="1" cellpadding="3" align="center">
+ <caption>Effect of <code>Signedness</code> Setting</caption>
+ <tr>
+ <th><code>Signedness</code> Type</th>
+ <th><code>is_signed</code></th>
+ </tr>
+ <tr>
+ <td><code>signed</code></td>
+ <td><code>true</code></td>
+ </tr>
+ <tr>
+ <td><code>unsigned</code></td>
+ <td><code>false</code></td>
+ </tr>
+ <tr>
+ <td>anything else</td>
+ <td><em>not defined</em></td>
+ </tr>
+ </table>
+ The type used is a programmer mnemonic; the compiler cannot prevent
+ someone from using <code>int</code> or <code>signed int</code>
+ instead of <code>signed</code>, or <code>unsigned int</code> instead
+ of <code>unsigned</code>.</td>
+ </tr>
+ <tr>
+ <td><code><var>switch_id</var></code> (Actual name is template-specific.)</td>
+ <td>Always</td>
+ <td>The value of the main control parameter, accessible even if the
+ template class instantiation is aliased.</td>
+ </tr>
+ <tr>
+ <td><code>type</code></td>
+ <td><code>is_specialized == true</code></td>
+ <td>The meta-function's result. It appears only if the input parameters
+ satisfy the template's requirements. Its presence, or lack thereof,
+ enables &quot;Substitution Failure Is Not An Error&quot; (SFINAE)
+ techniques, instead of a hard compiler diagnostic.</td>
+ </tr>
+</table>
+
+<p>The exceptions are the extreme-value class templates
+(<code>maximum_signed_integral</code>, <code>minimum_signed_integral</code>, and
+<code>maximum_unsigned_integral</code>), which do not take a <var>Signedness</var>
+template parameter because the meta-functions already inherently have signedness.
+
+<p>The following table describes each template's criteria. The classic signed
+and unsigned equivalents are the sized-type class templates that each
+MPL-compatible class template emulates. (The setting of <var>Signedness</var>
+controls the appropriate emulation.)</p>
+
+<table border="2" cellpadding="5">
+ <caption>Criteria for the MPL-Compatible Class Templates</caption>
+ <tr>
+ <th rowspan="2">Class Template (all in name-space <code>boost</code>)</th>
+ <th rowspan="2">Parameter Type (in name-space <code>boost</code> as needed)</th>
+ <th rowspan="2">Parameter Member ID</th>
+ <th colspan="2">Classic Equivalent</th>
+ <th rowspan="2" colspan="2">Template Parameter Mapping (when <code>type</code> is defined)</th>
+ </tr>
+ <tr>
+ <th>Signed</th>
+ <th>Unsigned</th>
+ </tr>
+ <tr>
+ <td><code>sized_integral</code></td>
+ <td><code>int</code></td>
+ <td><code>bit_count</code></td>
+ <td><code>int_t</code></td>
+ <td><code>uint_t</code></td>
+ <td colspan="2">The smallest built-in integral type with at least
+ <code>bit_count</code> bits (including the sign bit when
+ <var>Signedness</var> is <code>signed</code>). Not present if no
+ type qualifies.</td>
+ </tr>
+ <tr>
+ <td><code>exact_integral</code></td>
+ <td><code>int</code></td>
+ <td><code>bit_count</code></td>
+ <td><code>int_exact_t</code></td>
+ <td><code>uint_exact_t</code></td>
+ <td colspan="2">The smallest built-in integral type with exactly
+ <code>bit_count</code> bits (including the sign bit when
+ <var>Signedness</var> is <code>signed</code>). Not present if no
+ type qualifies.</td>
+ </tr>
+ <tr>
+ <td><code>maximum_signed_integral</code></td>
+ <td><code>intmax_t</code></td>
+ <td><code>bound</code></td>
+ <td colspan="2"><code>int_max_value_t</code></td>
+ <td>The smallest built-in integral type that can perserve the value in
+ <code>bound</code>. Not present if <code>bound</code> is non-positive.</td>
+ <td rowspan="3">It is possible for a <code>type</code> to be absent if
+ a platform supports really-extended integral types (beyond <code>long
+ long</code> or <code>__int64</code>), support for those types goes
+ into &lt;boost/cstdint.hpp&gt;,
+ but said support hadn't yet been added to &lt;<a
+ href="../../boost/integer.hpp">boost/integer.hpp</a>&gt;</td>
+ </tr>
+ <tr>
+ <td><code>minimum_signed_integral</code></td>
+ <td><code>intmax_t</code></td>
+ <td><code>bound</code></td>
+ <td colspan="2"><code>int_min_value_t</code></td>
+ <td>The smallest built-in integral type that can perserve the value in
+ <code>bound</code>. Not present if <code>bound</code> is non-negative.</td>
+ </tr>
+ <tr>
+ <td><code>maximum_unsigned_integral</code></td>
+ <td><code>uintmax_t</code></td>
+ <td><code>bound</code></td>
+ <td colspan="2"><code>uint_value_t</code></td>
+ <td>The smallest built-in integral type that can perserve the value in
+ <code>bound</code>. Should always be present.</td>
+ </tr>
+</table>
+
 <h2><a name="example">Example</a></h2>
 
-<blockquote><pre>#include &lt;boost/integer.hpp&gt;
+<blockquote><pre>
+#include &lt;boost/integer.hpp&gt;
+#include &lt;boost/mpl/int.hpp&gt;
+#include &lt;iostream&gt;
+#include &lt;ostream&gt;
+
+//...
+
+template &lt; int Bits &gt;
+bool
+fit_exactly( boost::mpl::int_&lt;Bits&gt; const &amp;x,
+ typename boost::exact_integral&lt;Bits, signed&gt;::type *unused = 0 )
+{
+ return true;
+}
+
+template &lt; typename T &gt;
+bool
+fit_exactly( T const &amp;x )
+{
+ return false;
+}
 
 //...
 
 int main()
 {
- boost::int_t&lt;24&gt;::least my_var;
+ typedef boost::mpl::int_&lt;24&gt; twenty_four;
+
+ boost::int_t&lt;twenty_four::value&gt;::least my_var;
+
+ //...
+
+ std::cout &lt;&lt; &quot;my_var &quot; &lt;&lt; ( fit_exactly(twenty_four()) ? &quot;does&quot; :
+ &quot;does not&quot; ) &lt;&lt; &quot; fit its type exactly.&quot; &lt;&lt; std::endl;
+
     //...
 }
 </pre></blockquote>
 
 <h2><a name="demo">Demonstration Program</a></h2>
 
-<p>The program integer_test.cpp is a
+<p>The program integer_test.cpp is a
 simplistic demonstration of the results from instantiating various
 examples of the sized type class templates.</p>
 
@@ -198,11 +491,11 @@
 <a href="http://www.boost.org/people/kevlin_henney.htm"> Kevlin Henney</a> for sharing
 their designs for similar templates. <a
 href="http://www.boost.org/people/daryle_walker.html">Daryle Walker</a> designed the
-value-based sized templates.</p>
+exact and value-based sized templates, and the MPL-compatible templates.</p>
 
 <hr>
 
-<p>Revised May 20, 2001</p>
+<p>Revised July 16, 2008</p>
 
 <p>&copy; Copyright Beman Dawes 1999. Use, modification, and distribution are
 subject to the Boost Software License, Version 1.0. (See accompanying file <a

Modified: branches/proto/v4/libs/integer/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/integer/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/integer/test/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,15 @@
 
 test-suite integer
     : [ run cstdint_test.cpp ]
- [ run integer_test.cpp ]
+ [ run integer_test.cpp
+ /boost/test//boost_unit_test_framework ]
         [ run integer_traits_test.cpp
             /boost/test//boost_test_exec_monitor/<link>static ]
+ [ run integer_mask_test.cpp
+ /boost/test//boost_unit_test_framework ]
+ [ run static_log2_test.cpp
+ /boost/test//boost_test_exec_monitor/<link>static ]
+ [ run static_min_max_test.cpp
+ /boost/test//boost_test_exec_monitor/<link>static ]
+ [ compile issue_2134.cpp ]
     ;

Modified: branches/proto/v4/libs/integer/test/integer_mask_test.cpp
==============================================================================
--- branches/proto/v4/libs/integer/test/integer_mask_test.cpp (original)
+++ branches/proto/v4/libs/integer/test/integer_mask_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,104 +8,164 @@
 // See http://www.boost.org for most recent version including documentation.
 
 // Revision History
+// 29 Jul 2008 Added MPL-compatible variants of the integer-mask templates.
+// (Daryle Walker)
+// 27 Jul 2008 Changed tests to use the unit-test system; added
+// extended-integer support. (Daryle Walker)
 // 23 Sep 2001 Initial version (Daryle Walker)
 
-#define BOOST_INCLUDE_MAIN
-#include <boost/test/test_tools.hpp> // for main
+#define BOOST_TEST_MODULE "Integer mask tests"
+#include <boost/test/unit_test.hpp> // unit testing framework
 
-#include <boost/cstdlib.hpp> // for boost::exit_success
+#include <boost/cstdint.hpp> // for boost::uintmax_t
 #include <boost/integer/integer_mask.hpp> // for boost::high_bit_mask_t, etc.
+#include <boost/limits.hpp> // for std::numeric_limits
+#include <boost/mpl/assert.hpp> // for BOOST_MPL_ASSERT_RELATION,etc.
+#include <boost/mpl/bool.hpp> // for boost::mpl::bool_
+#include <boost/mpl/bitwise.hpp> // for boost::mpl::bitor_, shift_left
+#include <boost/mpl/equal_to.hpp> // for boost::mpl::equal_to
+#include <boost/mpl/int.hpp> // for boost::mpl::int_
+#include <boost/mpl/integral_c.hpp> // for boost::mpl::integral_c
+#include <boost/mpl/next_prior.hpp> // for boost::mpl::prior
+#include <boost/mpl/range_c.hpp> // for boost::mpl::range_c
+
+#include <cstddef> // for std::size_t
+#include <ios> // for std::hex
+#include <iostream> // for std::cout
+#include <ostream> // for std::endl
+
+
+// Control if events will be printed conventionally, or just logged.
+#ifndef CONTROL_SHOW_TYPES
+#define CONTROL_SHOW_TYPES 0
+#endif
+
+// Logging
+#if CONTROL_SHOW_TYPES
+#define PRIVATE_SHOW_MESSAGE( m ) std::cout << m << std::endl
+#else
+#define PRIVATE_SHOW_MESSAGE( m ) BOOST_TEST_MESSAGE( m )
+#endif
 
-#include <iostream> // for std::cout (std::endl indirectly)
 
+// Custom types/templates, helper functions, and objects
+namespace
+{
+
+// List the ranges of template parameters tests (ranges are half-open)
+int const max_offset = std::numeric_limits<boost::uintmax_t>::digits;
+
+typedef boost::mpl::range_c<int, 0, max_offset> high_bit_offsets;
+typedef boost::mpl::range_c<int, 0, max_offset + 1> low_bit_lengths;
+typedef boost::mpl::range_c<int, 1, max_offset + 1> special_low_bit_lengths;
+
+// List a range with out-of-service values
+typedef boost::mpl::range_c<int, -10, max_offset + 11> wild_bit_lengths;
+
+// Use SFINAE to check if a particular parameter is supported
+template < typename ValueT, template<ValueT> class Tmpl, ValueT Value >
+bool
+print_out_template( Tmpl<Value> const &, ValueT setting, char const
+ *template_name, typename Tmpl<Value>::type *unused = 0 )
+{
+ // Too bad the type-id expression couldn't use the compact form "*unused",
+ // but type-ids of dereferenced null pointers throw by order of C++ 2003,
+ // sect. 5.2.8, para. 2 (although the result is not conceptually needed).
+ PRIVATE_SHOW_MESSAGE( "There is an " << template_name << "<" << setting <<
+ "> specialization with type '" << typeid(typename
+ Tmpl<Value>::value_type).name() << "' and value '" << std::hex <<
+ Tmpl<Value>::value << "'." );
+ return true;
+}
+
+template < typename ValueT, typename T >
+bool
+print_out_template( T const &, ValueT setting, char const *template_name )
+{
+ PRIVATE_SHOW_MESSAGE( "There is no " << template_name << "<" << setting <<
+ "> specialization." );
+ return false;
+}
+
+} // unnamed namespace
 
-#define PRIVATE_HIGH_BIT_SLOW_TEST(v) BOOST_CHECK( ::boost::high_bit_mask_t< \
- (v) >::high_bit == (1ul << (v)) );
-#define PRIVATE_HIGH_BIT_FAST_TEST(v) BOOST_CHECK( ::boost::high_bit_mask_t< \
- (v) >::high_bit_fast == (1ul << (v)) );
-#define PRIVATE_HIGH_BIT_TEST(v) do { PRIVATE_HIGH_BIT_SLOW_TEST(v); \
- PRIVATE_HIGH_BIT_FAST_TEST(v); } while (false)
-
-#define PRIVATE_LOW_BITS_SLOW_TEST(v) BOOST_CHECK( ::boost::low_bits_mask_t< \
- (v) >::sig_bits == ((1ul << (v)) - 1) );
-#define PRIVATE_LOW_BITS_FAST_TEST(v) BOOST_CHECK( ::boost::low_bits_mask_t< \
- (v) >::sig_bits_fast == ((1ul << (v)) - 1) );
-#define PRIVATE_LOW_BITS_TEST(v) do { PRIVATE_LOW_BITS_SLOW_TEST(v); \
- PRIVATE_LOW_BITS_FAST_TEST(v); } while (false)
-
-
-int test_main( int, char*[] )
-{
- using std::cout;
- using std::endl;
-
- cout << "Doing high_bit_mask_t tests." << endl;
- PRIVATE_HIGH_BIT_TEST( 31 );
- PRIVATE_HIGH_BIT_TEST( 30 );
- PRIVATE_HIGH_BIT_TEST( 29 );
- PRIVATE_HIGH_BIT_TEST( 28 );
- PRIVATE_HIGH_BIT_TEST( 27 );
- PRIVATE_HIGH_BIT_TEST( 26 );
- PRIVATE_HIGH_BIT_TEST( 25 );
- PRIVATE_HIGH_BIT_TEST( 24 );
- PRIVATE_HIGH_BIT_TEST( 23 );
- PRIVATE_HIGH_BIT_TEST( 22 );
- PRIVATE_HIGH_BIT_TEST( 21 );
- PRIVATE_HIGH_BIT_TEST( 20 );
- PRIVATE_HIGH_BIT_TEST( 19 );
- PRIVATE_HIGH_BIT_TEST( 18 );
- PRIVATE_HIGH_BIT_TEST( 17 );
- PRIVATE_HIGH_BIT_TEST( 16 );
- PRIVATE_HIGH_BIT_TEST( 15 );
- PRIVATE_HIGH_BIT_TEST( 14 );
- PRIVATE_HIGH_BIT_TEST( 13 );
- PRIVATE_HIGH_BIT_TEST( 12 );
- PRIVATE_HIGH_BIT_TEST( 11 );
- PRIVATE_HIGH_BIT_TEST( 10 );
- PRIVATE_HIGH_BIT_TEST( 9 );
- PRIVATE_HIGH_BIT_TEST( 8 );
- PRIVATE_HIGH_BIT_TEST( 7 );
- PRIVATE_HIGH_BIT_TEST( 6 );
- PRIVATE_HIGH_BIT_TEST( 5 );
- PRIVATE_HIGH_BIT_TEST( 4 );
- PRIVATE_HIGH_BIT_TEST( 3 );
- PRIVATE_HIGH_BIT_TEST( 2 );
- PRIVATE_HIGH_BIT_TEST( 1 );
- PRIVATE_HIGH_BIT_TEST( 0 );
-
- cout << "Doing low_bits_mask_t tests." << endl;
- PRIVATE_LOW_BITS_TEST( 32 ); // Undefined behavior? Whoops!
- PRIVATE_LOW_BITS_TEST( 31 );
- PRIVATE_LOW_BITS_TEST( 30 );
- PRIVATE_LOW_BITS_TEST( 29 );
- PRIVATE_LOW_BITS_TEST( 28 );
- PRIVATE_LOW_BITS_TEST( 27 );
- PRIVATE_LOW_BITS_TEST( 26 );
- PRIVATE_LOW_BITS_TEST( 25 );
- PRIVATE_LOW_BITS_TEST( 24 );
- PRIVATE_LOW_BITS_TEST( 23 );
- PRIVATE_LOW_BITS_TEST( 22 );
- PRIVATE_LOW_BITS_TEST( 21 );
- PRIVATE_LOW_BITS_TEST( 20 );
- PRIVATE_LOW_BITS_TEST( 19 );
- PRIVATE_LOW_BITS_TEST( 18 );
- PRIVATE_LOW_BITS_TEST( 17 );
- PRIVATE_LOW_BITS_TEST( 16 );
- PRIVATE_LOW_BITS_TEST( 15 );
- PRIVATE_LOW_BITS_TEST( 14 );
- PRIVATE_LOW_BITS_TEST( 13 );
- PRIVATE_LOW_BITS_TEST( 12 );
- PRIVATE_LOW_BITS_TEST( 11 );
- PRIVATE_LOW_BITS_TEST( 10 );
- PRIVATE_LOW_BITS_TEST( 9 );
- PRIVATE_LOW_BITS_TEST( 8 );
- PRIVATE_LOW_BITS_TEST( 7 );
- PRIVATE_LOW_BITS_TEST( 6 );
- PRIVATE_LOW_BITS_TEST( 5 );
- PRIVATE_LOW_BITS_TEST( 4 );
- PRIVATE_LOW_BITS_TEST( 3 );
- PRIVATE_LOW_BITS_TEST( 2 );
- PRIVATE_LOW_BITS_TEST( 1 );
 
- return boost::exit_success;
+// Check the various integer-valued bit-masks
+BOOST_AUTO_TEST_SUITE( integer_mask_tests )
+
+// Check the bit-masks of one offset bit
+BOOST_AUTO_TEST_CASE_TEMPLATE( high_bit_mask_test, T, high_bit_offsets )
+{
+ typedef boost::mpl::integral_c<typename
+ boost::high_bit_mask_t<T::value>::least, 1u> one_type;
+ typedef boost::mpl::shift_left<one_type, T> result_type;
+
+ BOOST_MPL_ASSERT_RELATION( boost::high_bit_mask_t<T::value>::high_bit, ==,
+ result_type::value );
+ BOOST_MPL_ASSERT_RELATION( boost::high_bit_mask_t<T::value>::high_bit_fast,
+ ==, result_type::value );
 }
+
+// Check the bit-masks of a block of low-valued bits, non-zero block-lengths
+BOOST_AUTO_TEST_CASE_TEMPLATE( low_bits_mask_test, T, special_low_bit_lengths )
+{
+ // One can express (2^x - 1) in two ways
+ // 1. (1 << x) - 1
+ // 2. (1 << (x-1)) | ((1 << (x-1)) - 1)
+ // Since unsigneds have modulo arithmetic, [1] gives the right answer even
+ // when x is the number of bits in the register. However, that last case
+ // gives warnings about the sole bit flowing past the register. Applying
+ // distributive property backwards gives [2], which works without overflow.
+ typedef typename boost::mpl::prior<T>::type shift_type;
+ typedef boost::mpl::integral_c<typename
+ boost::low_bits_mask_t<T::value>::least, 1u> one_type;
+ typedef boost::mpl::shift_left<one_type, shift_type> high_bit_type;
+ typedef typename boost::mpl::prior<high_bit_type>::type low_bits_type;
+ typedef boost::mpl::bitor_<high_bit_type, low_bits_type> result_type;
+
+ BOOST_MPL_ASSERT_RELATION( boost::low_bits_mask_t<T::value>::sig_bits, ==,
+ result_type::value );
+ BOOST_MPL_ASSERT_RELATION( boost::low_bits_mask_t<T::value>::sig_bits_fast,
+ ==, result_type::value );
+}
+
+// Check the bit-masks of a block of low-valued bits, zero block-length
+BOOST_AUTO_TEST_CASE( special_low_bits_mask_test )
+{
+ // Just like "low_bits_mask_test" above, except that the shifts are negative
+ // when the bit-count is zero. That causes a lot of warnings and errors, so
+ // special-case that bit-count.
+ BOOST_MPL_ASSERT_RELATION( boost::low_bits_mask_t<0u>::sig_bits, ==, 0 );
+ BOOST_MPL_ASSERT_RELATION(boost::low_bits_mask_t<0u>::sig_bits_fast, ==, 0);
+}
+
+// Check the specialization type status of given bit-offsets/lengths
+BOOST_AUTO_TEST_CASE_TEMPLATE( confirm_bounds_test, T, wild_bit_lengths )
+{
+ typedef boost::integer_hi_mask<T::value> hi_type;
+ typedef boost::mpl::int_<hi_type::bit_offset> hi_offset_type;
+ typedef boost::mpl::bool_<hi_type::is_specialized> special_hi_type;
+
+ BOOST_MPL_ASSERT( (boost::mpl::equal_to< hi_offset_type, T >) );
+ BOOST_MPL_ASSERT( (boost::mpl::equal_to< special_hi_type,
+ boost::mpl::bool_<(T::value >= 0) && (T::value < max_offset)> >) );
+ BOOST_CHECK_EQUAL( print_out_template(hi_type(), hi_offset_type::value,
+ "integer_hi_mask"), special_hi_type::value );
+
+ typedef boost::integer_lo_mask<T::value> lo_type;
+ typedef boost::mpl::int_<lo_type::bit_count> lo_length_type;
+ typedef boost::mpl::bool_<lo_type::is_specialized> special_lo_type;
+
+ BOOST_MPL_ASSERT( (boost::mpl::equal_to< lo_length_type, T >) );
+ BOOST_MPL_ASSERT( (boost::mpl::equal_to< special_lo_type,
+ boost::mpl::bool_<(T::value >= 0) && (T::value <= max_offset)> >) );
+ BOOST_CHECK_EQUAL( print_out_template(lo_type(), lo_length_type::value,
+ "integer_lo_mask"), special_lo_type::value );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+// Verification of bugs and their fixes
+BOOST_AUTO_TEST_SUITE( bug_fix_tests )
+
+BOOST_AUTO_TEST_SUITE_END()

Modified: branches/proto/v4/libs/integer/test/integer_test.cpp
==============================================================================
--- branches/proto/v4/libs/integer/test/integer_test.cpp (original)
+++ branches/proto/v4/libs/integer/test/integer_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -4,24 +4,69 @@
 // Software License, Version 1.0. (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
+// 16 Jul 08 Added MPL-compatible variants of the minimum-size and value-
+// based integer templates. (Daryle Walker)
+// 15 Jul 08 Added exact-integer templates; added MPL-compatible variant of
+// processor-optimized integer template. (Daryle Walker)
+// 14 Jul 08 Improved testing of processor-optimized integer template; added
+// extended-integer support. (Daryle Walker)
+// 13 Jul 08 Modernized tests w/ MPL instead of giant macros (Daryle Walker)
+// 07 Jul 08 Changed tests to use the unit-test system (Daryle Walker)
 // 04 Oct 01 Added tests for new templates; rewrote code (Daryle Walker)
 // 10 Mar 01 Boost Test Library now used for tests (Beman Dawes)
 // 31 Aug 99 Initial version
 
-#include <boost/test/minimal.hpp> // for main, BOOST_CHECK
+#define BOOST_TEST_MODULE "Integer size-selection tests"
 
-#include <boost/config.hpp> // for BOOST_NO_USING_TEMPLATE
-#include <boost/cstdlib.hpp> // for boost::exit_success
-#include <boost/integer.hpp> // for boost::int_t, boost::uint_t
-
-#include <climits> // for ULONG_MAX, LONG_MAX, LONG_MIN
-#include <iostream> // for std::cout (std::endl indirectly)
-#include <typeinfo> // for std::type_info
+#include <boost/test/unit_test.hpp> // unit testing framework
 
+#include <boost/config.hpp> // for BOOST_NO_SFINAE
+#include <boost/cstdint.hpp> // for boost::uintmax_t, intmax_t
+#include <boost/integer.hpp> // for boost::int_t, boost::uint_t, etc.
+#include <boost/integer_traits.hpp> // for boost::integer_traits
+#include <boost/limits.hpp> // for std::numeric_limits
+
+#include <boost/detail/extended_integer.hpp> // BOOST_HAS_XINT, BOOST_UXINT_MAX
+
+#include <boost/mpl/arithmetic.hpp> // for boost::mpl::plus, divides
+#include <boost/mpl/assert.hpp> // for BOOST_MPL_ASSERT_RELATION, etc.
+#include <boost/mpl/back.hpp> // for boost::mpl::back
+#include <boost/mpl/copy.hpp> // for boost::mpl::copy
+#include <boost/mpl/equal.hpp> // for boost::mpl::equal
+#include <boost/mpl/front_inserter.hpp> // for boost::mpl::front_inserter
+#include <boost/mpl/int.hpp> // for boost::mpl::int_
+#include <boost/mpl/integral_c.hpp> // for boost::mpl::integral_c
+#include <boost/mpl/joint_view.hpp> // for boost::mpl::joint_view
+#include <boost/mpl/pop_back.hpp> // for boost::mpl::pop_back
+#include <boost/mpl/push_back.hpp> // for boost::mpl::push_back
+#include <boost/mpl/push_front.hpp> // for boost::mpl::push_front
+#include <boost/mpl/range_c.hpp> // for boost::mpl::range_c
+#include <boost/mpl/shift_right.hpp> // for boost::mpl::shift_right
+#include <boost/mpl/sort.hpp> // for boost::mpl::sort
+#include <boost/mpl/transform.hpp> // for boost::mpl::transform
+#include <boost/mpl/transform_view.hpp> // for boost::mpl::transform_view
+#include <boost/mpl/unpack_args.hpp> // for boost::mpl::unpack_args
+#include <boost/mpl/vector.hpp> // for boost::mpl::vector
+#include <boost/mpl/zip_view.hpp> // for boost::mpl::zip_view
+
+#include <boost/type_traits/is_same.hpp> // for boost::is_same
+#include <boost/type_traits/make_signed.hpp> // for boost::make_signed
+
+#include <algorithm> // for std::binary_search
+#include <climits> // for ULONG_MAX, LONG_MAX, LONG_MIN, etc.
+#include <cstddef> // for std::size_t
+#include <iostream> // for std::cout
+#include <ostream> // for std::endl
+#include <typeinfo> // for std::type_info
+
+
+// Control what the "fast" specialization of "short" is
+#ifndef CONTROL_FAST_SHORT
+#define CONTROL_FAST_SHORT long
+#endif
 
 // Control if the names of the types for each version
 // of the integer templates will be printed.
@@ -29,263 +74,612 @@
 #define CONTROL_SHOW_TYPES 0
 #endif
 
+// Control if every potential bit-count is used, or only a selection
+// For me, full counts increase compile time from 90 seconds to 20 minutes!
+#ifndef CONTROL_FULL_COUNTS
+#define CONTROL_FULL_COUNTS 1
+#endif
+
 
 // If specializations have not already been done, then we can confirm
-// the effects of the "fast" types by making a specialization.
+// the effects of the fast types by making a specialization. If there
+// is a specialization for "short," make sure that CONTROL_FAST_SHORT
+// is set to a type distinct from "short" and the default implementation.
 namespace boost
 {
     template < >
- struct int_fast_t< short >
+ struct fast_integral< short >
     {
- typedef long fast;
+ typedef CONTROL_FAST_SHORT type;
     };
 }
 
 
-// Show the types of an integer template version
+// Logging
 #if CONTROL_SHOW_TYPES
-#define SHOW_TYPE(Template, Number, Type) ::std::cout << "Type \"" \
- #Template "<" #Number ">::" #Type "\" is \"" << typeid(Template < \
- Number > :: Type).name() << ".\"\n"
+#define PRIVATE_SHOW_MESSAGE( m ) std::cout << m << std::endl
+#else
+#define PRIVATE_SHOW_MESSAGE( m ) BOOST_TEST_MESSAGE( m )
+#endif
+
+
+// Custom types/templates, helper functions, and objects
+namespace
+{
+
+// List the built-in integral types, excluding the ones that are strong-typedefs
+// of a lower type.
+typedef boost::mpl::vector<
+ unsigned char
+#if USHRT_MAX > UCHAR_MAX
+ , unsigned short
+#endif
+#if UINT_MAX > USHRT_MAX
+ , unsigned int
+#endif
+#if ULONG_MAX > UINT_MAX
+ , unsigned long
+#endif
+#if BOOST_HAS_XINT && (BOOST_UXINT_MAX > ULONG_MAX)
+ , boost::detail::uxint_t
+#endif
+> distinct_unsigned_types;
+
+typedef boost::mpl::transform<
+ distinct_unsigned_types,
+ boost::make_signed< boost::mpl::_1 >
+>::type distinct_signed_types;
+
+// List the digit counts for each integral type
+template < typename T >
+struct digits_of
+ : boost::mpl::int_< std::numeric_limits<T>::digits >
+{
+};
+
+typedef boost::mpl::transform<
+ distinct_unsigned_types,
+ digits_of< boost::mpl::_1 >
+>::type distinct_integral_bit_counts;
+
+// Make list of bit counts between each offical point, plus CHAR_BIT/2
+typedef boost::mpl::transform_view<
+ boost::mpl::zip_view<
+ boost::mpl::vector<
+ boost::mpl::push_front<
+ boost::mpl::pop_back< distinct_integral_bit_counts >::type,
+ boost::mpl::integral_c< int, 0 >
+ >::type,
+ distinct_integral_bit_counts
+ >
+ >,
+ boost::mpl::unpack_args<
+ boost::mpl::divides<
+ boost::mpl::plus< boost::mpl::_1, boost::mpl::_2 >,
+ boost::mpl::integral_c< int, 2 >
+ >
+ >
+> median_bit_counts;
+
+// Maximum number of bits allowed
+typedef std::numeric_limits<boost:: intmax_t> intmax_limits;
+typedef std::numeric_limits<boost::uintmax_t> uintmax_limits;
+
+int const intmax_bits = intmax_limits::digits + 1;
+int const uintmax_bits = uintmax_limits::digits;
+
+// Make master lists including an outlier beyond all valid bit counts
+#if CONTROL_FULL_COUNTS
+typedef boost::mpl::range_c<int, 0, uintmax_bits + 2> bits_list;
+#else
+typedef boost::mpl::sort<
+ boost::mpl::copy<
+ boost::mpl::joint_view<
+ distinct_integral_bit_counts,
+ median_bit_counts
+ >,
+ boost::mpl::front_inserter<
+ boost::mpl::vector<
+ boost::mpl::integral_c<int, uintmax_bits + 1>
+ >
+ >
+ >::type
+>::type bits_list;
+#endif
+
+// Remove the outlier when all bits counts must be valid
+#if CONTROL_FULL_COUNTS
+typedef boost::mpl::range_c<int, 0, uintmax_bits + 1> valid_bits_list;
+#else
+typedef boost::mpl::pop_back<bits_list>::type valid_bits_list;
+#endif
+
+// Replace the minimum bit count with one more, so right-shifting by a stored
+// value doesn't give an invalid result
+#if CONTROL_FULL_COUNTS
+typedef boost::mpl::range_c<int, 1, uintmax_bits + 1>
+ valid_to_decrease_bits_list;
 #else
-#define SHOW_TYPE(Template, Number, Type)
+typedef valid_bits_list valid_to_decrease_bits_list;
 #endif
 
-#define SHOW_TYPES(Template, Type) SHOW_TYPE(Template, 32, Type); \
- SHOW_TYPE(Template, 31, Type); SHOW_TYPE(Template, 30, Type); \
- SHOW_TYPE(Template, 29, Type); SHOW_TYPE(Template, 28, Type); \
- SHOW_TYPE(Template, 27, Type); SHOW_TYPE(Template, 26, Type); \
- SHOW_TYPE(Template, 25, Type); SHOW_TYPE(Template, 24, Type); \
- SHOW_TYPE(Template, 23, Type); SHOW_TYPE(Template, 22, Type); \
- SHOW_TYPE(Template, 21, Type); SHOW_TYPE(Template, 20, Type); \
- SHOW_TYPE(Template, 19, Type); SHOW_TYPE(Template, 18, Type); \
- SHOW_TYPE(Template, 17, Type); SHOW_TYPE(Template, 16, Type); \
- SHOW_TYPE(Template, 15, Type); SHOW_TYPE(Template, 14, Type); \
- SHOW_TYPE(Template, 13, Type); SHOW_TYPE(Template, 12, Type); \
- SHOW_TYPE(Template, 11, Type); SHOW_TYPE(Template, 10, Type); \
- SHOW_TYPE(Template, 9, Type); SHOW_TYPE(Template, 8, Type); \
- SHOW_TYPE(Template, 7, Type); SHOW_TYPE(Template, 6, Type); \
- SHOW_TYPE(Template, 5, Type); SHOW_TYPE(Template, 4, Type); \
- SHOW_TYPE(Template, 3, Type); SHOW_TYPE(Template, 2, Type); \
- SHOW_TYPE(Template, 1, Type); SHOW_TYPE(Template, 0, Type)
-
-#define SHOW_SHIFTED_TYPE(Template, Number, Type) SHOW_TYPE(Template, (1UL << Number), Type)
-
-#define SHOW_SHIFTED_TYPES(Template, Type) SHOW_SHIFTED_TYPE(Template, 30, Type); \
- SHOW_SHIFTED_TYPE(Template, 29, Type); SHOW_SHIFTED_TYPE(Template, 28, Type); \
- SHOW_SHIFTED_TYPE(Template, 27, Type); SHOW_SHIFTED_TYPE(Template, 26, Type); \
- SHOW_SHIFTED_TYPE(Template, 25, Type); SHOW_SHIFTED_TYPE(Template, 24, Type); \
- SHOW_SHIFTED_TYPE(Template, 23, Type); SHOW_SHIFTED_TYPE(Template, 22, Type); \
- SHOW_SHIFTED_TYPE(Template, 21, Type); SHOW_SHIFTED_TYPE(Template, 20, Type); \
- SHOW_SHIFTED_TYPE(Template, 19, Type); SHOW_SHIFTED_TYPE(Template, 18, Type); \
- SHOW_SHIFTED_TYPE(Template, 17, Type); SHOW_SHIFTED_TYPE(Template, 16, Type); \
- SHOW_SHIFTED_TYPE(Template, 15, Type); SHOW_SHIFTED_TYPE(Template, 14, Type); \
- SHOW_SHIFTED_TYPE(Template, 13, Type); SHOW_SHIFTED_TYPE(Template, 12, Type); \
- SHOW_SHIFTED_TYPE(Template, 11, Type); SHOW_SHIFTED_TYPE(Template, 10, Type); \
- SHOW_SHIFTED_TYPE(Template, 9, Type); SHOW_SHIFTED_TYPE(Template, 8, Type); \
- SHOW_SHIFTED_TYPE(Template, 7, Type); SHOW_SHIFTED_TYPE(Template, 6, Type); \
- SHOW_SHIFTED_TYPE(Template, 5, Type); SHOW_SHIFTED_TYPE(Template, 4, Type); \
- SHOW_SHIFTED_TYPE(Template, 3, Type); SHOW_SHIFTED_TYPE(Template, 2, Type); \
- SHOW_SHIFTED_TYPE(Template, 1, Type); SHOW_SHIFTED_TYPE(Template, 0, Type)
-
-#define SHOW_POS_SHIFTED_TYPE(Template, Number, Type) SHOW_TYPE(Template, +(1L << Number), Type)
-
-#define SHOW_POS_SHIFTED_TYPES(Template, Type) SHOW_POS_SHIFTED_TYPE(Template, 30, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 29, Type); SHOW_POS_SHIFTED_TYPE(Template, 28, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 27, Type); SHOW_POS_SHIFTED_TYPE(Template, 26, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 25, Type); SHOW_POS_SHIFTED_TYPE(Template, 24, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 23, Type); SHOW_POS_SHIFTED_TYPE(Template, 22, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 21, Type); SHOW_POS_SHIFTED_TYPE(Template, 20, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 19, Type); SHOW_POS_SHIFTED_TYPE(Template, 18, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 17, Type); SHOW_POS_SHIFTED_TYPE(Template, 16, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 15, Type); SHOW_POS_SHIFTED_TYPE(Template, 14, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 13, Type); SHOW_POS_SHIFTED_TYPE(Template, 12, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 11, Type); SHOW_POS_SHIFTED_TYPE(Template, 10, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 9, Type); SHOW_POS_SHIFTED_TYPE(Template, 8, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 7, Type); SHOW_POS_SHIFTED_TYPE(Template, 6, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 5, Type); SHOW_POS_SHIFTED_TYPE(Template, 4, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 3, Type); SHOW_POS_SHIFTED_TYPE(Template, 2, Type); \
- SHOW_POS_SHIFTED_TYPE(Template, 1, Type); SHOW_POS_SHIFTED_TYPE(Template, 0, Type)
-
-#define SHOW_NEG_SHIFTED_TYPE(Template, Number, Type) SHOW_TYPE(Template, -(1L << Number), Type)
-
-#define SHOW_NEG_SHIFTED_TYPES(Template, Type) SHOW_NEG_SHIFTED_TYPE(Template, 30, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 29, Type); SHOW_NEG_SHIFTED_TYPE(Template, 28, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 27, Type); SHOW_NEG_SHIFTED_TYPE(Template, 26, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 25, Type); SHOW_NEG_SHIFTED_TYPE(Template, 24, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 23, Type); SHOW_NEG_SHIFTED_TYPE(Template, 22, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 21, Type); SHOW_NEG_SHIFTED_TYPE(Template, 20, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 19, Type); SHOW_NEG_SHIFTED_TYPE(Template, 18, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 17, Type); SHOW_NEG_SHIFTED_TYPE(Template, 16, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 15, Type); SHOW_NEG_SHIFTED_TYPE(Template, 14, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 13, Type); SHOW_NEG_SHIFTED_TYPE(Template, 12, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 11, Type); SHOW_NEG_SHIFTED_TYPE(Template, 10, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 9, Type); SHOW_NEG_SHIFTED_TYPE(Template, 8, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 7, Type); SHOW_NEG_SHIFTED_TYPE(Template, 6, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 5, Type); SHOW_NEG_SHIFTED_TYPE(Template, 4, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 3, Type); SHOW_NEG_SHIFTED_TYPE(Template, 2, Type); \
- SHOW_NEG_SHIFTED_TYPE(Template, 1, Type); SHOW_NEG_SHIFTED_TYPE(Template, 0, Type)
-
-
-// Test if a constant can fit within a certain type
-#define PRIVATE_FIT_TEST(Template, Number, Type, Value) BOOST_CHECK( Template < Number > :: Type ( Value ) == Value )
-
-#if ULONG_MAX > 0xFFFFFFFFL
-#define PRIVATE_FIT_TESTS(Template, Type, ValType, InitVal) do { ValType v = InitVal ; \
- PRIVATE_FIT_TEST(Template, 64, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 63, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 62, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 61, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 60, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 59, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 58, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 57, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 56, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 55, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 54, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 53, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 52, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 51, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 50, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 49, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 48, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 47, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 46, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 45, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 44, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 43, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 42, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 41, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 40, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 39, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 38, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 37, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 36, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 35, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 34, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 33, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 32, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 31, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 30, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 29, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 28, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 27, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 26, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 25, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 24, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 23, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 22, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 21, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 20, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 19, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 18, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 17, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 16, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 15, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 14, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 13, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 12, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 11, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 10, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 9, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 8, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 7, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 6, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 5, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 4, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 3, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 2, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 1, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 0, Type, v); } while ( false )
+// Replace the maximum bit count with one less, so left-shifting by a stored
+// value doesn't give an invalid result
+#if CONTROL_FULL_COUNTS
+typedef boost::mpl::range_c<int, 0, uintmax_bits> valid_to_increase_ubits_list;
 #else
-#define PRIVATE_FIT_TESTS(Template, Type, ValType, InitVal) do { ValType v = InitVal ; \
- PRIVATE_FIT_TEST(Template, 32, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 31, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 30, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 29, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 28, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 27, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 26, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 25, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 24, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 23, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 22, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 21, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 20, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 19, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 18, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 17, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 16, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 15, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 14, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 13, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 12, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 11, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 10, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 9, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 8, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 7, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 6, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 5, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 4, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 3, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 2, Type, v); v >>= 1; \
- PRIVATE_FIT_TEST(Template, 1, Type, v); v >>= 1; PRIVATE_FIT_TEST(Template, 0, Type, v); } while ( false )
-#endif
-
-#define PRIVATE_SHIFTED_FIT_TEST(Template, Number, Type, Value) BOOST_CHECK( Template < (ULONG_MAX >> Number) > :: Type ( Value ) == Value )
-
-#define PRIVATE_SHIFTED_FIT_TESTS(Template, Type, ValType, InitVal) do { ValType v = InitVal ; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 0, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 1, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 2, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 3, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 4, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 5, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 6, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 7, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 8, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 9, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 10, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 11, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 12, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 13, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 14, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 15, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 16, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 17, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 18, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 19, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 20, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 21, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 22, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 23, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 24, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 25, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 26, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 27, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 28, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 29, Type, v); v >>= 1; \
- PRIVATE_SHIFTED_FIT_TEST(Template, 30, Type, v); v >>= 1; PRIVATE_SHIFTED_FIT_TEST(Template, 31, Type, v); } while ( false )
-
-#define PRIVATE_POS_SHIFTED_FIT_TEST(Template, Number, Type, Value) BOOST_CHECK( Template < (LONG_MAX >> Number) > :: Type ( Value ) == Value )
-
-#define PRIVATE_POS_FIT_TESTS(Template, Type, ValType, InitVal) do { ValType v = InitVal ; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 0, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 1, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 2, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 3, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 4, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 5, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 6, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 7, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 8, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 9, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 10, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 11, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 12, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 13, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 14, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 15, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 16, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 17, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 18, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 19, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 20, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 21, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 22, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 23, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 24, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 25, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 26, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 27, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 28, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 29, Type, v); v >>= 1; \
- PRIVATE_POS_SHIFTED_FIT_TEST(Template, 30, Type, v); v >>= 1; PRIVATE_POS_SHIFTED_FIT_TEST(Template, 31, Type, v); } while ( false )
-
-#define PRIVATE_NEG_SHIFTED_FIT_TEST(Template, Number, Type, Value) BOOST_CHECK( Template < (LONG_MIN >> Number) > :: Type ( Value ) == Value )
-
-#define PRIVATE_NEG_FIT_TESTS(Template, Type, ValType, InitVal) do { ValType v = InitVal ; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 0, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 1, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 2, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 3, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 4, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 5, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 6, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 7, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 8, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 9, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 10, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 11, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 12, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 13, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 14, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 15, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 16, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 17, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 18, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 19, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 20, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 21, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 22, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 23, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 24, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 25, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 26, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 27, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 28, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 29, Type, v); v >>= 1; \
- PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 30, Type, v); v >>= 1; PRIVATE_NEG_SHIFTED_FIT_TEST(Template, 31, Type, v); } while ( false )
-
-
-// Test program
-int
-test_main
-(
- int,
- char*[]
-)
-{
-#ifndef BOOST_NO_USING_TEMPLATE
- using boost::int_t;
- using boost::uint_t;
- using boost::int_max_value_t;
- using boost::int_min_value_t;
- using boost::uint_value_t;
+typedef boost::mpl::push_back<
+ boost::mpl::pop_back< valid_bits_list >::type,
+ boost::mpl::integral_c< int, uintmax_bits - 1 >
+>::type valid_to_increase_ubits_list;
+#endif
+
+// Do it again for signed types since they have one-less bit to use for the
+// mantissa (don't want to shift into the sign bit)
+#if CONTROL_FULL_COUNTS
+typedef boost::mpl::range_c<int, 0, intmax_bits - 2>
+ valid_to_increase_sbits_list;
 #else
- using namespace boost;
+typedef boost::mpl::push_back<
+ boost::mpl::pop_back< valid_bits_list >::type,
+ boost::mpl::integral_c< int, intmax_bits - 3 >
+>::type valid_to_increase_sbits_list;
+#endif
+
+// List the digit counts for each integral type, this time as an object, an
+// array working as a sorted list
+int const integral_bit_lengths[] = {
+ std::numeric_limits< unsigned char >::digits
+#if USHRT_MAX > UCHAR_MAX
+ , std::numeric_limits< unsigned short >::digits
+#endif
+#if UINT_MAX > USHRT_MAX
+ , std::numeric_limits< unsigned int >::digits
+#endif
+#if ULONG_MAX > UINT_MAX
+ , std::numeric_limits< unsigned long >::digits
 #endif
+#if BOOST_HAS_XINT && (BOOST_UXINT_MAX > ULONG_MAX)
+ , std::numeric_limits< boost::detail::uxint_t >::digits
+#endif
+};
+
+std::size_t const integral_type_count = sizeof(integral_bit_lengths) /
+ sizeof(integral_bit_lengths[0]);
+
+// "Template-typedefs" to reduce two-argument templates to single-argument.
+// This way, all the MPL-compatible templates have the same form, for below.
+template < int Bits >
+struct signed_sized_integral : boost::sized_integral<Bits, signed> {};
+
+template < int Bits >
+struct unsigned_sized_integral : boost::sized_integral<Bits, unsigned> {};
+
+template < int Bits >
+struct signed_exact_integral : boost::exact_integral<Bits, signed> {};
+
+template < int Bits >
+struct unsigned_exact_integral : boost::exact_integral<Bits, unsigned> {};
+
+// Use SFINAE to check if a particular parameter is supported
+#ifndef BOOST_NO_SFINAE
+template < typename ValueT, template<ValueT> class Tmpl, ValueT Value >
+bool
+print_out_template( Tmpl<Value> const &, ValueT setting, char const
+ *template_pre_name, char const *template_post_name, typename Tmpl<Value>::type
+ *unused = 0 )
+{
+ // Too bad the type-id expression couldn't use the compact form "*unused",
+ // but type-ids of dereferenced null pointers throw by order of C++ 2003,
+ // sect. 5.2.8, para. 2 (although the result is not conceptually needed).
+ PRIVATE_SHOW_MESSAGE( "This is " << template_pre_name << setting
+ << template_post_name << " specialization, with type '" << typeid(typename
+ Tmpl<Value>::type).name() << "'." );
+ return true;
+}
+
+template < typename ValueT, typename T >
+bool
+print_out_template( T const &, ValueT setting, char const *template_pre_name,
+ char const *template_post_name )
+{
+ PRIVATE_SHOW_MESSAGE( "Looking for " << template_pre_name << setting
+ << template_post_name << " specialization? It doesn't exist." );
+ return false;
+}
+#else
+#error "These tests cannot work without Substitution-Failure-Is-Not-An-Error"
+#endif
+
+// Get the extreme values for each integral type
+template < typename T >
+struct minimum_of
+ : boost::mpl::integral_c< T, boost::integer_traits<T>::const_min >
+{
+};
+
+template < typename T >
+struct maximum_of
+ : boost::mpl::integral_c< T, boost::integer_traits<T>::const_max >
+{
+};
+
+} // unnamed namespace
+
+
+// Check the processor-optimzed type system
+BOOST_AUTO_TEST_SUITE( optimized_type_tests )
 
- SHOW_TYPES( int_t, least );
- SHOW_TYPES( int_t, fast );
- SHOW_TYPES( uint_t, least );
- SHOW_TYPES( uint_t, fast );
- SHOW_POS_SHIFTED_TYPES( int_max_value_t, least );
- SHOW_POS_SHIFTED_TYPES( int_max_value_t, fast );
- SHOW_NEG_SHIFTED_TYPES( int_min_value_t, least );
- SHOW_NEG_SHIFTED_TYPES( int_min_value_t, fast );
- SHOW_SHIFTED_TYPES( uint_value_t, least );
- SHOW_SHIFTED_TYPES( uint_value_t, fast );
-
- PRIVATE_FIT_TESTS( int_t, least, long, LONG_MAX );
- PRIVATE_FIT_TESTS( int_t, fast, long, LONG_MAX );
- PRIVATE_FIT_TESTS( uint_t, least, unsigned long, ULONG_MAX );
- PRIVATE_FIT_TESTS( uint_t, fast, unsigned long, ULONG_MAX );
- PRIVATE_POS_FIT_TESTS( int_max_value_t, least, long, LONG_MAX );
- PRIVATE_POS_FIT_TESTS( int_max_value_t, fast, long, LONG_MAX );
- PRIVATE_NEG_FIT_TESTS( int_min_value_t, least, long, LONG_MIN );
- PRIVATE_NEG_FIT_TESTS( int_min_value_t, fast, long, LONG_MIN );
- PRIVATE_SHIFTED_FIT_TESTS( uint_value_t, least, unsigned long, ULONG_MAX );
- PRIVATE_SHIFTED_FIT_TESTS( uint_value_t, fast, unsigned long, ULONG_MAX );
-
- return boost::exit_success;
+// Check the optimzed type override of a given type
+BOOST_AUTO_TEST_CASE( fast_type_test )
+{
+ typedef short least_type;
+ typedef boost::int_fast_t<least_type>::fast fast_type;
+ typedef std::numeric_limits<least_type> least_limits;
+ typedef std::numeric_limits<fast_type> fast_limits;
+
+ typedef boost::fast_integral<least_type>::type real_fast_type;
+
+ BOOST_MPL_ASSERT_RELATION( (boost::is_same<least_type, fast_type>::value),
+ ==, false );
+ BOOST_MPL_ASSERT_RELATION( (boost::is_same<fast_type,
+ real_fast_type>::value), ==, true );
+ BOOST_MPL_ASSERT_RELATION( fast_limits::is_specialized, ==, true );
+ BOOST_MPL_ASSERT_RELATION( fast_limits::is_signed &&
+ fast_limits::is_bounded, ==, true );
+ BOOST_MPL_ASSERT_RELATION( fast_limits::radix, ==, 2 );
+ BOOST_MPL_ASSERT_RELATION( fast_limits::digits, >=, least_limits::digits );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+// Check if given types can support given size parameters
+BOOST_AUTO_TEST_SUITE( show_type_tests )
+
+// Check the specialization type status of given bit lengths, minimum
+BOOST_AUTO_TEST_CASE_TEMPLATE( show_types_for_lengths_test, T, bits_list )
+{
+ BOOST_CHECK_EQUAL( print_out_template(signed_sized_integral<T::value>(),
+ T::value, "a sized_integral<", ", signed>"), T::value && (T::value <=
+ intmax_bits) );
+ BOOST_CHECK_EQUAL( print_out_template(unsigned_sized_integral<T::value>(),
+ T::value, "a sized_integral<", ", unsigned>"), T::value <= uintmax_bits );
+}
+
+// Check the classic specialization type status of given bit lengths, minimum,
+// unsigned
+BOOST_AUTO_TEST_CASE_TEMPLATE( show_types_for_classic_lengths_unsigned_test, T,
+ valid_bits_list )
+{
+ // This test is supposed to replace the following printouts given in
+ // puesdo-code by:
+ // Routine: Template, Type
+ // for N := 32 downto 0
+ // cout << "Type '" << Template << "<" N << ">::" << Type << "' is '"
+ // << typeid(Template<N>::Type).name << ".'\n"
+ // end for
+ // end Routine
+ // with Template = {int_t, uint_t}; Type = {least, fast}
+ // But now we'll use template meta-programming instead of macros. The limit
+ // of type-lists is usually less than 32 (not to mention 64) elements, so we
+ // have to take selected values. The only interesting part is if the bit
+ // count is too large, and we can't check that yet.
+ BOOST_MPL_ASSERT_RELATION( std::numeric_limits<typename
+ boost::uint_t<T::value>::least>::digits, >=, T::value );
+ BOOST_MPL_ASSERT_RELATION( std::numeric_limits<typename
+ boost::uint_t<T::value>::fast>::digits, >=, T::value );
+}
+
+// Check the classic specialization type status of given bit lengths, minimum,
+// signed
+BOOST_AUTO_TEST_CASE_TEMPLATE( show_types_for_classic_lengths_signed_test, T,
+ valid_to_decrease_bits_list )
+{
+ BOOST_MPL_ASSERT_RELATION( std::numeric_limits<typename
+ boost::int_t<T::value>::least>::digits, >=, T::value - 1 );
+ BOOST_MPL_ASSERT_RELATION( std::numeric_limits<typename
+ boost::int_t<T::value>::fast>::digits, >=, T::value - 1 );
+}
+
+// Check size comparisons of given value support, unsigned
+BOOST_AUTO_TEST_CASE_TEMPLATE( show_types_for_shifted_unsigned_values_test, T,
+ valid_to_increase_ubits_list )
+{
+ // This test is supposed to replace the following printouts given in
+ // puesdo-code by:
+ // Routine: Type
+ // for N := 30 downto 0
+ // cout << "Type '" << uint_value_t << "<" (1ul << N) << ">::" << Type
+ // << "' is '"<< typeid(uint_value_t<(1ul << N)>::Type).name << ".'\n"
+ // end for
+ // end Routine
+ // with Type = {least, fast}
+ // But now we'll use template meta-programming instead of macros. The limit
+ // of type-lists is usually less than 32 (not to mention 64) elements, so we
+ // have to take selected values. The interesting parts are where N is the
+ // length of a integral type, so 1 << N would have to fit in the next larger
+ // type. (This is why N can't be more than bitlength(uintmax_t) - 1.)
+ boost::uintmax_t const one = 1u;
+
+ BOOST_MPL_ASSERT( (boost::mpl::equal< boost::maximum_unsigned_integral<(one
+ << T::value)>, unsigned_sized_integral<T::value + 1> >) );
+}
+
+// Check size comparisons of given value support, signed
+BOOST_AUTO_TEST_CASE_TEMPLATE( show_types_for_shifted_signed_values_test, T,
+ valid_to_increase_sbits_list )
+{
+ // This test is supposed to replace the following printouts given in
+ // puesdo-code by:
+ // Routine: Type
+ // for N := 30 downto 0
+ // cout << "Type '" << int_max_value_t << "<" +(1ul << N) << ">::" <<
+ // Type << "' is '" << typeid(int_max_value_t<+(1ul << N)>::Type).name
+ // << ".'\n"
+ // cout << "Type '" << int_min_value_t << "<" -(1ul << N) << ">::" <<
+ // Type << "' is '" << typeid(int_min_value_t<-(1ul << N)>::Type).name
+ // << ".'\n"
+ // end for
+ // end Routine
+ // with Type = {least, fast}
+ // But now we'll use template meta-programming instead of macros. The limit
+ // of type-lists is usually less than 32 (not to mention 64) elements, so we
+ // have to take selected values. The interesting parts are where N is the
+ // length of a integral type, so 1 << N would have to fit in the next larger
+ // type. (This is why N can't be more than bitlength(intmax_t) - 1. Note
+ // that bitlength(intmax_t) + 1 == bitlength(uintmax_t).)
+ static boost::intmax_t const one = 1;
+
+ BOOST_MPL_ASSERT( (boost::mpl::equal< boost::maximum_signed_integral<+(one
+ << T::value)>, signed_sized_integral<T::value + 1> >) );
+ BOOST_MPL_ASSERT( (boost::mpl::equal< boost::minimum_signed_integral<-(one
+ << T::value)>, signed_sized_integral<T::value + 1> >) );
+}
+
+// Check the specialization type status of given bit lengths, exact only
+BOOST_AUTO_TEST_CASE_TEMPLATE( show_types_for_exact_lengths_test, T, bits_list )
+{
+ bool const is_exact_length = std::binary_search( integral_bit_lengths,
+ integral_bit_lengths + integral_type_count, T::value );
+
+ BOOST_CHECK_EQUAL( print_out_template(signed_exact_integral<T::value>(),
+ T::value, "an exact_integral<", ", signed>"), is_exact_length );
+ BOOST_CHECK_EQUAL( print_out_template(unsigned_exact_integral<T::value>(),
+ T::value, "an exact_integral<", ", unsigned>"), is_exact_length );
 }
+
+// Check the classic specialization type status of given bit lengths, exact only
+BOOST_AUTO_TEST_CASE_TEMPLATE( show_types_for_classic_exact_lengths_test, T,
+ distinct_integral_bit_counts )
+{
+ BOOST_MPL_ASSERT_RELATION( std::numeric_limits<typename
+ boost::int_exact_t<T::value>::exact>::digits, ==, T::value - 1 );
+ BOOST_MPL_ASSERT_RELATION( std::numeric_limits<typename
+ boost::uint_exact_t<T::value>::exact>::digits, ==, T::value );
+}
+
+// Check if MPL-compatible templates give bad returns for out-of-range values
+BOOST_AUTO_TEST_CASE( show_not_type_for_parameter_test )
+{
+ typedef signed_sized_integral< 3> ssz3_type;
+ typedef signed_sized_integral< 0> ssz0_type;
+ typedef signed_sized_integral<-3> ssz3n_type;
+
+ BOOST_CHECK( print_out_template(ssz3_type(), ssz3_type::bit_count,
+ "a sized_integral<", ", signed>") );
+ BOOST_CHECK( !print_out_template(ssz0_type(), ssz0_type::bit_count,
+ "a sized_integral<", ", signed>") );
+ BOOST_CHECK( !print_out_template(ssz3n_type(), ssz3n_type::bit_count,
+ "a sized_integral<", ", signed>") );
+
+ typedef unsigned_sized_integral< 3> usz3_type;
+ typedef unsigned_sized_integral< 0> usz0_type;
+ typedef unsigned_sized_integral<-3> usz3n_type;
+
+ BOOST_CHECK( print_out_template(usz3_type(), usz3_type::bit_count,
+ "a sized_integral<", ", unsigned>") );
+ BOOST_CHECK( print_out_template(usz0_type(), usz0_type::bit_count,
+ "a sized_integral<", ", unsigned>") );
+ BOOST_CHECK( !print_out_template(usz3n_type(), usz3n_type::bit_count,
+ "a sized_integral<", ", unsigned>") );
+
+ typedef signed_exact_integral< CHAR_BIT > se8_type;
+ typedef signed_exact_integral< 3> se3_type;
+ typedef signed_exact_integral< 0> se0_type;
+ typedef signed_exact_integral<-3> se3n_type;
+ typedef signed_exact_integral< - CHAR_BIT > se8n_type;
+
+ BOOST_CHECK( print_out_template(se8_type(), se8_type::bit_count,
+ "an exact_integral<", ", signed>") );
+ BOOST_CHECK( !print_out_template(se3_type(), se3_type::bit_count,
+ "an exact_integral<", ", signed>") );
+ BOOST_CHECK( !print_out_template(se0_type(), se0_type::bit_count,
+ "an exact_integral<", ", signed>") );
+ BOOST_CHECK( !print_out_template(se3n_type(), se3n_type::bit_count,
+ "an exact_integral<", ", signed>") );
+ BOOST_CHECK( !print_out_template(se8n_type(), se8n_type::bit_count,
+ "an exact_integral<", ", signed>") );
+
+ typedef unsigned_exact_integral< CHAR_BIT > ue8_type;
+ typedef unsigned_exact_integral< 3> ue3_type;
+ typedef unsigned_exact_integral< 0> ue0_type;
+ typedef unsigned_exact_integral<-3> ue3n_type;
+ typedef unsigned_exact_integral< - CHAR_BIT > ue8n_type;
+
+ BOOST_CHECK( print_out_template(ue8_type(), ue8_type::bit_count,
+ "an exact_integral<", ", unsigned>") );
+ BOOST_CHECK( !print_out_template(ue3_type(), ue3_type::bit_count,
+ "an exact_integral<", ", unsigned>") );
+ BOOST_CHECK( !print_out_template(ue0_type(), ue0_type::bit_count,
+ "an exact_integral<", ", unsigned>") );
+ BOOST_CHECK( !print_out_template(ue3n_type(), ue3n_type::bit_count,
+ "an exact_integral<", ", unsigned>") );
+ BOOST_CHECK( !print_out_template(ue8n_type(), ue8n_type::bit_count,
+ "an exact_integral<", ", unsigned>") );
+
+ typedef boost::maximum_signed_integral< 15> max15_type;
+ typedef boost::maximum_signed_integral< 0> max0_type;
+ typedef boost::maximum_signed_integral<-15> max15n_type;
+
+ BOOST_CHECK( print_out_template(max15_type(), max15_type::bound,
+ "a maximum_signed_integral<", ">") );
+ BOOST_CHECK( !print_out_template(max0_type(), max0_type::bound,
+ "a maximum_signed_integral<", ">") );
+ BOOST_CHECK( !print_out_template(max15n_type(), max15n_type::bound,
+ "a maximum_signed_integral<", ">") );
+
+ typedef boost::minimum_signed_integral< 15> min15_type;
+ typedef boost::minimum_signed_integral< 0> min0_type;
+ typedef boost::minimum_signed_integral<-15> min15n_type;
+
+ BOOST_CHECK( !print_out_template(min15_type(), min15_type::bound,
+ "a minimum_signed_integral<", ">") );
+ BOOST_CHECK( !print_out_template(min0_type(), min0_type::bound,
+ "a minimum_signed_integral<", ">") );
+ BOOST_CHECK( print_out_template(min15n_type(), min15n_type::bound,
+ "a minimum_signed_integral<", ">") );
+
+ typedef boost::maximum_unsigned_integral<15> umax15_type;
+ typedef boost::maximum_unsigned_integral< 0> umax0_type;
+
+ BOOST_CHECK( print_out_template(umax15_type(), umax15_type::bound,
+ "a maximum_unsigned_integral<", ">") );
+ BOOST_CHECK( print_out_template(umax0_type(), umax0_type::bound,
+ "a maximum_unsigned_integral<", ">") );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+// Check if given constants can fit in given types
+BOOST_AUTO_TEST_SUITE( fit_type_tests )
+
+// Check if large value can fit its minimum required size, by size
+BOOST_AUTO_TEST_CASE_TEMPLATE( fit_for_masked_values_test, T,
+ valid_to_decrease_bits_list )
+{
+ // This test is supposed to replace the following checks given in
+ // puesdo-code by:
+ // Routine: Template, Type
+ // for ( N = 32, V = Template:Max ; N >= 0 ; --N, V >>= 1 )
+ // Confirm( static_cast<typename Template<N>::Type>(V) == V );
+ // end for
+ // end Routine
+ // with Template = {int_t, uint_t}; Type = {least, fast};
+ // Template:Max = { intmax_t.Max for int_t, uintmax_t.Max for uint_t }
+ // In other words, the selected type doesn't mask out any bits it's not
+ // supposed to. But now we'll use template meta-programming instead of
+ // macros. The limit of type-lists is usually less than 32 (not to mention
+ // 64) elements, so we have to take selected values.
+ static int const count = T::value;
+ int const shift = uintmax_bits - count;
+ boost::uintmax_t const value_u = uintmax_limits::max
+ BOOST_PREVENT_MACRO_SUBSTITUTION () >> shift;
+ boost::intmax_t const value_s = intmax_limits::max
+ BOOST_PREVENT_MACRO_SUBSTITUTION () >> shift;
+
+ BOOST_CHECK_EQUAL( static_cast<typename
+ unsigned_sized_integral<count>::type>(value_u), value_u );
+ BOOST_CHECK_EQUAL( static_cast<typename
+ boost::uint_t<count>::least>(value_u), value_u );
+ BOOST_CHECK_EQUAL( static_cast<typename
+ boost::uint_t<count>::fast>(value_u), value_u );
+
+ BOOST_CHECK_EQUAL( static_cast<typename
+ signed_sized_integral<count>::type>(value_s), value_s );
+ BOOST_CHECK_EQUAL( static_cast<typename
+ boost::int_t<count>::least>(value_s), value_s );
+ BOOST_CHECK_EQUAL( static_cast<typename
+ boost::int_t<count>::fast>(value_s), value_s );
+}
+
+// Check if a large value can only fit of its exact bit length
+BOOST_AUTO_TEST_CASE_TEMPLATE( fit_for_exact_lengths_test, T,
+ distinct_integral_bit_counts )
+{
+ typename boost::exact_integral<T::value, unsigned>::type const one_u( 1u ),
+ high_bit_u( one_u << (T::value - 1) ), repeated_bits_u( (high_bit_u << 1) |
+ high_bit_u );
+
+ BOOST_CHECK( high_bit_u );
+ BOOST_CHECK_EQUAL( repeated_bits_u, high_bit_u );
+
+ typename boost::exact_integral<T::value, signed>::type const one_s( 1 ),
+ high_bit_s( one_s << (T::value - 2) ), repeated_bits_s( (high_bit_s << 1) |
+ high_bit_s ), repeated_2bits_s( (repeated_bits_s << 1) | high_bit_s );
+
+ BOOST_CHECK( high_bit_s > 0 );
+ BOOST_CHECK( repeated_bits_s < 0 );
+ BOOST_CHECK_EQUAL( repeated_bits_s, repeated_2bits_s );
+}
+
+// Check if large value can fit its minimum required size, by value, unsigned
+BOOST_AUTO_TEST_CASE_TEMPLATE( fit_for_shifted_unsigned_values_test, T,
+ valid_to_increase_ubits_list )
+{
+ // This test is supposed to replace the following checks given in
+ // puesdo-code by:
+ // Routine: Template, Type
+ // for ( N = 0, V = Template:Extreme ; N < 32 ; ++N, V >>= 1 )
+ // Confirm( static_cast<typename Template<V>::Type>(V) == V );
+ // end for
+ // end Routine
+ // with Template = {uint_value_t}; Type = {least, fast}; Template:Extreme =
+ // {uintmax_t.Max for uint_value_t}
+ // In other words, the selected type doesn't mask out any bits it's not
+ // supposed to. But now we'll use template meta-programming instead of
+ // macros. The limit of type-lists is usually less than 32 (not to mention
+ // 64) elements, so we have to take selected values.
+ using boost::uintmax_t;
+
+ typedef boost::mpl::shift_right<maximum_of<uintmax_t>, T> maxi_type;
+
+ uintmax_t const maxi = maxi_type::value;
+
+ BOOST_CHECK_EQUAL( static_cast<typename
+ boost::uint_value_t<maxi_type::value>::least>(maxi), maxi );
+ BOOST_CHECK_EQUAL( static_cast<typename
+ boost::uint_value_t<maxi_type::value>::fast>(maxi), maxi );
+}
+
+// Check if large value can fit its minimum required size, by value, signed
+BOOST_AUTO_TEST_CASE_TEMPLATE( fit_for_shifted_signed_values_test, T,
+ valid_to_increase_sbits_list )
+{
+ // This test is supposed to replace the following checks given in
+ // puesdo-code by:
+ // Routine: Template, Type
+ // for ( N = 0, V = Template:Extreme ; N < 32 ; ++N, V >>= 1 )
+ // Confirm( static_cast<typename Template<V>::Type>(V) == V );
+ // end for
+ // end Routine
+ // with Template = {int_max_value_t, int_min_value_t}; Type = {least, fast};
+ // Template:Extreme = {intmax_t.Min for int_min_value_t, intmax_t.Max
+ // for int_max_value_t}
+ // In other words, the selected type doesn't mask out any bits it's not
+ // supposed to. But now we'll use template meta-programming instead of
+ // macros. The limit of type-lists is usually less than 32 (not to mention
+ // 64) elements, so we have to take selected values.
+ using boost::intmax_t;
+
+ typedef boost::mpl::shift_right<minimum_of<intmax_t>, T> mini_type;
+ typedef boost::mpl::shift_right<maximum_of<intmax_t>, T> maxi_type;
+
+ intmax_t const maxi = maxi_type::value, mini = mini_type::value;
+
+ BOOST_CHECK_EQUAL( static_cast<typename
+ boost::int_max_value_t<maxi_type::value>::least>(maxi), maxi );
+ BOOST_CHECK_EQUAL( static_cast<typename
+ boost::int_max_value_t<maxi_type::value>::fast>(maxi), maxi );
+
+ BOOST_CHECK_EQUAL( static_cast<typename
+ boost::int_min_value_t<mini_type::value>::least>(mini), mini );
+ BOOST_CHECK_EQUAL( static_cast<typename
+ boost::int_min_value_t<mini_type::value>::fast>(mini), mini );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+// Verification of bugs and their fixes
+BOOST_AUTO_TEST_SUITE( bug_fix_tests )
+
+BOOST_AUTO_TEST_SUITE_END()

Modified: branches/proto/v4/libs/interprocess/doc/interprocess.qbk
==============================================================================
--- branches/proto/v4/libs/interprocess/doc/interprocess.qbk (original)
+++ branches/proto/v4/libs/interprocess/doc/interprocess.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -171,6 +171,9 @@
 [import ../example/doc_map.cpp]
 [doc_map]
 
+For a more advanced example including containers of containers, see the section
+[link interprocess.allocators_containers.containers_explained.containers_of_containers Containers of containers].
+
 [endsect]
 
 [endsect]
@@ -2162,7 +2165,8 @@
 
 [section:lock_conversions Lock Transfers Through Move Semantics]
 
-[blurb [*Interprocess uses its own move semantics emulation code.
+[blurb [*Interprocess uses its own move semantics emulation code for compilers
+that don't support rvalues references.
 This is a temporary solution until a Boost move semantics library is accepted.]]
 
 Scoped locks and similar utilities offer simple resource management possibilities,
@@ -3260,21 +3264,6 @@
 we will use managed shared memory in our examples. We can do the same with
 memory mapped files or other managed memory segment classes.
 
-[section:copy_on_write Opening managed shared memory and mapped files with Copy On Write mode]
-
-When mapping a memory segment based on shared memory or files, there is an option to
-open them using `open_copy_on_write` option. This option is similar to `open_only` but
-every change the programmer does with this managed segment is kept private to this process
-and is not translated to the underlying device (shared memory or file).
-
-The underlying shared memory or file is opened as read-only so several processes can
-share an initial managed segment and make private changes to it. Here's an example:
-
-[import ../example/doc_managed_copy_on_write.cpp]
-[doc_managed_copy_on_write]
-
-[endsect]
-
 [section:allocate_deallocate Allocating fragments of a managed memory segment]
 
 If a basic raw-byte allocation is needed from a managed memory
@@ -3569,6 +3558,36 @@
 
 [endsect]
 
+[section:managed_memory_segment_atomic_func Executing an object function atomically]
+
+Sometimes the programmer must execute some code, and needs to execute it with the
+guarantee that no other process or thread will create or destroy any named, unique
+or anonymous object while executing the functor. A user might want to create several
+named objects and initialize them, but those objects should be available for the rest of processes
+at once.
+
+To achieve this, the programmer can use the `atomic_func()` function offered by
+managed classes:
+
+[c++]
+
+ //This object function will create several named objects
+ create_several_objects_func func(/**/);
+
+ //While executing the function, no other process will be
+ //able to create or destroy objects
+ managed_memory.atomic_func(func);
+
+
+Note that `atomic_func` does not prevent other processes from allocating raw memory
+or executing member functions for already constructed objects (e.g.: another process
+might be pushing elements into a vector placed in the segment). The atomic function
+only blocks named, unique and anonymous creation, search and destruction
+(concurrent calls to `construct<>`, `find<>`, `find_or_construct<>`, `destroy<>`...)
+from other processes.
+
+[endsect]
+
 [endsect]
 
 [section:managed_memory_segment_advanced_features Managed Memory Segment Advanced Features]
@@ -3985,6 +4004,43 @@
 
 [endsect]
 
+[section:copy_on_write_read_only Opening managed shared memory and mapped files with Copy On Write or Read Only modes]
+
+When mapping a memory segment based on shared memory or files, there is an option to
+open them using [*open_copy_on_write] option. This option is similar to `open_only` but
+every change the programmer does with this managed segment is kept private to this process
+and is not translated to the underlying device (shared memory or file).
+
+The underlying shared memory or file is opened as read-only so several processes can
+share an initial managed segment and make private changes to it. If many processes
+open a managed segment in copy on write mode and not modified pages from the managed
+segment will be shared between all those processes, with considerable memory savings.
+
+Opening managed shared memory and mapped files with [*open_read_only] maps the the
+underlying device in memory with [*read-only] attributes. This means that any attempt
+to write that memory, either creating objects or locking any mutex might result in an
+page-fault error (and thus, program termination) from the OS. Read-only mode opens
+the underlying device (shared memory, file...) in read-only mode and
+can result in considerable memory savings if several processes just want to process
+a managed memory segment without modifying it. Read-only mode operations are limited:
+
+* Read-only mode must be used only from managed classes. If the programmer obtains
+ the segment manager and tries to use it directly it might result in an access violation.
+ The reason for this is that the segment manager is placed in the underlying device
+ and does not nothing about the mode it's been mapped in memory.
+
+* Only const member functions from managed segments should be used.
+
+* Additionally, the `find<>` member function avoids using internal locks and can be
+ used to look for named and unique objects.
+
+Here's an example that shows the use of these two open modes:
+
+[import ../example/doc_managed_copy_on_write.cpp]
+[doc_managed_copy_on_write]
+
+[endsect]
+
 [endsect]
 
 [section:managed_heap_memory_external_buffer Managed Heap Memory And Managed External Buffer]
@@ -4983,6 +5039,21 @@
 
 [endsect]
 
+[section:containers_of_containers Containers of containers]
+
+When creating containers of containers, each container needs an allocator.
+To avoid using several allocators with complex type definitions, we can take
+advantage of the type erasure provided by void allocators and the ability
+to implicitly convert void allocators in allocators that allocate other types.
+
+Here we have an example that builds a map in shared memory. Key is a string
+and the mapped type is a class that stores several containers:
+
+[import ../example/doc_complex_map.cpp]
+[doc_complex_map]
+
+[endsect]
+
 [endsect]
 
 [section:additional_containers Boost containers compatible with Boost.Interprocess]
@@ -6347,7 +6418,7 @@
 For example, the index type `flat_map_index` based in `boost::interprocess::flat_map`
 is just defined as:
 
-[import ../../boost/interprocess/indexes/flat_map_index.hpp]
+[import ../../../boost/interprocess/indexes/flat_map_index.hpp]
 [flat_map_index]
 
 
@@ -6475,7 +6546,10 @@
 * Added anonymous shared memory for UNIX systems.
 * Fixed erroneous `void` return types from `flat_map::erase()` functions.
 * Fixed missing move semantics on managed memory classes.
-* Added copy_on_write option for shared memory and mapped file managed classes.
+* Added copy_on_write and open_read_only options for shared memory and mapped file managed classes.
+* [*ABI breaking]: Added to `mapped_region` the mode used to create it.
+* Corrected instantiation errors in void allocators.
+* `shared_ptr` is movable and supports aliasing.
 
 [endsect]
 

Modified: branches/proto/v4/libs/interprocess/example/doc_managed_copy_on_write.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/example/doc_managed_copy_on_write.cpp (original)
+++ branches/proto/v4/libs/interprocess/example/doc_managed_copy_on_write.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,6 +12,7 @@
 #include <boost/interprocess/managed_mapped_file.hpp>
 #include <fstream> //std::fstream
 #include <cstdio> //std::remove
+#include <iterator>//std::distance
 
 int main()
 {
@@ -20,8 +21,10 @@
    //Try to erase any previous managed segment with the same name
    std::remove("MyManagedFile");
    std::remove("MyManagedFile2");
+ remove_file_on_destroy destroyer1("MyManagedFile");
+ remove_file_on_destroy destroyer2("MyManagedFile2");
 
- try{
+ {
       //Create an named integer in a managed mapped file
       managed_mapped_file managed_file(create_only, "MyManagedFile", 65536);
       managed_file.construct<int>("MyInt")(0u);
@@ -43,7 +46,7 @@
          throw int(0);
 
       { //Dump the modified copy on write segment to a file
- std::fstream file("MyManagedFile2", std::ios_base::out | std::ios_base::trunc | std::ios_base::binary);
+ std::fstream file("MyManagedFile2", std::ios_base::out | std::ios_base::binary);
          if(!file)
             throw int(0);
          file.write((const char *)managed_file_cow.get_address(), managed_file_cow.get_size());
@@ -54,13 +57,19 @@
       if(managed_file_cow2.find<int>("MyInt").first && !managed_file_cow2.find<int>("MyInt2").first)
          throw int(0);
    }
- catch(...){
- std::remove("MyManagedFile");
- std::remove("MyManagedFile2");
- throw;
+ {
+ //Now create a read-only version
+ managed_mapped_file managed_file_ro(open_read_only, "MyManagedFile");
+
+ //Check the original is intact
+ if(!managed_file_ro.find<int>("MyInt").first && managed_file_ro.find<int>("MyInt2").first)
+ throw int(0);
+
+ //Check the number of named objects using the iterators
+ if(std::distance(managed_file_ro.named_begin(), managed_file_ro.named_end()) != 1 &&
+ std::distance(managed_file_ro.unique_begin(), managed_file_ro.unique_end()) != 0 )
+ throw int(0);
    }
- std::remove("MyManagedFile");
- std::remove("MyManagedFile2");
    return 0;
 }
 //]

Modified: branches/proto/v4/libs/interprocess/example/doc_move_containers.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/example/doc_move_containers.cpp (original)
+++ branches/proto/v4/libs/interprocess/example/doc_move_containers.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -53,7 +53,7 @@
          //In the following line, no string copy-constructor will be called.
          //"move_me"'s contents will be transferred to the string created in
          //the vector
- myshmvector->push_back(move(move_me));
+ myshmvector->push_back(boost::interprocess::move(move_me));
 
          //The source string is in default constructed state
          assert(move_me.empty());
@@ -69,7 +69,7 @@
       //No string copy-constructor or assignments will be called, but
       //move constructors and move-assignments. No memory allocation
       //function will be called in this operations!!
- myshmvector->insert(myshmvector->begin(), move(string_to_compare));
+ myshmvector->insert(myshmvector->begin(), boost::interprocess::move(string_to_compare));
 
       //Destroy vector. This will free all strings that the vector contains
       shm.destroy_ptr(myshmvector);

Modified: branches/proto/v4/libs/interprocess/example/doc_shared_memory2.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/example/doc_shared_memory2.cpp (original)
+++ branches/proto/v4/libs/interprocess/example/doc_shared_memory2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -33,13 +33,13 @@
          }
       }
       std::cout << "Test successful!" << std::endl;
- shared_memory_object::remove("shared_memory");
    }
    catch(interprocess_exception &ex){
       std::cout << "Unexpected exception: " << ex.what() << std::endl;
       shared_memory_object::remove("shared_memory");
       return 1;
    }
+ shared_memory_object::remove("shared_memory");
    return 0;
 }
 //]

Modified: branches/proto/v4/libs/interprocess/index.html
==============================================================================
--- branches/proto/v4/libs/interprocess/index.html (original)
+++ branches/proto/v4/libs/interprocess/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+<!--
+Copyright 2005-2008 Ion Gaztanaga
+Distributed under the Boost Software License, Version 1.0. (See accompanying
+file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+-->
 <html>
 <head>
 <meta http-equiv="refresh" content="0; URL=../../doc/html/interprocess.html">

Deleted: branches/proto/v4/libs/interprocess/proj/to-do.txt
==============================================================================
--- branches/proto/v4/libs/interprocess/proj/to-do.txt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,60 +0,0 @@
--> Implement zero_memory flag for allocation_command
-
--> The general allocation funtion can be improved with some fixed size allocation bins.
-
--> Adapt error reporting to TR1 system exceptions
-
--> Improve exception messages
-
--> Movability of containers should depend on the no-throw guarantee of allocators copy constructor
-
--> Check self-assignment for vectors
-
--> Update writing a new memory allocator explaining new functions (like alignment)
-
--> private node allocators could take the number of nodes as a runtime parameter.
-
--> Explain how to build intrusive indexes.
-
--> Add intrusive index types as available indexes.
-
--> Add maximum alignment allocation limit in PageSize bytes. Otherwise, we can't
- guarantee alignment for process-shared allocations.
-
--> Add default algorithm and index types. The user does not need to know how are
- they implemented.
-
--> Add private mapping to managed classes.
-
--> Add unique_ptr documentation.
-
--> Pass max size check in allocation to node pools
-
--> Add atomic_func explanation in docs
-
--> Once shrink to fit indexes is implemented test all memory has been deallocated
- in tests to detect leaks/implementation failures.
-
--> Improve allocate_many functions to allocate all the nodes forming a singly
- linked list of nodes.
-
--> Use in-place expansion capabilities to shrink_to_fit and reserve functions
- from iunordered_index.
-
--> Optimize copy_n with std::copy in vector. Revise other functions to improve optimizations
-
--> Keep an eye on container iterator constness issue to bring Interprocess containers up-to-date.
-
--> change unique_ptr to avoid using compressed_pair
-
--> Improve unique_ptr test to test move assignment and other goodies like assigment from null
-
--> barrier_test fails on MacOS X on PowerPC.
-
--> void allocator instantiations fail.
-
--> Read-only managed classes. They should avoid internal locking and map memory as read-only
-
--> add private_read_only to mapped_region to support MAP_PRIVATE plus PROT_READ
-
--> add contiguous_elements option to burst allocation

Modified: branches/proto/v4/libs/interprocess/proj/vc7ide/Interprocess.sln
==============================================================================
--- branches/proto/v4/libs/interprocess/proj/vc7ide/Interprocess.sln (original)
+++ branches/proto/v4/libs/interprocess/proj/vc7ide/Interprocess.sln 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,919 +1,935 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_mapping_test", "shared_memory_mappable_test.vcproj", "{5CE18C83-6025-36FE-A4F7-BA09176D3A11}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_test", "shared_memory_test.vcproj", "{5E2838CC-0916-8F4E-A4F7-93506BA0D310}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_ptr_test", "shared_ptr_test.vcproj", "{5371C383-6092-1238-A877-BAEB37867609}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist_test", "slist_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string_test", "string_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D4A792607}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_test", "tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792606}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upgradable_mutex_test", "upgradable_mutex.vcproj", "{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "user_buffer_test", "user_buffer_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792603}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vectorstream_test", "vectorstream_test.vcproj", "{58CCE183-6032-12FE-A4F7-BA893A767601}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_condition_test", "named_condition_test.vcproj", "{58CC2563-6092-48FE-FAF7-BA046A792658}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexA", "doc_anonymous_mutexA.vcproj", "{58C1B183-9026-4E63-12F2-005412200054}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexB", "doc_anonymous_mutexB.vcproj", "{58C1B183-9026-4E63-12F2-005202441254}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_mutex", "doc_named_mutex.vcproj", "{58C181B3-9516-463E-2F12-122155400054}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionA", "doc_anonymous_conditionA.vcproj", "{5C1B8183-0296-4F83-1F22-001005220544}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionB", "doc_anonymous_conditionB.vcproj", "{58C1FE83-2906-E643-2F12-024410052254}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_conditionA", "doc_named_conditionA.vcproj", "{58EB1CB3-1354-364E-12F2-154356612054}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_conditionB", "doc_named_conditionB.vcproj", "{58181CB3-5134-634E-12F2-155435622054}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreA", "doc_anonymous_semaphoreA.vcproj", "{5CB81183-29FB-F843-24FF-022050100544}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreB", "doc_anonymous_semaphoreB.vcproj", "{58FBE8C3-9026-FAB2-E643-000522441254}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_upgradable_mutex_test", "named_upgradable_mutex.vcproj", "{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexA", "doc_anonymous_upgradable_mutexA.vcproj", "{5C18831B-F162-FA96-E6C3-FA5122040054}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexB", "doc_anonymous_upgradable_mutexB.vcproj", "{5C1B1043-1EFF-2793-4E63-245241283054}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueA", "doc_message_queueA.vcproj", "{51B189C3-4E63-9026-12F2-12200AF54054}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueB", "doc_message_queueB.vcproj", "{5C1B1813-12C2-0296-4E63-244549126520}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cont", "doc_cont.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792653}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_contA", "doc_contA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792652}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_contB", "doc_contB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792651}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory", "doc_shared_memory.vcproj", "{58CCE183-6032-12FE-4FC7-83A79F760B61}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unique_ptr_test", "unique_ptr_test.vcproj", "{571C3383-6092-A877-1238-B3786BAE7605}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_move_containers", "doc_move_containers.vcproj", "{58C1B183-0296-EA42-EF04-005120054104}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map_index_allocation_test", "map_index_allocation_test.vcproj", "{588CCD13-2962-83FE-F4B7-92230DB73629}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_map_index_allocation_test", "flat_map_index_allocation_test.vcproj", "{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iset_index_allocation_test", "iset_index_allocation_test.vcproj", "{58BD1CC3-6972-F3F7-84BE-0DB736035922}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iunordered_set_index_allocation_test", "iunordered_set_index_allocation_test.vcproj", "{5BD1C7C3-3F7F-6972-84BE-B731D9236035}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory2", "doc_shared_memory2.vcproj", "{58CE1D83-F31E-4FD7-6132-8A79F6307B61}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping2", "doc_file_mapping2.vcproj", "{5CE19883-F413-7EFD-6342-B79639F7B611}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping", "doc_file_mapping.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_map", "doc_map.vcproj", "{59CEC183-8192-8F6D-4FB7-BA260A79D352}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windows_shared_memory_test", "windows_shared_memory_test.vcproj", "{E385C28C-0691-4FA7-F48E-935BA0D06310}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windows_shared_memory_mapping_test", "windows_shared_memory_mapping_test.vcproj", "{518CE8C3-6512-FA75-46EF-B917A3A116D1}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_windows_shared_memory_test", "managed_windows_shared_memory.vcproj", "{5D18CE83-1926-7AE4-FE94-B606D9B23131}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adaptive_pool_test", "adaptive_pool_test.vcproj", "{58CE1D84-1962-4FE9-BA0D-A4F7973A4652}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_adaptive_pool_test", "cached_adaptive_pool_test.vcproj", "{5188E3CE-2964-F43E-FB87-B037AC692D59}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_adaptive_pool_test", "private_adaptive_pool_test.vcproj", "{5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_allocator", "doc_allocator.vcproj", "{581B1C83-4E12-9526-020F-012482540054}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_node_allocator", "doc_node_allocator.vcproj", "{51B17C83-E172-5396-0FA2-825472008554}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_private_node_allocator", "doc_private_node_allocator.vcproj", "{2B75C833-17D2-4956-A23F-820854254175}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cached_node_allocator", "doc_cached_node_allocator.vcproj", "{283AD375-7D12-5866-23BF-854308651275}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_adaptive_pool", "doc_adaptive_pool.vcproj", "{57C832B1-17D2-9537-FA12-827220448554}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cached_adaptive_pool", "doc_cached_adaptive_pool.vcproj", "{536C8251-7E12-9537-A1E2-822073258554}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_private_adaptive_pool", "doc_private_adaptive_pool.vcproj", "{83258CB1-127E-9375-F872-8324A1054454}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_raw_allocation", "doc_managed_raw_allocation.vcproj", "{5198EFC3-2731-F34E-4FD8-1859AC94F761}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_aligned_allocation", "doc_managed_aligned_allocation.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_interprocesslib", "interprocesslib.vcproj", "{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory", "doc_windows_shared_memory.vcproj", "{5E17C9C3-1362-2E1E-C84F-8A76B6739F21}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory2", "doc_windows_shared_memory2.vcproj", "{5E1D6C83-31DE-4F6F-6132-87A9FB663041}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adaptive_node_pool_test", "adaptive_node_pool_test.vcproj", "{CD57C283-1862-42FE-BF87-B96D3A2A7912}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_pool_test", "node_pool_test.vcproj", "{8A519DC3-6092-A4FE-F748-BA91328D6522}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deque_test", "deque_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792655}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "barrier_test", "barrier_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792661}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bufferstream_test", "bufferstream_test.vcproj", "{58C183CE-6203-FE12-A237-BA8976695960}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_node_allocator_test", "cached_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792659}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_node_allocator_test", "private_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792620}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_allocator_test", "node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792622}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_mutex_test", "named_mutex_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792625}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_recursive_mutex_test", "named_recursive_mutex_test.vcproj", "{5C83CE18-4F48-A7FE-6092-B7920AD3A624}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_semaphore_test", "named_semaphore_test.vcproj", "{58CCE283-1609-48FE-A4F7-BA0D3A793523}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_heap_memory", "doc_managed_heap_memory.vcproj", "{58CCE183-6092-48FE-A4FC-BA0D3A792647}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "allocexcept_test", "allocexcept_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792662}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "condition_test", "condition_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792658}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "data_test", "data_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792657}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_bufferstream", "doc_bufferstream.vcproj", "{58C1B183-9026-4E12-00F2-001200540054}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_intrusive", "doc_intrusive.vcproj", "{5E18CC83-6092-48FE-A677-B832A0D3A650}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_ipc_messageA", "doc_ipc_messageA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792649}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_ipc_messageB", "doc_ipc_messageB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792648}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_mapped_file", "doc_managed_mapped_file.vcproj", "{58CCE183-5091-48FE-A4FC-BA0D3A792446}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_allocA", "doc_named_allocA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792645}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_allocB", "doc_named_allocB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792644}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_offset_ptr", "doc_offset_ptr.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792643}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_scoped_ptr", "doc_scoped_ptr.vcproj", "{58CC8E13-0962-8F4E-77A6-BD3A6832A042}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_vectorstream", "doc_vectorstream.vcproj", "{58C1B183-9260-4E8F-F200-000000000041}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_where_allocate", "doc_where_allocate.vcproj", "{58CCE183-6092-48FE-A677-BA0D3A832640}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_mapping_test", "file_mapping_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792638}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_tree_test", "flat_tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792637}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intrusive_ptr_test", "intrusive_ptr_test.vcproj", "{5821C383-6092-12FE-A877-BA0D33467633}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list_test", "list_ex.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_mapped_file_test", "managed_mapped_file_test.vcproj", "{5CCE1883-0926-F7A4-8FE4-BA0606D92331}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapped_file_test", "mapped_file_test.vcproj", "{5C6D9CE1-2609-F7A4-8FE4-BA0883602330}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memory_algorithm_test", "memory_algorithm_test.vcproj", "{58E18CC3-6092-8F4E-A3E7-A792230D3629}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "message_queue_test", "message_queue.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792628}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mutex_test", "mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A27}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "null_index_test", "null_index_test.vcproj", "{0000058C-0000-0000-0000-000000000021}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_mutex_test", "recursive_mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A14}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "semaphore_test", "semaphore_test.vcproj", "{5CE28C83-48FE-1676-4FA7-B50D3A76A013}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_multiple_allocation", "doc_managed_multiple_allocation.vcproj", "{818C43EE-3561-F3AE-4FD7-8A2076E76A31}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_allocation_command", "doc_managed_allocation_command.vcproj", "{5189DEA3-3261-F33E-47ED-83BC69F66061}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_construction_info", "doc_managed_construction_info.vcproj", "{5C82D1D3-3861-3AF1-03EF-89AED4716761}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr_explicit", "doc_shared_ptr_explicit.vcproj", "{4E887AC3-F8EA-6923-A744-C264A398C913}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_unique_ptr", "doc_unique_ptr.vcproj", "{589C2EB3-8A57-1862-F4EA-A6B14C7329A3}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr", "doc_shared_ptr.vcproj", "{51CE89A3-6092-F4EA-48A7-B4B9AC326093}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_shared_memory_test", "managed_shared_memory.vcproj", "{58DF28E3-0926-F47A-E28A-B03A4D619631}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_grow", "doc_managed_grow.vcproj", "{818C43EE-3561-F3AE-4FD7-8A2076E76A31}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "offset_ptr_test", "offset_ptr_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_shared_memory", "doc_anonymous_shared_memory.vcproj", "{6DE178C3-12FE-6032-4FC7-879B63B9F651}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "anonymous_shared_memory_test", "anonymous_shared_memory_test.vcproj", "{58DE8A13-4FA7-6252-36FE-B3A0A6D92812}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_unordered_map", "doc_unordered_map.vcproj", "{9C185DF3-B75F-1928-8F6D-735108AABE62}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_multi_index", "doc_multi_index.vcproj", "{918C5DF3-1928-B73F-F626-7358518CBE62}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unordered_test", "unordered_test.vcproj", "{C3CE1183-09F2-A46A-4FE6-D06BA7923A02}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_index_test", "multi_index_test.vcproj", "{9285DFD3-1928-F662-CB73-73518CB53A62}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_lock_test", "file_lock_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792639}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intersegment_ptr_test", "intersegment_ptr_test.vcproj", "{5E81CD01-4FA2-2A96-84FE-DA631CA20962}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_copy_on_write", "doc_managed_copy_on_write.vcproj", "{8E0C437E-3613-FD46-F3AE-876A0731CA85}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfiguration) = preSolution
- Debug = Debug
- Release = Release
- EndGlobalSection
- GlobalSection(ProjectDependencies) = postSolution
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.ActiveCfg = Debug|Win32
- {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.Build.0 = Debug|Win32
- {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.ActiveCfg = Release|Win32
- {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.Build.0 = Release|Win32
- {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.ActiveCfg = Debug|Win32
- {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.Build.0 = Debug|Win32
- {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.ActiveCfg = Release|Win32
- {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.Build.0 = Release|Win32
- {5371C383-6092-1238-A877-BAEB37867609}.Debug.ActiveCfg = Debug|Win32
- {5371C383-6092-1238-A877-BAEB37867609}.Debug.Build.0 = Debug|Win32
- {5371C383-6092-1238-A877-BAEB37867609}.Release.ActiveCfg = Release|Win32
- {5371C383-6092-1238-A877-BAEB37867609}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.Build.0 = Release|Win32
- {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.ActiveCfg = Debug|Win32
- {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.Build.0 = Debug|Win32
- {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.ActiveCfg = Release|Win32
- {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.Build.0 = Release|Win32
- {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.Build.0 = Debug|Win32
- {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.ActiveCfg = Release|Win32
- {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.Build.0 = Release|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
- {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.ActiveCfg = Debug|Win32
- {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.Build.0 = Debug|Win32
- {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.ActiveCfg = Release|Win32
- {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.Build.0 = Release|Win32
- {58C1B183-9026-4E63-12F2-005412200054}.Debug.ActiveCfg = Debug|Win32
- {58C1B183-9026-4E63-12F2-005412200054}.Debug.Build.0 = Debug|Win32
- {58C1B183-9026-4E63-12F2-005412200054}.Release.ActiveCfg = Release|Win32
- {58C1B183-9026-4E63-12F2-005412200054}.Release.Build.0 = Release|Win32
- {58C1B183-9026-4E63-12F2-005202441254}.Debug.ActiveCfg = Debug|Win32
- {58C1B183-9026-4E63-12F2-005202441254}.Debug.Build.0 = Debug|Win32
- {58C1B183-9026-4E63-12F2-005202441254}.Release.ActiveCfg = Release|Win32
- {58C1B183-9026-4E63-12F2-005202441254}.Release.Build.0 = Release|Win32
- {58C181B3-9516-463E-2F12-122155400054}.Debug.ActiveCfg = Debug|Win32
- {58C181B3-9516-463E-2F12-122155400054}.Debug.Build.0 = Debug|Win32
- {58C181B3-9516-463E-2F12-122155400054}.Release.ActiveCfg = Release|Win32
- {58C181B3-9516-463E-2F12-122155400054}.Release.Build.0 = Release|Win32
- {5C1B8183-0296-4F83-1F22-001005220544}.Debug.ActiveCfg = Debug|Win32
- {5C1B8183-0296-4F83-1F22-001005220544}.Debug.Build.0 = Debug|Win32
- {5C1B8183-0296-4F83-1F22-001005220544}.Release.ActiveCfg = Release|Win32
- {5C1B8183-0296-4F83-1F22-001005220544}.Release.Build.0 = Release|Win32
- {58C1FE83-2906-E643-2F12-024410052254}.Debug.ActiveCfg = Debug|Win32
- {58C1FE83-2906-E643-2F12-024410052254}.Debug.Build.0 = Debug|Win32
- {58C1FE83-2906-E643-2F12-024410052254}.Release.ActiveCfg = Release|Win32
- {58C1FE83-2906-E643-2F12-024410052254}.Release.Build.0 = Release|Win32
- {58EB1CB3-1354-364E-12F2-154356612054}.Debug.ActiveCfg = Debug|Win32
- {58EB1CB3-1354-364E-12F2-154356612054}.Debug.Build.0 = Debug|Win32
- {58EB1CB3-1354-364E-12F2-154356612054}.Release.ActiveCfg = Release|Win32
- {58EB1CB3-1354-364E-12F2-154356612054}.Release.Build.0 = Release|Win32
- {58181CB3-5134-634E-12F2-155435622054}.Debug.ActiveCfg = Debug|Win32
- {58181CB3-5134-634E-12F2-155435622054}.Debug.Build.0 = Debug|Win32
- {58181CB3-5134-634E-12F2-155435622054}.Release.ActiveCfg = Release|Win32
- {58181CB3-5134-634E-12F2-155435622054}.Release.Build.0 = Release|Win32
- {5CB81183-29FB-F843-24FF-022050100544}.Debug.ActiveCfg = Debug|Win32
- {5CB81183-29FB-F843-24FF-022050100544}.Debug.Build.0 = Debug|Win32
- {5CB81183-29FB-F843-24FF-022050100544}.Release.ActiveCfg = Release|Win32
- {5CB81183-29FB-F843-24FF-022050100544}.Release.Build.0 = Release|Win32
- {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.ActiveCfg = Debug|Win32
- {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.Build.0 = Debug|Win32
- {58FBE8C3-9026-FAB2-E643-000522441254}.Release.ActiveCfg = Release|Win32
- {58FBE8C3-9026-FAB2-E643-000522441254}.Release.Build.0 = Release|Win32
- {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.ActiveCfg = Debug|Win32
- {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.Build.0 = Debug|Win32
- {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.ActiveCfg = Release|Win32
- {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.Build.0 = Release|Win32
- {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.ActiveCfg = Debug|Win32
- {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.Build.0 = Debug|Win32
- {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.ActiveCfg = Release|Win32
- {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.Build.0 = Release|Win32
- {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.ActiveCfg = Debug|Win32
- {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.Build.0 = Debug|Win32
- {5C1B1043-1EFF-2793-4E63-245241283054}.Release.ActiveCfg = Release|Win32
- {5C1B1043-1EFF-2793-4E63-245241283054}.Release.Build.0 = Release|Win32
- {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.ActiveCfg = Debug|Win32
- {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.Build.0 = Debug|Win32
- {51B189C3-4E63-9026-12F2-12200AF54054}.Release.ActiveCfg = Release|Win32
- {51B189C3-4E63-9026-12F2-12200AF54054}.Release.Build.0 = Release|Win32
- {5C1B1813-12C2-0296-4E63-244549126520}.Debug.ActiveCfg = Debug|Win32
- {5C1B1813-12C2-0296-4E63-244549126520}.Debug.Build.0 = Debug|Win32
- {5C1B1813-12C2-0296-4E63-244549126520}.Release.ActiveCfg = Release|Win32
- {5C1B1813-12C2-0296-4E63-244549126520}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.Build.0 = Release|Win32
- {58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.Build.0 = Debug|Win32
- {58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.ActiveCfg = Release|Win32
- {58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.Build.0 = Release|Win32
- {571C3383-6092-A877-1238-B3786BAE7605}.Debug.ActiveCfg = Debug|Win32
- {571C3383-6092-A877-1238-B3786BAE7605}.Debug.Build.0 = Debug|Win32
- {571C3383-6092-A877-1238-B3786BAE7605}.Release.ActiveCfg = Release|Win32
- {571C3383-6092-A877-1238-B3786BAE7605}.Release.Build.0 = Release|Win32
- {58C1B183-0296-EA42-EF04-005120054104}.Debug.ActiveCfg = Debug|Win32
- {58C1B183-0296-EA42-EF04-005120054104}.Debug.Build.0 = Debug|Win32
- {58C1B183-0296-EA42-EF04-005120054104}.Release.ActiveCfg = Release|Win32
- {58C1B183-0296-EA42-EF04-005120054104}.Release.Build.0 = Release|Win32
- {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.ActiveCfg = Debug|Win32
- {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.Build.0 = Debug|Win32
- {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.ActiveCfg = Release|Win32
- {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.Build.0 = Release|Win32
- {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.ActiveCfg = Debug|Win32
- {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.Build.0 = Debug|Win32
- {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.ActiveCfg = Release|Win32
- {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.Build.0 = Release|Win32
- {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.ActiveCfg = Debug|Win32
- {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.Build.0 = Debug|Win32
- {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.ActiveCfg = Release|Win32
- {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.Build.0 = Release|Win32
- {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.ActiveCfg = Debug|Win32
- {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.Build.0 = Debug|Win32
- {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.ActiveCfg = Release|Win32
- {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.Build.0 = Release|Win32
- {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Debug.ActiveCfg = Debug|Win32
- {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Debug.Build.0 = Debug|Win32
- {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Release.ActiveCfg = Release|Win32
- {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Release.Build.0 = Release|Win32
- {5CE19883-F413-7EFD-6342-B79639F7B611}.Debug.ActiveCfg = Debug|Win32
- {5CE19883-F413-7EFD-6342-B79639F7B611}.Debug.Build.0 = Debug|Win32
- {5CE19883-F413-7EFD-6342-B79639F7B611}.Release.ActiveCfg = Release|Win32
- {5CE19883-F413-7EFD-6342-B79639F7B611}.Release.Build.0 = Release|Win32
- {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.ActiveCfg = Debug|Win32
- {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.Build.0 = Debug|Win32
- {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.ActiveCfg = Release|Win32
- {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
- {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.ActiveCfg = Debug|Win32
- {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.Build.0 = Debug|Win32
- {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.ActiveCfg = Release|Win32
- {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.Build.0 = Release|Win32
- {E385C28C-0691-4FA7-F48E-935BA0D06310}.Debug.ActiveCfg = Debug|Win32
- {E385C28C-0691-4FA7-F48E-935BA0D06310}.Debug.Build.0 = Debug|Win32
- {E385C28C-0691-4FA7-F48E-935BA0D06310}.Release.ActiveCfg = Release|Win32
- {E385C28C-0691-4FA7-F48E-935BA0D06310}.Release.Build.0 = Release|Win32
- {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Debug.ActiveCfg = Debug|Win32
- {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Debug.Build.0 = Debug|Win32
- {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Release.ActiveCfg = Release|Win32
- {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Release.Build.0 = Release|Win32
- {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Debug.ActiveCfg = Debug|Win32
- {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Debug.Build.0 = Debug|Win32
- {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Release.ActiveCfg = Release|Win32
- {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Release.Build.0 = Release|Win32
- {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Debug.ActiveCfg = Debug|Win32
- {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Debug.Build.0 = Debug|Win32
- {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Release.ActiveCfg = Release|Win32
- {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Release.Build.0 = Release|Win32
- {5188E3CE-2964-F43E-FB87-B037AC692D59}.Debug.ActiveCfg = Debug|Win32
- {5188E3CE-2964-F43E-FB87-B037AC692D59}.Debug.Build.0 = Debug|Win32
- {5188E3CE-2964-F43E-FB87-B037AC692D59}.Release.ActiveCfg = Release|Win32
- {5188E3CE-2964-F43E-FB87-B037AC692D59}.Release.Build.0 = Release|Win32
- {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Debug.ActiveCfg = Debug|Win32
- {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Debug.Build.0 = Debug|Win32
- {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Release.ActiveCfg = Release|Win32
- {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Release.Build.0 = Release|Win32
- {581B1C83-4E12-9526-020F-012482540054}.Debug.ActiveCfg = Debug|Win32
- {581B1C83-4E12-9526-020F-012482540054}.Debug.Build.0 = Debug|Win32
- {581B1C83-4E12-9526-020F-012482540054}.Release.ActiveCfg = Release|Win32
- {581B1C83-4E12-9526-020F-012482540054}.Release.Build.0 = Release|Win32
- {51B17C83-E172-5396-0FA2-825472008554}.Debug.ActiveCfg = Debug|Win32
- {51B17C83-E172-5396-0FA2-825472008554}.Debug.Build.0 = Debug|Win32
- {51B17C83-E172-5396-0FA2-825472008554}.Release.ActiveCfg = Release|Win32
- {51B17C83-E172-5396-0FA2-825472008554}.Release.Build.0 = Release|Win32
- {2B75C833-17D2-4956-A23F-820854254175}.Debug.ActiveCfg = Debug|Win32
- {2B75C833-17D2-4956-A23F-820854254175}.Debug.Build.0 = Debug|Win32
- {2B75C833-17D2-4956-A23F-820854254175}.Release.ActiveCfg = Release|Win32
- {2B75C833-17D2-4956-A23F-820854254175}.Release.Build.0 = Release|Win32
- {283AD375-7D12-5866-23BF-854308651275}.Debug.ActiveCfg = Debug|Win32
- {283AD375-7D12-5866-23BF-854308651275}.Debug.Build.0 = Debug|Win32
- {283AD375-7D12-5866-23BF-854308651275}.Release.ActiveCfg = Release|Win32
- {283AD375-7D12-5866-23BF-854308651275}.Release.Build.0 = Release|Win32
- {57C832B1-17D2-9537-FA12-827220448554}.Debug.ActiveCfg = Debug|Win32
- {57C832B1-17D2-9537-FA12-827220448554}.Debug.Build.0 = Debug|Win32
- {57C832B1-17D2-9537-FA12-827220448554}.Release.ActiveCfg = Release|Win32
- {57C832B1-17D2-9537-FA12-827220448554}.Release.Build.0 = Release|Win32
- {536C8251-7E12-9537-A1E2-822073258554}.Debug.ActiveCfg = Debug|Win32
- {536C8251-7E12-9537-A1E2-822073258554}.Debug.Build.0 = Debug|Win32
- {536C8251-7E12-9537-A1E2-822073258554}.Release.ActiveCfg = Release|Win32
- {536C8251-7E12-9537-A1E2-822073258554}.Release.Build.0 = Release|Win32
- {83258CB1-127E-9375-F872-8324A1054454}.Debug.ActiveCfg = Debug|Win32
- {83258CB1-127E-9375-F872-8324A1054454}.Debug.Build.0 = Debug|Win32
- {83258CB1-127E-9375-F872-8324A1054454}.Release.ActiveCfg = Release|Win32
- {83258CB1-127E-9375-F872-8324A1054454}.Release.Build.0 = Release|Win32
- {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Debug.ActiveCfg = Debug|Win32
- {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Debug.Build.0 = Debug|Win32
- {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Release.ActiveCfg = Release|Win32
- {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Release.Build.0 = Release|Win32
- {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.ActiveCfg = Debug|Win32
- {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.Build.0 = Debug|Win32
- {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.ActiveCfg = Release|Win32
- {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
- {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Debug.ActiveCfg = Debug|Win32
- {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Debug.Build.0 = Debug|Win32
- {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Release.ActiveCfg = Release|Win32
- {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Release.Build.0 = Release|Win32
- {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Debug.ActiveCfg = Debug|Win32
- {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Debug.Build.0 = Debug|Win32
- {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Release.ActiveCfg = Release|Win32
- {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Release.Build.0 = Release|Win32
- {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Debug.ActiveCfg = Debug|Win32
- {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Debug.Build.0 = Debug|Win32
- {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Release.ActiveCfg = Release|Win32
- {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Release.Build.0 = Release|Win32
- {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Debug.ActiveCfg = Debug|Win32
- {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Debug.Build.0 = Debug|Win32
- {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Release.ActiveCfg = Release|Win32
- {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Release.Build.0 = Release|Win32
- {8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.ActiveCfg = Debug|Win32
- {8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.Build.0 = Debug|Win32
- {8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.ActiveCfg = Release|Win32
- {8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.Build.0 = Release|Win32
- {58C183CE-6203-FE12-A237-BA8976695960}.Debug.ActiveCfg = Debug|Win32
- {58C183CE-6203-FE12-A237-BA8976695960}.Debug.Build.0 = Debug|Win32
- {58C183CE-6203-FE12-A237-BA8976695960}.Release.ActiveCfg = Release|Win32
- {58C183CE-6203-FE12-A237-BA8976695960}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.Build.0 = Release|Win32
- {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.ActiveCfg = Debug|Win32
- {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.Build.0 = Debug|Win32
- {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.ActiveCfg = Release|Win32
- {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.Build.0 = Release|Win32
- {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.ActiveCfg = Debug|Win32
- {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.Build.0 = Debug|Win32
- {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.ActiveCfg = Release|Win32
- {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Release.Build.0 = Release|Win32
- {58C1B183-9026-4E12-00F2-001200540054}.Debug.ActiveCfg = Debug|Win32
- {58C1B183-9026-4E12-00F2-001200540054}.Debug.Build.0 = Debug|Win32
- {58C1B183-9026-4E12-00F2-001200540054}.Release.ActiveCfg = Release|Win32
- {58C1B183-9026-4E12-00F2-001200540054}.Release.Build.0 = Release|Win32
- {5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.ActiveCfg = Debug|Win32
- {5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.Build.0 = Debug|Win32
- {5E18CC83-6092-48FE-A677-B832A0D3A650}.Release.ActiveCfg = Release|Win32
- {5E18CC83-6092-48FE-A677-B832A0D3A650}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Release.Build.0 = Release|Win32
- {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Debug.Build.0 = Debug|Win32
- {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Release.ActiveCfg = Release|Win32
- {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Release.Build.0 = Release|Win32
- {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Debug.ActiveCfg = Debug|Win32
- {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Debug.Build.0 = Debug|Win32
- {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Release.ActiveCfg = Release|Win32
- {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Release.Build.0 = Release|Win32
- {58C1B183-9260-4E8F-F200-000000000041}.Debug.ActiveCfg = Debug|Win32
- {58C1B183-9260-4E8F-F200-000000000041}.Debug.Build.0 = Debug|Win32
- {58C1B183-9260-4E8F-F200-000000000041}.Release.ActiveCfg = Release|Win32
- {58C1B183-9260-4E8F-F200-000000000041}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A677-BA0D3A832640}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A677-BA0D3A832640}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A677-BA0D3A832640}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A677-BA0D3A832640}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.Build.0 = Release|Win32
- {5821C383-6092-12FE-A877-BA0D33467633}.Debug.ActiveCfg = Debug|Win32
- {5821C383-6092-12FE-A877-BA0D33467633}.Debug.Build.0 = Debug|Win32
- {5821C383-6092-12FE-A877-BA0D33467633}.Release.ActiveCfg = Release|Win32
- {5821C383-6092-12FE-A877-BA0D33467633}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.Build.0 = Release|Win32
- {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Debug.ActiveCfg = Debug|Win32
- {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Debug.Build.0 = Debug|Win32
- {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Release.ActiveCfg = Release|Win32
- {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Release.Build.0 = Release|Win32
- {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Debug.ActiveCfg = Debug|Win32
- {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Debug.Build.0 = Debug|Win32
- {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Release.ActiveCfg = Release|Win32
- {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Release.Build.0 = Release|Win32
- {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Debug.ActiveCfg = Debug|Win32
- {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Debug.Build.0 = Debug|Win32
- {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Release.ActiveCfg = Release|Win32
- {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Release.Build.0 = Release|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.ActiveCfg = Debug|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.Build.0 = Debug|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.ActiveCfg = Release|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.Build.0 = Release|Win32
- {0000058C-0000-0000-0000-000000000021}.Debug.ActiveCfg = Debug|Win32
- {0000058C-0000-0000-0000-000000000021}.Debug.Build.0 = Debug|Win32
- {0000058C-0000-0000-0000-000000000021}.Release.ActiveCfg = Release|Win32
- {0000058C-0000-0000-0000-000000000021}.Release.Build.0 = Release|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.ActiveCfg = Debug|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.Build.0 = Debug|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.ActiveCfg = Release|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.Build.0 = Release|Win32
- {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.ActiveCfg = Debug|Win32
- {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.Build.0 = Debug|Win32
- {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.ActiveCfg = Release|Win32
- {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.Build.0 = Release|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.ActiveCfg = Debug|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.Build.0 = Debug|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.ActiveCfg = Release|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.Build.0 = Release|Win32
- {5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.ActiveCfg = Debug|Win32
- {5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.Build.0 = Debug|Win32
- {5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.ActiveCfg = Release|Win32
- {5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.Build.0 = Release|Win32
- {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.ActiveCfg = Debug|Win32
- {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.Build.0 = Debug|Win32
- {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.ActiveCfg = Release|Win32
- {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.Build.0 = Release|Win32
- {4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.ActiveCfg = Debug|Win32
- {4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.Build.0 = Debug|Win32
- {4E887AC3-F8EA-6923-A744-C264A398C913}.Release.ActiveCfg = Release|Win32
- {4E887AC3-F8EA-6923-A744-C264A398C913}.Release.Build.0 = Release|Win32
- {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.ActiveCfg = Debug|Win32
- {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.Build.0 = Debug|Win32
- {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.ActiveCfg = Release|Win32
- {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.Build.0 = Release|Win32
- {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.ActiveCfg = Debug|Win32
- {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.Build.0 = Debug|Win32
- {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Release.ActiveCfg = Release|Win32
- {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Release.Build.0 = Release|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.ActiveCfg = Debug|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.Build.0 = Debug|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.ActiveCfg = Release|Win32
- {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.Build.0 = Release|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.ActiveCfg = Debug|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.Build.0 = Debug|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.ActiveCfg = Release|Win32
- {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.Build.0 = Release|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
- {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
- {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Debug.ActiveCfg = Debug|Win32
- {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Debug.Build.0 = Debug|Win32
- {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Release.ActiveCfg = Release|Win32
- {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Release.Build.0 = Release|Win32
- {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Debug.ActiveCfg = Debug|Win32
- {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Debug.Build.0 = Debug|Win32
- {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Release.ActiveCfg = Release|Win32
- {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Release.Build.0 = Release|Win32
- {9C185DF3-B75F-1928-8F6D-735108AABE62}.Debug.ActiveCfg = Debug|Win32
- {9C185DF3-B75F-1928-8F6D-735108AABE62}.Debug.Build.0 = Debug|Win32
- {9C185DF3-B75F-1928-8F6D-735108AABE62}.Release.ActiveCfg = Release|Win32
- {9C185DF3-B75F-1928-8F6D-735108AABE62}.Release.Build.0 = Release|Win32
- {918C5DF3-1928-B73F-F626-7358518CBE62}.Debug.ActiveCfg = Debug|Win32
- {918C5DF3-1928-B73F-F626-7358518CBE62}.Debug.Build.0 = Debug|Win32
- {918C5DF3-1928-B73F-F626-7358518CBE62}.Release.ActiveCfg = Release|Win32
- {918C5DF3-1928-B73F-F626-7358518CBE62}.Release.Build.0 = Release|Win32
- {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Debug.ActiveCfg = Debug|Win32
- {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Debug.Build.0 = Debug|Win32
- {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Release.ActiveCfg = Release|Win32
- {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Release.Build.0 = Release|Win32
- {9285DFD3-1928-F662-CB73-73518CB53A62}.Debug.ActiveCfg = Debug|Win32
- {9285DFD3-1928-F662-CB73-73518CB53A62}.Debug.Build.0 = Debug|Win32
- {9285DFD3-1928-F662-CB73-73518CB53A62}.Release.ActiveCfg = Release|Win32
- {9285DFD3-1928-F662-CB73-73518CB53A62}.Release.Build.0 = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Debug.ActiveCfg = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Debug.Build.0 = Debug|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Release.ActiveCfg = Release|Win32
- {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Release.Build.0 = Release|Win32
- {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Debug.ActiveCfg = Debug|Win32
- {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Debug.Build.0 = Debug|Win32
- {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Release.ActiveCfg = Release|Win32
- {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Release.Build.0 = Release|Win32
- {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Debug.ActiveCfg = Debug|Win32
- {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Debug.Build.0 = Debug|Win32
- {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Release.ActiveCfg = Release|Win32
- {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Release.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
- EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_mapping_test", "shared_memory_mappable_test.vcproj", "{5CE18C83-6025-36FE-A4F7-BA09176D3A11}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_test", "shared_memory_test.vcproj", "{5E2838CC-0916-8F4E-A4F7-93506BA0D310}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_ptr_test", "shared_ptr_test.vcproj", "{5371C383-6092-1238-A877-BAEB37867609}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist_test", "slist_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string_test", "string_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D4A792607}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_test", "tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792606}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upgradable_mutex_test", "upgradable_mutex.vcproj", "{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "user_buffer_test", "user_buffer_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792603}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vectorstream_test", "vectorstream_test.vcproj", "{58CCE183-6032-12FE-A4F7-BA893A767601}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_condition_test", "named_condition_test.vcproj", "{58CC2563-6092-48FE-FAF7-BA046A792658}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexA", "doc_anonymous_mutexA.vcproj", "{58C1B183-9026-4E63-12F2-005412200054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexB", "doc_anonymous_mutexB.vcproj", "{58C1B183-9026-4E63-12F2-005202441254}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_mutex", "doc_named_mutex.vcproj", "{58C181B3-9516-463E-2F12-122155400054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionA", "doc_anonymous_conditionA.vcproj", "{5C1B8183-0296-4F83-1F22-001005220544}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionB", "doc_anonymous_conditionB.vcproj", "{58C1FE83-2906-E643-2F12-024410052254}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_conditionA", "doc_named_conditionA.vcproj", "{58EB1CB3-1354-364E-12F2-154356612054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_conditionB", "doc_named_conditionB.vcproj", "{58181CB3-5134-634E-12F2-155435622054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreA", "doc_anonymous_semaphoreA.vcproj", "{5CB81183-29FB-F843-24FF-022050100544}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreB", "doc_anonymous_semaphoreB.vcproj", "{58FBE8C3-9026-FAB2-E643-000522441254}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_upgradable_mutex_test", "named_upgradable_mutex.vcproj", "{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexA", "doc_anonymous_upgradable_mutexA.vcproj", "{5C18831B-F162-FA96-E6C3-FA5122040054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexB", "doc_anonymous_upgradable_mutexB.vcproj", "{5C1B1043-1EFF-2793-4E63-245241283054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueA", "doc_message_queueA.vcproj", "{51B189C3-4E63-9026-12F2-12200AF54054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueB", "doc_message_queueB.vcproj", "{5C1B1813-12C2-0296-4E63-244549126520}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cont", "doc_cont.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792653}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_contA", "doc_contA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792652}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_contB", "doc_contB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792651}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory", "doc_shared_memory.vcproj", "{58CCE183-6032-12FE-4FC7-83A79F760B61}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unique_ptr_test", "unique_ptr_test.vcproj", "{571C3383-6092-A877-1238-B3786BAE7605}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_move_containers", "doc_move_containers.vcproj", "{58C1B183-0296-EA42-EF04-005120054104}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map_index_allocation_test", "map_index_allocation_test.vcproj", "{588CCD13-2962-83FE-F4B7-92230DB73629}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_map_index_allocation_test", "flat_map_index_allocation_test.vcproj", "{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iset_index_allocation_test", "iset_index_allocation_test.vcproj", "{58BD1CC3-6972-F3F7-84BE-0DB736035922}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iunordered_set_index_allocation_test", "iunordered_set_index_allocation_test.vcproj", "{5BD1C7C3-3F7F-6972-84BE-B731D9236035}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory2", "doc_shared_memory2.vcproj", "{58CE1D83-F31E-4FD7-6132-8A79F6307B61}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping2", "doc_file_mapping2.vcproj", "{5CE19883-F413-7EFD-6342-B79639F7B611}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping", "doc_file_mapping.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_map", "doc_map.vcproj", "{59CEC183-8192-8F6D-4FB7-BA260A79D352}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windows_shared_memory_test", "windows_shared_memory_test.vcproj", "{E385C28C-0691-4FA7-F48E-935BA0D06310}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windows_shared_memory_mapping_test", "windows_shared_memory_mapping_test.vcproj", "{518CE8C3-6512-FA75-46EF-B917A3A116D1}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_windows_shared_memory_test", "managed_windows_shared_memory.vcproj", "{5D18CE83-1926-7AE4-FE94-B606D9B23131}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adaptive_pool_test", "adaptive_pool_test.vcproj", "{58CE1D84-1962-4FE9-BA0D-A4F7973A4652}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_adaptive_pool_test", "cached_adaptive_pool_test.vcproj", "{5188E3CE-2964-F43E-FB87-B037AC692D59}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_adaptive_pool_test", "private_adaptive_pool_test.vcproj", "{5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_allocator", "doc_allocator.vcproj", "{581B1C83-4E12-9526-020F-012482540054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_node_allocator", "doc_node_allocator.vcproj", "{51B17C83-E172-5396-0FA2-825472008554}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_private_node_allocator", "doc_private_node_allocator.vcproj", "{2B75C833-17D2-4956-A23F-820854254175}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cached_node_allocator", "doc_cached_node_allocator.vcproj", "{283AD375-7D12-5866-23BF-854308651275}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_adaptive_pool", "doc_adaptive_pool.vcproj", "{57C832B1-17D2-9537-FA12-827220448554}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cached_adaptive_pool", "doc_cached_adaptive_pool.vcproj", "{536C8251-7E12-9537-A1E2-822073258554}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_private_adaptive_pool", "doc_private_adaptive_pool.vcproj", "{83258CB1-127E-9375-F872-8324A1054454}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_raw_allocation", "doc_managed_raw_allocation.vcproj", "{5198EFC3-2731-F34E-4FD8-1859AC94F761}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_aligned_allocation", "doc_managed_aligned_allocation.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_interprocesslib", "interprocesslib.vcproj", "{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory", "doc_windows_shared_memory.vcproj", "{5E17C9C3-1362-2E1E-C84F-8A76B6739F21}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory2", "doc_windows_shared_memory2.vcproj", "{5E1D6C83-31DE-4F6F-6132-87A9FB663041}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adaptive_node_pool_test", "adaptive_node_pool_test.vcproj", "{CD57C283-1862-42FE-BF87-B96D3A2A7912}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_pool_test", "node_pool_test.vcproj", "{8A519DC3-6092-A4FE-F748-BA91328D6522}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deque_test", "deque_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792655}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "barrier_test", "barrier_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792661}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bufferstream_test", "bufferstream_test.vcproj", "{58C183CE-6203-FE12-A237-BA8976695960}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_node_allocator_test", "cached_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792659}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_node_allocator_test", "private_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792620}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_allocator_test", "node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792622}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_mutex_test", "named_mutex_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792625}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_recursive_mutex_test", "named_recursive_mutex_test.vcproj", "{5C83CE18-4F48-A7FE-6092-B7920AD3A624}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_semaphore_test", "named_semaphore_test.vcproj", "{58CCE283-1609-48FE-A4F7-BA0D3A793523}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_heap_memory", "doc_managed_heap_memory.vcproj", "{58CCE183-6092-48FE-A4FC-BA0D3A792647}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "allocexcept_test", "allocexcept_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792662}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "condition_test", "condition_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792658}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "data_test", "data_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792657}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_bufferstream", "doc_bufferstream.vcproj", "{58C1B183-9026-4E12-00F2-001200540054}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_intrusive", "doc_intrusive.vcproj", "{5E18CC83-6092-48FE-A677-B832A0D3A650}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_ipc_messageA", "doc_ipc_messageA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792649}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_ipc_messageB", "doc_ipc_messageB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792648}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_mapped_file", "doc_managed_mapped_file.vcproj", "{58CCE183-5091-48FE-A4FC-BA0D3A792446}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_allocA", "doc_named_allocA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792645}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_allocB", "doc_named_allocB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792644}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_offset_ptr", "doc_offset_ptr.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792643}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_scoped_ptr", "doc_scoped_ptr.vcproj", "{58CC8E13-0962-8F4E-77A6-BD3A6832A042}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_vectorstream", "doc_vectorstream.vcproj", "{58C1B183-9260-4E8F-F200-000000000041}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_where_allocate", "doc_where_allocate.vcproj", "{58CCE183-6092-48FE-A677-BA0D3A832640}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_mapping_test", "file_mapping_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792638}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_tree_test", "flat_tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792637}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intrusive_ptr_test", "intrusive_ptr_test.vcproj", "{5821C383-6092-12FE-A877-BA0D33467633}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list_test", "list_ex.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_mapped_file_test", "managed_mapped_file_test.vcproj", "{5CCE1883-0926-F7A4-8FE4-BA0606D92331}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapped_file_test", "mapped_file_test.vcproj", "{5C6D9CE1-2609-F7A4-8FE4-BA0883602330}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memory_algorithm_test", "memory_algorithm_test.vcproj", "{58E18CC3-6092-8F4E-A3E7-A792230D3629}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "message_queue_test", "message_queue.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792628}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mutex_test", "mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A27}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "null_index_test", "null_index_test.vcproj", "{0000058C-0000-0000-0000-000000000021}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_mutex_test", "recursive_mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A14}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "semaphore_test", "semaphore_test.vcproj", "{5CE28C83-48FE-1676-4FA7-B50D3A76A013}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_multiple_allocation", "doc_managed_multiple_allocation.vcproj", "{818C43EE-3561-F3AE-4FD7-8A2076E76A31}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_allocation_command", "doc_managed_allocation_command.vcproj", "{5189DEA3-3261-F33E-47ED-83BC69F66061}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_construction_info", "doc_managed_construction_info.vcproj", "{5C82D1D3-3861-3AF1-03EF-89AED4716761}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr_explicit", "doc_shared_ptr_explicit.vcproj", "{4E887AC3-F8EA-6923-A744-C264A398C913}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_unique_ptr", "doc_unique_ptr.vcproj", "{589C2EB3-8A57-1862-F4EA-A6B14C7329A3}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr", "doc_shared_ptr.vcproj", "{51CE89A3-6092-F4EA-48A7-B4B9AC326093}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_shared_memory_test", "managed_shared_memory.vcproj", "{58DF28E3-0926-F47A-E28A-B03A4D619631}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_grow", "doc_managed_grow.vcproj", "{818C43EE-3561-F3AE-4FD7-8A2076E76A31}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "offset_ptr_test", "offset_ptr_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_shared_memory", "doc_anonymous_shared_memory.vcproj", "{6DE178C3-12FE-6032-4FC7-879B63B9F651}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "anonymous_shared_memory_test", "anonymous_shared_memory_test.vcproj", "{58DE8A13-4FA7-6252-36FE-B3A0A6D92812}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_unordered_map", "doc_unordered_map.vcproj", "{9C185DF3-B75F-1928-8F6D-735108AABE62}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_multi_index", "doc_multi_index.vcproj", "{918C5DF3-1928-B73F-F626-7358518CBE62}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unordered_test", "unordered_test.vcproj", "{C3CE1183-09F2-A46A-4FE6-D06BA7923A02}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_index_test", "multi_index_test.vcproj", "{9285DFD3-1928-F662-CB73-73518CB53A62}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_lock_test", "file_lock_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792639}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intersegment_ptr_test", "intersegment_ptr_test.vcproj", "{5E81CD01-4FA2-2A96-84FE-DA631CA20962}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_copy_on_write", "doc_managed_copy_on_write.vcproj", "{8E0C437E-3613-FD46-F3AE-876A0731CA85}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "enable_shared_from_this_test", "enable_shared_from_this_test.vcproj", "{571C3483-87C7-6921-1238-B086B3E766C9}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_complex_map", "doc_complex_map.vcproj", "{5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.ActiveCfg = Debug|Win32
+ {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.Build.0 = Debug|Win32
+ {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.ActiveCfg = Release|Win32
+ {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.Build.0 = Release|Win32
+ {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.ActiveCfg = Debug|Win32
+ {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.Build.0 = Debug|Win32
+ {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.ActiveCfg = Release|Win32
+ {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.Build.0 = Release|Win32
+ {5371C383-6092-1238-A877-BAEB37867609}.Debug.ActiveCfg = Debug|Win32
+ {5371C383-6092-1238-A877-BAEB37867609}.Debug.Build.0 = Debug|Win32
+ {5371C383-6092-1238-A877-BAEB37867609}.Release.ActiveCfg = Release|Win32
+ {5371C383-6092-1238-A877-BAEB37867609}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.Build.0 = Release|Win32
+ {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.ActiveCfg = Debug|Win32
+ {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.Build.0 = Debug|Win32
+ {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.ActiveCfg = Release|Win32
+ {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.Build.0 = Release|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.Build.0 = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.ActiveCfg = Debug|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.Build.0 = Debug|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.ActiveCfg = Release|Win32
+ {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.Build.0 = Release|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Debug.Build.0 = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Release.ActiveCfg = Release|Win32
+ {58C1B183-9026-4E63-12F2-005412200054}.Release.Build.0 = Release|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Debug.Build.0 = Debug|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Release.ActiveCfg = Release|Win32
+ {58C1B183-9026-4E63-12F2-005202441254}.Release.Build.0 = Release|Win32
+ {58C181B3-9516-463E-2F12-122155400054}.Debug.ActiveCfg = Debug|Win32
+ {58C181B3-9516-463E-2F12-122155400054}.Debug.Build.0 = Debug|Win32
+ {58C181B3-9516-463E-2F12-122155400054}.Release.ActiveCfg = Release|Win32
+ {58C181B3-9516-463E-2F12-122155400054}.Release.Build.0 = Release|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Debug.ActiveCfg = Debug|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Debug.Build.0 = Debug|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Release.ActiveCfg = Release|Win32
+ {5C1B8183-0296-4F83-1F22-001005220544}.Release.Build.0 = Release|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Debug.ActiveCfg = Debug|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Debug.Build.0 = Debug|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Release.ActiveCfg = Release|Win32
+ {58C1FE83-2906-E643-2F12-024410052254}.Release.Build.0 = Release|Win32
+ {58EB1CB3-1354-364E-12F2-154356612054}.Debug.ActiveCfg = Debug|Win32
+ {58EB1CB3-1354-364E-12F2-154356612054}.Debug.Build.0 = Debug|Win32
+ {58EB1CB3-1354-364E-12F2-154356612054}.Release.ActiveCfg = Release|Win32
+ {58EB1CB3-1354-364E-12F2-154356612054}.Release.Build.0 = Release|Win32
+ {58181CB3-5134-634E-12F2-155435622054}.Debug.ActiveCfg = Debug|Win32
+ {58181CB3-5134-634E-12F2-155435622054}.Debug.Build.0 = Debug|Win32
+ {58181CB3-5134-634E-12F2-155435622054}.Release.ActiveCfg = Release|Win32
+ {58181CB3-5134-634E-12F2-155435622054}.Release.Build.0 = Release|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Debug.ActiveCfg = Debug|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Debug.Build.0 = Debug|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Release.ActiveCfg = Release|Win32
+ {5CB81183-29FB-F843-24FF-022050100544}.Release.Build.0 = Release|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.ActiveCfg = Debug|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.Build.0 = Debug|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Release.ActiveCfg = Release|Win32
+ {58FBE8C3-9026-FAB2-E643-000522441254}.Release.Build.0 = Release|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.ActiveCfg = Debug|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.Build.0 = Debug|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.ActiveCfg = Release|Win32
+ {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.Build.0 = Release|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.ActiveCfg = Debug|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.Build.0 = Debug|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.ActiveCfg = Release|Win32
+ {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.Build.0 = Release|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.ActiveCfg = Debug|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.Build.0 = Debug|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Release.ActiveCfg = Release|Win32
+ {5C1B1043-1EFF-2793-4E63-245241283054}.Release.Build.0 = Release|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.ActiveCfg = Debug|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.Build.0 = Debug|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Release.ActiveCfg = Release|Win32
+ {51B189C3-4E63-9026-12F2-12200AF54054}.Release.Build.0 = Release|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Debug.ActiveCfg = Debug|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Debug.Build.0 = Debug|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Release.ActiveCfg = Release|Win32
+ {5C1B1813-12C2-0296-4E63-244549126520}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.Build.0 = Release|Win32
+ {58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.Build.0 = Release|Win32
+ {571C3383-6092-A877-1238-B3786BAE7605}.Debug.ActiveCfg = Debug|Win32
+ {571C3383-6092-A877-1238-B3786BAE7605}.Debug.Build.0 = Debug|Win32
+ {571C3383-6092-A877-1238-B3786BAE7605}.Release.ActiveCfg = Release|Win32
+ {571C3383-6092-A877-1238-B3786BAE7605}.Release.Build.0 = Release|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Debug.Build.0 = Debug|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Release.ActiveCfg = Release|Win32
+ {58C1B183-0296-EA42-EF04-005120054104}.Release.Build.0 = Release|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.ActiveCfg = Debug|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.Build.0 = Debug|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.ActiveCfg = Release|Win32
+ {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.Build.0 = Release|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.ActiveCfg = Debug|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.Build.0 = Debug|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.ActiveCfg = Release|Win32
+ {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.Build.0 = Release|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.ActiveCfg = Debug|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.Build.0 = Debug|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.ActiveCfg = Release|Win32
+ {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.Build.0 = Release|Win32
+ {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.ActiveCfg = Debug|Win32
+ {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.Build.0 = Debug|Win32
+ {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.ActiveCfg = Release|Win32
+ {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.Build.0 = Release|Win32
+ {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Debug.ActiveCfg = Debug|Win32
+ {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Debug.Build.0 = Debug|Win32
+ {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Release.ActiveCfg = Release|Win32
+ {58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Release.Build.0 = Release|Win32
+ {5CE19883-F413-7EFD-6342-B79639F7B611}.Debug.ActiveCfg = Debug|Win32
+ {5CE19883-F413-7EFD-6342-B79639F7B611}.Debug.Build.0 = Debug|Win32
+ {5CE19883-F413-7EFD-6342-B79639F7B611}.Release.ActiveCfg = Release|Win32
+ {5CE19883-F413-7EFD-6342-B79639F7B611}.Release.Build.0 = Release|Win32
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.ActiveCfg = Debug|Win32
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.Build.0 = Debug|Win32
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.ActiveCfg = Release|Win32
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.ActiveCfg = Debug|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.Build.0 = Debug|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.ActiveCfg = Release|Win32
+ {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.Build.0 = Release|Win32
+ {E385C28C-0691-4FA7-F48E-935BA0D06310}.Debug.ActiveCfg = Debug|Win32
+ {E385C28C-0691-4FA7-F48E-935BA0D06310}.Debug.Build.0 = Debug|Win32
+ {E385C28C-0691-4FA7-F48E-935BA0D06310}.Release.ActiveCfg = Release|Win32
+ {E385C28C-0691-4FA7-F48E-935BA0D06310}.Release.Build.0 = Release|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Debug.ActiveCfg = Debug|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Debug.Build.0 = Debug|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Release.ActiveCfg = Release|Win32
+ {518CE8C3-6512-FA75-46EF-B917A3A116D1}.Release.Build.0 = Release|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Debug.ActiveCfg = Debug|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Debug.Build.0 = Debug|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Release.ActiveCfg = Release|Win32
+ {5D18CE83-1926-7AE4-FE94-B606D9B23131}.Release.Build.0 = Release|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Debug.ActiveCfg = Debug|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Debug.Build.0 = Debug|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Release.ActiveCfg = Release|Win32
+ {58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Release.Build.0 = Release|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Debug.ActiveCfg = Debug|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Debug.Build.0 = Debug|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Release.ActiveCfg = Release|Win32
+ {5188E3CE-2964-F43E-FB87-B037AC692D59}.Release.Build.0 = Release|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Debug.ActiveCfg = Debug|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Debug.Build.0 = Debug|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Release.ActiveCfg = Release|Win32
+ {5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Release.Build.0 = Release|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Debug.ActiveCfg = Debug|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Debug.Build.0 = Debug|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Release.ActiveCfg = Release|Win32
+ {581B1C83-4E12-9526-020F-012482540054}.Release.Build.0 = Release|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Debug.ActiveCfg = Debug|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Debug.Build.0 = Debug|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Release.ActiveCfg = Release|Win32
+ {51B17C83-E172-5396-0FA2-825472008554}.Release.Build.0 = Release|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Debug.ActiveCfg = Debug|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Debug.Build.0 = Debug|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Release.ActiveCfg = Release|Win32
+ {2B75C833-17D2-4956-A23F-820854254175}.Release.Build.0 = Release|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.Debug.ActiveCfg = Debug|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.Debug.Build.0 = Debug|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.Release.ActiveCfg = Release|Win32
+ {283AD375-7D12-5866-23BF-854308651275}.Release.Build.0 = Release|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Debug.ActiveCfg = Debug|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Debug.Build.0 = Debug|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Release.ActiveCfg = Release|Win32
+ {57C832B1-17D2-9537-FA12-827220448554}.Release.Build.0 = Release|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Debug.ActiveCfg = Debug|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Debug.Build.0 = Debug|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Release.ActiveCfg = Release|Win32
+ {536C8251-7E12-9537-A1E2-822073258554}.Release.Build.0 = Release|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Debug.ActiveCfg = Debug|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Debug.Build.0 = Debug|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Release.ActiveCfg = Release|Win32
+ {83258CB1-127E-9375-F872-8324A1054454}.Release.Build.0 = Release|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Debug.ActiveCfg = Debug|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Debug.Build.0 = Debug|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Release.ActiveCfg = Release|Win32
+ {5198EFC3-2731-F34E-4FD8-1859AC94F761}.Release.Build.0 = Release|Win32
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.ActiveCfg = Debug|Win32
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.Build.0 = Debug|Win32
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.ActiveCfg = Release|Win32
+ {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
+ {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Debug.ActiveCfg = Debug|Win32
+ {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Debug.Build.0 = Debug|Win32
+ {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Release.ActiveCfg = Release|Win32
+ {FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Release.Build.0 = Release|Win32
+ {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Debug.ActiveCfg = Debug|Win32
+ {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Debug.Build.0 = Debug|Win32
+ {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Release.ActiveCfg = Release|Win32
+ {5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Release.Build.0 = Release|Win32
+ {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Debug.ActiveCfg = Debug|Win32
+ {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Debug.Build.0 = Debug|Win32
+ {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Release.ActiveCfg = Release|Win32
+ {5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Release.Build.0 = Release|Win32
+ {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Debug.ActiveCfg = Debug|Win32
+ {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Debug.Build.0 = Debug|Win32
+ {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Release.ActiveCfg = Release|Win32
+ {CD57C283-1862-42FE-BF87-B96D3A2A7912}.Release.Build.0 = Release|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.ActiveCfg = Debug|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.Build.0 = Debug|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.ActiveCfg = Release|Win32
+ {8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.Build.0 = Release|Win32
+ {58C183CE-6203-FE12-A237-BA8976695960}.Debug.ActiveCfg = Debug|Win32
+ {58C183CE-6203-FE12-A237-BA8976695960}.Debug.Build.0 = Debug|Win32
+ {58C183CE-6203-FE12-A237-BA8976695960}.Release.ActiveCfg = Release|Win32
+ {58C183CE-6203-FE12-A237-BA8976695960}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792659}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.Build.0 = Release|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.ActiveCfg = Debug|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.Build.0 = Debug|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.ActiveCfg = Release|Win32
+ {5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.Build.0 = Release|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.ActiveCfg = Debug|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.Build.0 = Debug|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.ActiveCfg = Release|Win32
+ {58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4FC-BA0D3A792647}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792658}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792657}.Release.Build.0 = Release|Win32
+ {58C1B183-9026-4E12-00F2-001200540054}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-9026-4E12-00F2-001200540054}.Debug.Build.0 = Debug|Win32
+ {58C1B183-9026-4E12-00F2-001200540054}.Release.ActiveCfg = Release|Win32
+ {58C1B183-9026-4E12-00F2-001200540054}.Release.Build.0 = Release|Win32
+ {5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.ActiveCfg = Debug|Win32
+ {5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.Build.0 = Debug|Win32
+ {5E18CC83-6092-48FE-A677-B832A0D3A650}.Release.ActiveCfg = Release|Win32
+ {5E18CC83-6092-48FE-A677-B832A0D3A650}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792649}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792648}.Release.Build.0 = Release|Win32
+ {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Debug.Build.0 = Debug|Win32
+ {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Release.ActiveCfg = Release|Win32
+ {58CCE183-5091-48FE-A4FC-BA0D3A792446}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792645}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792644}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792643}.Release.Build.0 = Release|Win32
+ {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Debug.ActiveCfg = Debug|Win32
+ {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Debug.Build.0 = Debug|Win32
+ {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Release.ActiveCfg = Release|Win32
+ {58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Release.Build.0 = Release|Win32
+ {58C1B183-9260-4E8F-F200-000000000041}.Debug.ActiveCfg = Debug|Win32
+ {58C1B183-9260-4E8F-F200-000000000041}.Debug.Build.0 = Debug|Win32
+ {58C1B183-9260-4E8F-F200-000000000041}.Release.ActiveCfg = Release|Win32
+ {58C1B183-9260-4E8F-F200-000000000041}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A677-BA0D3A832640}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A677-BA0D3A832640}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A677-BA0D3A832640}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A677-BA0D3A832640}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792638}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.Build.0 = Release|Win32
+ {5821C383-6092-12FE-A877-BA0D33467633}.Debug.ActiveCfg = Debug|Win32
+ {5821C383-6092-12FE-A877-BA0D33467633}.Debug.Build.0 = Debug|Win32
+ {5821C383-6092-12FE-A877-BA0D33467633}.Release.ActiveCfg = Release|Win32
+ {5821C383-6092-12FE-A877-BA0D33467633}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.Build.0 = Release|Win32
+ {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Debug.ActiveCfg = Debug|Win32
+ {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Debug.Build.0 = Debug|Win32
+ {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Release.ActiveCfg = Release|Win32
+ {5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Release.Build.0 = Release|Win32
+ {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Debug.ActiveCfg = Debug|Win32
+ {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Debug.Build.0 = Debug|Win32
+ {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Release.ActiveCfg = Release|Win32
+ {5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Release.Build.0 = Release|Win32
+ {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Debug.ActiveCfg = Debug|Win32
+ {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Debug.Build.0 = Debug|Win32
+ {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Release.ActiveCfg = Release|Win32
+ {58E18CC3-6092-8F4E-A3E7-A792230D3629}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792628}.Release.Build.0 = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.ActiveCfg = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.Build.0 = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.ActiveCfg = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.Build.0 = Release|Win32
+ {0000058C-0000-0000-0000-000000000021}.Debug.ActiveCfg = Debug|Win32
+ {0000058C-0000-0000-0000-000000000021}.Debug.Build.0 = Debug|Win32
+ {0000058C-0000-0000-0000-000000000021}.Release.ActiveCfg = Release|Win32
+ {0000058C-0000-0000-0000-000000000021}.Release.Build.0 = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.ActiveCfg = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.Build.0 = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.ActiveCfg = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.Build.0 = Release|Win32
+ {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.ActiveCfg = Debug|Win32
+ {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.Build.0 = Debug|Win32
+ {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.ActiveCfg = Release|Win32
+ {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.Build.0 = Release|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.ActiveCfg = Debug|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.Build.0 = Debug|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.ActiveCfg = Release|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.Build.0 = Release|Win32
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.ActiveCfg = Debug|Win32
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.Build.0 = Debug|Win32
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.ActiveCfg = Release|Win32
+ {5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.Build.0 = Release|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.ActiveCfg = Debug|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.Build.0 = Debug|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.ActiveCfg = Release|Win32
+ {5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.Build.0 = Release|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.ActiveCfg = Debug|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.Build.0 = Debug|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Release.ActiveCfg = Release|Win32
+ {4E887AC3-F8EA-6923-A744-C264A398C913}.Release.Build.0 = Release|Win32
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.ActiveCfg = Debug|Win32
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.Build.0 = Debug|Win32
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.ActiveCfg = Release|Win32
+ {589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.Build.0 = Release|Win32
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.ActiveCfg = Debug|Win32
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.Build.0 = Debug|Win32
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Release.ActiveCfg = Release|Win32
+ {51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Release.Build.0 = Release|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.ActiveCfg = Debug|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.Build.0 = Debug|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.ActiveCfg = Release|Win32
+ {58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.Build.0 = Release|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.ActiveCfg = Debug|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.Build.0 = Debug|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.ActiveCfg = Release|Win32
+ {818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.Build.0 = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
+ {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Debug.ActiveCfg = Debug|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Debug.Build.0 = Debug|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Release.ActiveCfg = Release|Win32
+ {6DE178C3-12FE-6032-4FC7-879B63B9F651}.Release.Build.0 = Release|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Debug.ActiveCfg = Debug|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Debug.Build.0 = Debug|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Release.ActiveCfg = Release|Win32
+ {58DE8A13-4FA7-6252-36FE-B3A0A6D92812}.Release.Build.0 = Release|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.Debug.ActiveCfg = Debug|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.Debug.Build.0 = Debug|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.Release.ActiveCfg = Release|Win32
+ {9C185DF3-B75F-1928-8F6D-735108AABE62}.Release.Build.0 = Release|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.Debug.ActiveCfg = Debug|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.Debug.Build.0 = Debug|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.Release.ActiveCfg = Release|Win32
+ {918C5DF3-1928-B73F-F626-7358518CBE62}.Release.Build.0 = Release|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Debug.ActiveCfg = Debug|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Debug.Build.0 = Debug|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Release.ActiveCfg = Release|Win32
+ {C3CE1183-09F2-A46A-4FE6-D06BA7923A02}.Release.Build.0 = Release|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Debug.ActiveCfg = Debug|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Debug.Build.0 = Debug|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Release.ActiveCfg = Release|Win32
+ {9285DFD3-1928-F662-CB73-73518CB53A62}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792639}.Release.Build.0 = Release|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Debug.ActiveCfg = Debug|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Debug.Build.0 = Debug|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Release.ActiveCfg = Release|Win32
+ {5E81CD01-4FA2-2A96-84FE-DA631CA20962}.Release.Build.0 = Release|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Debug.ActiveCfg = Debug|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Debug.Build.0 = Debug|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Release.ActiveCfg = Release|Win32
+ {8E0C437E-3613-FD46-F3AE-876A0731CA85}.Release.Build.0 = Release|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Debug.ActiveCfg = Debug|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Debug.Build.0 = Debug|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Release.ActiveCfg = Release|Win32
+ {571C3483-87C7-6921-1238-B086B3E766C9}.Release.Build.0 = Release|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Debug.ActiveCfg = Debug|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Debug.Build.0 = Debug|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Release.ActiveCfg = Release|Win32
+ {5C19CF83-4FB7-8219-8F6D-3BA9D2715A22}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal

Modified: branches/proto/v4/libs/interprocess/test/adaptive_node_pool_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/adaptive_node_pool_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/adaptive_node_pool_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,16 +10,18 @@
 #include <boost/interprocess/detail/config_begin.hpp>
 #include "node_pool_test.hpp"
 #include <boost/interprocess/allocators/detail/adaptive_node_pool.hpp>
-
 #include <vector>
 
+using namespace boost::interprocess;
+typedef managed_shared_memory::segment_manager segment_manager_t;
+
+//Explicit specialization to catch compilation errors
+template class detail::private_adaptive_node_pool_impl<segment_manager_t>;
+
 int main ()
 {
- using namespace boost::interprocess;
- typedef managed_shared_memory::segment_manager segment_manager;
-
    typedef detail::private_adaptive_node_pool
- <segment_manager, 4, 64, 64, 5> node_pool_t;
+ <segment_manager_t, 4, 64, 64, 5> node_pool_t;
 
    if(!test::test_all_node_pool<node_pool_t>())
       return 1;

Modified: branches/proto/v4/libs/interprocess/test/adaptive_pool_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/adaptive_pool_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/adaptive_pool_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,6 +32,8 @@
 //Explicit instantiations to catch compilation errors
 template class adaptive_pool<int, managed_shared_memory::segment_manager>;
 template class detail::adaptive_pool_v1<int, managed_shared_memory::segment_manager>;
+template class adaptive_pool<void, managed_shared_memory::segment_manager>;
+template class detail::adaptive_pool_v1<void, managed_shared_memory::segment_manager>;
 
 //Alias list types
 typedef list<int, shmem_node_allocator_t> MyShmList;

Modified: branches/proto/v4/libs/interprocess/test/cached_adaptive_pool_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/cached_adaptive_pool_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/cached_adaptive_pool_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -34,7 +34,8 @@
 //Explicit instantiations to catch compilation errors
 template class cached_adaptive_pool<int, managed_shared_memory::segment_manager>;
 template class detail::cached_adaptive_pool_v1<int, managed_shared_memory::segment_manager>;
-
+template class cached_adaptive_pool<void, managed_shared_memory::segment_manager>;
+template class detail::cached_adaptive_pool_v1<void, managed_shared_memory::segment_manager>;
 
 //Alias list types
 typedef list<int, cached_node_allocator_t> MyShmList;

Modified: branches/proto/v4/libs/interprocess/test/cached_node_allocator_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/cached_node_allocator_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/cached_node_allocator_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,6 +32,8 @@
 //Explicit instantiations to catch compilation errors
 template class cached_node_allocator<int, managed_shared_memory::segment_manager>;
 template class detail::cached_node_allocator_v1<int, managed_shared_memory::segment_manager>;
+template class cached_node_allocator<void, managed_shared_memory::segment_manager>;
+template class detail::cached_node_allocator_v1<void, managed_shared_memory::segment_manager>;
 
 //Alias list types
 typedef list<int, cached_node_allocator_t> MyShmList;

Modified: branches/proto/v4/libs/interprocess/test/deque_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/deque_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/deque_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -65,12 +65,12 @@
    {
    IntType move_me(1);
    stddeque->insert(stddeque->begin()+size/2, 50, 1);
- shmdeque->insert(shmdeque->begin()+size/2, 50, move(move_me));
+ shmdeque->insert(shmdeque->begin()+size/2, 50, detail::move_impl(move_me));
    if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
    }
    {
    IntType move_me(2);
- shmdeque->assign(shmdeque->size()/2, move(move_me));
+ shmdeque->assign(shmdeque->size()/2, detail::move_impl(move_me));
    stddeque->assign(stddeque->size()/2, 2);
    if(!test::CheckEqualContainers(shmdeque, stddeque)) return false;
    }
@@ -120,7 +120,7 @@
          int i;
          for(i = 0; i < max; ++i){
             IntType move_me(i);
- shmdeque->insert(shmdeque->end(), move(move_me));
+ shmdeque->insert(shmdeque->end(), detail::move_impl(move_me));
             stddeque->insert(stddeque->end(), i);
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return 1;
@@ -141,7 +141,7 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType move_me (-1);
- aux_vect[i] = move(move_me);
+ aux_vect[i] = detail::move_impl(move_me);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
@@ -164,7 +164,7 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType move_me(-1);
- aux_vect[i] = move(move_me);
+ aux_vect[i] = detail::move_impl(move_me);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
@@ -189,7 +189,7 @@
 
          for(i = 0; i < max; ++i){
             IntType move_me(i);
- shmdeque->insert(shmdeque->begin(), move(move_me));
+ shmdeque->insert(shmdeque->begin(), detail::move_impl(move_me));
             stddeque->insert(stddeque->begin(), i);
          }
          if(!test::CheckEqualContainers(shmdeque, stddeque)) return 1;

Modified: branches/proto/v4/libs/interprocess/test/dummy_test_allocator.hpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/dummy_test_allocator.hpp (original)
+++ branches/proto/v4/libs/interprocess/test/dummy_test_allocator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -115,7 +115,7 @@
                          size_type,
                          size_type,
                          size_type &, const pointer & = 0)
- { return std::pair<pointer, bool>(0, true); }
+ { return std::pair<pointer, bool>(pointer(0), true); }
 
    //!Returns maximum the number of objects the previously allocated memory
    //!pointed by p can hold.

Modified: branches/proto/v4/libs/interprocess/test/file_mapping_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/file_mapping_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/file_mapping_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -125,9 +125,9 @@
       {
          //Now test move semantics
          file_mapping mapping(test::get_process_id_name(), read_only);
- file_mapping move_ctor(move(mapping));
+ file_mapping move_ctor(detail::move_impl(mapping));
          file_mapping move_assign;
- move_assign = move(move_ctor);
+ move_assign = detail::move_impl(move_ctor);
       }
    }
    catch(std::exception &exc){

Modified: branches/proto/v4/libs/interprocess/test/iset_index_allocation_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/iset_index_allocation_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/iset_index_allocation_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,7 +7,6 @@
 // See http://www.boost.org/libs/interprocess for documentation.
 //
 //////////////////////////////////////////////////////////////////////////////
-
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/indexes/iset_index.hpp>
 #include "named_allocation_test_template.hpp"

Modified: branches/proto/v4/libs/interprocess/test/list_test.hpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/list_test.hpp (original)
+++ branches/proto/v4/libs/interprocess/test/list_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -36,7 +36,7 @@
       typedef typename MyShmList::value_type IntType;
       for(int i = 0; i < max; ++i){
          IntType move_me(i);
- shmlist->push_back(move(move_me));
+ shmlist->push_back(detail::move_impl(move_me));
          stdlist->push_back(i);
       }
       if(!CheckEqualContainers(shmlist, stdlist))
@@ -54,7 +54,7 @@
       typedef typename MyShmList::value_type IntType;
       for(int i = 0; i < max; ++i){
          IntType move_me(i);
- shmlist->push_front(move(move_me));
+ shmlist->push_front(detail::move_impl(move_me));
          stdlist->push_front(i);
       }
       if(!CheckEqualContainers(shmlist, stdlist))
@@ -136,7 +136,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = move(move_me);
+ aux_vect[i] = detail::move_impl(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -166,7 +166,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = move(move_me);
+ aux_vect[i] = detail::move_impl(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){

Modified: branches/proto/v4/libs/interprocess/test/managed_mapped_file_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/managed_mapped_file_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/managed_mapped_file_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -118,6 +118,15 @@
       }
    }
    {
+ //Map preexisting file again in copy-on-write
+ managed_mapped_file mfile(open_read_only, FileName);
+
+ //Check vector is still there
+ MyVect *mfile_vect = mfile.find<MyVect>("MyVector").first;
+ if(!mfile_vect)
+ return -1;
+ }
+ {
       std::size_t old_free_memory;
       {
          //Map preexisting file again in memory
@@ -194,9 +203,9 @@
       {
          //Now test move semantics
          managed_mapped_file original(open_only, FileName);
- managed_mapped_file move_ctor(move(original));
+ managed_mapped_file move_ctor(detail::move_impl(original));
          managed_mapped_file move_assign;
- move_assign = move(move_ctor);
+ move_assign = detail::move_impl(move_ctor);
       }
    }
 

Modified: branches/proto/v4/libs/interprocess/test/managed_shared_memory_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/managed_shared_memory_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/managed_shared_memory_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -114,6 +114,15 @@
       }
    }
    {
+ //Map preexisting shmem again in copy-on-write
+ managed_shared_memory shmem(open_read_only, ShmemName);
+
+ //Check vector is still there
+ MyVect *shmem_vect = shmem.find<MyVect>("MyVector").first;
+ if(!shmem_vect)
+ return -1;
+ }
+ {
       std::size_t old_free_memory;
       {
          //Map preexisting shmem again in memory
@@ -190,9 +199,9 @@
       {
          //Now test move semantics
          managed_shared_memory original(open_only, ShmemName);
- managed_shared_memory move_ctor(move(original));
+ managed_shared_memory move_ctor(detail::move_impl(original));
          managed_shared_memory move_assign;
- move_assign = move(move_ctor);
+ move_assign = detail::move_impl(move_ctor);
       }
    }
 

Modified: branches/proto/v4/libs/interprocess/test/managed_windows_shared_memory_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/managed_windows_shared_memory_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/managed_windows_shared_memory_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -113,6 +113,15 @@
                   return -1;
             }
          }
+ {
+ //Map preexisting shmem again in copy-on-write
+ managed_windows_shared_memory shmem(open_read_only, MemName);
+
+ //Check vector is still there
+ MyVect *shmem_vect = shmem.find<MyVect>("MyVector").first;
+ if(!shmem_vect)
+ return -1;
+ }
       
          //Destroy and check it is not present
          w_shm_new.destroy_ptr(w_shm_vect);
@@ -121,9 +130,9 @@
 
          //Now test move semantics
          managed_windows_shared_memory original(open_only, MemName);
- managed_windows_shared_memory move_ctor(move(original));
+ managed_windows_shared_memory move_ctor(detail::move_impl(original));
          managed_windows_shared_memory move_assign;
- move_assign = move(move_ctor);
+ move_assign = detail::move_impl(move_ctor);
       }
    }
 

Modified: branches/proto/v4/libs/interprocess/test/map_test.hpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/map_test.hpp (original)
+++ branches/proto/v4/libs/interprocess/test/map_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -115,9 +115,9 @@
 
       int i, j;
       for(i = 0; i < max; ++i){
- shmmap->insert(move(IntPairType (move(IntType(i)), move(IntType(i)))));
+ shmmap->insert(detail::move_impl(IntPairType (detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmap->insert(StdPairType(i, i));
- shmmultimap->insert(move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmultimap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmultimap->insert(StdPairType(i, i));
       }
 
@@ -232,9 +232,9 @@
       }
 
       for(i = 0; i < max; ++i){
- shmmap->insert(move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmap->insert(StdPairType(i, i));
- shmmultimap->insert(move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmultimap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmultimap->insert(StdPairType(i, i));
       }
 
@@ -242,10 +242,10 @@
       if(!CheckEqualPairContainers(shmmultimap, stdmultimap)) return 1;
 
       for(i = 0; i < max; ++i){
- shmmap->insert(shmmap->begin(), move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmap->insert(shmmap->begin(), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmap->insert(stdmap->begin(), StdPairType(i, i));
          //PrintContainers(shmmap, stdmap);
- shmmultimap->insert(shmmultimap->begin(), move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmultimap->insert(shmmultimap->begin(), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmultimap->insert(stdmultimap->begin(), StdPairType(i, i));
          //PrintContainers(shmmultimap, stdmultimap);
          if(!CheckEqualPairContainers(shmmap, stdmap))
@@ -253,29 +253,29 @@
          if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
             return 1;
 
- shmmap->insert(shmmap->end(), move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmap->insert(shmmap->end(), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmap->insert(stdmap->end(), StdPairType(i, i));
- shmmultimap->insert(shmmultimap->end(), move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmultimap->insert(shmmultimap->end(), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmultimap->insert(stdmultimap->end(), StdPairType(i, i));
          if(!CheckEqualPairContainers(shmmap, stdmap))
             return 1;
          if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
             return 1;
 
- shmmap->insert(shmmap->lower_bound(IntType(i)), move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmap->insert(shmmap->lower_bound(IntType(i)), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmap->insert(stdmap->lower_bound(i), StdPairType(i, i));
          //PrintContainers(shmmap, stdmap);
- shmmultimap->insert(shmmultimap->lower_bound(IntType(i)), move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmultimap->insert(shmmultimap->lower_bound(IntType(i)), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmultimap->insert(stdmultimap->lower_bound(i), StdPairType(i, i));
          //PrintContainers(shmmultimap, stdmultimap);
          if(!CheckEqualPairContainers(shmmap, stdmap))
             return 1;
          if(!CheckEqualPairContainers(shmmultimap, stdmultimap))
             return 1;
- shmmap->insert(shmmap->upper_bound(IntType(i)), move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmap->insert(shmmap->upper_bound(IntType(i)), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmap->insert(stdmap->upper_bound(i), StdPairType(i, i));
          //PrintContainers(shmmap, stdmap);
- shmmultimap->insert(shmmultimap->upper_bound(IntType(i)), move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmultimap->insert(shmmultimap->upper_bound(IntType(i)), detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          stdmultimap->insert(stdmultimap->upper_bound(i), StdPairType(i, i));
          //PrintContainers(shmmultimap, stdmultimap);
          if(!CheckEqualPairContainers(shmmap, stdmap))
@@ -303,8 +303,8 @@
 
       for(j = 0; j < 3; ++j)
       for(i = 0; i < 100; ++i){
- shmmap->insert(move(IntPairType(move(IntType(i)), move(IntType(i)))));
- shmmultimap->insert(move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
+ shmmultimap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
          if(shmmap->count(IntType(i)) != typename MyShmMultiMap::size_type(1))
             return 1;
          if(shmmultimap->count(IntType(i)) != typename MyShmMultiMap::size_type(j+1))
@@ -367,9 +367,9 @@
 
    int i;
    for(i = 0; i < max; ++i){
- shmmap->insert(move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
       stdmap->insert(StdPairType(i, i));
- shmmultimap->insert(move(IntPairType(move(IntType(i)), move(IntType(i)))));
+ shmmultimap->insert(detail::move_impl(IntPairType(detail::move_impl(IntType(i)), detail::move_impl(IntType(i)))));
       stdmultimap->insert(StdPairType(i, i));
    }
    if(!CheckEqualContainers(shmmap, stdmap)) return 1;

Modified: branches/proto/v4/libs/interprocess/test/mapped_file_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/mapped_file_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/mapped_file_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -76,9 +76,9 @@
       std::memset(file1.get_user_address(), 0, file1.get_user_size());
 
       //Now test move semantics
- mapped_file move_ctor(move(file1));
+ mapped_file move_ctor(detail::move_impl(file1));
       mapped_file move_assign;
- move_assign = move(move_ctor);
+ move_assign = detail::move_impl(move_ctor);
    }
    std::remove(FileName);
    return 0;

Modified: branches/proto/v4/libs/interprocess/test/node_allocator_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/node_allocator_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/node_allocator_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -31,6 +31,8 @@
 //Explicit instantiations to catch compilation errors
 template class node_allocator<int, managed_shared_memory::segment_manager>;
 template class detail::node_allocator_v1<int, managed_shared_memory::segment_manager>;
+template class node_allocator<void, managed_shared_memory::segment_manager>;
+template class detail::node_allocator_v1<void, managed_shared_memory::segment_manager>;
 
 //Alias list types
 typedef list<int, shmem_node_allocator_t> MyShmList;

Modified: branches/proto/v4/libs/interprocess/test/node_pool_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/node_pool_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/node_pool_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,14 +11,15 @@
 #include "node_pool_test.hpp"
 #include <boost/interprocess/allocators/detail/node_pool.hpp>
 
+using namespace boost::interprocess;
+typedef managed_shared_memory::segment_manager segment_manager_t;
+template class detail::private_node_pool_impl<segment_manager_t>;
 
 
 int main ()
 {
- using namespace boost::interprocess;
- typedef managed_shared_memory::segment_manager segment_manager;
    typedef detail::private_node_pool
- <segment_manager, 4, 64> node_pool_t;
+ <segment_manager_t, 4, 64> node_pool_t;
 
    if(!test::test_all_node_pool<node_pool_t>())
       return 1;

Modified: branches/proto/v4/libs/interprocess/test/private_adaptive_pool_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/private_adaptive_pool_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/private_adaptive_pool_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -31,6 +31,8 @@
 //Explicit instantiations to catch compilation errors
 template class private_adaptive_pool<int, managed_shared_memory::segment_manager>;
 template class detail::private_adaptive_pool_v1<int, managed_shared_memory::segment_manager>;
+template class private_adaptive_pool<void, managed_shared_memory::segment_manager>;
+template class detail::private_adaptive_pool_v1<void, managed_shared_memory::segment_manager>;
 
 //Alias list types
 typedef list<int, priv_node_allocator_t> MyShmList;

Modified: branches/proto/v4/libs/interprocess/test/private_node_allocator_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/private_node_allocator_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/private_node_allocator_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -31,6 +31,8 @@
 //Explicit instantiations to catch compilation errors
 template class private_node_allocator<int, managed_shared_memory::segment_manager>;
 template class detail::private_node_allocator_v1<int, managed_shared_memory::segment_manager>;
+template class private_node_allocator<void, managed_shared_memory::segment_manager>;
+template class detail::private_node_allocator_v1<void, managed_shared_memory::segment_manager>;
 
 //Alias list types
 typedef list<int, priv_node_allocator_t> MyShmList;

Modified: branches/proto/v4/libs/interprocess/test/set_test.hpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/set_test.hpp (original)
+++ branches/proto/v4/libs/interprocess/test/set_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -63,7 +63,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(i/2);
- aux_vect[i] = move(move_me);
+ aux_vect[i] = detail::move_impl(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -72,7 +72,7 @@
          IntType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(i/2);
- aux_vect3[i] = move(move_me);
+ aux_vect3[i] = detail::move_impl(move_me);
          }
 
          MyShmSet *shmset2 =
@@ -108,20 +108,20 @@
       int i, j;
       for(i = 0; i < max; ++i){
          IntType move_me(i);
- shmset->insert(move(move_me));
+ shmset->insert(detail::move_impl(move_me));
          stdset->insert(i);
          IntType move_me2(i);
- shmmultiset->insert(move(move_me2));
+ shmmultiset->insert(detail::move_impl(move_me2));
          stdmultiset->insert(i);
       }
 
       if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(move(move_me)" << std::endl;
+ std::cout << "Error in shmset->insert(detail::move_impl(move_me)" << std::endl;
          return 1;
       }
 
       if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(move(move_me)" << std::endl;
+ std::cout << "Error in shmmultiset->insert(detail::move_impl(move_me)" << std::endl;
          return 1;
       }
 
@@ -183,7 +183,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = move(move_me);
+ aux_vect[i] = detail::move_impl(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -192,7 +192,7 @@
          IntType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect3[i] = move(move_me);
+ aux_vect3[i] = detail::move_impl(move_me);
          }
 
          shmset->insert(detail::make_move_iterator(&aux_vect[0]), detail::make_move_iterator(aux_vect + 50));
@@ -228,7 +228,7 @@
          IntType aux_vect[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect[i] = move(move_me);
+ aux_vect[i] = detail::move_impl(move_me);
          }
          int aux_vect2[50];
          for(int i = 0; i < 50; ++i){
@@ -237,19 +237,19 @@
          IntType aux_vect3[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect3[i] = move(move_me);
+ aux_vect3[i] = detail::move_impl(move_me);
          }
 
          IntType aux_vect4[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect4[i] = move(move_me);
+ aux_vect4[i] = detail::move_impl(move_me);
          }
 
          IntType aux_vect5[50];
          for(int i = 0; i < 50; ++i){
             IntType move_me(-1);
- aux_vect5[i] = move(move_me);
+ aux_vect5[i] = detail::move_impl(move_me);
          }
 
          shmset->insert(detail::make_move_iterator(&aux_vect[0]), detail::make_move_iterator(aux_vect + 50));
@@ -285,88 +285,88 @@
 
       for(i = 0; i < max; ++i){
          IntType move_me(i);
- shmset->insert(move(move_me));
+ shmset->insert(detail::move_impl(move_me));
          stdset->insert(i);
          IntType move_me2(i);
- shmmultiset->insert(move(move_me2));
+ shmmultiset->insert(detail::move_impl(move_me2));
          stdmultiset->insert(i);
       }
 
       if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(move(move_me)) try 2" << std::endl;
+ std::cout << "Error in shmset->insert(detail::move_impl(move_me)) try 2" << std::endl;
          return 1;
       }
       if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(move(move_me2)) try 2" << std::endl;
+ std::cout << "Error in shmmultiset->insert(detail::move_impl(move_me2)) try 2" << std::endl;
          return 1;
       }
 
       for(i = 0; i < max; ++i){
          IntType move_me(i);
- shmset->insert(shmset->begin(), move(move_me));
+ shmset->insert(shmset->begin(), detail::move_impl(move_me));
          stdset->insert(stdset->begin(), i);
          //PrintContainers(shmset, stdset);
          IntType move_me2(i);
- shmmultiset->insert(shmmultiset->begin(), move(move_me2));
+ shmmultiset->insert(shmmultiset->begin(), detail::move_impl(move_me2));
          stdmultiset->insert(stdmultiset->begin(), i);
          //PrintContainers(shmmultiset, stdmultiset);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(shmset->begin(), move(move_me))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->begin(), detail::move_impl(move_me))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->begin(), move(move_me2))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->begin(), detail::move_impl(move_me2))" << std::endl;
             return 1;
          }
 
          IntType move_me3(i);
- shmset->insert(shmset->end(), move(move_me3));
+ shmset->insert(shmset->end(), detail::move_impl(move_me3));
          stdset->insert(stdset->end(), i);
          IntType move_me4(i);
- shmmultiset->insert(shmmultiset->end(), move(move_me4));
+ shmmultiset->insert(shmmultiset->end(), detail::move_impl(move_me4));
          stdmultiset->insert(stdmultiset->end(), i);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(shmset->end(), move(move_me3))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->end(), detail::move_impl(move_me3))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->end(), move(move_me4))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->end(), detail::move_impl(move_me4))" << std::endl;
             return 1;
          }
          {
          IntType move_me(i);
- shmset->insert(shmset->upper_bound(move_me), move(move_me));
+ shmset->insert(shmset->upper_bound(move_me), detail::move_impl(move_me));
          stdset->insert(stdset->upper_bound(i), i);
          //PrintContainers(shmset, stdset);
          IntType move_me2(i);
- shmmultiset->insert(shmmultiset->upper_bound(move_me2), move(move_me2));
+ shmmultiset->insert(shmmultiset->upper_bound(move_me2), detail::move_impl(move_me2));
          stdmultiset->insert(stdmultiset->upper_bound(i), i);
          //PrintContainers(shmmultiset, stdmultiset);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(shmset->upper_bound(move_me), move(move_me))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->upper_bound(move_me), detail::move_impl(move_me))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->upper_bound(move_me2), move(move_me2))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->upper_bound(move_me2), detail::move_impl(move_me2))" << std::endl;
             return 1;
          }
 
          }
          {
          IntType move_me(i);
- shmset->insert(shmset->lower_bound(move_me), move(move_me2));
+ shmset->insert(shmset->lower_bound(move_me), detail::move_impl(move_me2));
          stdset->insert(stdset->lower_bound(i), i);
          //PrintContainers(shmset, stdset);
          IntType move_me2(i);
- shmmultiset->insert(shmmultiset->lower_bound(move_me2), move(move_me2));
+ shmmultiset->insert(shmmultiset->lower_bound(move_me2), detail::move_impl(move_me2));
          stdmultiset->insert(stdmultiset->lower_bound(i), i);
          //PrintContainers(shmmultiset, stdmultiset);
          if(!CheckEqualContainers(shmset, stdset)){
- std::cout << "Error in shmset->insert(shmset->lower_bound(move_me), move(move_me2))" << std::endl;
+ std::cout << "Error in shmset->insert(shmset->lower_bound(move_me), detail::move_impl(move_me2))" << std::endl;
             return 1;
          }
          if(!CheckEqualContainers(shmmultiset, stdmultiset)){
- std::cout << "Error in shmmultiset->insert(shmmultiset->lower_bound(move_me2), move(move_me2))" << std::endl;
+ std::cout << "Error in shmmultiset->insert(shmmultiset->lower_bound(move_me2), detail::move_impl(move_me2))" << std::endl;
             return 1;
          }
          }
@@ -392,9 +392,9 @@
       for(j = 0; j < 3; ++j)
       for(i = 0; i < 100; ++i){
          IntType move_me(i);
- shmset->insert(move(move_me));
+ shmset->insert(detail::move_impl(move_me));
          IntType move_me2(i);
- shmmultiset->insert(move(move_me2));
+ shmmultiset->insert(detail::move_impl(move_me2));
          IntType count_me(i);
          if(shmset->count(count_me) != typename MyShmMultiSet::size_type(1)){
             std::cout << "Error in shmset->count(count_me)" << std::endl;
@@ -461,10 +461,10 @@
       int i;
       for(i = 0; i < max; ++i){
          IntType move_me(i);
- shmset->insert(move(move_me));
+ shmset->insert(detail::move_impl(move_me));
          stdset->insert(i);
          IntType move_me2(i);
- shmmultiset->insert(move(move_me2));
+ shmmultiset->insert(detail::move_impl(move_me2));
          stdmultiset->insert(i);
       }
       if(!CheckEqualContainers(shmset, stdset)) return 1;

Modified: branches/proto/v4/libs/interprocess/test/shared_memory_mapping_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/shared_memory_mapping_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/shared_memory_mapping_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -139,9 +139,9 @@
       {
          //Now test move semantics
          shared_memory_object mapping(open_only, test::get_process_id_name(), read_write);
- shared_memory_object move_ctor(move(mapping));
+ shared_memory_object move_ctor(detail::move_impl(mapping));
          shared_memory_object move_assign;
- move_assign = move(move_ctor);
+ move_assign = detail::move_impl(move_ctor);
       }
    }
    catch(std::exception &exc){

Modified: branches/proto/v4/libs/interprocess/test/shared_memory_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/shared_memory_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/shared_memory_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -76,9 +76,9 @@
          std::memset(shm1.get_user_address(), 0, shm1.get_user_size());
 
          //Now test move semantics
- shared_memory move_ctor(move(shm1));
+ shared_memory move_ctor(detail::move_impl(shm1));
          shared_memory move_assign;
- move_assign = move(move_ctor);
+ move_assign = detail::move_impl(move_ctor);
       }
    }
    catch(std::exception &ex){

Modified: branches/proto/v4/libs/interprocess/test/shared_ptr_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/shared_ptr_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/shared_ptr_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Peter Dimov 2002-2005.
-// (C) Copyright Ion Gaztanaga 2006-2007.
+// (C) Copyright Peter Dimov 2002-2005, 2007.
+// (C) Copyright Ion Gaztanaga 2006-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)
@@ -168,6 +168,8 @@
          //Now fill a shared memory vector of shared_ptrs to a string
          string_shared_ptr_vector_t my_sharedptr_vector(string_shared_ptr_allocator);
          my_sharedptr_vector.insert(my_sharedptr_vector.begin(), NumElements, string_shared_ptr);
+ //Insert in the middle to test movability
+ my_sharedptr_vector.insert(my_sharedptr_vector.begin() + my_sharedptr_vector.size()/2, NumElements, string_shared_ptr);
          //Now check the shared count is the objects contained in the
          //vector plus string_shared_ptr
          if(string_shared_ptr.use_count() != static_cast<long>(my_sharedptr_vector.size()+1)){
@@ -536,6 +538,81 @@
    return boost::report_errors();
 }
 
+struct alias_tester
+{
+ int v_;
+
+ explicit alias_tester( int v ): v_( v )
+ {
+ }
+
+ ~alias_tester()
+ {
+ v_ = 0;
+ }
+};
+
+void test_alias()
+{
+ typedef allocator<void, managed_shared_memory::segment_manager>
+ v_allocator_t;
+
+ typedef deleter<alias_tester, managed_shared_memory::segment_manager>
+ alias_tester_deleter_t;
+
+ typedef deleter<int, managed_shared_memory::segment_manager>
+ int_deleter_t;
+
+ typedef shared_ptr<alias_tester, v_allocator_t, alias_tester_deleter_t> alias_tester_shared_ptr;
+
+ typedef shared_ptr<int, v_allocator_t, int_deleter_t> int_shared_ptr;
+ typedef shared_ptr<const int, v_allocator_t, int_deleter_t> const_int_shared_ptr;
+ typedef shared_ptr<volatile int, v_allocator_t, int_deleter_t> volatile_int_shared_ptr;
+
+ std::string process_name;
+ test::get_process_id_name(process_name);
+
+ shared_memory_object::remove(process_name.c_str());
+ {
+ managed_shared_memory shmem(create_only, process_name.c_str(), 10000);
+
+ {
+ int m = 0;
+ int_shared_ptr p;
+ int_shared_ptr p2( p, &m );
+
+ BOOST_TEST( detail::get_pointer(p2.get()) == &m );
+ BOOST_TEST( p2? true: false );
+ BOOST_TEST( !!p2 );
+ BOOST_TEST( p2.use_count() == p.use_count() );
+ BOOST_TEST( !( p < p2 ) && !( p2 < p ) );
+
+ p2.reset( p, (int*)0 );
+
+ BOOST_TEST( p2.get() == 0 );
+
+ BOOST_TEST( p2? false: true );
+ BOOST_TEST( !p2 );
+ BOOST_TEST( p2.use_count() == p.use_count() );
+ BOOST_TEST( !( p < p2 ) && !( p2 < p ) );
+ }
+
+ {
+ int m = 0;
+ int_shared_ptr p(make_managed_shared_ptr
+ (shmem.construct<int>(anonymous_instance)(), shmem));
+ const_int_shared_ptr p2( p, &m );
+
+ BOOST_TEST( detail::get_pointer(p2.get()) == &m );
+ BOOST_TEST( p2? true: false );
+ BOOST_TEST( !!p2 );
+ BOOST_TEST( p2.use_count() == p.use_count() );
+ BOOST_TEST( !( p < p2 ) && !( p2 < p ) );
+ }
+ }
+ shared_memory_object::remove(process_name.c_str());
+}
+
 
 int main()
 {
@@ -548,6 +625,8 @@
    if(0 != basic_shared_ptr_test())
       return 1;
 
+ test_alias();
+
    return 0;
 }
 

Modified: branches/proto/v4/libs/interprocess/test/string_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/string_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/string_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -127,7 +127,7 @@
          std::sprintf(buffer, "%i", i);
          auxShmString += buffer;
          auxStdString += buffer;
- shmStringVect->push_back(move(auxShmString));
+ shmStringVect->push_back(detail::move_impl(auxShmString));
          stdStringVect->push_back(auxStdString);
       }
 
@@ -157,7 +157,7 @@
          std::sprintf(buffer, "%i", i);
          auxShmString += buffer;
          auxStdString += buffer;
- shmStringVect->insert(shmStringVect->begin(), move(auxShmString));
+ shmStringVect->insert(shmStringVect->begin(), detail::move_impl(auxShmString));
          stdStringVect->insert(stdStringVect->begin(), auxStdString);
       }
 

Modified: branches/proto/v4/libs/interprocess/test/unique_ptr_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/unique_ptr_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/unique_ptr_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -70,14 +70,14 @@
 
       //Test some copy constructors
       my_unique_ptr_class my_ptr3(0, segment.get_deleter<MyClass>());
- my_unique_ptr_class my_ptr4(move(my_ptr3));
+ my_unique_ptr_class my_ptr4(detail::move_impl(my_ptr3));
 
       //Construct a list and fill
       MyList list(segment.get_segment_manager());
 
       //Insert from my_unique_ptr_class
- list.push_front(move(my_ptr));
- list.push_back(move(my_ptr2));
+ list.push_front(detail::move_impl(my_ptr));
+ list.push_back(detail::move_impl(my_ptr2));
 
       //Check pointers
       assert(my_ptr.get() == 0);
@@ -85,9 +85,9 @@
       assert(list.begin()->get() == ptr1);
       assert(list.rbegin()->get() == ptr2);
    
- //MyList list2(move(list));
- //list2.swap(move(MyList(segment.get_segment_manager())));
- //list.swap(move(MyList(segment.get_segment_manager())));
+ //MyList list2(detail::move_impl(list));
+ //list2.swap(detail::move_impl(MyList(segment.get_segment_manager())));
+ //list.swap(detail::move_impl(MyList(segment.get_segment_manager())));
 
       assert(list.begin()->get() == ptr1);
       assert(list.rbegin()->get() == ptr2);
@@ -97,8 +97,8 @@
       MySet set(set_less_t(), segment.get_segment_manager());
 
       //Insert in set from list passing ownership
- set.insert(move(*list.begin()));
- set.insert(move(*list.rbegin()));
+ set.insert(detail::move_impl(*list.begin()));
+ set.insert(detail::move_impl(*list.rbegin()));
 
       //Check pointers
       assert(list.begin()->get() == 0);
@@ -120,12 +120,12 @@
 
       //Insert from my_unique_ptr_class
       if(ptr1 < ptr2){
- vector.insert(vector.begin(), move(*set.begin()));
- vector.insert(vector.end(), move(*set.rbegin()));
+ vector.insert(vector.begin(), detail::move_impl(*set.begin()));
+ vector.insert(vector.end(), detail::move_impl(*set.rbegin()));
       }
       else{
- vector.insert(vector.begin(), move(*set.rbegin()));
- vector.insert(vector.end(), move(*set.begin()));
+ vector.insert(vector.begin(), detail::move_impl(*set.rbegin()));
+ vector.insert(vector.end(), detail::move_impl(*set.begin()));
       }
 
       //Check pointers
@@ -134,14 +134,14 @@
       assert(vector.begin()->get() == ptr1);
       assert(vector.rbegin()->get() == ptr2);
 
- MyVector vector2(move(vector));
+ MyVector vector2(detail::move_impl(vector));
       vector2.swap(vector);
 
       assert(vector.begin()->get() == ptr1);
       assert(vector.rbegin()->get() == ptr2);
 
       my_unique_ptr_class a(0, segment.get_deleter<MyClass>()), b(0, segment.get_deleter<MyClass>());
- a = move(b);
+ a = detail::move_impl(b);
    }
    shared_memory_object::remove(process_name.c_str());
    return 0;

Modified: branches/proto/v4/libs/interprocess/test/upgradable_mutex_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/upgradable_mutex_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/upgradable_mutex_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -35,135 +35,135 @@
       //Conversions to scoped_lock
       {
          scoped_lock<Mutex> lock(mut);
- scoped_lock<Mutex> e_lock(move(lock));
- lock.swap(move(e_lock));
+ scoped_lock<Mutex> e_lock(detail::move_impl(lock));
+ lock.swap(detail::move_impl(e_lock));
       }
       {
          scoped_lock<Mutex> lock(mut);
          scoped_lock<Mutex> e_lock(mut2);
- e_lock = move(lock);
+ e_lock = detail::move_impl(lock);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls unlock_upgradable_and_lock()
- scoped_lock<Mutex> e_lock(move(u_lock));
+ scoped_lock<Mutex> e_lock(detail::move_impl(u_lock));
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls unlock_upgradable_and_lock()
          scoped_lock<Mutex> e_lock(mut2);
- scoped_lock<Mutex> moved(move(u_lock));
- e_lock = move(moved);
+ scoped_lock<Mutex> moved(detail::move_impl(u_lock));
+ e_lock = detail::move_impl(moved);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls try_unlock_upgradable_and_lock()
- scoped_lock<Mutex> e_lock(move(u_lock), try_to_lock);
+ scoped_lock<Mutex> e_lock(detail::move_impl(u_lock), try_to_lock);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls try_unlock_upgradable_and_lock()
          scoped_lock<Mutex> e_lock(mut2);
- scoped_lock<Mutex> moved(move(u_lock), try_to_lock);
- e_lock = move(moved);
+ scoped_lock<Mutex> moved(detail::move_impl(u_lock), try_to_lock);
+ e_lock = detail::move_impl(moved);
       }
       {
          boost::posix_time::ptime t = test::delay(100);
          upgradable_lock<Mutex> u_lock(mut);
          //This calls timed_unlock_upgradable_and_lock()
- scoped_lock<Mutex> e_lock(move(u_lock), t);
+ scoped_lock<Mutex> e_lock(detail::move_impl(u_lock), t);
       }
       {
          boost::posix_time::ptime t = test::delay(100);
          upgradable_lock<Mutex> u_lock(mut);
          //This calls timed_unlock_upgradable_and_lock()
          scoped_lock<Mutex> e_lock(mut2);
- scoped_lock<Mutex> moved(move(u_lock), t);
- e_lock = move(moved);
+ scoped_lock<Mutex> moved(detail::move_impl(u_lock), t);
+ e_lock = detail::move_impl(moved);
       }
       {
          sharable_lock<Mutex> s_lock(mut);
          //This calls try_unlock_sharable_and_lock()
- scoped_lock<Mutex> e_lock(move(s_lock), try_to_lock);
+ scoped_lock<Mutex> e_lock(detail::move_impl(s_lock), try_to_lock);
       }
       {
          sharable_lock<Mutex> s_lock(mut);
          //This calls try_unlock_sharable_and_lock()
          scoped_lock<Mutex> e_lock(mut2);
- scoped_lock<Mutex> moved(move(s_lock), try_to_lock);
- e_lock = move(moved);
+ scoped_lock<Mutex> moved(detail::move_impl(s_lock), try_to_lock);
+ e_lock = detail::move_impl(moved);
       }
       //Conversions to upgradable_lock
       {
          upgradable_lock<Mutex> lock(mut);
- upgradable_lock<Mutex> u_lock(move(lock));
- lock.swap(move(u_lock));
+ upgradable_lock<Mutex> u_lock(detail::move_impl(lock));
+ lock.swap(detail::move_impl(u_lock));
       }
       {
          upgradable_lock<Mutex> lock(mut);
          upgradable_lock<Mutex> u_lock(mut2);
- upgradable_lock<Mutex> moved(move(lock));
- u_lock = move(moved);
+ upgradable_lock<Mutex> moved(detail::move_impl(lock));
+ u_lock = detail::move_impl(moved);
       }
       {
          sharable_lock<Mutex> s_lock(mut);
          //This calls unlock_sharable_and_lock_upgradable()
- upgradable_lock<Mutex> u_lock(move(s_lock), try_to_lock);
+ upgradable_lock<Mutex> u_lock(detail::move_impl(s_lock), try_to_lock);
       }
       {
          sharable_lock<Mutex> s_lock(mut);
          //This calls unlock_sharable_and_lock_upgradable()
          upgradable_lock<Mutex> u_lock(mut2);
- upgradable_lock<Mutex> moved(move(s_lock), try_to_lock);
- u_lock = move(moved);
+ upgradable_lock<Mutex> moved(detail::move_impl(s_lock), try_to_lock);
+ u_lock = detail::move_impl(moved);
       }
       {
          scoped_lock<Mutex> e_lock(mut);
          //This calls unlock_and_lock_upgradable()
- upgradable_lock<Mutex> u_lock(move(e_lock));
+ upgradable_lock<Mutex> u_lock(detail::move_impl(e_lock));
       }
       {
          scoped_lock<Mutex> e_lock(mut);
          //This calls unlock_and_lock_upgradable()
          upgradable_lock<Mutex> u_lock(mut2);
- upgradable_lock<Mutex> moved(move(e_lock));
- u_lock = move(moved);
+ upgradable_lock<Mutex> moved(detail::move_impl(e_lock));
+ u_lock = detail::move_impl(moved);
       }
       //Conversions to sharable_lock
       {
          sharable_lock<Mutex> lock(mut);
- sharable_lock<Mutex> s_lock(move(lock));
- lock.swap(move(s_lock));
+ sharable_lock<Mutex> s_lock(detail::move_impl(lock));
+ lock.swap(detail::move_impl(s_lock));
       }
       {
          sharable_lock<Mutex> lock(mut);
          sharable_lock<Mutex> s_lock(mut2);
- sharable_lock<Mutex> moved(move(lock));
- s_lock = move(moved);
+ sharable_lock<Mutex> moved(detail::move_impl(lock));
+ s_lock = detail::move_impl(moved);
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls unlock_upgradable_and_lock_sharable()
- sharable_lock<Mutex> s_lock(move(u_lock));
+ sharable_lock<Mutex> s_lock(detail::move_impl(u_lock));
       }
       {
          upgradable_lock<Mutex> u_lock(mut);
          //This calls unlock_upgradable_and_lock_sharable()
          sharable_lock<Mutex> s_lock(mut2);
- sharable_lock<Mutex> moved(move(u_lock));
- s_lock = move(moved);
+ sharable_lock<Mutex> moved(detail::move_impl(u_lock));
+ s_lock = detail::move_impl(moved);
       }
       {
          scoped_lock<Mutex> e_lock(mut);
          //This calls unlock_and_lock_sharable()
- sharable_lock<Mutex> s_lock(move(e_lock));
+ sharable_lock<Mutex> s_lock(detail::move_impl(e_lock));
       }
       {
          scoped_lock<Mutex> e_lock(mut);
          //This calls unlock_and_lock_sharable()
          sharable_lock<Mutex> s_lock(mut2);
- sharable_lock<Mutex> moved(move(e_lock));
- s_lock = move(moved);
+ sharable_lock<Mutex> moved(detail::move_impl(e_lock));
+ s_lock = detail::move_impl(moved);
       }
    }
 

Modified: branches/proto/v4/libs/interprocess/test/user_buffer_test.cpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/user_buffer_test.cpp (original)
+++ branches/proto/v4/libs/interprocess/test/user_buffer_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -65,13 +65,13 @@
    //Test move semantics
    {
       wmanaged_external_buffer user_default;
- wmanaged_external_buffer temp_external(move(user_buffer));
- user_default = move(temp_external);
- user_buffer = move(user_default);
+ wmanaged_external_buffer temp_external(detail::move_impl(user_buffer));
+ user_default = detail::move_impl(temp_external);
+ user_buffer = detail::move_impl(user_default);
       wmanaged_heap_memory heap_default;
- wmanaged_heap_memory temp_heap(move(heap_buffer));
- heap_default = move(temp_heap);
- heap_buffer = move(heap_default);
+ wmanaged_heap_memory temp_heap(detail::move_impl(heap_buffer));
+ heap_default = detail::move_impl(temp_heap);
+ heap_buffer = detail::move_impl(heap_default);
    }
 
    //Initialize memory

Modified: branches/proto/v4/libs/interprocess/test/vector_test.hpp
==============================================================================
--- branches/proto/v4/libs/interprocess/test/vector_test.hpp (original)
+++ branches/proto/v4/libs/interprocess/test/vector_test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -48,18 +48,18 @@
    {
    IntType move_me(1);
    stdvector->insert(stdvector->begin()+size/2, 50, 1);
- shmvector->insert(shmvector->begin()+size/2, 50, move(move_me));
+ shmvector->insert(shmvector->begin()+size/2, 50, detail::move_impl(move_me));
    if(!test::CheckEqualContainers(shmvector, stdvector)) return false;
    }
    {
    IntType move_me(2);
- shmvector->assign(shmvector->size()/2, move(move_me));
+ shmvector->assign(shmvector->size()/2, detail::move_impl(move_me));
    stdvector->assign(stdvector->size()/2, 2);
    if(!test::CheckEqualContainers(shmvector, stdvector)) return false;
    }
    {
    IntType move_me(3);
- shmvector->assign(shmvector->size()*3-1, move(move_me));
+ shmvector->assign(shmvector->size()*3-1, detail::move_impl(move_me));
    stdvector->assign(stdvector->size()*3-1, 3);
    if(!test::CheckEqualContainers(shmvector, stdvector)) return false;
    }
@@ -109,7 +109,7 @@
 
          for(int i = 0; i < max; ++i){
             IntType new_int(i);
- shmvector->insert(shmvector->end(), move(new_int));
+ shmvector->insert(shmvector->end(), detail::move_impl(new_int));
             stdvector->insert(stdvector->end(), i);
          }
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
@@ -131,7 +131,7 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType new_int(-1);
- aux_vect[i] = move(new_int);
+ aux_vect[i] = detail::move_impl(new_int);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
@@ -154,7 +154,7 @@
             IntType aux_vect[50];
             for(int i = 0; i < 50; ++i){
                IntType new_int(-1);
- aux_vect[i] = move(new_int);
+ aux_vect[i] = detail::move_impl(new_int);
             }
             int aux_vect2[50];
             for(int i = 0; i < 50; ++i){
@@ -172,7 +172,7 @@
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
          IntType push_back_this(1);
- shmvector->push_back(move(push_back_this));
+ shmvector->push_back(detail::move_impl(push_back_this));
          stdvector->push_back(int(1));
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;
 
@@ -187,7 +187,7 @@
 
          for(int i = 0; i < max; ++i){
             IntType insert_this(i);
- shmvector->insert(shmvector->begin(), move(insert_this));
+ shmvector->insert(shmvector->begin(), detail::move_impl(insert_this));
             stdvector->insert(stdvector->begin(), i);
          }
          if(!test::CheckEqualContainers(shmvector, stdvector)) return 1;

Modified: branches/proto/v4/libs/intrusive/doc/intrusive.qbk
==============================================================================
--- branches/proto/v4/libs/intrusive/doc/intrusive.qbk (original)
+++ branches/proto/v4/libs/intrusive/doc/intrusive.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -127,7 +127,7 @@
 
 [section:properties_of_intrusive Properties of Boost.Intrusive containers]
 
-Semantically, a [*Boost.Intrusive] container is similar to an STL container
+Semantically, a [*Boost.Intrusive] container is similar to a STL container
 holding pointers to objects. That is, if you have an intrusive list holding
 objects of type `T`, then `std::list<T*>` would allow you to do quite the
 same operations (maintaining and navigating a set of objects of type T and
@@ -584,7 +584,7 @@
    safe state and intrusive containers check that state before inserting a value in the
    container. When erasing an element from the container, the container puts the hook
    in the safe state again. This allows a safer use mode and it can be used to detect
- programming errors. It implies an slight performance overhead in some operations
+ programming errors. It implies a slight performance overhead in some operations
    and can convert some constant time operations to linear time operations.
 
 * [*Auto-unlink hooks]: The hook destructor removes the object from the container
@@ -596,7 +596,7 @@
    be configured to use any type of pointer. This configuration information is also
    transmitted to the containers, so all the internal pointers used by intrusive containers
    configured with these hooks will be smart pointers. As an example,
- [*Boost.Interprocess] defines an smart pointer compatible with shared memory,
+ [*Boost.Interprocess] defines an mart pointer compatible with shared memory,
    called `offset_ptr`. [*Boost.Intrusive] can be configured to use this smart pointer
    to allow shared memory intrusive containers.
 
@@ -718,7 +718,7 @@
 
 As explained, [*Boost.Intrusive] auto-unlink hooks are incompatible with containers
 that have constant-time `size()`, so if you try to define such container with an
-auto-unlink hook's value_traits, you will get an static assertion:
+auto-unlink hook's value_traits, you will get a static assertion:
 
 [c++]
    
@@ -860,7 +860,7 @@
 
 [section:slist_example Example]
 
-Now let's see an small example using both hooks:
+Now let's see a small example using both hooks:
 
 [import ../example/doc_slist.cpp]
 [doc_slist_code]
@@ -946,7 +946,7 @@
 
 [section:list_example Example]
 
-Now let's see an small example using both hooks:
+Now let's see a small example using both hooks:
 
 [import ../example/doc_list.cpp]
 [doc_list_code]
@@ -1075,7 +1075,7 @@
 
 [section:set_multiset_example Example]
 
-Now let's see an small example using both hooks and both containers:
+Now let's see a small example using both hooks and both containers:
 
 [import ../example/doc_set.cpp]
 [doc_set_code]
@@ -1277,11 +1277,22 @@
    of the first element. This imposes the overhead of one pointer to the size
    of the container. Default: `cache_begin<false>`.
 
+* [*`compare_hash<bool Enabled>`]:
+ [*Note: this option requires `store_hash<true>` option in the hook].
+ When the comparison function is expensive,
+ (e.g. strings with a long common predicate) sometimes (specially when the
+ load factor is high or we have many equivalent elements in an
+ [classref boost::intrusive::unordered_multiset unordered_multiset] and
+ no `optimize_multikey<>` is activatedin the hook)
+ the equality function is a performance problem. Two equal values must have
+ equal hashes, so comparing the hash values of two elements before using the
+ comparison functor can speed up some implementations.
+
 [endsect]
 
 [section:unordered_set_unordered_multiset_example Example]
 
-Now let's see an small example using both hooks and both containers:
+Now let's see a small example using both hooks and both containers:
 
 [import ../example/doc_unordered_set.cpp]
 [doc_unordered_set_code]
@@ -1450,9 +1461,9 @@
 [classref boost::intrusive::sg_set sg_set] and
 [classref boost::intrusive::sg_multiset sg_multiset]. A programmer
 might prefer using a binary search tree hook so that the same type
-can be inserted in some situations in an splay container but
+can be inserted in some situations in a splay container but
 also inserted in other compatible containers when
-the hook is not being used in an splay container.
+the hook is not being used in a splay container.
 
 [classref boost::intrusive::bs_set_base_hook bs_set_base_hook] and
 [classref boost::intrusive::bs_set_base_hook bs_set_member_hook] admit
@@ -1462,7 +1473,7 @@
 
 [section:splay_set_multiset_example Example]
 
-Now let's see an small example using both splay hooks,
+Now let's see a small example using both splay hooks,
 binary search tree hooks and
 [classref boost::intrusive::splay_set splay_set]/
 [classref boost::intrusive::splay_multiset splay_multiset]
@@ -1590,7 +1601,7 @@
 
 [section:avl_set_multiset_example Example]
 
-Now let's see an small example using both hooks and
+Now let's see a small example using both hooks and
 [classref boost::intrusive::avl_set avl_set]/
 [classref boost::intrusive::avl_multiset avl_multiset]
 containers:
@@ -1745,7 +1756,7 @@
 
 [section:sg_set_multiset_example Example]
 
-Now let's see an small example using both hooks and
+Now let's see a small example using both hooks and
 [classref boost::intrusive::sg_set sg_set]/
 [classref boost::intrusive::sg_multiset sg_multiset]
 containers:
@@ -1923,7 +1934,7 @@
 
 Note that the disposing function does not need to just destroy the object. It can
 implement any other operation like inserting the remove object in another container.
-Let's see an small example:
+Let's see a small example:
 
 [import ../example/doc_erasing_and_disposing.cpp]
 [doc_erasing_and_disposing]
@@ -1940,11 +1951,11 @@
 As previously mentioned, [*Boost.Intrusive] containers are [*non-copyable and non-assignable], because
 intrusive containers don't allocate memory at all. To implement a copy-constructor or assignment operator,
 the user must clone one by one all the elements of the container and insert them in another intrusive container.
-However, cloning by hand is usually more inefficient than a member cloning function and an specialized cloning
+However, cloning by hand is usually more inefficient than a member cloning function and a specialized cloning
 function can offer more guarantees than the manual cloning (better exception safety guarantees, for example).
 
 To ease the implementation of copy constructors and assignment operators of classes containing [*Boost.Intrusive]
-containers, all [*Boost.Intrusive] containers offer an special cloning function called `clone_from`.
+containers, all [*Boost.Intrusive] containers offer a special cloning function called `clone_from`.
 
 Apart from the container to be cloned, `clone_from` takes two function objects as arguments. For example, consider the
 `clone_from` member function of [classref boost::intrusive::list list]:
@@ -1981,9 +1992,9 @@
 [section:using_smart_pointers Using smart pointers with Boost.Intrusive containers]
 
 [*Boost.Intrusive] hooks can be configured to use other pointers than raw pointers.
-When a [*Boost.Intrusive] hook is configured with an smart pointer as an argument,
+When a [*Boost.Intrusive] hook is configured with a smart pointer as an argument,
 this pointer configuration is passed to the containers. For example, if the following
-hook is configured with an smart pointer (for example, an offset pointer from
+hook is configured with a smart pointer (for example, an offset pointer from
 [*Boost.Interprocess]):
 
 [import ../example/doc_offset_ptr.cpp]
@@ -2060,7 +2071,7 @@
 if the programmer uses hooks provided by [*Boost.Intrusive], those functions
 will be available.
 
-Let's see an small function that shows the use of `iterator_to` and
+Let's see a small function that shows the use of `iterator_to` and
 `local_iterator_to`:
 
 [import ../example/doc_iterator_from_value.cpp]
@@ -2068,6 +2079,51 @@
 
 [endsect]
 
+[section:any_hooks Any Hooks: A single hook for any Intrusive container]
+
+Sometimes, a class programmer wants to place a class in several intrusive
+containers but no at the same time. In this case, the programmer might
+decide to insert two hooks in the same class.
+
+[c++]
+
+ class MyClass
+ : public list_base_hook<>, public slist_base_hook<> //...
+ {};
+
+However, there is a more size-efficient alternative in [*Boost.Intrusive]: "any" hooks
+([classref boost::intrusive::any_base_hook any_base_hook] and
+[classref boost::intrusive::any_member_hook any_member_hook].
+These hooks can be used to store a type in several containers
+offered by [*Boost.Intrusive] minimizing the size of the class.
+
+These hooks support these options:
+
+* [*`tag<class Tag>`] (for base hooks only): This argument serves as a tag,
+ so you can derive from more than one slist hook.
+ Default: `tag<default_tag>`.
+
+* [*`link_mode<link_mode_type LinkMode>`]: The linking policy.
+ `link_mode<auto_unlink>` is [*not] supported and `link_mode<safe_mode>`
+ might offer weaker error detection in any hooks than in other hooks.
+ Default: `link_mode<safe_link>`.
+
+* [*`void_pointer<class VoidPointer>`]: The pointer type to be used
+ internally in the hook and propagated to the container.
+ Default: `void_pointer<void*>`.
+
+`auto_unlink` can't be supported because the hook does not know in which type of might
+be inserted container. Additionally, these hooks don't support `unlink()` and
+`swap_nodes()` operations for the same reason.
+
+Here's an example that creates a class with two any hooks, and uses one to insert the
+class in a [classref slist] and the other one in a [classref list].
+
+[import ../example/doc_any_hook.cpp]
+[doc_any_hook]
+
+[endsect]
+
 [section:concepts Concepts explained]
 
 This section will expand the explanation of previously presented basic concepts
@@ -2187,7 +2243,7 @@
       int value_;
    };
 
-* [*Intrusive Container]: A container that offers an STL-like interface to store
+* [*Intrusive Container]: A container that offers a STL-like interface to store
    user objects. An intrusive container can be templatized to store different
    value types that use different hooks. An intrusive container is also more elaborate
    than a group of nodes: it can store the number of elements to achieve constant-time
@@ -2642,7 +2698,7 @@
 
 Instead of using [*Boost.Intrusive] predefined hooks
 a user might want to develop customized containers, for example, using nodes that are
-optimized for an specific
+optimized for a specific
 application or that are compatible with a a legacy ABI. A user might want
 to have only two additional pointers in his class and insert the class in a doubly
 linked list sometimes and in a singly linked list in other situations. You can't
@@ -2804,7 +2860,7 @@
 to have several `ValueTraits` defining the same `node_traits` type (and thus, the same `node_traits::node`).
 This reduces the number of node algorithm instantiations, but
 now `ValueTraits::to_node_ptr` and `ValueTraits::to_value_ptr` functions need to offer
-conversions between both types. Let's see an small example:
+conversions between both types. Let's see a small example:
 
 First, we'll define the node to be used in the algorithms. For a linked list,
 we just need a node that stores two pointers:

Modified: branches/proto/v4/libs/intrusive/index.html
==============================================================================
--- branches/proto/v4/libs/intrusive/index.html (original)
+++ branches/proto/v4/libs/intrusive/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,14 @@
+<!--
+Copyright 2005-2008 Ion Gaztanaga
+Distributed under the Boost Software License, Version 1.0. (See accompanying
+file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+-->
 <html>
 <head>
-<meta http-equiv="refresh" content="0; URL=../../doc/html/intrusive.html">
+ <meta http-equiv="refresh" content="0; URL=../../doc/html/intrusive.html">
 </head>
 <body>
 Automatic redirection failed, please go to
-../../doc/html/intrusive
+../../doc/html/intrusive.html
 </body>
 </html>

Modified: branches/proto/v4/libs/intrusive/proj/vc7ide/Intrusive.sln
==============================================================================
--- branches/proto/v4/libs/intrusive/proj/vc7ide/Intrusive.sln (original)
+++ branches/proto/v4/libs/intrusive/proj/vc7ide/Intrusive.sln 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,175 +1,183 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list", "list\list.vcproj", "{977B61B4-9968-497C-9F0B-24A8145473B8}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist", "slist\slist.vcproj", "{5A02061D-3728-4C49-AFC8-0130C1F161C0}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multiset", "multiset\multiset.vcproj", "{961F0E06-C092-4AF7-ABC5-2A49999F3B79}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_intrusivelib", "_intrusivelib\_intrusivelib.vcproj", "{90F3C5BD-8E6C-4629-BC71-A1009EC88059}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "set", "set\set.vcproj", "{960E01F6-92C1-F74A-BCA5-2A9F3B994979}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unordered_set", "unordered_set\unordered_set.vcproj", "{90E701E6-2C91-F4A7-BA6C-A9F3B0949279}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unordered_multiset", "unordered_multiset\unordered_multiset.vcproj", "{9101EE76-BB6C-2C91-F4B7-A9F3B9490279}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perf_test", "perf_test\perf_test.vcproj", "{910E70E6-2C91-AA67-BF4C-A9C74A309927}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "default_hook", "default_hook\default_hook.vcproj", "{761A79B4-9968-CB81-F02B-2A4497345475}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stateful_value_traits", "stateful_value_traits\stateful_value_traits.vcproj", "{9571A7B4-9968-B9C1-17FB-134547B46975}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "virtual_base", "virtual_base\virtual_base.vcproj", "{3579B1A4-9894-02AB-CB81-297B46154345}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_functions", "make_functions\make_functions.vcproj", "{7679B41B-F2B4-9176-CB81-35449467B435}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_bucket_traits", "custom_bucket_traits\custom_bucket_traits.vcproj", "{31C77B84-0B2C-9481-CB81-27A149F33825}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "external_value_traits", "external_value_traits\external_value_traits.vcproj", "{97B69A72-B9D3-7389-17FB-74612F4A9543}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "splay_multiset", "splay_multiset\splay_multiset.vcproj", "{01E70176-B6C5-BF47-2C91-A949077BA323}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "splay_set", "splay_set\splay_set.vcproj", "{1E6909E7-C971-F24A-6C7B-A92094B71B59}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "avl_multiset", "avl_multiset\avl_multiset.vcproj", "{0AE70176-5B8C-4BC7-392C-A4A312B07893}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "avl_set", "avl_set\avl_set.vcproj", "{16909EE7-24AF-97C1-C76B-204B971BA959}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sg_multiset", "sg_multiset\sg_multiset.vcproj", "{07022E76-6CB5-92C1-B47F-A10772A79B43}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sg_set", "sg_set\sg_set.vcproj", "{1690A9E7-DB57-971C-F24A-09B752A942F7}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfiguration) = preSolution
- Debug = Debug
- Release = Release
- EndGlobalSection
- GlobalSection(ProjectDependencies) = postSolution
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {977B61B4-9968-497C-9F0B-24A8145473B8}.Debug.ActiveCfg = Debug|Win32
- {977B61B4-9968-497C-9F0B-24A8145473B8}.Debug.Build.0 = Debug|Win32
- {977B61B4-9968-497C-9F0B-24A8145473B8}.Release.ActiveCfg = Release|Win32
- {977B61B4-9968-497C-9F0B-24A8145473B8}.Release.Build.0 = Release|Win32
- {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Debug.ActiveCfg = Debug|Win32
- {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Debug.Build.0 = Debug|Win32
- {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Release.ActiveCfg = Release|Win32
- {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Release.Build.0 = Release|Win32
- {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Debug.ActiveCfg = Debug|Win32
- {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Debug.Build.0 = Debug|Win32
- {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Release.ActiveCfg = Release|Win32
- {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Release.Build.0 = Release|Win32
- {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Debug.ActiveCfg = Debug|Win32
- {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Debug.Build.0 = Debug|Win32
- {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Release.ActiveCfg = Release|Win32
- {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Release.Build.0 = Release|Win32
- {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Debug.ActiveCfg = Debug|Win32
- {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Debug.Build.0 = Debug|Win32
- {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Release.ActiveCfg = Release|Win32
- {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Release.Build.0 = Release|Win32
- {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Debug.ActiveCfg = Debug|Win32
- {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Debug.Build.0 = Debug|Win32
- {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Release.ActiveCfg = Release|Win32
- {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Release.Build.0 = Release|Win32
- {9101EE76-BB6C-2C91-F4B7-A9F3B9490279}.Debug.ActiveCfg = Debug|Win32
- {9101EE76-BB6C-2C91-F4B7-A9F3B9490279}.Debug.Build.0 = Debug|Win32
- {9101EE76-BB6C-2C91-F4B7-A9F3B9490279}.Release.ActiveCfg = Release|Win32
- {9101EE76-BB6C-2C91-F4B7-A9F3B9490279}.Release.Build.0 = Release|Win32
- {910E70E6-2C91-AA67-BF4C-A9C74A309927}.Debug.ActiveCfg = Debug|Win32
- {910E70E6-2C91-AA67-BF4C-A9C74A309927}.Debug.Build.0 = Debug|Win32
- {910E70E6-2C91-AA67-BF4C-A9C74A309927}.Release.ActiveCfg = Release|Win32
- {910E70E6-2C91-AA67-BF4C-A9C74A309927}.Release.Build.0 = Release|Win32
- {761A79B4-9968-CB81-F02B-2A4497345475}.Debug.ActiveCfg = Debug|Win32
- {761A79B4-9968-CB81-F02B-2A4497345475}.Debug.Build.0 = Debug|Win32
- {761A79B4-9968-CB81-F02B-2A4497345475}.Release.ActiveCfg = Release|Win32
- {761A79B4-9968-CB81-F02B-2A4497345475}.Release.Build.0 = Release|Win32
- {9571A7B4-9968-B9C1-17FB-134547B46975}.Debug.ActiveCfg = Debug|Win32
- {9571A7B4-9968-B9C1-17FB-134547B46975}.Debug.Build.0 = Debug|Win32
- {9571A7B4-9968-B9C1-17FB-134547B46975}.Release.ActiveCfg = Release|Win32
- {9571A7B4-9968-B9C1-17FB-134547B46975}.Release.Build.0 = Release|Win32
- {3579B1A4-9894-02AB-CB81-297B46154345}.Debug.ActiveCfg = Debug|Win32
- {3579B1A4-9894-02AB-CB81-297B46154345}.Debug.Build.0 = Debug|Win32
- {3579B1A4-9894-02AB-CB81-297B46154345}.Release.ActiveCfg = Release|Win32
- {3579B1A4-9894-02AB-CB81-297B46154345}.Release.Build.0 = Release|Win32
- {7679B41B-F2B4-9176-CB81-35449467B435}.Debug.ActiveCfg = Debug|Win32
- {7679B41B-F2B4-9176-CB81-35449467B435}.Debug.Build.0 = Debug|Win32
- {7679B41B-F2B4-9176-CB81-35449467B435}.Release.ActiveCfg = Release|Win32
- {7679B41B-F2B4-9176-CB81-35449467B435}.Release.Build.0 = Release|Win32
- {31C77B84-0B2C-9481-CB81-27A149F33825}.Debug.ActiveCfg = Debug|Win32
- {31C77B84-0B2C-9481-CB81-27A149F33825}.Debug.Build.0 = Debug|Win32
- {31C77B84-0B2C-9481-CB81-27A149F33825}.Release.ActiveCfg = Release|Win32
- {31C77B84-0B2C-9481-CB81-27A149F33825}.Release.Build.0 = Release|Win32
- {97B69A72-B9D3-7389-17FB-74612F4A9543}.Debug.ActiveCfg = Debug|Win32
- {97B69A72-B9D3-7389-17FB-74612F4A9543}.Debug.Build.0 = Debug|Win32
- {97B69A72-B9D3-7389-17FB-74612F4A9543}.Release.ActiveCfg = Release|Win32
- {97B69A72-B9D3-7389-17FB-74612F4A9543}.Release.Build.0 = Release|Win32
- {01E70176-B6C5-BF47-2C91-A949077BA323}.Debug.ActiveCfg = Debug|Win32
- {01E70176-B6C5-BF47-2C91-A949077BA323}.Debug.Build.0 = Debug|Win32
- {01E70176-B6C5-BF47-2C91-A949077BA323}.Release.ActiveCfg = Release|Win32
- {01E70176-B6C5-BF47-2C91-A949077BA323}.Release.Build.0 = Release|Win32
- {1E6909E7-C971-F24A-6C7B-A92094B71B59}.Debug.ActiveCfg = Debug|Win32
- {1E6909E7-C971-F24A-6C7B-A92094B71B59}.Debug.Build.0 = Debug|Win32
- {1E6909E7-C971-F24A-6C7B-A92094B71B59}.Release.ActiveCfg = Release|Win32
- {1E6909E7-C971-F24A-6C7B-A92094B71B59}.Release.Build.0 = Release|Win32
- {0AE70176-5B8C-4BC7-392C-A4A312B07893}.Debug.ActiveCfg = Debug|Win32
- {0AE70176-5B8C-4BC7-392C-A4A312B07893}.Debug.Build.0 = Debug|Win32
- {0AE70176-5B8C-4BC7-392C-A4A312B07893}.Release.ActiveCfg = Release|Win32
- {0AE70176-5B8C-4BC7-392C-A4A312B07893}.Release.Build.0 = Release|Win32
- {16909EE7-24AF-97C1-C76B-204B971BA959}.Debug.ActiveCfg = Debug|Win32
- {16909EE7-24AF-97C1-C76B-204B971BA959}.Debug.Build.0 = Debug|Win32
- {16909EE7-24AF-97C1-C76B-204B971BA959}.Release.ActiveCfg = Release|Win32
- {16909EE7-24AF-97C1-C76B-204B971BA959}.Release.Build.0 = Release|Win32
- {07022E76-6CB5-92C1-B47F-A10772A79B43}.Debug.ActiveCfg = Debug|Win32
- {07022E76-6CB5-92C1-B47F-A10772A79B43}.Debug.Build.0 = Debug|Win32
- {07022E76-6CB5-92C1-B47F-A10772A79B43}.Release.ActiveCfg = Release|Win32
- {07022E76-6CB5-92C1-B47F-A10772A79B43}.Release.Build.0 = Release|Win32
- {1690A9E7-DB57-971C-F24A-09B752A942F7}.Debug.ActiveCfg = Debug|Win32
- {1690A9E7-DB57-971C-F24A-09B752A942F7}.Debug.Build.0 = Debug|Win32
- {1690A9E7-DB57-971C-F24A-09B752A942F7}.Release.ActiveCfg = Release|Win32
- {1690A9E7-DB57-971C-F24A-09B752A942F7}.Release.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
- EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list", "list\list.vcproj", "{977B61B4-9968-497C-9F0B-24A8145473B8}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist", "slist\slist.vcproj", "{5A02061D-3728-4C49-AFC8-0130C1F161C0}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multiset", "multiset\multiset.vcproj", "{961F0E06-C092-4AF7-ABC5-2A49999F3B79}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_intrusivelib", "_intrusivelib\_intrusivelib.vcproj", "{90F3C5BD-8E6C-4629-BC71-A1009EC88059}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "set", "set\set.vcproj", "{960E01F6-92C1-F74A-BCA5-2A9F3B994979}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unordered_set", "unordered_set\unordered_set.vcproj", "{90E701E6-2C91-F4A7-BA6C-A9F3B0949279}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unordered_multiset", "unordered_multiset\unordered_multiset.vcproj", "{9101EE76-BB6C-2C91-F4B7-A9F3B9490279}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perf_test", "perf_test\perf_test.vcproj", "{910E70E6-2C91-AA67-BF4C-A9C74A309927}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "default_hook", "default_hook\default_hook.vcproj", "{761A79B4-9968-CB81-F02B-2A4497345475}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stateful_value_traits", "stateful_value_traits\stateful_value_traits.vcproj", "{9571A7B4-9968-B9C1-17FB-134547B46975}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "virtual_base", "virtual_base\virtual_base.vcproj", "{3579B1A4-9894-02AB-CB81-297B46154345}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_functions", "make_functions\make_functions.vcproj", "{7679B41B-F2B4-9176-CB81-35449467B435}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_bucket_traits", "custom_bucket_traits\custom_bucket_traits.vcproj", "{31C77B84-0B2C-9481-CB81-27A149F33825}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "external_value_traits", "external_value_traits\external_value_traits.vcproj", "{97B69A72-B9D3-7389-17FB-74612F4A9543}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "splay_multiset", "splay_multiset\splay_multiset.vcproj", "{01E70176-B6C5-BF47-2C91-A949077BA323}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "splay_set", "splay_set\splay_set.vcproj", "{1E6909E7-C971-F24A-6C7B-A92094B71B59}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "avl_multiset", "avl_multiset\avl_multiset.vcproj", "{0AE70176-5B8C-4BC7-392C-A4A312B07893}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "avl_set", "avl_set\avl_set.vcproj", "{16909EE7-24AF-97C1-C76B-204B971BA959}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sg_multiset", "sg_multiset\sg_multiset.vcproj", "{07022E76-6CB5-92C1-B47F-A10772A79B43}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sg_set", "sg_set\sg_set.vcproj", "{1690A9E7-DB57-971C-F24A-09B752A942F7}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "any_hook", "any_test\any_test.vcproj", "{97B61B24-4C97-9681-50BF-243175A813B6}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectDependencies) = postSolution
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {977B61B4-9968-497C-9F0B-24A8145473B8}.Debug.ActiveCfg = Debug|Win32
+ {977B61B4-9968-497C-9F0B-24A8145473B8}.Debug.Build.0 = Debug|Win32
+ {977B61B4-9968-497C-9F0B-24A8145473B8}.Release.ActiveCfg = Release|Win32
+ {977B61B4-9968-497C-9F0B-24A8145473B8}.Release.Build.0 = Release|Win32
+ {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Debug.ActiveCfg = Debug|Win32
+ {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Debug.Build.0 = Debug|Win32
+ {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Release.ActiveCfg = Release|Win32
+ {5A02061D-3728-4C49-AFC8-0130C1F161C0}.Release.Build.0 = Release|Win32
+ {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Debug.ActiveCfg = Debug|Win32
+ {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Debug.Build.0 = Debug|Win32
+ {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Release.ActiveCfg = Release|Win32
+ {961F0E06-C092-4AF7-ABC5-2A49999F3B79}.Release.Build.0 = Release|Win32
+ {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Debug.ActiveCfg = Debug|Win32
+ {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Debug.Build.0 = Debug|Win32
+ {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Release.ActiveCfg = Release|Win32
+ {90F3C5BD-8E6C-4629-BC71-A1009EC88059}.Release.Build.0 = Release|Win32
+ {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Debug.ActiveCfg = Debug|Win32
+ {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Debug.Build.0 = Debug|Win32
+ {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Release.ActiveCfg = Release|Win32
+ {960E01F6-92C1-F74A-BCA5-2A9F3B994979}.Release.Build.0 = Release|Win32
+ {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Debug.ActiveCfg = Debug|Win32
+ {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Debug.Build.0 = Debug|Win32
+ {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Release.ActiveCfg = Release|Win32
+ {90E701E6-2C91-F4A7-BA6C-A9F3B0949279}.Release.Build.0 = Release|Win32
+ {9101EE76-BB6C-2C91-F4B7-A9F3B9490279}.Debug.ActiveCfg = Debug|Win32
+ {9101EE76-BB6C-2C91-F4B7-A9F3B9490279}.Debug.Build.0 = Debug|Win32
+ {9101EE76-BB6C-2C91-F4B7-A9F3B9490279}.Release.ActiveCfg = Release|Win32
+ {9101EE76-BB6C-2C91-F4B7-A9F3B9490279}.Release.Build.0 = Release|Win32
+ {910E70E6-2C91-AA67-BF4C-A9C74A309927}.Debug.ActiveCfg = Debug|Win32
+ {910E70E6-2C91-AA67-BF4C-A9C74A309927}.Debug.Build.0 = Debug|Win32
+ {910E70E6-2C91-AA67-BF4C-A9C74A309927}.Release.ActiveCfg = Release|Win32
+ {910E70E6-2C91-AA67-BF4C-A9C74A309927}.Release.Build.0 = Release|Win32
+ {761A79B4-9968-CB81-F02B-2A4497345475}.Debug.ActiveCfg = Debug|Win32
+ {761A79B4-9968-CB81-F02B-2A4497345475}.Debug.Build.0 = Debug|Win32
+ {761A79B4-9968-CB81-F02B-2A4497345475}.Release.ActiveCfg = Release|Win32
+ {761A79B4-9968-CB81-F02B-2A4497345475}.Release.Build.0 = Release|Win32
+ {9571A7B4-9968-B9C1-17FB-134547B46975}.Debug.ActiveCfg = Debug|Win32
+ {9571A7B4-9968-B9C1-17FB-134547B46975}.Debug.Build.0 = Debug|Win32
+ {9571A7B4-9968-B9C1-17FB-134547B46975}.Release.ActiveCfg = Release|Win32
+ {9571A7B4-9968-B9C1-17FB-134547B46975}.Release.Build.0 = Release|Win32
+ {3579B1A4-9894-02AB-CB81-297B46154345}.Debug.ActiveCfg = Debug|Win32
+ {3579B1A4-9894-02AB-CB81-297B46154345}.Debug.Build.0 = Debug|Win32
+ {3579B1A4-9894-02AB-CB81-297B46154345}.Release.ActiveCfg = Release|Win32
+ {3579B1A4-9894-02AB-CB81-297B46154345}.Release.Build.0 = Release|Win32
+ {7679B41B-F2B4-9176-CB81-35449467B435}.Debug.ActiveCfg = Debug|Win32
+ {7679B41B-F2B4-9176-CB81-35449467B435}.Debug.Build.0 = Debug|Win32
+ {7679B41B-F2B4-9176-CB81-35449467B435}.Release.ActiveCfg = Release|Win32
+ {7679B41B-F2B4-9176-CB81-35449467B435}.Release.Build.0 = Release|Win32
+ {31C77B84-0B2C-9481-CB81-27A149F33825}.Debug.ActiveCfg = Debug|Win32
+ {31C77B84-0B2C-9481-CB81-27A149F33825}.Debug.Build.0 = Debug|Win32
+ {31C77B84-0B2C-9481-CB81-27A149F33825}.Release.ActiveCfg = Release|Win32
+ {31C77B84-0B2C-9481-CB81-27A149F33825}.Release.Build.0 = Release|Win32
+ {97B69A72-B9D3-7389-17FB-74612F4A9543}.Debug.ActiveCfg = Debug|Win32
+ {97B69A72-B9D3-7389-17FB-74612F4A9543}.Debug.Build.0 = Debug|Win32
+ {97B69A72-B9D3-7389-17FB-74612F4A9543}.Release.ActiveCfg = Release|Win32
+ {97B69A72-B9D3-7389-17FB-74612F4A9543}.Release.Build.0 = Release|Win32
+ {01E70176-B6C5-BF47-2C91-A949077BA323}.Debug.ActiveCfg = Debug|Win32
+ {01E70176-B6C5-BF47-2C91-A949077BA323}.Debug.Build.0 = Debug|Win32
+ {01E70176-B6C5-BF47-2C91-A949077BA323}.Release.ActiveCfg = Release|Win32
+ {01E70176-B6C5-BF47-2C91-A949077BA323}.Release.Build.0 = Release|Win32
+ {1E6909E7-C971-F24A-6C7B-A92094B71B59}.Debug.ActiveCfg = Debug|Win32
+ {1E6909E7-C971-F24A-6C7B-A92094B71B59}.Debug.Build.0 = Debug|Win32
+ {1E6909E7-C971-F24A-6C7B-A92094B71B59}.Release.ActiveCfg = Release|Win32
+ {1E6909E7-C971-F24A-6C7B-A92094B71B59}.Release.Build.0 = Release|Win32
+ {0AE70176-5B8C-4BC7-392C-A4A312B07893}.Debug.ActiveCfg = Debug|Win32
+ {0AE70176-5B8C-4BC7-392C-A4A312B07893}.Debug.Build.0 = Debug|Win32
+ {0AE70176-5B8C-4BC7-392C-A4A312B07893}.Release.ActiveCfg = Release|Win32
+ {0AE70176-5B8C-4BC7-392C-A4A312B07893}.Release.Build.0 = Release|Win32
+ {16909EE7-24AF-97C1-C76B-204B971BA959}.Debug.ActiveCfg = Debug|Win32
+ {16909EE7-24AF-97C1-C76B-204B971BA959}.Debug.Build.0 = Debug|Win32
+ {16909EE7-24AF-97C1-C76B-204B971BA959}.Release.ActiveCfg = Release|Win32
+ {16909EE7-24AF-97C1-C76B-204B971BA959}.Release.Build.0 = Release|Win32
+ {07022E76-6CB5-92C1-B47F-A10772A79B43}.Debug.ActiveCfg = Debug|Win32
+ {07022E76-6CB5-92C1-B47F-A10772A79B43}.Debug.Build.0 = Debug|Win32
+ {07022E76-6CB5-92C1-B47F-A10772A79B43}.Release.ActiveCfg = Release|Win32
+ {07022E76-6CB5-92C1-B47F-A10772A79B43}.Release.Build.0 = Release|Win32
+ {1690A9E7-DB57-971C-F24A-09B752A942F7}.Debug.ActiveCfg = Debug|Win32
+ {1690A9E7-DB57-971C-F24A-09B752A942F7}.Debug.Build.0 = Debug|Win32
+ {1690A9E7-DB57-971C-F24A-09B752A942F7}.Release.ActiveCfg = Release|Win32
+ {1690A9E7-DB57-971C-F24A-09B752A942F7}.Release.Build.0 = Release|Win32
+ {97B61B24-4C97-9681-50BF-243175A813B6}.Debug.ActiveCfg = Debug|Win32
+ {97B61B24-4C97-9681-50BF-243175A813B6}.Debug.Build.0 = Debug|Win32
+ {97B61B24-4C97-9681-50BF-243175A813B6}.Release.ActiveCfg = Release|Win32
+ {97B61B24-4C97-9681-50BF-243175A813B6}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal

Modified: branches/proto/v4/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj
==============================================================================
--- branches/proto/v4/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj (original)
+++ branches/proto/v4/libs/intrusive/proj/vc7ide/_intrusivelib/_intrusivelib.vcproj 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -106,6 +106,9 @@
                         Filter="h;hpp;hxx;hm;inl;inc;xsd"
                         UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
                         <File
+ RelativePath="..\..\..\..\..\boost\intrusive\any_hook.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\..\boost\intrusive\avl_set.hpp">
                         </File>
                         <File
@@ -208,6 +211,9 @@
                                 Name="detail"
                                 Filter="">
                                 <File
+ RelativePath="..\..\..\..\..\boost\intrusive\detail\any_node_and_algorithms.hpp">
+ </File>
+ <File
                                         RelativePath="..\..\..\..\..\boost\intrusive\detail\assert.hpp">
                                 </File>
                                 <File
@@ -317,6 +323,9 @@
                                 RelativePath="..\..\..\example\doc_advanced_value_traits2.cpp">
                         </File>
                         <File
+ RelativePath="..\..\..\example\doc_any_hook.cpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\example\doc_assoc_optimized_code.cpp">
                         </File>
                         <File

Modified: branches/proto/v4/libs/intrusive/proj/vc7ide/list/list.vcproj
==============================================================================
--- branches/proto/v4/libs/intrusive/proj/vc7ide/list/list.vcproj (original)
+++ branches/proto/v4/libs/intrusive/proj/vc7ide/list/list.vcproj 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -127,16 +127,6 @@
                                 RelativePath="..\..\..\test\list_test.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/proto/v4/libs/intrusive/proj/vc7ide/multiset/multiset.vcproj
==============================================================================
--- branches/proto/v4/libs/intrusive/proj/vc7ide/multiset/multiset.vcproj (original)
+++ branches/proto/v4/libs/intrusive/proj/vc7ide/multiset/multiset.vcproj 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -121,16 +121,6 @@
                                 RelativePath="..\..\..\test\multiset_test.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/proto/v4/libs/intrusive/proj/vc7ide/perf_test/perf_test.vcproj
==============================================================================
--- branches/proto/v4/libs/intrusive/proj/vc7ide/perf_test/perf_test.vcproj (original)
+++ branches/proto/v4/libs/intrusive/proj/vc7ide/perf_test/perf_test.vcproj 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -122,16 +122,6 @@
                                 RelativePath="..\..\..\perf\perf_list.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{68B017A6-F80D6A2-084c-06A6-8A323C1ABD01}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/proto/v4/libs/intrusive/proj/vc7ide/set/set.vcproj
==============================================================================
--- branches/proto/v4/libs/intrusive/proj/vc7ide/set/set.vcproj (original)
+++ branches/proto/v4/libs/intrusive/proj/vc7ide/set/set.vcproj 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -121,16 +121,6 @@
                                 RelativePath="..\..\..\test\set_test.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{68007AB6-FDA6800-084c-B78A-8121AA3BBD01}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/proto/v4/libs/intrusive/proj/vc7ide/slist/slist.vcproj
==============================================================================
--- branches/proto/v4/libs/intrusive/proj/vc7ide/slist/slist.vcproj (original)
+++ branches/proto/v4/libs/intrusive/proj/vc7ide/slist/slist.vcproj 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -121,16 +121,6 @@
                                 RelativePath="..\..\..\test\slist_test.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Deleted: branches/proto/v4/libs/intrusive/proj/vc7ide/to-do.txt
==============================================================================
--- branches/proto/v4/libs/intrusive/proj/vc7ide/to-do.txt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,12 +0,0 @@
-Add resize() to list
-Implement incremental hashing
-Add invariants to slist and test them after every operation
-Create a generic hook that will work with all containers
-Take advantage of store_hash in lookups: Instead of comparing objects, just
- compare hashes. This will improve equality for expensive objects.
-
-Improve the use of cache_begin to unordered containers:
--> Speed up rehash
-
-Add erase(iterator, iterator, difference_type) to lists to obtain constant-time erase.
-

Modified: branches/proto/v4/libs/intrusive/proj/vc7ide/unordered_multiset/unordered_multiset.vcproj
==============================================================================
--- branches/proto/v4/libs/intrusive/proj/vc7ide/unordered_multiset/unordered_multiset.vcproj (original)
+++ branches/proto/v4/libs/intrusive/proj/vc7ide/unordered_multiset/unordered_multiset.vcproj 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -122,16 +122,6 @@
                                 RelativePath="..\..\..\test\unordered_multiset_test.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{99954380-9C8D-084c-4b04-62E52E6FBBFB}">
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{6A181B76-FDA6800-8E8B-0A66-813A3BB1AD01}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/proto/v4/libs/intrusive/proj/vc7ide/unordered_set/unordered_set.vcproj
==============================================================================
--- branches/proto/v4/libs/intrusive/proj/vc7ide/unordered_set/unordered_set.vcproj (original)
+++ branches/proto/v4/libs/intrusive/proj/vc7ide/unordered_set/unordered_set.vcproj 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -121,16 +121,6 @@
                                 RelativePath="..\..\..\test\unordered_set_test.cpp">
                         </File>
                 </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{68AB0076-FDA6800-084c-06A6-8121AA3BBD01}">
- </Filter>
         </Files>
         <Globals>
         </Globals>

Modified: branches/proto/v4/libs/intrusive/test/common_functors.hpp
==============================================================================
--- branches/proto/v4/libs/intrusive/test/common_functors.hpp (original)
+++ branches/proto/v4/libs/intrusive/test/common_functors.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -41,6 +41,14 @@
    { return new T(t); }
 };
 
+template<class T>
+class new_default_factory
+{
+ public:
+ T *operator()()
+ { return new T(); }
+};
+
 } //namespace test {
 } //namespace intrusive {
 } //namespace boost {

Modified: branches/proto/v4/libs/intrusive/test/itestvalue.hpp
==============================================================================
--- branches/proto/v4/libs/intrusive/test/itestvalue.hpp (original)
+++ branches/proto/v4/libs/intrusive/test/itestvalue.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -380,6 +380,9 @@
    bool operator==(const testvalue &other) const
    { return value_ == other.value_; }
 
+ bool operator!=(const testvalue &other) const
+ { return value_ != other.value_; }
+
    friend bool operator< (int other1, const testvalue &other2)
    { return other1 < other2.value_; }
 
@@ -391,6 +394,12 @@
 
    friend bool operator== (const testvalue &other1, int other2)
    { return other1.value_ == other2; }
+
+ friend bool operator!= (int other1, const testvalue &other2)
+ { return other1 != other2.value_; }
+
+ friend bool operator!= (const testvalue &other1, int other2)
+ { return other1.value_ != other2; }
 };
 
 template<class VoidPointer, bool ConstantTimeSize>

Modified: branches/proto/v4/libs/intrusive/test/list_test.cpp
==============================================================================
--- branches/proto/v4/libs/intrusive/test/list_test.cpp (original)
+++ branches/proto/v4/libs/intrusive/test/list_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -229,6 +229,7 @@
       TEST_INTRUSIVE_SEQUENCE( init_values, const_testlist.begin() ); }
 }
 
+
 template<class ValueTraits>
 void test_list<ValueTraits>
    ::test_shift(std::vector<typename ValueTraits::value_type>& values)

Modified: branches/proto/v4/libs/intrusive/test/slist_test.cpp
==============================================================================
--- branches/proto/v4/libs/intrusive/test/slist_test.cpp (original)
+++ branches/proto/v4/libs/intrusive/test/slist_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -315,7 +315,7 @@
    testlist.erase (++testlist.begin(), testlist.end());
    BOOST_TEST (testlist.size() == 1);
    BOOST_TEST (testlist.front().value_ == 3);
-}
+}
 
 template<class ValueTraits, bool Linear, bool CacheLast>
 void test_slist<ValueTraits, Linear, CacheLast>

Modified: branches/proto/v4/libs/intrusive/test/unordered_multiset_test.cpp
==============================================================================
--- branches/proto/v4/libs/intrusive/test/unordered_multiset_test.cpp (original)
+++ branches/proto/v4/libs/intrusive/test/unordered_multiset_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,7 +27,7 @@
 
 static const std::size_t BucketSize = 11;
 
-template<class ValueTraits, bool CacheBegin>
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
 struct test_unordered_multiset
 {
    typedef typename ValueTraits::value_type value_type;
@@ -41,8 +41,8 @@
    static void test_clone(std::vector<value_type>& values);
 };
 
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_multiset<ValueTraits, CacheBegin>::test_all (std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_multiset<ValueTraits, CacheBegin, CompareHash>::test_all (std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_multiset
@@ -50,6 +50,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_multiset_type;
    {
       typedef typename unordered_multiset_type::bucket_traits bucket_traits;
@@ -77,8 +78,8 @@
 }
 
 //test case due to an error in tree implementation:
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_multiset<ValueTraits, CacheBegin>::test_impl()
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_multiset<ValueTraits, CacheBegin, CompareHash>::test_impl()
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_multiset
@@ -86,6 +87,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_multiset_type;
    typedef typename unordered_multiset_type::bucket_traits bucket_traits;
 
@@ -108,8 +110,8 @@
 }
 
 //test: constructor, iterator, clear, reverse_iterator, front, back, size:
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_multiset<ValueTraits, CacheBegin>::test_sort(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_multiset<ValueTraits, CacheBegin, CompareHash>::test_sort(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_multiset
@@ -117,6 +119,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_multiset_type;
    typedef typename unordered_multiset_type::bucket_traits bucket_traits;
 
@@ -130,8 +133,8 @@
 }
   
 //test: insert, const_iterator, const_reverse_iterator, erase, iterator_to:
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_multiset<ValueTraits, CacheBegin>::test_insert(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_multiset<ValueTraits, CacheBegin, CompareHash>::test_insert(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_multiset
@@ -139,6 +142,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_multiset_type;
    typedef typename unordered_multiset_type::bucket_traits bucket_traits;
    typedef typename unordered_multiset_type::iterator iterator;
@@ -269,8 +273,8 @@
 }
 
 //test: insert (seq-version), swap, erase (seq-version), size:
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_multiset<ValueTraits, CacheBegin>::test_swap(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_multiset<ValueTraits, CacheBegin, CompareHash>::test_swap(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_multiset
@@ -278,6 +282,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_multiset_type;
    typedef typename unordered_multiset_type::bucket_traits bucket_traits;
    typename unordered_multiset_type::bucket_type buckets [BucketSize];
@@ -302,8 +307,8 @@
 }
 
 //test: rehash:
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_multiset<ValueTraits, CacheBegin>::test_rehash(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_multiset<ValueTraits, CacheBegin, CompareHash>::test_rehash(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_multiset
@@ -311,6 +316,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_multiset_type;
    typedef typename unordered_multiset_type::bucket_traits bucket_traits;
 
@@ -347,8 +353,8 @@
 }
 
 //test: find, equal_range (lower_bound, upper_bound):
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_multiset<ValueTraits, CacheBegin>::test_find(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_multiset<ValueTraits, CacheBegin, CompareHash>::test_find(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_multiset
@@ -356,6 +362,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_multiset_type;
    typedef typename unordered_multiset_type::bucket_traits bucket_traits;
 
@@ -380,8 +387,8 @@
 }
 
 
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_multiset<ValueTraits, CacheBegin>
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_multiset<ValueTraits, CacheBegin, CompareHash>
    ::test_clone(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
@@ -390,6 +397,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_multiset_type;
    typedef typename unordered_multiset_type::bucket_traits bucket_traits;
    {
@@ -462,6 +470,7 @@
                   , typename value_type::unordered_set_base_hook_t
>::type
                 , true
+ , false
>::test_all(data);
 
       test_unordered_multiset < typename detail::get_member_value_traits
@@ -472,6 +481,7 @@
>
>::type
                 , false
+ , false
>::test_all(data);
 
       return 0;
@@ -495,6 +505,7 @@
                   , typename value_type::unordered_set_base_hook_t
>::type
                 , true
+ , false
>::test_all(data);
 
       test_unordered_multiset < typename detail::get_member_value_traits
@@ -505,6 +516,7 @@
>
>::type
                 , false
+ , false
>::test_all(data);
 
       test_unordered_multiset < typename detail::get_base_value_traits
@@ -512,6 +524,7 @@
                   , typename value_type::unordered_set_auto_base_hook_t
>::type
                 , true
+ , true
>::test_all(data);
 
       test_unordered_multiset < typename detail::get_member_value_traits
@@ -522,6 +535,7 @@
>
>::type
                 , false
+ , true
>::test_all(data);
       return 0;
    }

Modified: branches/proto/v4/libs/intrusive/test/unordered_set_test.cpp
==============================================================================
--- branches/proto/v4/libs/intrusive/test/unordered_set_test.cpp (original)
+++ branches/proto/v4/libs/intrusive/test/unordered_set_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,7 +26,7 @@
 
 static const std::size_t BucketSize = 11;
 
-template<class ValueTraits, bool CacheBegin>
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
 struct test_unordered_set
 {
    typedef typename ValueTraits::value_type value_type;
@@ -40,8 +40,8 @@
    static void test_clone(std::vector<value_type>& values);
 };
 
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_set<ValueTraits, CacheBegin>::test_all(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_set<ValueTraits, CacheBegin, CompareHash>::test_all(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_set
@@ -49,6 +49,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_set_type;
    typedef typename unordered_set_type::bucket_traits bucket_traits;
    {
@@ -76,8 +77,8 @@
 }
 
 //test case due to an error in tree implementation:
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_set<ValueTraits, CacheBegin>::test_impl()
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_set<ValueTraits, CacheBegin, CompareHash>::test_impl()
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_set
@@ -85,6 +86,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_set_type;
    typedef typename unordered_set_type::bucket_traits bucket_traits;
 
@@ -105,8 +107,8 @@
 }
 
 //test: constructor, iterator, clear, reverse_iterator, front, back, size:
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_set<ValueTraits, CacheBegin>::test_sort(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_set<ValueTraits, CacheBegin, CompareHash>::test_sort(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_set
@@ -114,6 +116,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_set_type;
    typedef typename unordered_set_type::bucket_traits bucket_traits;
 
@@ -129,8 +132,8 @@
 }
   
 //test: insert, const_iterator, const_reverse_iterator, erase, iterator_to:
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_set<ValueTraits, CacheBegin>::test_insert(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_set<ValueTraits, CacheBegin, CompareHash>::test_insert(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_set
@@ -138,6 +141,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_set_type;
    typedef typename unordered_set_type::bucket_traits bucket_traits;
 
@@ -165,8 +169,8 @@
 }
 
 //test: insert (seq-version), swap, erase (seq-version), size:
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_set<ValueTraits, CacheBegin>::test_swap(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_set<ValueTraits, CacheBegin, CompareHash>::test_swap(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_set
@@ -174,6 +178,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_set_type;
    typedef typename unordered_set_type::bucket_traits bucket_traits;
 
@@ -197,8 +202,8 @@
 }
 
 //test: rehash:
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_set<ValueTraits, CacheBegin>::test_rehash(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_set<ValueTraits, CacheBegin, CompareHash>::test_rehash(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_set
@@ -206,6 +211,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_set_type;
    typedef typename unordered_set_type::bucket_traits bucket_traits;
 
@@ -243,8 +249,8 @@
 
 
 //test: find, equal_range (lower_bound, upper_bound):
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_set<ValueTraits, CacheBegin>::test_find(std::vector<typename ValueTraits::value_type>& values)
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_set<ValueTraits, CacheBegin, CompareHash>::test_find(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
    typedef unordered_set
@@ -252,6 +258,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_set_type;
    typedef typename unordered_set_type::bucket_traits bucket_traits;
 
@@ -274,8 +281,8 @@
    BOOST_TEST (testset.find (cmp_val) == testset.end());
 }
 
-template<class ValueTraits, bool CacheBegin>
-void test_unordered_set<ValueTraits, CacheBegin>
+template<class ValueTraits, bool CacheBegin, bool CompareHash>
+void test_unordered_set<ValueTraits, CacheBegin, CompareHash>
    ::test_clone(std::vector<typename ValueTraits::value_type>& values)
 {
    typedef typename ValueTraits::value_type value_type;
@@ -284,6 +291,7 @@
       , value_traits<ValueTraits>
       , constant_time_size<value_type::constant_time_size>
       , cache_begin<CacheBegin>
+ , compare_hash<CompareHash>
> unordered_set_type;
    typedef typename unordered_set_type::bucket_traits bucket_traits;
    {
@@ -356,6 +364,7 @@
                   , typename value_type::unordered_set_base_hook_t
>::type
                 , true
+ , false
>::test_all(data);
       test_unordered_set < typename detail::get_member_value_traits
                   < value_type
@@ -365,6 +374,7 @@
>
>::type
                 , false
+ , false
>::test_all(data);
 
       return 0;
@@ -388,6 +398,7 @@
                   , typename value_type::unordered_set_base_hook_t
>::type
                 , true
+ , false
>::test_all(data);
 
       test_unordered_set < typename detail::get_member_value_traits
@@ -398,6 +409,7 @@
>
>::type
                 , false
+ , false
>::test_all(data);
 
       test_unordered_set < typename detail::get_base_value_traits
@@ -405,6 +417,7 @@
                   , typename value_type::unordered_set_auto_base_hook_t
>::type
                 , true
+ , true
>::test_all(data);
 
       test_unordered_set < typename detail::get_member_value_traits
@@ -415,6 +428,7 @@
>
>::type
                 , false
+ , true
>::test_all(data);
       return 0;
    }

Modified: branches/proto/v4/libs/iostreams/src/file_descriptor.cpp
==============================================================================
--- branches/proto/v4/libs/iostreams/src/file_descriptor.cpp (original)
+++ branches/proto/v4/libs/iostreams/src/file_descriptor.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,9 +5,6 @@
 
 // See http://www.boost.org/libs/iostreams for documentation.
 
-// Inspired by fdstream.hpp, (C) Copyright Nicolai M. Josuttis 2001,
-// available at http://www.josuttis.com/cppcode/fdstream.html.
-
 // Define BOOST_IOSTREAMS_SOURCE so that <boost/iostreams/detail/config.hpp>
 // knows that we are building the library (possibly exporting code), rather
 // than using it (possibly importing code).
@@ -21,6 +18,7 @@
 #include <boost/iostreams/detail/config/dyn_link.hpp>
 #include <boost/iostreams/detail/config/rtl.hpp> // BOOST_IOSTREAMS_FD_XXX
 #include <boost/iostreams/detail/config/windows_posix.hpp>
+#include <boost/iostreams/detail/system_failure.hpp>
 #include <boost/iostreams/detail/ios.hpp> // openmodes, failure.
 #include <boost/iostreams/device/file_descriptor.hpp>
 #include <boost/integer_traits.hpp>
@@ -43,68 +41,96 @@
 
 namespace boost { namespace iostreams {
 
-//------------------Implementation of file_descriptor-------------------------//
+//------------------Definition of file_descriptor_impl------------------------//
 
-file_descriptor::file_descriptor() : pimpl_(new impl) { }
-
-file_descriptor::file_descriptor(handle_type fd, bool close_on_exit)
- : pimpl_(new impl(fd, close_on_exit))
- { }
+namespace detail {
 
+// Contains the platform dependant implementation
+struct file_descriptor_impl {
+ file_descriptor_impl();
+ ~file_descriptor_impl();
+ void open(file_handle fd, bool close_on_exit);
 #ifdef BOOST_IOSTREAMS_WINDOWS
- file_descriptor::file_descriptor(int fd, bool close_on_exit)
- : pimpl_(new impl(int_to_handle(fd), close_on_exit))
- { }
+ void open(int fd, bool close_on_exit);
 #endif
+ void open(const detail::path&, BOOST_IOS::openmode);
+ bool is_open() const;
+ void close();
+ std::streamsize read(char* s, std::streamsize n);
+ std::streamsize write(const char* s, std::streamsize n);
+ std::streampos seek(stream_offset off, BOOST_IOS::seekdir way);
+ static file_handle invalid_handle();
+ enum flags {
+ close_on_exit = 1,
+ append = 4
+ };
+ file_handle handle_;
+ int flags_;
+};
 
-file_descriptor::file_descriptor( const char* path,
- BOOST_IOS::openmode mode,
- BOOST_IOS::openmode base_mode )
- : pimpl_(new impl)
-{ open(std::string(path), mode, base_mode); }
+//------------------Implementation of file_descriptor_impl--------------------//
 
-file_descriptor::file_descriptor( const std::string& path,
- BOOST_IOS::openmode mode,
- BOOST_IOS::openmode base_mode )
- : pimpl_(new impl)
-{ open(path, mode, base_mode); }
-
-void file_descriptor::open
- ( const std::string& path, BOOST_IOS::openmode m,
- BOOST_IOS::openmode base )
+file_descriptor_impl::file_descriptor_impl()
+ : handle_(invalid_handle()), flags_(0)
+ { }
+
+file_descriptor_impl::~file_descriptor_impl()
+{ if (flags_ & close_on_exit) close(); }
+
+void file_descriptor_impl::open(file_handle fd, bool close_on_exit)
+{
+ handle_ = fd;
+ flags_ = close_on_exit ?
+ file_descriptor_impl::close_on_exit :
+ 0;
+}
+
+#ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------//
+
+void file_descriptor_impl::open(int fd, bool close_on_exit)
+{ open(reinterpret_cast<file_handle>(_get_osfhandle(fd)), close_on_exit); }
+
+#endif // #ifdef BOOST_IOSTREAMS_WINDOWS //-----------------------------------//
+
+void file_descriptor_impl::open(const detail::path& p, BOOST_IOS::openmode mode)
 {
- using namespace std;
- m |= base;
 #ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------//
     DWORD dwDesiredAccess;
     DWORD dwCreationDisposition;
- if ( (m & (BOOST_IOS::in | BOOST_IOS::out))
+ if ( (mode & (BOOST_IOS::in | BOOST_IOS::out))
              ==
          (BOOST_IOS::in | BOOST_IOS::out) )
     {
- if (m & BOOST_IOS::app)
+ if (mode & BOOST_IOS::app)
             throw BOOST_IOSTREAMS_FAILURE("bad open mode");
         dwDesiredAccess = GENERIC_READ | GENERIC_WRITE;
         dwCreationDisposition =
- (m & BOOST_IOS::trunc) ?
+ (mode & BOOST_IOS::trunc) ?
                 OPEN_ALWAYS :
                 OPEN_EXISTING;
- } else if (m & BOOST_IOS::in) {
- if (m & (BOOST_IOS::app |BOOST_IOS::trunc))
+ } else if (mode & BOOST_IOS::in) {
+ if (mode & (BOOST_IOS::app |BOOST_IOS::trunc))
             throw BOOST_IOSTREAMS_FAILURE("bad open mode");
         dwDesiredAccess = GENERIC_READ;
         dwCreationDisposition = OPEN_EXISTING;
- } else if (m & BOOST_IOS::out) {
+ } else if (mode & BOOST_IOS::out) {
         dwDesiredAccess = GENERIC_WRITE;
         dwCreationDisposition = OPEN_ALWAYS;
- if (m & BOOST_IOS::app)
- pimpl_->flags_ |= impl::append;
+ if (mode & BOOST_IOS::app)
+ flags_ |= append;
     } else {
         throw BOOST_IOSTREAMS_FAILURE("bad open mode");
     }
 
- HANDLE handle =
- ::CreateFileA( path.c_str(),
+ HANDLE handle = p.is_wide() ?
+ ::CreateFileW( p.c_wstr(),
+ dwDesiredAccess,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ NULL, // lpSecurityAttributes
+ dwCreationDisposition,
+ FILE_ATTRIBUTE_NORMAL,
+ NULL ) : // hTemplateFile
+ ::CreateFileA( p.c_str(),
                        dwDesiredAccess,
                        FILE_SHARE_READ | FILE_SHARE_WRITE,
                        NULL, // lpSecurityAttributes
@@ -112,33 +138,33 @@
                        FILE_ATTRIBUTE_NORMAL,
                        NULL ); // hTemplateFile
     if (handle != INVALID_HANDLE_VALUE) {
- pimpl_->handle_ = handle;
- pimpl_->flags_ |= impl::close_on_exit;
+ handle_ = handle;
+ flags_ |= close_on_exit;
     } else {
- pimpl_->flags_ = 0;
- throw BOOST_IOSTREAMS_FAILURE("bad open");
+ flags_ = 0;
+ throw_system_failure("failed opening file");
     }
 #else // #ifdef BOOST_IOSTREAMS_WINDOWS //------------------------------------//
 
         // Calculate oflag argument to open.
 
     int oflag = 0;
- if ( (m & (BOOST_IOS::in | BOOST_IOS::out))
+ if ( (mode & (BOOST_IOS::in | BOOST_IOS::out))
              ==
          (BOOST_IOS::in | BOOST_IOS::out) )
     {
- assert(!(m & BOOST_IOS::app));
+ assert(!(mode & BOOST_IOS::app));
         oflag |= O_RDWR;
- } else if (m & BOOST_IOS::in) {
- assert(!(m & (BOOST_IOS::app |BOOST_IOS::trunc)));
+ } else if (mode & BOOST_IOS::in) {
+ assert(!(mode & (BOOST_IOS::app |BOOST_IOS::trunc)));
         oflag |= O_RDONLY;
- } else if (m & BOOST_IOS::out) {
+ } else if (mode & BOOST_IOS::out) {
         oflag |= O_WRONLY;
- m |= BOOST_IOS::trunc;
- if (m & BOOST_IOS::app)
+ mode |= BOOST_IOS::trunc;
+ if (mode & BOOST_IOS::app)
             oflag |= O_APPEND;
     }
- if (m & BOOST_IOS::trunc)
+ if (mode & BOOST_IOS::trunc)
         oflag |= O_CREAT;
     #ifdef _LARGEFILE64_SOURCE
         oflag |= O_LARGEFILE;
@@ -152,70 +178,83 @@
 
         // Open file.
 
- int fd = BOOST_IOSTREAMS_FD_OPEN(path.c_str(), oflag, pmode);
+ int fd = BOOST_IOSTREAMS_FD_OPEN(p.c_str(), oflag, pmode);
     if (fd == -1) {
- throw BOOST_IOSTREAMS_FAILURE("bad open");
+ throw system_failure("failed opening file");
     } else {
- pimpl_->handle_ = fd;
- pimpl_->flags_ = impl::close_on_exit;
+ handle_ = fd;
+ flags_ = close_on_exit;
     }
 #endif // #ifndef BOOST_IOSTREAMS_WINDOWS //----------------------------------//
 }
 
-void file_descriptor::open
- ( const char* path, BOOST_IOS::openmode m,
- BOOST_IOS::openmode base )
-{ open(std::string(path), m, base); }
+bool file_descriptor_impl::is_open() const
+{ return handle_ != invalid_handle(); }
 
-std::streamsize file_descriptor::read(char_type* s, std::streamsize n)
+void file_descriptor_impl::close()
+{
+ if (handle_ != invalid_handle()) {
+ bool success =
+ #ifdef BOOST_IOSTREAMS_WINDOWS
+ ::CloseHandle(handle_) == 1;
+ #else
+ BOOST_IOSTREAMS_FD_CLOSE(handle_) != -1;
+ #endif
+ if (!success)
+ throw_system_failure("failed closing file");
+ handle_ = invalid_handle();
+ flags_ = 0;
+ }
+}
+
+std::streamsize file_descriptor_impl::read(char* s, std::streamsize n)
 {
 #ifdef BOOST_IOSTREAMS_WINDOWS
     DWORD result;
- if (!::ReadFile(pimpl_->handle_, s, n, &result, NULL))
- throw detail::bad_read();
+ if (!::ReadFile(handle_, s, n, &result, NULL))
+ throw_system_failure("failed reading");
     return result == 0 ? -1 : static_cast<std::streamsize>(result);
 #else // #ifdef BOOST_IOSTREAMS_WINDOWS
     errno = 0;
- std::streamsize result = BOOST_IOSTREAMS_FD_READ(pimpl_->handle_, s, n);
+ std::streamsize result = BOOST_IOSTREAMS_FD_READ(handle_, s, n);
     if (errno != 0)
- throw detail::bad_read();
+ throw_system_failure("failed reading");
     return result == 0 ? -1 : result;
 #endif // #ifdef BOOST_IOSTREAMS_WINDOWS
 }
 
-std::streamsize file_descriptor::write(const char_type* s, std::streamsize n)
+std::streamsize file_descriptor_impl::write(const char* s, std::streamsize n)
 {
 #ifdef BOOST_IOSTREAMS_WINDOWS
- if (pimpl_->flags_ & impl::append) {
+ if (flags_ & append) {
         DWORD const dwResult =
- ::SetFilePointer(pimpl_->handle_, 0, NULL, FILE_END);
+ ::SetFilePointer(handle_, 0, NULL, FILE_END);
         if ( dwResult == INVALID_SET_FILE_POINTER &&
              ::GetLastError() != NO_ERROR )
         {
- throw detail::bad_seek();
+ throw_system_failure("failed seeking within file");
         }
     }
     DWORD ignore;
- if (!::WriteFile(pimpl_->handle_, s, n, &ignore, NULL))
- throw detail::bad_write();
+ if (!::WriteFile(handle_, s, n, &ignore, NULL))
+ throw_system_failure("failed writing");
     return n;
 #else // #ifdef BOOST_IOSTREAMS_WINDOWS
- int amt = BOOST_IOSTREAMS_FD_WRITE(pimpl_->handle_, s, n);
- if (amt < n)
- throw detail::bad_write(); // Handles blocking fd's only.
+ int amt = BOOST_IOSTREAMS_FD_WRITE(handle_, s, n);
+ if (amt < n) // Handles blocking fd's only.
+ throw_system_failure("failed writing");
     return n;
 #endif // #ifdef BOOST_IOSTREAMS_WINDOWS
 }
 
-std::streampos file_descriptor::seek
+std::streampos file_descriptor_impl::seek
     (stream_offset off, BOOST_IOS::seekdir way)
 {
- using namespace std;
 #ifdef BOOST_IOSTREAMS_WINDOWS
     LONG lDistanceToMove = static_cast<LONG>(off & 0xffffffff);
     LONG lDistanceToMoveHigh = static_cast<LONG>(off >> 32);
     DWORD dwResultLow =
- ::SetFilePointer( pimpl_->handle_,
+ ::SetFilePointer( handle_,
                           lDistanceToMove,
                           &lDistanceToMoveHigh,
                           way == BOOST_IOS::beg ?
@@ -226,7 +265,7 @@
     if ( dwResultLow == INVALID_SET_FILE_POINTER &&
          ::GetLastError() != NO_ERROR )
     {
- throw detail::bad_seek();
+ throw system_failure("failed seeking");
     } else {
        return offset_to_position(
                          (stream_offset(lDistanceToMoveHigh) << 32) + dwResultLow
@@ -240,7 +279,7 @@
     }
     stream_offset result =
         BOOST_IOSTREAMS_FD_SEEK(
- pimpl_->handle_,
+ handle_,
             static_cast<BOOST_IOSTREAMS_FD_OFFSET>(off),
             ( way == BOOST_IOS::beg ?
                   SEEK_SET :
@@ -249,38 +288,196 @@
                       SEEK_END )
         );
     if (result == -1)
- throw detail::bad_seek();
+ throw system_failure("failed seeking");
     return offset_to_position(result);
 #endif // #ifdef BOOST_IOSTREAMS_WINDOWS
 }
 
-void file_descriptor::close() { close_impl(*pimpl_); }
-
-void file_descriptor::close_impl(impl& i)
+// Returns the value stored in a file_handle variable when no file is open
+file_handle file_descriptor_impl::invalid_handle()
 {
 #ifdef BOOST_IOSTREAMS_WINDOWS
- if (i.handle_ != reinterpret_cast<handle_type>(-1)) {
- if (!::CloseHandle(i.handle_))
- throw BOOST_IOSTREAMS_FAILURE("bad close");
- i.handle_ = reinterpret_cast<handle_type>(-1);
- i.flags_ = 0;
- return;
- }
-#else // #ifdef BOOST_IOSTREAMS_WINDOWS
- if (i.handle_ != -1) {
- if (BOOST_IOSTREAMS_FD_CLOSE(i.handle_) == -1)
- throw BOOST_IOSTREAMS_FAILURE("bad close");
- i.handle_ = -1;
- i.flags_ = 0;
- }
-#endif // #ifdef BOOST_IOSTREAMS_WINDOWS
+ return INVALID_HANDLE_VALUE;
+#else
+ return -1;
+#endif
 }
 
-#ifdef BOOST_IOSTREAMS_WINDOWS
-file_descriptor::handle_type file_descriptor::int_to_handle(int fd)
+} // End namespace detail.
+
+//------------------Implementation of file_descriptor-------------------------//
+
+file_descriptor::file_descriptor() : pimpl_(new impl_type) { }
+
+file_descriptor::file_descriptor(handle_type fd, bool close_on_exit)
+ : pimpl_(new impl_type)
+{ open(fd, close_on_exit); }
+
+#ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------//
+
+file_descriptor::file_descriptor(int fd, bool close_on_exit)
+ : pimpl_(new impl_type)
+{ open(fd, close_on_exit); }
+
+#endif // #ifdef BOOST_IOSTREAMS_WINDOWS //-----------------------------------//
+
+file_descriptor::file_descriptor( const std::string& path,
+ BOOST_IOS::openmode mode )
+ : pimpl_(new impl_type)
+{ open(path, mode); }
+
+file_descriptor::file_descriptor( const char* path,
+ BOOST_IOS::openmode mode )
+ : pimpl_(new impl_type)
+{ open(path, mode); }
+
+file_descriptor::file_descriptor(const file_descriptor& other)
+ : pimpl_(other.pimpl_)
+ { }
+
+void file_descriptor::open(handle_type fd, bool close_on_exit)
+{ pimpl_->open(fd, close_on_exit); }
+
+#ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------//
+
+void file_descriptor::open(int fd, bool close_on_exit)
+{ pimpl_->open(fd, close_on_exit); }
+
+#endif // #ifdef BOOST_IOSTREAMS_WINDOWS //-----------------------------------//
+
+void file_descriptor::open(const std::string& path, BOOST_IOS::openmode mode)
+{ open(detail::path(path), mode); }
+
+void file_descriptor::open(const char* path, BOOST_IOS::openmode mode)
+{ open(detail::path(path), mode); }
+
+bool file_descriptor::is_open() const { return pimpl_->is_open(); }
+
+void file_descriptor::close() { pimpl_->close(); }
+
+std::streamsize file_descriptor::read(char_type* s, std::streamsize n)
+{ return pimpl_->read(s, n); }
+
+std::streamsize file_descriptor::write(const char_type* s, std::streamsize n)
+{ return pimpl_->write(s, n); }
+
+std::streampos file_descriptor::seek(stream_offset off, BOOST_IOS::seekdir way)
+{ return pimpl_->seek(off, way); }
+
+detail::file_handle file_descriptor::handle() const { return pimpl_->handle_; }
+
+void file_descriptor::init() { pimpl_.reset(new impl_type); }
+
+void file_descriptor::open(
+ const detail::path& path,
+ BOOST_IOS::openmode mode,
+ BOOST_IOS::openmode base )
 {
- return reinterpret_cast<handle_type>(_get_osfhandle(fd));
+ mode |= base;
+ pimpl_->open(path, mode);
+}
+
+//------------------Implementation of file_descriptor_source------------------//
+
+file_descriptor_source::file_descriptor_source(
+ handle_type fd, bool close_on_exit)
+{ open(fd, close_on_exit); }
+
+#ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------//
+
+file_descriptor_source::file_descriptor_source(int fd, bool close_on_exit)
+{ open(fd, close_on_exit); }
+
+#endif // #ifdef BOOST_IOSTREAMS_WINDOWS //-----------------------------------//
+
+file_descriptor_source::file_descriptor_source(
+ const std::string& path, BOOST_IOS::openmode mode)
+{ open(path, mode); }
+
+file_descriptor_source::file_descriptor_source(
+ const char* path, BOOST_IOS::openmode mode)
+{ open(path, mode); }
+
+file_descriptor_source::file_descriptor_source(
+ const file_descriptor_source& other)
+ : file_descriptor(static_cast<const file_descriptor&>(other))
+ { }
+
+void file_descriptor_source::open(handle_type fd, bool close_on_exit)
+{ file_descriptor::open(fd, close_on_exit); }
+
+#ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------//
+
+void file_descriptor_source::open(int fd, bool close_on_exit)
+{ file_descriptor::open(fd, close_on_exit); }
+
+#endif // #ifdef BOOST_IOSTREAMS_WINDOWS //-----------------------------------//
+
+void file_descriptor_source::open(
+ const std::string& path, BOOST_IOS::openmode mode)
+{ open(detail::path(path), mode); }
+
+void file_descriptor_source::open(
+ const char* path, BOOST_IOS::openmode mode)
+{ open(detail::path(path), mode); }
+
+void file_descriptor_source::open(
+ const detail::path& path, BOOST_IOS::openmode mode)
+{
+ if (mode & (BOOST_IOS::out | BOOST_IOS::app | BOOST_IOS::trunc))
+ throw BOOST_IOSTREAMS_FAILURE("invalid mode");
+ file_descriptor::open(path, mode, BOOST_IOS::in);
+}
+
+//------------------Implementation of file_descriptor_sink--------------------//
+
+file_descriptor_sink::file_descriptor_sink(
+ handle_type fd, bool close_on_exit)
+{ open(fd, close_on_exit); }
+
+#ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------//
+
+file_descriptor_sink::file_descriptor_sink(int fd, bool close_on_exit)
+{ open(fd, close_on_exit); }
+
+#endif // #ifdef BOOST_IOSTREAMS_WINDOWS //-----------------------------------//
+
+file_descriptor_sink::file_descriptor_sink(
+ const std::string& path, BOOST_IOS::openmode mode)
+{ open(path, mode); }
+
+file_descriptor_sink::file_descriptor_sink(
+ const char* path, BOOST_IOS::openmode mode)
+{ open(path, mode); }
+
+file_descriptor_sink::file_descriptor_sink(const file_descriptor_sink& other)
+ : file_descriptor(static_cast<const file_descriptor&>(other))
+ { }
+
+void file_descriptor_sink::open(handle_type fd, bool close_on_exit)
+{ file_descriptor::open(fd, close_on_exit); }
+
+#ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------//
+
+void file_descriptor_sink::open(int fd, bool close_on_exit)
+{ file_descriptor::open(fd, close_on_exit); }
+
+#endif // #ifdef BOOST_IOSTREAMS_WINDOWS //-----------------------------------//
+
+void file_descriptor_sink::open(
+ const std::string& path, BOOST_IOS::openmode mode)
+{ open(detail::path(path), mode); }
+
+void file_descriptor_sink::open(
+ const char* path, BOOST_IOS::openmode mode)
+{ open(detail::path(path), mode); }
+
+void file_descriptor_sink::open(
+ const detail::path& path, BOOST_IOS::openmode mode)
+{
+ if (mode & BOOST_IOS::in)
+ throw BOOST_IOSTREAMS_FAILURE("invalid mode");
+ file_descriptor::open(path, mode, BOOST_IOS::out);
 }
-#endif
 
 } } // End namespaces iostreams, boost.

Modified: branches/proto/v4/libs/iostreams/src/mapped_file.cpp
==============================================================================
--- branches/proto/v4/libs/iostreams/src/mapped_file.cpp (original)
+++ branches/proto/v4/libs/iostreams/src/mapped_file.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,12 +1,7 @@
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2004-2007 Jonathan Turkanis
 // (C) Copyright Craig Henderson 2002 'boost/memmap.hpp' from sandbox
+// (C) Copyright Jonathan Turkanis 2004.
 // (C) Copyright Jonathan Graehl 2004.
-
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
-
-// See http://www.boost.org/libs/iostreams for documentation.
+// (C) Copyright Jorge Lodos 2008.
 
 // Define BOOST_IOSTREAMS_SOURCE so that <boost/iostreams/detail/config.hpp>
 // knows that we are building the library (possibly exporting code), rather
@@ -14,21 +9,15 @@
 #define BOOST_IOSTREAMS_SOURCE
 
 #include <cassert>
-#ifndef NDEBUG
-# include <boost/iostreams/detail/absolute_path.hpp>
-#endif
-#include <boost/iostreams/detail/config/dyn_link.hpp>
+#include <boost/iostreams/detail/config/rtl.hpp>
 #include <boost/iostreams/detail/config/windows_posix.hpp>
-#include <boost/iostreams/detail/ios.hpp> // failure.
+#include <boost/iostreams/detail/file_handle.hpp>
 #include <boost/iostreams/detail/system_failure.hpp>
 #include <boost/iostreams/device/mapped_file.hpp>
 
 #ifdef BOOST_IOSTREAMS_WINDOWS
 # define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
 # include <windows.h>
-# ifndef INVALID_SET_FILE_POINTER
-# define INVALID_SET_FILE_POINTER ((DWORD)-1)
-# endif
 #else
 # include <errno.h>
 # include <fcntl.h>
@@ -38,423 +27,453 @@
 # include <unistd.h> // sysconf.
 #endif
 
-#include <boost/iostreams/detail/config/disable_warnings.hpp>
-
 namespace boost { namespace iostreams {
 
 namespace detail {
 
-struct mapped_file_impl {
- mapped_file_impl() { clear(false); }
- ~mapped_file_impl() { try { close(); } catch (...) { } }
- void clear(bool error)
- {
- data_ = 0;
- size_ = 0;
- mode_ = BOOST_IOS::openmode();
- error_ = error;
- #ifdef BOOST_IOSTREAMS_WINDOWS
- handle_ = INVALID_HANDLE_VALUE;
- mapped_handle_ = NULL;
- #else
- handle_ = 0;
- #endif
- #ifndef NDEBUG
- path_.erase();
- #endif
- }
- void close()
- {
- bool error = false;
- #ifdef BOOST_IOSTREAMS_WINDOWS
- if (handle_ == INVALID_HANDLE_VALUE)
- return;
- error = !::UnmapViewOfFile(data_) || error;
- error = !::CloseHandle(mapped_handle_) || error;
- error = !::CloseHandle(handle_) || error;
- handle_ = INVALID_HANDLE_VALUE;
- mapped_handle_ = NULL;
- #else
- if (!handle_)
- return;
- error = ::munmap(reinterpret_cast<char*>(data_), size_) != 0 || error;
- error = ::close(handle_) != 0 || error;
- handle_ = 0;
- #endif
- data_ = 0;
- size_ = 0;
- mode_ = BOOST_IOS::openmode();
- if (error) {
- std::string msg("error closing mapped file");
- #ifndef NDEBUG
- msg += std::string(" (\"") + path_ + "\")";
- #endif
- throw_system_failure(msg);
- }
- #ifndef NDEBUG
- path_.erase();
- #endif
- }
- char* data_;
- std::size_t size_;
- BOOST_IOS::openmode mode_;
- bool error_;
+// Class containing the platform-sepecific implementation
+// Invariant: The members params_, data_, size_, handle_ (and mapped_handle_
+// on Windows) either
+// - all have default values (or INVALID_HANDLE_VALUE for
+// Windows handles), or
+// - all have values reflecting a successful mapping.
+// In the first case, error_ may be true, reflecting a recent unsuccessful
+// open or close attempt; in the second case, error_ is always false.
+class mapped_file_impl {
+public:
+ typedef mapped_file_source::size_type size_type;
+ typedef mapped_file_source::param_type param_type;
+ typedef mapped_file_source::mapmode mapmode;
+ BOOST_STATIC_CONSTANT(
+ size_type, max_length = mapped_file_source::max_length);
+ mapped_file_impl();
+ ~mapped_file_impl();
+ void open(param_type p);
+ bool is_open() const { return data_ != 0; }
+ void close();
+ bool error() const { return error_; }
+ mapmode flags() const { return params_.flags; }
+ std::size_t size() const { return size_; }
+ char* data() const { return data_; }
+ void resize(stream_offset new_size);
+ static int alignment();
+private:
+ void open_file(param_type p);
+ void try_map_file(param_type p);
+ void map_file(param_type& p);
+ bool unmap_file();
+ void clear(bool error);
+ void cleanup_and_throw(const char* msg);
+ param_type params_;
+ char* data_;
+ stream_offset size_;
+ file_handle handle_;
 #ifdef BOOST_IOSTREAMS_WINDOWS
- HANDLE handle_;
- HANDLE mapped_handle_;
-#else
- int handle_;
-#endif
-#ifndef NDEBUG
- std::string path_;
+ file_handle mapped_handle_;
 #endif
+ bool error_;
 };
 
-} // End namespace detail.
-
-//------------------Definition of mapped_file_source--------------------------//
-
-mapped_file_source::mapped_file_source(mapped_file_params p) { open(p); }
-
-mapped_file_source::mapped_file_source( const std::string& path,
- mapped_file_source::size_type length,
- boost::intmax_t offset )
-{ open(path, length, offset); }
-
-void mapped_file_source::open(mapped_file_params p)
-{
- p.mode &= ~BOOST_IOS::out;
- open_impl(p);
-}
-
-void mapped_file_source::open( const std::string& path,
- mapped_file_source::size_type length,
- boost::intmax_t offset )
-{
- mapped_file_params p(path);
- p.mode = BOOST_IOS::in;
- p.length = length;
- p.offset = offset;
- open_impl(p);
-}
+mapped_file_impl::mapped_file_impl() { clear(false); }
 
-mapped_file_source::size_type mapped_file_source::size() const
-{ return pimpl_->size_; }
+mapped_file_impl::~mapped_file_impl()
+{ try { close(); } catch (...) { } }
 
-void mapped_file_source::close() { pimpl_->close(); }
-
-mapped_file_source::operator mapped_file_source::safe_bool() const
+void mapped_file_impl::open(param_type p)
 {
- return !!pimpl_ && pimpl_->error_ == false ?
- &safe_bool_helper::x : 0;
+ if (is_open())
+ throw BOOST_IOSTREAMS_FAILURE("file already open");
+ p.normalize();
+ open_file(p);
+ map_file(p); // May modify p.hint
+ params_ = p;
+}
+
+void mapped_file_impl::close()
+{
+ if (data_ == 0)
+ return;
+ bool error = false;
+ error = !unmap_file() || error;
+ error =
+ #ifdef BOOST_IOSTREAMS_WINDOWS
+ !::CloseHandle(handle_)
+ #else
+ ::close(handle_) != 0
+ #endif
+ || error;
+ clear(error);
+ if (error)
+ throw_system_failure("failed closing mapped file");
+}
+
+void mapped_file_impl::resize(stream_offset new_size)
+{
+ if (!is_open())
+ throw BOOST_IOSTREAMS_FAILURE("file is closed");
+ if (flags() & mapped_file::priv)
+ throw BOOST_IOSTREAMS_FAILURE("can't resize private mapped file");
+ if (!(flags() & mapped_file::readwrite))
+ throw BOOST_IOSTREAMS_FAILURE("can't resize readonly mapped file");
+ if (params_.offset >= new_size)
+ throw BOOST_IOSTREAMS_FAILURE("can't resize below mapped offset");
+ if (!unmap_file())
+ cleanup_and_throw("failed unmapping file");
+#ifdef BOOST_IOSTREAMS_WINDOWS
+ stream_offset offset = ::SetFilePointer(handle_, 0, NULL, FILE_CURRENT);
+ if (::GetLastError() != NO_ERROR)
+ cleanup_and_throw("failed querying file pointer");
+ LONG sizehigh = (new_size >> (sizeof(LONG) * 8));
+ LONG sizelow = (new_size & 0xffffffff);
+ ::SetFilePointer(handle_, sizelow, &sizehigh, FILE_BEGIN);
+ if (::GetLastError() != NO_ERROR || !::SetEndOfFile(handle_))
+ cleanup_and_throw("failed resizing mapped file");
+ sizehigh = (offset >> (sizeof(LONG) * 8));
+ sizelow = (offset & 0xffffffff);
+ ::SetFilePointer(handle_, sizelow, &sizehigh, FILE_BEGIN);
+#else
+ if (BOOST_IOSTREAMS_FD_TRUNCATE(handle_, new_size) == -1)
+ cleanup_and_throw("failed resizing mapped file");
+#endif
+ size_ = new_size;
+ param_type p(params_);
+ map_file(p); // May modify p.hint
+ params_ = p;
 }
 
-bool mapped_file_source::operator!() const
-{ return !!pimpl_ || pimpl_->error_; }
-
-BOOST_IOS::openmode mapped_file_source::mode() const { return pimpl_->mode_; }
-
-const char* mapped_file_source::data() const { return pimpl_->data_; }
-
-const char* mapped_file_source::begin() const { return data(); }
-
-const char* mapped_file_source::end() const { return data() + size(); }
-
-#ifdef BOOST_IOSTREAMS_WINDOWS //---------------------------------------------//
-
-namespace detail {
-
-void cleanup_and_throw(detail::mapped_file_impl& impl, std::string msg)
+int mapped_file_impl::alignment()
 {
- #ifndef NDEBUG
- msg += std::string(" (\"") + impl.path_ + "\")";
- #endif
- if (impl.mapped_handle_ != INVALID_HANDLE_VALUE)
- ::CloseHandle(impl.mapped_handle_);
- if (impl.handle_ != NULL)
- ::CloseHandle(impl.handle_);
- impl.clear(true);
- throw_system_failure(msg);
+#ifdef BOOST_IOSTREAMS_WINDOWS
+ SYSTEM_INFO info;
+ ::GetSystemInfo(&info);
+ return static_cast<int>(info.dwAllocationGranularity);
+#else
+ return static_cast<int>(sysconf(_SC_PAGESIZE));
+#endif
 }
 
-} // End namespace detail.
-
-void mapped_file_source::open_impl(mapped_file_params p)
+void mapped_file_impl::open_file(param_type p)
 {
- using namespace std;
-
- if (is_open())
- throw BOOST_IOSTREAMS_FAILURE("file already open");
- if (!pimpl_)
- pimpl_.reset(new impl_type);
- else
- pimpl_->clear(false);
- bool readonly = (p.mode & BOOST_IOS::out) == 0;
- pimpl_->mode_ = readonly ? BOOST_IOS::in : (BOOST_IOS::in | BOOST_IOS::out);
- #ifndef NDEBUG
- pimpl_->path_ = detail::absolute_path(p.path);
- #endif
-
- //--------------Open underlying file--------------------------------------//
-
- pimpl_->handle_ =
- ::CreateFileA( p.path.c_str(),
- readonly ? GENERIC_READ : GENERIC_ALL,
- FILE_SHARE_READ,
- NULL,
- (p.new_file_size != 0 && !readonly) ?
- CREATE_ALWAYS :
- OPEN_EXISTING,
- readonly ?
- FILE_ATTRIBUTE_READONLY :
- FILE_ATTRIBUTE_TEMPORARY,
- NULL );
-
- if (pimpl_->handle_ == INVALID_HANDLE_VALUE) {
- detail::cleanup_and_throw(*pimpl_, "failed opening file");
- }
+ bool readonly = p.flags != mapped_file::readwrite;
+#ifdef BOOST_IOSTREAMS_WINDOWS
 
- //--------------Set file size---------------------------------------------//
+ // Open file
+ DWORD dwDesiredAccess = readonly ? GENERIC_READ : GENERIC_ALL;
+ DWORD dwCreationDisposition = (p.new_file_size != 0 && !readonly) ?
+ CREATE_ALWAYS :
+ OPEN_EXISTING;
+ DWORD dwFlagsandAttributes =
+ readonly ?
+ FILE_ATTRIBUTE_READONLY :
+ FILE_ATTRIBUTE_TEMPORARY;
+ handle_ = p.path.is_wide() ?
+ ::CreateFileW(
+ p.path.c_wstr(),
+ dwDesiredAccess,
+ FILE_SHARE_READ,
+ NULL,
+ dwCreationDisposition,
+ dwFlagsandAttributes,
+ NULL ) :
+ ::CreateFileA(
+ p.path.c_str(),
+ dwDesiredAccess,
+ FILE_SHARE_READ,
+ NULL,
+ dwCreationDisposition,
+ dwFlagsandAttributes,
+ NULL );
+ if (handle_ == INVALID_HANDLE_VALUE)
+ cleanup_and_throw("failed opening file");
 
+ // Set file size
     if (p.new_file_size != 0 && !readonly) {
         LONG sizehigh = (p.new_file_size >> (sizeof(LONG) * 8));
         LONG sizelow = (p.new_file_size & 0xffffffff);
- DWORD result =
- ::SetFilePointer(pimpl_->handle_, sizelow, &sizehigh, FILE_BEGIN);
- if ( result == INVALID_SET_FILE_POINTER &&
- ::GetLastError() != NO_ERROR ||
- !::SetEndOfFile(pimpl_->handle_) )
- {
- detail::cleanup_and_throw(*pimpl_, "failed setting file size");
- }
- }
-
- //--------------Create mapping--------------------------------------------//
-
- try_again: // Target of goto in following section.
-
- pimpl_->mapped_handle_ =
- ::CreateFileMappingA( pimpl_->handle_, NULL,
- readonly ? PAGE_READONLY : PAGE_READWRITE,
- 0, 0, NULL );
- if (pimpl_->mapped_handle_ == NULL) {
- detail::cleanup_and_throw(*pimpl_, "couldn't create mapping");
+ ::SetFilePointer(handle_, sizelow, &sizehigh, FILE_BEGIN);
+ if (::GetLastError() != NO_ERROR || !::SetEndOfFile(handle_))
+ cleanup_and_throw("failed setting file size");
     }
 
- //--------------Access data-----------------------------------------------//
-
- void* data =
- ::MapViewOfFileEx( pimpl_->mapped_handle_,
- readonly ? FILE_MAP_READ : FILE_MAP_WRITE,
- (DWORD) (p.offset >> 32),
- (DWORD) (p.offset & 0xffffffff),
- p.length != max_length ? p.length : 0, (LPVOID) p.hint );
- if (!data) {
- if (p.hint != 0) {
- p.hint = 0;
- goto try_again;
- }
- detail::cleanup_and_throw(*pimpl_, "failed mapping view");
- }
-
- //--------------Determing file size---------------------------------------//
-
- // Dynamically locate GetFileSizeEx (thanks to Pavel Vozenilik).
+ // Determine file size. Dynamically locate GetFileSizeEx for compatibility
+ // with old Platform SDK (thanks to Pavel Vozenilik).
     typedef BOOL (WINAPI *func)(HANDLE, PLARGE_INTEGER);
     HMODULE hmod = ::GetModuleHandleA("kernel32.dll");
     func get_size =
         reinterpret_cast<func>(::GetProcAddress(hmod, "GetFileSizeEx"));
-
     if (get_size) {
         LARGE_INTEGER info;
- if (get_size(pimpl_->handle_, &info)) {
+ if (get_size(handle_, &info)) {
             boost::intmax_t size =
                 ( (static_cast<boost::intmax_t>(info.HighPart) << 32) |
                   info.LowPart );
- pimpl_->size_ =
+ size_ =
                 static_cast<std::size_t>(
                     p.length != max_length ?
                         std::min<boost::intmax_t>(p.length, size) :
                         size
                 );
         } else {
- detail::cleanup_and_throw(*pimpl_, "failed getting file size");
+ cleanup_and_throw("failed querying file size");
             return;
         }
     } else {
         DWORD hi;
         DWORD low;
- if ( (low = ::GetFileSize(pimpl_->handle_, &hi))
+ if ( (low = ::GetFileSize(handle_, &hi))
                  !=
              INVALID_FILE_SIZE )
         {
             boost::intmax_t size =
                 (static_cast<boost::intmax_t>(hi) << 32) | low;
- pimpl_->size_ =
+ size_ =
                 static_cast<std::size_t>(
                     p.length != max_length ?
                         std::min<boost::intmax_t>(p.length, size) :
                         size
                 );
         } else {
- detail::cleanup_and_throw(*pimpl_, "failed getting file size");
+ cleanup_and_throw("failed querying file size");
             return;
         }
     }
+#else // #ifdef BOOST_IOSTREAMS_WINDOWS
 
- pimpl_->data_ = reinterpret_cast<char*>(data);
-}
-
-bool mapped_file_source::is_open() const
-{ return !!pimpl_ && pimpl_->handle_ != INVALID_HANDLE_VALUE; }
-
-int mapped_file_source::alignment()
-{
- SYSTEM_INFO info;
- ::GetSystemInfo(&info);
- return static_cast<int>(info.dwAllocationGranularity);
-}
-
-#else // #ifdef BOOST_IOSTREAMS_WINDOWS //------------------------------------//
-
-namespace detail {
-
- void cleanup_and_throw(detail::mapped_file_impl& impl, std::string msg)
-{
- #ifndef NDEBUG
- msg += std::string(" (\"") + impl.path_ + "\")";
- #endif
- if (impl.handle_ != 0)
- ::close(impl.handle_);
- impl.clear(true);
- throw_system_failure(msg);
-}
-
-} // End namespace detail.
-
-
-void mapped_file_source::open_impl(mapped_file_params p)
-{
- using namespace std;
-
- if (is_open())
- throw BOOST_IOSTREAMS_FAILURE("file already open");
- if (!pimpl_)
- pimpl_.reset(new impl_type);
- else
- pimpl_->clear(false);
- bool readonly = (p.mode & BOOST_IOS::out) == 0;
- pimpl_->mode_ = readonly ? BOOST_IOS::in : (BOOST_IOS::in | BOOST_IOS::out);
- #ifndef NDEBUG
- pimpl_->path_ = detail::absolute_path(p.path);
- #endif
-
- //--------------Open underlying file--------------------------------------//
-
+ // Open file
     int flags = (readonly ? O_RDONLY : O_RDWR);
     if (p.new_file_size != 0 && !readonly)
         flags |= (O_CREAT | O_TRUNC);
+ #ifdef _LARGEFILE64_SOURCE
+ flags |= O_LARGEFILE;
+ #endif
     errno = 0;
- pimpl_->handle_ = ::open(p.path.c_str(), flags, S_IRWXU);
+ handle_ = ::open(p.path.c_str(), flags, S_IRWXU);
     if (errno != 0)
- detail::cleanup_and_throw(*pimpl_, "failed opening file");
+ cleanup_and_throw("failed opening file");
 
     //--------------Set file size---------------------------------------------//
 
     if (p.new_file_size != 0 && !readonly)
- if (ftruncate(pimpl_->handle_, p.new_file_size) == -1)
- detail::cleanup_and_throw(*pimpl_, "failed setting file size");
+ if (BOOST_IOSTREAMS_FD_TRUNCATE(handle_, p.new_file_size) == -1)
+ cleanup_and_throw("failed setting file size");
 
     //--------------Determine file size---------------------------------------//
 
     bool success = true;
- struct stat info;
- if (p.length != max_length)
- pimpl_->size_ = p.length;
- else {
- success = ::fstat(pimpl_->handle_, &info) != -1;
- pimpl_->size_ = info.st_size;
+ if (p.length != max_length) {
+ size_ = p.length;
+ } else {
+ struct BOOST_IOSTREAMS_FD_STAT info;
+ success = ::BOOST_IOSTREAMS_FD_FSTAT(handle_, &info) != -1;
+ size_ = info.st_size;
     }
     if (!success)
- detail::cleanup_and_throw(*pimpl_, "failed getting file size");
+ cleanup_and_throw("failed querying file size");
+#endif // #ifdef BOOST_IOSTREAMS_WINDOWS
+}
 
- //--------------Create mapping--------------------------------------------//
+void mapped_file_impl::try_map_file(param_type p)
+{
+ bool priv = p.flags == mapped_file::priv;
+ bool readonly = p.flags == mapped_file::readonly;
+#ifdef BOOST_IOSTREAMS_WINDOWS
 
- try_again: // Target of goto in following section.
+ // Create mapping
+ DWORD protect = priv ?
+ PAGE_WRITECOPY :
+ readonly ?
+ PAGE_READONLY :
+ PAGE_READWRITE;
+ mapped_handle_ =
+ ::CreateFileMappingA(
+ handle_,
+ NULL,
+ protect,
+ 0,
+ 0,
+ NULL );
+ if (mapped_handle_ == NULL)
+ cleanup_and_throw("failed create mapping");
+
+ // Access data
+ DWORD access = priv ?
+ FILE_MAP_COPY :
+ readonly ?
+ FILE_MAP_READ :
+ FILE_MAP_WRITE;
+ void* data =
+ ::MapViewOfFileEx(
+ mapped_handle_,
+ access,
+ (DWORD) (p.offset >> 32),
+ (DWORD) (p.offset & 0xffffffff),
+ size_ != max_length ? size_ : 0,
+ (LPVOID) p.hint );
+ if (!data)
+ cleanup_and_throw("failed mapping view");
+#else
+ void* data =
+ ::BOOST_IOSTREAMS_FD_MMAP(
+ const_cast<char*>(p.hint),
+ size_,
+ readonly ? PROT_READ : (PROT_READ | PROT_WRITE),
+ priv ? MAP_PRIVATE : MAP_SHARED,
+ handle_,
+ p.offset );
+ if (data == MAP_FAILED)
+ cleanup_and_throw("failed mapping file");
+#endif
+ data_ = static_cast<char*>(data);
+}
 
- char* hint = const_cast<char*>(p.hint);
- void* data = ::mmap( hint, pimpl_->size_,
- readonly ? PROT_READ : (PROT_READ | PROT_WRITE),
- readonly ? MAP_PRIVATE : MAP_SHARED,
- pimpl_->handle_, p.offset );
- if (data == MAP_FAILED) {
- if (hint != 0) {
- hint = 0;
- goto try_again;
+void mapped_file_impl::map_file(param_type& p)
+{
+ try {
+ try_map_file(p);
+ } catch (const std::exception& e) {
+ if (p.hint) {
+ p.hint = 0;
+ try_map_file(p);
+ } else {
+ throw e;
         }
- detail::cleanup_and_throw(*pimpl_, "failed mapping file");
     }
- pimpl_->data_ = reinterpret_cast<char*>(data);
+}
 
- return;
+bool mapped_file_impl::unmap_file()
+{
+#ifdef BOOST_IOSTREAMS_WINDOWS
+ bool error = false;
+ error = !::UnmapViewOfFile(data_) || error;
+ error = !::CloseHandle(mapped_handle_) || error;
+ mapped_handle_ = NULL;
+ return !error;
+#else
+ return ::munmap(data_, size_) == 0;
+#endif
 }
 
+void mapped_file_impl::clear(bool error)
+{
+ params_ = param_type();
+ data_ = 0;
+ size_ = 0;
+#ifdef BOOST_IOSTREAMS_WINDOWS
+ handle_ = INVALID_HANDLE_VALUE;
+ mapped_handle_ = NULL;
+#else
+ handle_ = 0;
+#endif
+ error_ = error;
+}
+
+// Called when an error is encountered during the execution of open_file or
+// map_file
+void mapped_file_impl::cleanup_and_throw(const char* msg)
+{
+#ifdef BOOST_IOSTREAMS_WINDOWS
+ DWORD error = GetLastError();
+ if (mapped_handle_ != INVALID_HANDLE_VALUE)
+ ::CloseHandle(mapped_handle_);
+ if (handle_ != NULL)
+ ::CloseHandle(handle_);
+ SetLastError(error);
+#else
+ int error = errno;
+ if (handle_ != 0)
+ ::close(handle_);
+ errno = error;
+#endif
+ clear(true);
+ boost::iostreams::detail::throw_system_failure(msg);
+}
+
+//------------------Implementation of mapped_file_params_base-----------------//
+
+void mapped_file_params_base::normalize()
+{
+ if (mode && flags)
+ throw BOOST_IOSTREAMS_FAILURE(
+ "at most one of 'mode' and 'flags' may be specified"
+ );
+ if (flags) {
+ switch (flags) {
+ case mapped_file::readonly:
+ case mapped_file::readwrite:
+ case mapped_file::priv:
+ break;
+ default:
+ throw BOOST_IOSTREAMS_FAILURE("invalid flags");
+ }
+ } else {
+ flags = (mode & BOOST_IOS::out) ?
+ mapped_file::readwrite :
+ mapped_file::readonly;
+ mode = BOOST_IOS::openmode();
+ }
+ if (offset < 0)
+ throw BOOST_IOSTREAMS_FAILURE("invalid offset");
+ if (new_file_size < 0)
+ throw BOOST_IOSTREAMS_FAILURE("invalid new file size");
+}
+
+} // End namespace detail.
+
+//------------------Implementation of mapped_file_source----------------------//
+
+mapped_file_source::mapped_file_source()
+ : pimpl_(new impl_type)
+ { }
+
+mapped_file_source::mapped_file_source(const mapped_file_source& other)
+ : pimpl_(other.pimpl_)
+ { }
+
 bool mapped_file_source::is_open() const
-{ return !!pimpl_ && pimpl_->handle_ != 0; }
+{ return pimpl_->is_open(); }
 
-int mapped_file_source::alignment()
-{ return static_cast<int>(sysconf(_SC_PAGESIZE)); }
+void mapped_file_source::close() { pimpl_->close(); }
 
-#endif // #ifdef BOOST_IOSTREAMS_WINDOWS //-----------------------------------//
+mapped_file_source::operator safe_bool() const
+{ return pimpl_->error() ? &safe_bool_helper::x : 0; }
 
-//------------------Implementation of mapped_file-----------------------------//
+bool mapped_file_source::operator!() const
+{ return pimpl_->error(); }
 
-mapped_file::mapped_file(mapped_file_params p) { delegate_.open_impl(p); }
+mapped_file_source::mapmode mapped_file_source::flags() const
+{ return pimpl_->flags(); }
 
-mapped_file::mapped_file( const std::string& path, BOOST_IOS::openmode mode,
- size_type length, stream_offset offset )
-{ open(path, mode, length, offset); }
-
-void mapped_file::open(mapped_file_params p)
-{ delegate_.open_impl(p); }
-
-void mapped_file::open( const std::string& path, BOOST_IOS::openmode mode,
- size_type length, stream_offset offset )
-{
- mapped_file_params p(path);
- p.mode = mode;
- p.length = length;
- p.offset = offset;
- open(p);
-}
+mapped_file_source::size_type mapped_file_source::size() const
+{ return pimpl_->size(); }
 
-//------------------Implementation of mapped_file_sink------------------------//
+const char* mapped_file_source::data() const { return pimpl_->data(); }
 
-mapped_file_sink::mapped_file_sink(mapped_file_params p) { open(p); }
+const char* mapped_file_source::begin() const { return data(); }
 
-mapped_file_sink::mapped_file_sink( const std::string& path,
- size_type length, stream_offset offset )
-{ open(path, length, offset); }
+const char* mapped_file_source::end() const { return data() + size(); }
+int mapped_file_source::alignment()
+{ return detail::mapped_file_impl::alignment(); }
 
-void mapped_file_sink::open(mapped_file_params p)
-{
- p.mode |= BOOST_IOS::out;
- p.mode &= ~BOOST_IOS::in;
- mapped_file::open(p);
-}
+void mapped_file_source::init() { pimpl_.reset(new impl_type); }
 
-void mapped_file_sink::open( const std::string& path, size_type length,
- stream_offset offset )
-{
- mapped_file_params p(path);
- p.mode = BOOST_IOS::out;
- p.length = length;
- p.offset = offset;
- open(p);
-}
+void mapped_file_source::open_impl(const param_type& p)
+{ pimpl_->open(p); }
+
+//------------------Implementation of mapped_file-----------------------------//
+
+mapped_file::mapped_file(const mapped_file& other)
+ : delegate_(other.delegate_)
+ { }
+
+void mapped_file::resize(stream_offset new_size)
+{ delegate_.pimpl_->resize(new_size); }
+
+//------------------Implementation of mapped_file_sink------------------------//
+
+mapped_file_sink::mapped_file_sink(const mapped_file_sink& other)
+ : mapped_file(static_cast<const mapped_file&>(other))
+ { }
 
 //----------------------------------------------------------------------------//
 
 } } // End namespaces iostreams, boost.
-
-#include <boost/iostreams/detail/config/enable_warnings.hpp>

Modified: branches/proto/v4/libs/iostreams/test/mapped_file_test.cpp
==============================================================================
--- branches/proto/v4/libs/iostreams/test/mapped_file_test.cpp (original)
+++ branches/proto/v4/libs/iostreams/test/mapped_file_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,33 +1,70 @@
-// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
-// (C) Copyright 2004-2007 Jonathan Turkanis
+// (C) Copyright Jorge Lodos 2008
+// (C) Copyright Jonathan Turkanis 2004
 // Distributed under the Boost Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
 
 // See http://www.boost.org/libs/iostreams for documentation.
 
+// This is the original (boost 1.34) boost::iostream test for the mapped files with the
+// following modifications:
+// 1. The namespace for the mapped file was changed to seglib::filemap.
+// 2. Added test for privately mapped files.
+// 3. The test test_writeable was added for mapped files.
+// 4. The test test_resizeable was added for mapped files.
+//
+
 #include <fstream>
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
-#include <boost/iostreams/device/mapped_file.hpp>
-#include <boost/iostreams/stream.hpp>
 #include <boost/test/test_tools.hpp>
 #include <boost/test/unit_test.hpp>
+
+#include <boost/iostreams/stream.hpp>
+#include <boost/iostreams/device/mapped_file.hpp>
 #include "detail/temp_file.hpp"
 #include "detail/verification.hpp"
 
-using namespace std;
-using namespace boost;
-using namespace boost::iostreams;
-using namespace boost::iostreams::test;
-using boost::unit_test::test_suite;
-
 // Code generation bugs cause tests to fail with global optimization.
 #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
 # pragma optimize("g", off)
 #endif
 
+namespace boost { namespace iostreams { namespace test {
+
+bool test_writeable(mapped_file& mf)
+{
+ // Test writing
+ for (int i = 0; i < data_reps; ++i) {
+ memcpy(mf.data(), narrow_data(), chunk_size);
+ char buf[chunk_size];
+ memcpy(buf, mf.const_data(), chunk_size);
+ if (strncmp(buf, narrow_data(), chunk_size) != 0)
+ return false;
+ memset(mf.data(), 0, chunk_size);
+ }
+ return true;
+}
+
+bool test_resizeable(mapped_file& mf)
+{
+ // Test resizing
+ mapped_file::size_type size = mf.size();
+ if (size == 0)
+ return false;
+ mf.resize(size/2);
+ if (mf.size() != size/2)
+ return false;
+ mf.resize(size);
+ if (mf.size() != size)
+ return false;
+ return true;
+}
+
+} } } // End namespaces test, iostreams, boost.
+
 void mapped_file_test()
 {
+ using namespace boost::iostreams;
     BOOST_MESSAGE("about to begin");
 
     //--------------Reading from a mapped_file_source-------------------------//
@@ -38,13 +75,13 @@
 
         // Test reading from a stream based on a mapped_file_source,
         // in chars.
- test_file test1, test2;
- stream<mapped_file_source> first(test1.name());
+ boost::iostreams::test::test_file test1, test2;
+ boost::iostreams::stream<mapped_file_source> first(test1.name());
         {
- ifstream second( test2.name().c_str(),
+ std::ifstream second( test2.name().c_str(),
                              BOOST_IOS::in | BOOST_IOS::binary );
             BOOST_CHECK_MESSAGE(
- compare_streams_in_chars(first, second),
+ boost::iostreams::test::compare_streams_in_chars(first, second),
                 "failed reading from stream<mapped_file_source> in chars"
             );
 
@@ -56,12 +93,12 @@
 
         // Test reading from a stream based on a mapped_file_source,
         // in chunks. (Also tests reopening the stream.)
- first.open(mapped_file_source(test1.name()));
+ first.open(mapped_file_source(test1.name()));
         {
- ifstream second( test2.name().c_str(),
+ std::ifstream second( test2.name().c_str(),
                              BOOST_IOS::in | BOOST_IOS::binary );
             BOOST_CHECK_MESSAGE(
- compare_streams_in_chunks(first, second),
+ boost::iostreams::test::compare_streams_in_chunks(first, second),
                 "failed reading from stream<mapped_file_source> in chunks"
             );
 
@@ -76,15 +113,15 @@
     {
         // Test writing to a stream based on a mapped_file_sink, in
         // chars.
- uppercase_file first, second; // Will overwrite these.
- test_file test;
+ boost::iostreams::test::uppercase_file first, second; // Will overwrite these.
+ boost::iostreams::test::test_file test;
 
- stream<mapped_file_sink> out;
- out.open(mapped_file_sink(first.name()));
- write_data_in_chars(out);
+ boost::iostreams::stream<mapped_file_sink> out;
+ out.open(mapped_file_sink(first.name()));
+ boost::iostreams::test::write_data_in_chars(out);
         out.close();
         BOOST_CHECK_MESSAGE(
- compare_files(first.name(), test.name()),
+ boost::iostreams::test::compare_files(first.name(), test.name()),
             "failed writing to stream<mapped_file_sink> in chars"
         );
 
@@ -94,11 +131,11 @@
 
         // Test writing to a stream based on a mapped_file_sink, in
         // chunks. (Also tests reopening the stream.)
- out.open(mapped_file_sink(second.name()));
- write_data_in_chunks(out);
+ out.open(mapped_file_sink(second.name()));
+ boost::iostreams::test::write_data_in_chunks(out);
         out.close();
         BOOST_CHECK_MESSAGE(
- compare_files(second.name(), test.name()),
+ boost::iostreams::test::compare_files(second.name(), test.name()),
             "failed writing to stream<mapped_file_sink> in chunks"
         );
 
@@ -107,21 +144,21 @@
         );
     }
 
- //--------------Writing to a newly created file-----------------------------//
+ //--------------Writing to a newly created file---------------------------//
 
     {
         // Test writing to a newly created mapped file.
- temp_file first, second;
- test_file test;
+ boost::iostreams::test::temp_file first, second;
+ boost::iostreams::test::test_file test;
 
- mapped_file_params p(first.name());
- p.new_file_size = data_reps * data_length();
- stream<mapped_file_sink> out;
- out.open(mapped_file_sink(p));
- write_data_in_chars(out);
+ mapped_file_params p(first.name());
+ p.new_file_size = boost::iostreams::test::data_reps * boost::iostreams::test::data_length();
+ boost::iostreams::stream<mapped_file_sink> out;
+ out.open(mapped_file_sink(p));
+ boost::iostreams::test::write_data_in_chars(out);
         out.close();
         BOOST_CHECK_MESSAGE(
- compare_files(first.name(), test.name()),
+ boost::iostreams::test::compare_files(first.name(), test.name()),
             "failed writing to newly created mapped file in chars"
         );
 
@@ -129,11 +166,11 @@
         // Test writing to a newly created mapped file.
         // (Also tests reopening the stream.)
         p.path = second.name();
- out.open(mapped_file_sink(p));
- write_data_in_chunks(out);
+ out.open(mapped_file_sink(p));
+ boost::iostreams::test::write_data_in_chunks(out);
         out.close();
         BOOST_CHECK_MESSAGE(
- compare_files(second.name(), test.name()),
+ boost::iostreams::test::compare_files(second.name(), test.name()),
             "failed writing to newly created mapped file in chunks"
         );
     }
@@ -143,11 +180,11 @@
     {
         // Test reading, writing and seeking within a stream based on a
         // mapped_file, in chars.
- test_file test;
- stream<mapped_file> io;
- io.open(mapped_file(test.name()));
+ boost::iostreams::test::test_file test;
+ boost::iostreams::stream<mapped_file> io;
+ io.open(mapped_file(test.name()));
         BOOST_CHECK_MESSAGE(
- test_seekable_in_chars(io),
+ boost::iostreams::test::test_seekable_in_chars(io),
             "failed seeking within stream<mapped_file> in chars"
         );
 
@@ -160,9 +197,9 @@
         // Test reading, writing and seeking within a stream based on a
         // mapped_file, in chunks. (Also tests reopening the
         // stream.)
- io.open(mapped_file(test.name()));
+ io.open(mapped_file(test.name()));
         BOOST_CHECK_MESSAGE(
- test_seekable_in_chunks(io),
+ boost::iostreams::test::test_seekable_in_chunks(io),
             "failed seeking within stream<mapped_file> in chunks"
         );
 
@@ -170,15 +207,74 @@
             "done seeking within stream<mapped_file> in chunks"
         );
     }
+
+ //--------------Resizing a mapped_file------------------------------------//
+
+ {
+ // Test resizing a mapped_file.
+ boost::iostreams::test::test_file test;
+ mapped_file mf;
+ mf.open(test.name());
+ BOOST_CHECK_MESSAGE(
+ boost::iostreams::test::test_resizeable(mf),
+ "failed resizing a mapped_file"
+ );
+
+ BOOST_MESSAGE(
+ "done resizing a mapped_file"
+ );
+ }
+
+ //--------------Random access with a private mapped_file------------------//
+
+ {
+ // Use 2 copies of the file to compare later
+ boost::iostreams::test::test_file orig, copy;
+
+ // Test reading and writing within a mapped_file.
+ // Since the file is privately mapped, it should remain
+ // unchanged after writing when opened in readonly mode.
+ mapped_file mf;
+ mf.open(orig.name(), mapped_file::priv);
+ BOOST_CHECK_MESSAGE(
+ boost::iostreams::test::test_writeable(mf),
+ "failed seeking within private mapped_file"
+ );
+ BOOST_CHECK_MESSAGE(
+ boost::iostreams::test::compare_files(orig.name(), copy.name()),
+ "failed writing to private mapped_file"
+ );
+
+ BOOST_MESSAGE(
+ "done seeking within private mapped_file"
+ );
+
+ mf.close();
+
+ // Test reopening the mapped file.
+ mf.open(orig.name(), mapped_file::priv);
+ BOOST_CHECK_MESSAGE(
+ boost::iostreams::test::test_writeable(mf),
+ "failed reopening private mapped_file"
+ );
+ BOOST_CHECK_MESSAGE(
+ boost::iostreams::test::compare_files(orig.name(), copy.name()),
+ "failed writing to reopened private mapped_file"
+ );
+
+ BOOST_MESSAGE(
+ "done reopening private mapped_file"
+ );
+ }
 }
 
 #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
 # pragma optimize("", on)
 #endif
 
-test_suite* init_unit_test_suite(int, char* [])
+boost::unit_test::test_suite* init_unit_test_suite(int, char* [])
 {
- test_suite* test = BOOST_TEST_SUITE("mapped_file test");
+ boost::unit_test::test_suite* test = BOOST_TEST_SUITE("mapped_file test");
     test->add(BOOST_TEST_CASE(&mapped_file_test));
     return test;
 }

Modified: branches/proto/v4/libs/lambda/test/algorithm_test.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/algorithm_test.cpp (original)
+++ branches/proto/v4/libs/lambda/test/algorithm_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // bll_and_function.cpp - The Boost Lambda Library -----------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/bind_tests_advanced.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/bind_tests_advanced.cpp (original)
+++ branches/proto/v4/libs/lambda/test/bind_tests_advanced.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // bind_tests_advanced.cpp -- The Boost Lambda Library ------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/bind_tests_simple.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/bind_tests_simple.cpp (original)
+++ branches/proto/v4/libs/lambda/test/bind_tests_simple.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // bind_tests_simple.cpp -- The Boost Lambda Library ------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/bind_tests_simple_f_refs.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/bind_tests_simple_f_refs.cpp (original)
+++ branches/proto/v4/libs/lambda/test/bind_tests_simple_f_refs.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // bind_tests_simple.cpp -- The Boost Lambda Library ------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/bll_and_function.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/bll_and_function.cpp (original)
+++ branches/proto/v4/libs/lambda/test/bll_and_function.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // bll_and_function.cpp - The Boost Lambda Library -----------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/cast_test.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/cast_test.cpp (original)
+++ branches/proto/v4/libs/lambda/test/cast_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // cast_tests.cpp -- The Boost Lambda Library ------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/constructor_tests.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/constructor_tests.cpp (original)
+++ branches/proto/v4/libs/lambda/test/constructor_tests.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // constructor_tests.cpp -- The Boost Lambda Library ------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/control_structures.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/control_structures.cpp (original)
+++ branches/proto/v4/libs/lambda/test/control_structures.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // -- control_structures.cpp -- The Boost Lambda Library ------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/exception_test.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/exception_test.cpp (original)
+++ branches/proto/v4/libs/lambda/test/exception_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // -- exception_test.cpp -- The Boost Lambda Library ------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/extending_rt_traits.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/extending_rt_traits.cpp (original)
+++ branches/proto/v4/libs/lambda/test/extending_rt_traits.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // extending_return_type_traits.cpp -- The Boost Lambda Library --------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/is_instance_of_test.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/is_instance_of_test.cpp (original)
+++ branches/proto/v4/libs/lambda/test/is_instance_of_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // is_instance_of_test.cpp -- The Boost Lambda Library ------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/member_pointer_test.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/member_pointer_test.cpp (original)
+++ branches/proto/v4/libs/lambda/test/member_pointer_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // member_pointer_test.cpp -- The Boost Lambda Library ------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/operator_tests_simple.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/operator_tests_simple.cpp (original)
+++ branches/proto/v4/libs/lambda/test/operator_tests_simple.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // operator_tests_simple.cpp -- The Boost Lambda Library ---------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/phoenix_control_structures.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/phoenix_control_structures.cpp (original)
+++ branches/proto/v4/libs/lambda/test/phoenix_control_structures.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // phoenix_style_control_structures.cpp -- The Boost Lambda Library ------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/lambda/test/switch_construct.cpp
==============================================================================
--- branches/proto/v4/libs/lambda/test/switch_construct.cpp (original)
+++ branches/proto/v4/libs/lambda/test/switch_construct.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // switch_test.cpp -- The Boost Lambda Library --------------------------
 //
-// Copyright (C) 2000-2003 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 // Copyright (C) 2000-2003 Gary Powell (powellg_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See

Modified: branches/proto/v4/libs/libraries.htm
==============================================================================
--- branches/proto/v4/libs/libraries.htm (original)
+++ branches/proto/v4/libs/libraries.htm 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -86,9 +86,9 @@
     <li>array - STL compliant
         container wrapper for arrays of constant size, from
         Nicolai Josuttis.</li>
- <li>asio - Portable networking, including
- sockets, timers, hostname resolution and socket iostreams, from
- Chris Kohlhoff.</li>
+ <li>asio - Portable networking and other low-level
+ I/O, including sockets, timers, hostname resolution, socket iostreams, serial
+ ports, file descriptors and Windows HANDLEs, from Chris Kohlhoff.</li>
     <li>assign - Filling containers
         with constant or generated data has never been
         easier, from Thorsten Ottosen.
@@ -119,6 +119,7 @@
       Walker.</li>
     <li>date_time - Date-Time library from Jeff Garland.</li>
     <li>dynamic_bitset - A runtime sized version of <tt>std::bitset</tt> from Jeremy Siek and Chuck Allison.</li>
+ <li>exception - A library for transporting of arbitrary data in exception objects, and transporting of exceptions between threads (N2179), from Emil Dotchevski.</li>
     <li>enable_if - Selective inclusion of function template overloads, from Jaakko J&auml;rvi, Jeremiah Willcock, and Andrew Lumsdaine.</li>
     <li>filesystem - Portable paths,
     iteration over directories, and other useful filesystem operations, from
@@ -250,14 +251,16 @@
     Guzman, Hartmut Kaiser, Dan Nuffer and team.</li>
     <li>string_algo -
     String algorithms library, from Pavol Droba.</li>
+ <li>swap -
+ Enhanced generic swap function, from Joseph Gauterin.</li>
     <li>system - Operating system support,
     including the diagnostics support that will be part of the C++0x standard
     library, from Beman Dawes.</li>
- <li>test - Support for simple program testing,
+ <li>test - Support for simple program testing,
     full unit testing, and for program
       execution monitoring, from Gennadiy Rozental.</li>
     <li>thread - Portable C++
- multi-threading, from William Kempf.</li>
+ multi-threading, from William Kempf and Anthony Williams.</li>
     <li>timer - Event timer,
         progress timer, and progress display classes, from Beman
         Dawes.</li>
@@ -275,6 +278,9 @@
         Typeof operator emulation, from Arkadiy Vertleyb and Peder Holt.</li>
     <li>uBLAS - Basic linear algebra
     for dense, packed and sparse matrices, from Joerg Walter and Mathias Koch.</li>
+ <li>units -
+ Zero-overhead dimensional analysis and unit/quantity
+ manipulation and conversion, from Matthias Schabel and Steven Watanabe.</li>
     <li>unordered - unordered associative containers, from Daniel James.</li>
     <li>utility - Class <b>noncopyable</b>
         plus <b>checked_delete()</b>, <b>checked_array_delete()</b>, <b>next(),</b>&nbsp;
@@ -453,7 +459,7 @@
         for callable, built-in types, from Tobias Schwinger</li>
     <li>fusion -
         Library for working with tuples, including various containers,
- algorithms, etc. </li>
+ algorithms, etc. From Joel de Guzman, Dan Marsden and Tobias Schwinger.</li>
     <li>mpl - Template metaprogramming
     framework of compile-time algorithms, sequences and metafunction classes,
     from Aleksey Gurtovoy.</li>
@@ -463,7 +469,6 @@
     <li>type_traits -
         Templates for fundamental properties of types, from John
         Maddock, Steve Cleary, et al.</li>
- <li>From Joel de Guzman, Dan Marsden and Tobias Schwinger.</li>
 </ul>
 
 <h3><a name="Preprocessor">Preprocessor</a> Metaprogramming</h3>
@@ -477,9 +482,9 @@
 <h3><a name="Concurrent">Concurrent</a> Programming</h3>
 
 <ul>
- <li>asio - Portable networking, including
- sockets, timers, hostname resolution and socket iostreams, from
- Chris Kohlhoff.</li>
+ <li>asio - Portable networking and other low-level
+ I/O, including sockets, timers, hostname resolution, socket iostreams, serial
+ ports, file descriptors and Windows HANDLEs, from Chris Kohlhoff.</li>
     <li>interprocess - Shared memory, memory mapped files,
     process-shared mutexes, condition variables, containers and allocators, from Ion Gazta&ntilde;aga</li>
     <li>MPI - Message Passing Interface library, for use in distributed-memory parallel application programming, from Douglas Gregor and Matthias Troyer.</li>
@@ -535,7 +540,7 @@
     <li>static_assert
         - Static assertions (compile time assertions), from John
         Maddock.</li>
- <li>test - Support for simple program testing,
+ <li>test - Support for simple program testing,
     full unit testing, and for program
       execution monitoring, from Gennadiy Rozental.</li>
 </ul>
@@ -572,9 +577,9 @@
 
 <h3><a name="IO">Input/Output</a></h3>
 <ul>
- <li>asio - Portable networking, including
- sockets, timers, hostname resolution and socket iostreams, from
- Chris Kohlhoff.</li>
+ <li>asio - Portable networking and other low-level
+ I/O, including sockets, timers, hostname resolution, socket iostreams, serial
+ ports, file descriptors and Windows HANDLEs, from Chris Kohlhoff.</li>
     <li>assign - Filling containers
     with constant or generated data has never been
     easier, from Thorsten Ottosen.
@@ -648,6 +653,7 @@
     <li>crc - Cyclic Redundancy Code, from Daryle
       Walker.</li>
     <li>date_time - Date-Time library from Jeff Garland.</li>
+ <li>exception - A library for transporting of arbitrary data in exception objects, and transporting of exceptions between threads (N2179), from Emil Dotchevski.</li>
     <li>filesystem - Portable paths,
     iteration over directories, and other useful filesystem operations, from
     Beman Dawes.</li>
@@ -660,6 +666,8 @@
     <li>statechart - Arbitrarily
     complex finite state machines can be implemented in easily readable and
     maintainable C++ code, from Andreas Huber.</li>
+ <li>swap -
+ Enhanced generic swap function, from Joseph Gauterin.</li>
     <li>system - Operating
     system support, including the diagnostics support that will be part of the
     C++0x standard library, from Beman Dawes.</li>
@@ -671,6 +679,9 @@
     <li>tribool - 3-state boolean type library, from Doug Gregor.</li>
     <li>typeof -
         Typeof operator emulation, from Arkadiy Vertleyb and Peder Holt.</li>
+ <li>units -
+ Zero-overhead dimensional analysis and unit/quantity
+ manipulation and conversion, from Matthias Schabel and Steven Watanabe.</li>
     <li>utility - Class <b>noncopyable</b>
         plus <b>checked_delete()</b>, <b>checked_array_delete()</b>, <b>next(),</b>&nbsp;
       <b>prior()</b>

Modified: branches/proto/v4/libs/maintainers.txt
==============================================================================
--- branches/proto/v4/libs/maintainers.txt (original)
+++ branches/proto/v4/libs/maintainers.txt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -25,6 +25,7 @@
 date_time Jeff Garland <jeff -at- crystalclearsoftware.com>
 disjoint_sets Jeremy Siek <jeremy.siek -at- gmail.com>
 dynamic_bitset Jeremy Siek <jeremy.siek -at- gmail.com>
+exception Emil Dotchevski <emil -at- revergestudios.com>
 filesystem Beman Dawes <bdawes -at- acm.org>
 foreach Eric Niebler <eric -at- boost-consulting.com>
 format Samuel Krempp <krempp -at- crans.ens-cachan.fr>
@@ -77,10 +78,13 @@
 tuple Jaakko Jarvi <jarvi -at- cs.tamu.edu>
 type_traits John Maddock <john -at- johnmaddock.co.uk>
 typeof Arkadiy Vertleyb <vertleyb -at- hotmail.com>, Peder Holt <peder.holt -at- gmail.com>
+units Matthias Schabel <boost -at- schabel-family.org>, Steven Watanabe <steven -at- providere-consulting.com>
 unordered Daniel James <daniel_james -at- fmail.co.uk>
 utility
 utility/enable_if Jaakko Jarvi <jarvi -at- cs.tamu.edu>, Jeremiah Willcock <jewillco -at- osl.iu.edu>
+utility/swap Joseph Gauterin <joseph.gauterin -at- googlemail.com>
 variant Eric Friedman <ericbrandon -at- gmail.com>
 wave Hartmut Kaiser <hartmut.kaiser -at- gmail.com>
 xpressive Eric Niebler <eric -at- boost-consulting.com>
 
+

Modified: branches/proto/v4/libs/math/build/has_long_double_support.cpp
==============================================================================
--- branches/proto/v4/libs/math/build/has_long_double_support.cpp (original)
+++ branches/proto/v4/libs/math/build/has_long_double_support.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,10 @@
+// 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)
 
 #include <boost/math/tools/config.hpp>
 
 #ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
-#error "long double support not enabled"
+#error "long double support is not supported by Boost.Math on this Plaform: the long double version of the TR1 library will not be built."
 #endif

Modified: branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex.html
==============================================================================
--- branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex.html (original)
+++ branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acos.html
==============================================================================
--- branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acos.html (original)
+++ branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acos.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,13 +28,13 @@
       acos</a>
 </h3></div></div></div>
 <a name="complex_number_tr1_algorithms.inverse_complex.acos.header_"></a><h5>
-<a name="id440285"></a>
+<a name="id447567"></a>
         <a href="acos.html#complex_number_tr1_algorithms.inverse_complex.acos.header_">Header:</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">acos</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="complex_number_tr1_algorithms.inverse_complex.acos.synopsis_"></a><h5>
-<a name="id440378"></a>
+<a name="id447660"></a>
         <a href="acos.html#complex_number_tr1_algorithms.inverse_complex.acos.synopsis_">Synopsis:</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>

Modified: branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acosh.html
==============================================================================
--- branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acosh.html (original)
+++ branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acosh.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,13 +28,13 @@
       acosh</a>
 </h3></div></div></div>
 <a name="complex_number_tr1_algorithms.inverse_complex.acosh.header_"></a><h5>
-<a name="id490159"></a>
+<a name="id499993"></a>
         <a href="acosh.html#complex_number_tr1_algorithms.inverse_complex.acosh.header_">Header:</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">acosh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="complex_number_tr1_algorithms.inverse_complex.acosh.synopsis_"></a><h5>
-<a name="id490252"></a>
+<a name="id500086"></a>
         <a href="acosh.html#complex_number_tr1_algorithms.inverse_complex.acosh.synopsis_">Synopsis:</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>

Modified: branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asin.html
==============================================================================
--- branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asin.html (original)
+++ branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asin.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,13 +28,13 @@
       asin</a>
 </h3></div></div></div>
 <a name="complex_number_tr1_algorithms.inverse_complex.asin.header_"></a><h5>
-<a name="id436308"></a>
+<a name="id447439"></a>
         <a href="asin.html#complex_number_tr1_algorithms.inverse_complex.asin.header_">Header:</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">asin</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="complex_number_tr1_algorithms.inverse_complex.asin.synopsis_"></a><h5>
-<a name="id436401"></a>
+<a name="id446168"></a>
         <a href="asin.html#complex_number_tr1_algorithms.inverse_complex.asin.synopsis_">Synopsis:</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>

Modified: branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asinh.html
==============================================================================
--- branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asinh.html (original)
+++ branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asinh.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,13 +28,13 @@
       asinh</a>
 </h3></div></div></div>
 <a name="complex_number_tr1_algorithms.inverse_complex.asinh.header_"></a><h5>
-<a name="id436272"></a>
+<a name="id446106"></a>
         <a href="asinh.html#complex_number_tr1_algorithms.inverse_complex.asinh.header_">Header:</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">asinh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="complex_number_tr1_algorithms.inverse_complex.asinh.synopsis_"></a><h5>
-<a name="id489955"></a>
+<a name="id499790"></a>
         <a href="asinh.html#complex_number_tr1_algorithms.inverse_complex.asinh.synopsis_">Synopsis:</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>

Modified: branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atan.html
==============================================================================
--- branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atan.html (original)
+++ branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atan.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,13 +28,13 @@
       atan</a>
 </h3></div></div></div>
 <a name="complex_number_tr1_algorithms.inverse_complex.atan.header_"></a><h5>
-<a name="id435974"></a>
+<a name="id445808"></a>
         <a href="atan.html#complex_number_tr1_algorithms.inverse_complex.atan.header_">Header:</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">atan</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="complex_number_tr1_algorithms.inverse_complex.atan.synopsis_"></a><h5>
-<a name="id436067"></a>
+<a name="id445901"></a>
         <a href="atan.html#complex_number_tr1_algorithms.inverse_complex.atan.synopsis_">Synopsis:</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>

Modified: branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atanh.html
==============================================================================
--- branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atanh.html (original)
+++ branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atanh.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,13 +28,13 @@
       atanh</a>
 </h3></div></div></div>
 <a name="complex_number_tr1_algorithms.inverse_complex.atanh.header_"></a><h5>
-<a name="id490458"></a>
+<a name="id500292"></a>
         <a href="atanh.html#complex_number_tr1_algorithms.inverse_complex.atanh.header_">Header:</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">complex</span><span class="special">/</span><span class="identifier">atanh</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <a name="complex_number_tr1_algorithms.inverse_complex.atanh.synopsis_"></a><h5>
-<a name="id490552"></a>
+<a name="id500385"></a>
         <a href="atanh.html#complex_number_tr1_algorithms.inverse_complex.atanh.synopsis_">Synopsis:</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>

Modified: branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/history.html
==============================================================================
--- branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/history.html (original)
+++ branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/history.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,10 +11,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/implementation.html
==============================================================================
--- branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/implementation.html (original)
+++ branches/proto/v4/libs/math/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/implementation.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/complex/html/index.html
==============================================================================
--- branches/proto/v4/libs/math/doc/complex/html/index.html (original)
+++ branches/proto/v4/libs/math/doc/complex/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,10 +10,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
 </h3></div></div></div>
 <div><p class="copyright">Copyright © 2005 John Maddock</p></div>
 <div><div class="legalnotice">
-<a name="id437587"></a><p>
+<a name="id447060"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -61,7 +61,7 @@
 </dl>
 </div>
 <p>
- This manual is also available in <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/complex-tr1.pdf" target="_top">printer
+ This manual is also available in <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/complex-tr1.pdf" target="_top">printer
     friendly PDF format</a>.
   </p>
 </div>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/compile_time.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/compile_time.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/compile_time.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -51,7 +51,7 @@
         multiple is beyond the range of an unsigned long.
       </p>
 <a name="gcd_and_lcm.gcd_lcm.compile_time.example"></a><h4>
-<a name="id490769"></a>
+<a name="id500631"></a>
         <a href="compile_time.html#gcd_and_lcm.gcd_lcm.compile_time.example">Example</a>
       </h4>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">common_factor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/credits.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/credits.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/credits.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,10 +11,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/demo.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/demo.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/demo.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/gcd_function_object.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/gcd_function_object.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/gcd_function_object.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/header.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/header.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/header.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/history.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/history.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/history.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/introduction.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/introduction.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/introduction.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/lcm_function_object.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/lcm_function_object.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/lcm_function_object.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/rationale.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/rationale.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/rationale.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/run_time.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/run_time.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/run_time.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/synopsis.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/synopsis.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/gcd_and_lcm/gcd_lcm/synopsis.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/gcd/html/index.html
==============================================================================
--- branches/proto/v4/libs/math/doc/gcd/html/index.html (original)
+++ branches/proto/v4/libs/math/doc/gcd/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,10 +10,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
 </h3></div></div></div>
 <div><p class="copyright">Copyright © 2001 -2002 Daryle Walker</p></div>
 <div><div class="legalnotice">
-<a name="id435874"></a><p>
+<a name="id447055"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -61,7 +61,7 @@
 </dl>
 </div>
 <p>
- This manual is also available in <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/math-gcd.pdf" target="_top">printer
+ This manual is also available in <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/math-gcd.pdf" target="_top">printer
     friendly PDF format</a>.
   </p>
 </div>

Modified: branches/proto/v4/libs/math/doc/html/index.html
==============================================================================
--- branches/proto/v4/libs/math/doc/html/index.html (original)
+++ branches/proto/v4/libs/math/doc/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,10 +9,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -25,7 +25,7 @@
 <div><p class="copyright">Copyright © 2007 Paul A. Bristow, Hubert Holin, John Maddock, Daryle
       Walker and Xiaogang Zhang</p></div>
 <div><div class="legalnotice">
-<a name="id437673"></a><p>
+<a name="id445643"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -63,7 +63,7 @@
             <a href="../complex/html/index.html" target="_top">HTML Docs</a>
           </p>
           <p>
- <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/complex-tr1.pdf" target="_top">PDF
+ <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/complex-tr1.pdf" target="_top">PDF
             Docs</a>
           </p>
           </td>
@@ -85,7 +85,7 @@
             <a href="../gcd/html/index.html" target="_top">HTML Docs</a>
           </p>
           <p>
- <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/math-gcd.pdf" target="_top">PDF
+ <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/math-gcd.pdf" target="_top">PDF
             Docs</a>
           </p>
           </td>
@@ -107,7 +107,7 @@
             <a href="../octonion/html/index.html" target="_top">HTML Docs</a>
           </p>
           <p>
- <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/octonion.pdf" target="_top">PDF
+ <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/octonion.pdf" target="_top">PDF
             Docs</a>
           </p>
           </td>
@@ -165,7 +165,7 @@
             <a href="../sf_and_dist/html/index.html" target="_top">HTML Docs</a>
           </p>
           <p>
- <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/math.pdf" target="_top">PDF
+ <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/math.pdf" target="_top">PDF
             Docs</a>
           </p>
           </td>
@@ -201,7 +201,7 @@
             <a href="../sf_and_dist/html/index.html" target="_top">HTML Docs</a>
           </p>
           <p>
- <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/math.pdf" target="_top">PDF
+ <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/math.pdf" target="_top">PDF
             Docs</a>
           </p>
           </td>
@@ -230,7 +230,7 @@
             <a href="../quaternion/html/index.html" target="_top">HTML Docs</a>
           </p>
           <p>
- <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/quaternion.pdf" target="_top">PDF
+ <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/quaternion.pdf" target="_top">PDF
             Docs</a>
           </p>
           </td>
@@ -426,7 +426,7 @@
 </table></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: February 10, 2008 at 09:55:03 +0000</small></p></td>
+<td align="left"><p><small>Last revised: May 28, 2008 at 10:39:25 +0100</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/acknowledgements.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/acknowledgements.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/acknowledgements.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/header_file.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/header_file.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/header_file.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/history.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/history.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/history.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/non_mem.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/non_mem.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/non_mem.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Operators</a>
 </h3></div></div></div>
 <a name="boost_octonions.octonions.non_mem.unary_plus_and_minus_operators"></a><h5>
-<a name="id523273"></a>
+<a name="id533169"></a>
         <a href="non_mem.html#boost_octonions.octonions.non_mem.unary_plus_and_minus_operators">Unary
         Plus and Minus Operators</a>
       </h5>
@@ -43,7 +43,7 @@
         This unary operator returns the opposite of o.
       </p>
 <a name="boost_octonions.octonions.non_mem.binary_addition_operators"></a><h5>
-<a name="id523542"></a>
+<a name="id533438"></a>
         <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_addition_operators">Binary
         Addition Operators</a>
       </h5>
@@ -60,7 +60,7 @@
         <span class="identifier">rhs</span></code>.
       </p>
 <a name="boost_octonions.octonions.non_mem.binary_subtraction_operators"></a><h5>
-<a name="id524761"></a>
+<a name="id534657"></a>
         <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_subtraction_operators">Binary
         Subtraction Operators</a>
       </h5>
@@ -77,7 +77,7 @@
         <span class="identifier">rhs</span></code>.
       </p>
 <a name="boost_octonions.octonions.non_mem.binary_multiplication_operators"></a><h5>
-<a name="id525980"></a>
+<a name="id535876"></a>
         <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_multiplication_operators">Binary
         Multiplication Operators</a>
       </h5>
@@ -94,7 +94,7 @@
         <span class="identifier">rhs</span></code>.
       </p>
 <a name="boost_octonions.octonions.non_mem.binary_division_operators"></a><h5>
-<a name="id527200"></a>
+<a name="id537095"></a>
         <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_division_operators">Binary
         Division Operators</a>
       </h5>
@@ -112,7 +112,7 @@
         to divide by zero...
       </p>
 <a name="boost_octonions.octonions.non_mem.binary_equality_operators"></a><h5>
-<a name="id528418"></a>
+<a name="id538314"></a>
         <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_equality_operators">Binary
         Equality Operators</a>
       </h5>
@@ -130,7 +130,7 @@
         with any floating-type entity, this is essentially meaningless.
       </p>
 <a name="boost_octonions.octonions.non_mem.binary_inequality_operators"></a><h5>
-<a name="id529555"></a>
+<a name="id539450"></a>
         <a href="non_mem.html#boost_octonions.octonions.non_mem.binary_inequality_operators">Binary
         Inequality Operators</a>
       </h5>
@@ -148,7 +148,7 @@
         false. As with any floating-type entity, this is essentially meaningless.
       </p>
 <a name="boost_octonions.octonions.non_mem.stream_extractor"></a><h5>
-<a name="id530693"></a>
+<a name="id540589"></a>
         <a href="non_mem.html#boost_octonions.octonions.non_mem.stream_extractor">Stream
         Extractor</a>
       </h5>
@@ -170,7 +170,7 @@
         Returns <code class="computeroutput"><span class="identifier">is</span></code>.
       </p>
 <a name="boost_octonions.octonions.non_mem.stream_inserter"></a><h5>
-<a name="id531059"></a>
+<a name="id540954"></a>
         <a href="non_mem.html#boost_octonions.octonions.non_mem.stream_inserter">Stream
         Inserter</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/oct_create.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/oct_create.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/oct_create.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Member Functions</a>
 </h3></div></div></div>
 <a name="boost_octonions.octonions.octonion_member_functions.constructors"></a><h4>
-<a name="id515555"></a>
+<a name="id525451"></a>
         <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.constructors">Constructors</a>
       </h4>
 <p>
@@ -85,12 +85,12 @@
         function in a "detail" subnamespace.
       </p>
 <a name="boost_octonions.octonions.octonion_member_functions.other_member_functions"></a><h4>
-<a name="id519907"></a>
+<a name="id529803"></a>
         <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.other_member_functions">Other
         member functions</a>
       </h4>
 <a name="boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts"></a><h5>
-<a name="id519933"></a>
+<a name="id529829"></a>
         <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts">Real
         and Unreal Parts</a>
       </h5>
@@ -105,7 +105,7 @@
         These are returned by the first two functions.
       </p>
 <a name="boost_octonions.octonions.octonion_member_functions.individual_real_components"></a><h5>
-<a name="id520040"></a>
+<a name="id529936"></a>
         <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.individual_real_components">Individual
         Real Components</a>
       </h5>
@@ -123,7 +123,7 @@
         functions. Hence real and R_component_1 return the same value.
       </p>
 <a name="boost_octonions.octonions.octonion_member_functions.individual_complex_components"></a><h5>
-<a name="id520303"></a>
+<a name="id530199"></a>
         <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.individual_complex_components">Individual
         Complex Components</a>
       </h5>
@@ -143,7 +143,7 @@
         the basis <span class="emphasis"><em><code class="literal">(1, j, e', j')</code></em></span>.
       </p>
 <a name="boost_octonions.octonions.octonion_member_functions.individual_quaternion_components"></a><h5>
-<a name="id520616"></a>
+<a name="id530512"></a>
         <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.individual_quaternion_components">Individual
         Quaternion Components</a>
       </h5>
@@ -158,12 +158,12 @@
         to build the octonion using the constructor.
       </p>
 <a name="boost_octonions.octonions.octonion_member_functions.octonion_member_operators"></a><h4>
-<a name="id520808"></a>
+<a name="id530704"></a>
         <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.octonion_member_operators">Octonion
         Member Operators</a>
       </h4>
 <a name="boost_octonions.octonions.octonion_member_functions.assignment_operators"></a><h5>
-<a name="id520834"></a>
+<a name="id530730"></a>
         <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.assignment_operators">Assignment
         Operators</a>
       </h5>
@@ -181,7 +181,7 @@
         base type's assignment operators must not throw.
       </p>
 <a name="boost_octonions.octonions.octonion_member_functions.other_member_operators"></a><h5>
-<a name="id521363"></a>
+<a name="id531259"></a>
         <a href="octonion_member_functions.html#boost_octonions.octonions.octonion_member_functions.other_member_operators">Other
         Member Operators</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_specializations.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_specializations.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_specializations.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Value Operations</a>
 </h3></div></div></div>
 <a name="boost_octonions.octonions.octonion_value_operations.real_and_unreal"></a><h5>
-<a name="id532197"></a>
+<a name="id542093"></a>
         <a href="octonion_value_operations.html#boost_octonions.octonions.octonion_value_operations.real_and_unreal">Real
         and Unreal</a>
       </h5>
@@ -41,7 +41,7 @@
         respectively.
       </p>
 <a name="boost_octonions.octonions.octonion_value_operations.conj"></a><h5>
-<a name="id532477"></a>
+<a name="id542373"></a>
         <a href="octonion_value_operations.html#boost_octonions.octonions.octonion_value_operations.conj">conj</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">conj</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
@@ -50,7 +50,7 @@
         This returns the conjugate of the octonion.
       </p>
 <a name="boost_octonions.octonions.octonion_value_operations.sup"></a><h5>
-<a name="id532616"></a>
+<a name="id542512"></a>
         <a href="octonion_value_operations.html#boost_octonions.octonions.octonion_value_operations.sup">sup</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">sup</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
@@ -59,7 +59,7 @@
         This return the sup norm (the greatest among <code class="computeroutput"><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())...</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_8</span><span class="special">()))</span></code> of the octonion.
       </p>
 <a name="boost_octonions.octonions.octonion_value_operations.l1"></a><h5>
-<a name="id532804"></a>
+<a name="id542700"></a>
         <a href="octonion_value_operations.html#boost_octonions.octonions.octonion_value_operations.l1">l1</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">l1</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
@@ -68,7 +68,7 @@
         This return the l1 norm (<code class="computeroutput"><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())+...+</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">o</span><span class="special">.</span><span class="identifier">R_component_8</span><span class="special">())</span></code>) of the octonion.
       </p>
 <a name="boost_octonions.octonions.octonion_value_operations.abs"></a><h5>
-<a name="id532992"></a>
+<a name="id542888"></a>
         <a href="octonion_value_operations.html#boost_octonions.octonions.octonion_value_operations.abs">abs</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">abs</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>
@@ -77,7 +77,7 @@
         This return the magnitude (Euclidian norm) of the octonion.
       </p>
 <a name="boost_octonions.octonions.octonion_value_operations.norm"></a><h5>
-<a name="id533113"></a>
+<a name="id543009"></a>
         <a href="octonion_value_operations.html#boost_octonions.octonions.octonion_value_operations.norm">norm</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">norm</span><span class="special">(</span><span class="identifier">octonion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span><span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">o</span><span class="special">);</span>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -53,7 +53,7 @@
         headers.
       </p>
 <a name="boost_octonions.octonions.octonions_transcendentals.exp"></a><h5>
-<a name="id534430"></a>
+<a name="id544327"></a>
         <a href="octonions_transcendentals.html#boost_octonions.octonions.octonions_transcendentals.exp">exp</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -63,7 +63,7 @@
         Computes the exponential of the octonion.
       </p>
 <a name="boost_octonions.octonions.octonions_transcendentals.cos"></a><h5>
-<a name="id534567"></a>
+<a name="id544464"></a>
         <a href="octonions_transcendentals.html#boost_octonions.octonions.octonions_transcendentals.cos">cos</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -73,7 +73,7 @@
         Computes the cosine of the octonion
       </p>
 <a name="boost_octonions.octonions.octonions_transcendentals.sin"></a><h5>
-<a name="id534705"></a>
+<a name="id544601"></a>
         <a href="octonions_transcendentals.html#boost_octonions.octonions.octonions_transcendentals.sin">sin</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -83,7 +83,7 @@
         Computes the sine of the octonion.
       </p>
 <a name="boost_octonions.octonions.octonions_transcendentals.tan"></a><h5>
-<a name="id534842"></a>
+<a name="id544739"></a>
         <a href="octonions_transcendentals.html#boost_octonions.octonions.octonions_transcendentals.tan">tan</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -93,7 +93,7 @@
         Computes the tangent of the octonion.
       </p>
 <a name="boost_octonions.octonions.octonions_transcendentals.cosh"></a><h5>
-<a name="id534979"></a>
+<a name="id544875"></a>
         <a href="octonions_transcendentals.html#boost_octonions.octonions.octonions_transcendentals.cosh">cosh</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -103,7 +103,7 @@
         Computes the hyperbolic cosine of the octonion.
       </p>
 <a name="boost_octonions.octonions.octonions_transcendentals.sinh"></a><h5>
-<a name="id535117"></a>
+<a name="id545014"></a>
         <a href="octonions_transcendentals.html#boost_octonions.octonions.octonions_transcendentals.sinh">sinh</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -113,7 +113,7 @@
         Computes the hyperbolic sine of the octonion.
       </p>
 <a name="boost_octonions.octonions.octonions_transcendentals.tanh"></a><h5>
-<a name="id535256"></a>
+<a name="id545152"></a>
         <a href="octonions_transcendentals.html#boost_octonions.octonions.octonions_transcendentals.tanh">tanh</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -123,7 +123,7 @@
         Computes the hyperbolic tangent of the octonion.
       </p>
 <a name="boost_octonions.octonions.octonions_transcendentals.pow"></a><h5>
-<a name="id535396"></a>
+<a name="id545292"></a>
         <a href="octonions_transcendentals.html#boost_octonions.octonions.octonions_transcendentals.pow">pow</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/overview.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/overview.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/synopsis.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/synopsis.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/synopsis.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/template_class_octonion.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/template_class_octonion.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/template_class_octonion.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/test_program.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/test_program.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/test_program.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/to_do.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/to_do.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/boost_octonions/octonions/to_do.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,10 +11,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/octonion/html/index.html
==============================================================================
--- branches/proto/v4/libs/math/doc/octonion/html/index.html (original)
+++ branches/proto/v4/libs/math/doc/octonion/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,10 +10,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
 </h3></div></div></div>
 <div><p class="copyright">Copyright © 2001 -2003 Hubert Holin</p></div>
 <div><div class="legalnotice">
-<a name="id435842"></a><p>
+<a name="id445737"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -68,7 +68,7 @@
 </dl>
 </div>
 <p>
- This manual is also available in <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/octonion.pdf" target="_top">printer
+ This manual is also available in <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/octonion.pdf" target="_top">printer
     friendly PDF format</a>.
   </p>
 </div>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/create.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/create.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/create.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/exp.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/exp.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/exp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/header_file.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/header_file.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/header_file.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/history.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/history.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/history.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Functions</a>
 </h3></div></div></div>
 <a name="boost_quaternions.quaternions.mem_fun.constructors"></a><h4>
-<a name="id506842"></a>
+<a name="id516686"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.constructors">Constructors</a>
       </h4>
 <p>
@@ -80,12 +80,12 @@
         function in a "detail" subnamespace.
       </p>
 <a name="boost_quaternions.quaternions.mem_fun.other_member_functions"></a><h4>
-<a name="id508866"></a>
+<a name="id518710"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.other_member_functions">Other
         member functions</a>
       </h4>
 <a name="boost_quaternions.quaternions.mem_fun.real_and_unreal_parts"></a><h5>
-<a name="id508890"></a>
+<a name="id518734"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.real_and_unreal_parts">Real
         and Unreal Parts</a>
       </h5>
@@ -100,7 +100,7 @@
         case). These are returned by the first two functions.
       </p>
 <a name="boost_quaternions.quaternions.mem_fun.individual_real_components"></a><h5>
-<a name="id508997"></a>
+<a name="id518840"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.individual_real_components">Individual
         Real Components</a>
       </h5>
@@ -114,7 +114,7 @@
         functions. Hence real and R_component_1 return the same value.
       </p>
 <a name="boost_quaternions.quaternions.mem_fun.individual_complex__components"></a><h5>
-<a name="id509145"></a>
+<a name="id518989"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.individual_complex__components">Individual
         Complex Components</a>
       </h5>
@@ -129,12 +129,12 @@
         is the same as <code class="computeroutput"><span class="identifier">q</span><span class="special">.</span><span class="identifier">real</span><span class="special">()</span></code>.
       </p>
 <a name="boost_quaternions.quaternions.mem_fun.quaternion_member_operators"></a><h4>
-<a name="id509368"></a>
+<a name="id519212"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.quaternion_member_operators">Quaternion
         Member Operators</a>
       </h4>
 <a name="boost_quaternions.quaternions.mem_fun.assignment_operators"></a><h5>
-<a name="id509393"></a>
+<a name="id519237"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.assignment_operators">Assignment
         Operators</a>
       </h5>
@@ -151,7 +151,7 @@
         base type's assignment operators must not throw.
       </p>
 <a name="boost_quaternions.quaternions.mem_fun.addition_operators"></a><h5>
-<a name="id509782"></a>
+<a name="id519625"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.addition_operators">Addition
         Operators</a>
       </h5>
@@ -168,7 +168,7 @@
         base type's assignment operators must not throw.
       </p>
 <a name="boost_quaternions.quaternions.mem_fun.subtraction_operators"></a><h5>
-<a name="id510137"></a>
+<a name="id519981"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.subtraction_operators">Subtraction
         Operators</a>
       </h5>
@@ -185,7 +185,7 @@
         base type's assignment operators must not throw.
       </p>
 <a name="boost_quaternions.quaternions.mem_fun.multiplication_operators"></a><h5>
-<a name="id510492"></a>
+<a name="id520336"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.multiplication_operators">Multiplication
         Operators</a>
       </h5>
@@ -203,7 +203,7 @@
         assignment operators must not throw.
       </p>
 <a name="boost_quaternions.quaternions.mem_fun.division_operators"></a><h5>
-<a name="id510853"></a>
+<a name="id520696"></a>
         <a href="mem_fun.html#boost_quaternions.quaternions.mem_fun.division_operators">Division
         Operators</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/non_mem.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/non_mem.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/non_mem.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Operators</a>
 </h3></div></div></div>
 <a name="boost_quaternions.quaternions.non_mem.unary_plus"></a><h5>
-<a name="id511250"></a>
+<a name="id521094"></a>
         <a href="non_mem.html#boost_quaternions.quaternions.non_mem.unary_plus">Unary Plus</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -38,7 +38,7 @@
         This unary operator simply returns q.
       </p>
 <a name="boost_quaternions.quaternions.non_mem.unary_minus"></a><h5>
-<a name="id511395"></a>
+<a name="id521239"></a>
         <a href="non_mem.html#boost_quaternions.quaternions.non_mem.unary_minus">Unary Minus</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -48,7 +48,7 @@
         This unary operator returns the opposite of q.
       </p>
 <a name="boost_quaternions.quaternions.non_mem.binary_addition_operators"></a><h5>
-<a name="id511541"></a>
+<a name="id521385"></a>
         <a href="non_mem.html#boost_quaternions.quaternions.non_mem.binary_addition_operators">Binary
         Addition Operators</a>
       </h5>
@@ -63,7 +63,7 @@
         <span class="identifier">rhs</span></code>.
       </p>
 <a name="boost_quaternions.quaternions.non_mem.binary_subtraction_operators"></a><h5>
-<a name="id512401"></a>
+<a name="id522245"></a>
         <a href="non_mem.html#boost_quaternions.quaternions.non_mem.binary_subtraction_operators">Binary
         Subtraction Operators</a>
       </h5>
@@ -78,7 +78,7 @@
         <span class="identifier">rhs</span></code>.
       </p>
 <a name="boost_quaternions.quaternions.non_mem.binary_multiplication_operators"></a><h5>
-<a name="id513263"></a>
+<a name="id523106"></a>
         <a href="non_mem.html#boost_quaternions.quaternions.non_mem.binary_multiplication_operators">Binary
         Multiplication Operators</a>
       </h5>
@@ -93,7 +93,7 @@
         <span class="identifier">rhs</span></code>.
       </p>
 <a name="boost_quaternions.quaternions.non_mem.binary_division_operators"></a><h5>
-<a name="id514123"></a>
+<a name="id523967"></a>
         <a href="non_mem.html#boost_quaternions.quaternions.non_mem.binary_division_operators">Binary
         Division Operators</a>
       </h5>
@@ -109,7 +109,7 @@
         to divide by zero...
       </p>
 <a name="boost_quaternions.quaternions.non_mem.equality_operators"></a><h5>
-<a name="id514983"></a>
+<a name="id524827"></a>
         <a href="non_mem.html#boost_quaternions.quaternions.non_mem.equality_operators">Equality
         Operators</a>
       </h5>
@@ -125,7 +125,7 @@
         with any floating-type entity, this is essentially meaningless.
       </p>
 <a name="boost_quaternions.quaternions.non_mem.inequality_operators"></a><h5>
-<a name="id515794"></a>
+<a name="id525637"></a>
         <a href="non_mem.html#boost_quaternions.quaternions.non_mem.inequality_operators">Inequality
         Operators</a>
       </h5>
@@ -141,7 +141,7 @@
         false. As with any floating-type entity, this is essentially meaningless.
       </p>
 <a name="boost_quaternions.quaternions.non_mem.stream_extractor"></a><h5>
-<a name="id516604"></a>
+<a name="id526447"></a>
         <a href="non_mem.html#boost_quaternions.quaternions.non_mem.stream_extractor">Stream
         Extractor</a>
       </h5>
@@ -173,7 +173,7 @@
         complex numbers which happen to have imaginary parts equal to zero).
       </p>
 <a name="boost_quaternions.quaternions.non_mem.stream_inserter"></a><h5>
-<a name="id516980"></a>
+<a name="id526824"></a>
         <a href="non_mem.html#boost_quaternions.quaternions.non_mem.stream_inserter">Stream
         Inserter</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/overview.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/overview.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/quat.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/quat.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/quat.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/spec.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/spec.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/spec.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/synopsis.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/synopsis.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/synopsis.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/test_program.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/test_program.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/test_program.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/to_do.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/to_do.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/to_do.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,10 +11,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/trans.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/trans.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/trans.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -56,7 +56,7 @@
         headers.
       </p>
 <a name="boost_quaternions.quaternions.trans.exp"></a><h5>
-<a name="id520737"></a>
+<a name="id530581"></a>
         <a href="trans.html#boost_quaternions.quaternions.trans.exp">exp</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">exp</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
@@ -65,7 +65,7 @@
         Computes the exponential of the quaternion.
       </p>
 <a name="boost_quaternions.quaternions.trans.cos"></a><h5>
-<a name="id435698"></a>
+<a name="id445584"></a>
         <a href="trans.html#boost_quaternions.quaternions.trans.cos">cos</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">cos</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
@@ -74,7 +74,7 @@
         Computes the cosine of the quaternion
       </p>
 <a name="boost_quaternions.quaternions.trans.sin"></a><h5>
-<a name="id520873"></a>
+<a name="id530717"></a>
         <a href="trans.html#boost_quaternions.quaternions.trans.sin">sin</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">sin</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
@@ -83,7 +83,7 @@
         Computes the sine of the quaternion.
       </p>
 <a name="boost_quaternions.quaternions.trans.tan"></a><h5>
-<a name="id521009"></a>
+<a name="id530853"></a>
         <a href="trans.html#boost_quaternions.quaternions.trans.tan">tan</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">tan</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
@@ -92,7 +92,7 @@
         Computes the tangent of the quaternion.
       </p>
 <a name="boost_quaternions.quaternions.trans.cosh"></a><h5>
-<a name="id521147"></a>
+<a name="id530991"></a>
         <a href="trans.html#boost_quaternions.quaternions.trans.cosh">cosh</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">cosh</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
@@ -101,7 +101,7 @@
         Computes the hyperbolic cosine of the quaternion.
       </p>
 <a name="boost_quaternions.quaternions.trans.sinh"></a><h5>
-<a name="id521285"></a>
+<a name="id531129"></a>
         <a href="trans.html#boost_quaternions.quaternions.trans.sinh">sinh</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">sinh</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
@@ -110,7 +110,7 @@
         Computes the hyperbolic sine of the quaternion.
       </p>
 <a name="boost_quaternions.quaternions.trans.tanh"></a><h5>
-<a name="id521422"></a>
+<a name="id531266"></a>
         <a href="trans.html#boost_quaternions.quaternions.trans.tanh">tanh</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">tanh</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
@@ -119,7 +119,7 @@
         Computes the hyperbolic tangent of the quaternion.
       </p>
 <a name="boost_quaternions.quaternions.trans.pow"></a><h5>
-<a name="id521559"></a>
+<a name="id531403"></a>
         <a href="trans.html#boost_quaternions.quaternions.trans.pow">pow</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">n</span><span class="special">);</span>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/value_op.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/value_op.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/boost_quaternions/quaternions/value_op.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,10 +12,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Operations</a>
 </h3></div></div></div>
 <a name="boost_quaternions.quaternions.value_op.real_and_unreal"></a><h5>
-<a name="id517934"></a>
+<a name="id527777"></a>
         <a href="value_op.html#boost_quaternions.quaternions.value_op.real_and_unreal">real
         and unreal</a>
       </h5>
@@ -41,7 +41,7 @@
         respectively.
       </p>
 <a name="boost_quaternions.quaternions.value_op.conj"></a><h5>
-<a name="id518215"></a>
+<a name="id528058"></a>
         <a href="value_op.html#boost_quaternions.quaternions.value_op.conj">conj</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">conj</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
@@ -50,7 +50,7 @@
         This returns the conjugate of the quaternion.
       </p>
 <a name="boost_quaternions.quaternions.value_op.sup"></a><h5>
-<a name="id518352"></a>
+<a name="id528195"></a>
         <a href="value_op.html#boost_quaternions.quaternions.value_op.sup">sup</a>
       </h5>
 <p>
@@ -60,7 +60,7 @@
         This return the sup norm (the greatest among <code class="computeroutput"><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())...</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_4</span><span class="special">()))</span></code> of the quaternion.
       </p>
 <a name="boost_quaternions.quaternions.value_op.l1"></a><h5>
-<a name="id518450"></a>
+<a name="id528293"></a>
         <a href="value_op.html#boost_quaternions.quaternions.value_op.l1">l1</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">l1</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
@@ -69,7 +69,7 @@
         This return the l1 norm <code class="computeroutput"><span class="special">(</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_1</span><span class="special">())+...+</span><span class="identifier">abs</span><span class="special">(</span><span class="identifier">q</span><span class="special">.</span><span class="identifier">R_component_4</span><span class="special">()))</span></code> of the quaternion.
       </p>
 <a name="boost_quaternions.quaternions.value_op.abs"></a><h5>
-<a name="id518642"></a>
+<a name="id528486"></a>
         <a href="value_op.html#boost_quaternions.quaternions.value_op.abs">abs</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">abs</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>
@@ -78,7 +78,7 @@
         This return the magnitude (Euclidian norm) of the quaternion.
       </p>
 <a name="boost_quaternions.quaternions.value_op.norm"></a><h5>
-<a name="id518763"></a>
+<a name="id528607"></a>
         <a href="value_op.html#boost_quaternions.quaternions.value_op.norm">norm</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span> <span class="identifier">norm</span><span class="special">(</span><span class="identifier">quaternion</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span><span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">q</span><span class="special">);</span>

Modified: branches/proto/v4/libs/math/doc/quaternion/html/index.html
==============================================================================
--- branches/proto/v4/libs/math/doc/quaternion/html/index.html (original)
+++ branches/proto/v4/libs/math/doc/quaternion/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,10 +10,10 @@
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
 </h3></div></div></div>
 <div><p class="copyright">Copyright © 2001 -2003 Hubert Holin</p></div>
 <div><div class="legalnotice">
-<a name="id435842"></a><p>
+<a name="id447404"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -67,7 +67,7 @@
 </dl>
 </div>
 <p>
- This manual is also available in <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/quaternion.pdf" target="_top">printer
+ This manual is also available in <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/quaternion.pdf" target="_top">printer
     friendly PDF format</a>.
   </p>
 </div>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/equations/generate.sh
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/equations/generate.sh (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/equations/generate.sh 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,7 @@
+# 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)
 #
 # Generates SVG and PNG files from the MML masters.
 #

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/error_handling.qbk
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/error_handling.qbk (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/error_handling.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,6 +32,8 @@
 [[Evaluation Error][Occurs when an internal error occured that prevented the
    result from being evaluated: this should never occur, but if it does, then
    it's likely to be due to an iterative method not converging fast enough.]]
+[[Indeterminate Result Error][Occurs when the result of a function is not
+ defined for the values that were passed to it.]]
 ]
 
 The action undertaken by each error condition is determined by the current
@@ -116,13 +118,23 @@
 [table Possible Actions for Internal Evaluation Errors
 [[Action] [Behaviour]]
 [[throw_on_error][[*Throws `boost::math::evaluation_error`]]]
-[[errno_on_error][Sets `::errno` to `EDOM` and returns `std::numeric_limits<T>::infinity()`.]]
-[[ignore_error][Returns `std::numeric_limits<T>::infinity()`.]]
+[[errno_on_error][Sets `::errno` to `EDOM` and returns the closest approximation found.]]
+[[ignore_error][Returns the closest approximation found.]]
 [[user_error][Returns the result of `boost::math::policies::user_evaluation_error`:
             [link math_toolkit.policy.pol_tutorial.user_def_err_pol
             this function must be defined by the user].]]
 ]
 
+[table Possible Actions for Indeterminate Result Errors
+[[Action] [Behaviour]]
+[[throw_on_error][Throws `std::domain_error`]]
+[[errno_on_error][Sets `::errno` to `EDOM` and returns the same value as `ignore_error`.]]
+[[ignore_error][[*Returns a default result that depends on the function where the error occurred.]]]
+[[user_error][Returns the result of `boost::math::policies::user_indeterminate_result_error`:
+ [link math_toolkit.policy.pol_tutorial.user_def_err_pol
+ this function must be defined by the user].]]
+]
+
 [heading Rationale]
 
 The flexibility of the current implementation should be reasonably obvious, the
@@ -304,6 +316,27 @@
 `val` to the full precision of T, where as "%.3g" would contain the value of
 `val` to 3 digits. See the __format documentation for more details.
 
+[heading [#indeterminate_result_error]Indeterminate Result Errors]
+
+When the result of a special function is indeterminate for the value that was
+passed to it, then the function returns the result of:
+
+ boost::math::policies::raise_overflow_error<T>(FunctionName, Message, Val, Default, __Policy);
+
+Where
+`T` is the floating-point type passed to the function, `FunctionName` is the
+name of the function, `Message` is an error message describing the problem,
+Val is the value for which the result is indeterminate, Default is an
+alternative default result that must be returned for ignore_error and
+errno_on_error policies, and __Policy is the current policy in use for the
+function that was called.
+
+The default policy for this function is `ignore_error`: note that this error
+type is reserved for situations where the result is mathematically
+undefined or indeterminate, but there is none the less a convention for what
+the result should be: for example the C99 standard specifies that the result
+of 0[super 0] is 1, even though the result is actually mathematically indeterminate.
+
 [heading [#rounding_error]Rounding Errors]
 
 When one of the rounding functions __round, __trunc or __modf is

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/graphs/generate.sh
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/graphs/generate.sh (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/graphs/generate.sh 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,7 @@
+# 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)
 #
 # Generates PNG files from the SVG masters.
 #

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/index.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/index.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,8 +12,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -43,7 +43,7 @@
 <div><p class="copyright">Copyright © 2006 , 2007, 2008 John Maddock, Paul A. Bristow, Hubert
       Holin, Xiaogang Zhang and Bruno Lalande</p></div>
 <div><div class="legalnotice">
-<a name="id445688"></a><p>
+<a name="id445777"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -323,6 +323,8 @@
 <dt><span class="section"> Overview</span></dt>
 <dt><span class="section"> Reused Utilities</span></dt>
 <dd><dl>
+<dt><span class="section"><a href="math_toolkit/toolkit/internals1/constants.html"> Numeric
+ Constants</a></span></dt>
 <dt><span class="section"><a href="math_toolkit/toolkit/internals1/series_evaluation.html">
         Series Evaluation</a></span></dt>
 <dt><span class="section"><a href="math_toolkit/toolkit/internals1/cf.html"> Continued Fraction
@@ -441,12 +443,12 @@
     ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22
   </p>
 <p>
- This manual is also available in <a href="http:svn.boost.org/svn/boost/sandbox/pdf/math/release/math.pdf" target="_top">printer
+ This manual is also available in <a href="http://svn.boost.org/svn/boost/sandbox/pdf/math/release/math.pdf" target="_top">printer
     friendly PDF format</a>.
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: May 18, 2008 at 09:19:30 GMT</small></p></td>
+<td align="left"><p><small>Last revised: July 18, 2008 at 10:10:45 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -33,7 +33,7 @@
         and reflect more the general implementation philosophy used.
       </p>
 <a name="math_toolkit.backgrounders.implementation.implemention_philosophy"></a><h5>
-<a name="id856056"></a>
+<a name="id859011"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.implemention_philosophy">Implemention
         philosophy</a>
       </h5>
@@ -85,7 +85,7 @@
         These could still provide sufficient accuracy for some speed-critical applications.
       </p>
 <a name="math_toolkit.backgrounders.implementation.accuracy_and_representation_of_test_values"></a><h5>
-<a name="id856167"></a>
+<a name="id859128"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.accuracy_and_representation_of_test_values">Accuracy
         and Representation of Test Values</a>
       </h5>
@@ -130,7 +130,7 @@
         binary value).
       </p>
 <a name="math_toolkit.backgrounders.implementation.tolerance_of_tests"></a><h5>
-<a name="id856407"></a>
+<a name="id859360"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.tolerance_of_tests">Tolerance
         of Tests</a>
       </h5>
@@ -156,7 +156,7 @@
         first that the suffix L is present, and then that the tolerance is big enough.
       </p>
 <a name="math_toolkit.backgrounders.implementation.handling_unsuitable_arguments"></a><h5>
-<a name="id856467"></a>
+<a name="id859419"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.handling_unsuitable_arguments">Handling
         Unsuitable Arguments</a>
       </h5>
@@ -242,7 +242,7 @@
         </p></td></tr>
 </table></div>
 <a name="math_toolkit.backgrounders.implementation.handling_of_functions_that_are_not_mathematically_defined"></a><h5>
-<a name="id856692"></a>
+<a name="id859644"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.handling_of_functions_that_are_not_mathematically_defined">Handling
         of Functions that are Not Mathematically defined</a>
       </h5>
@@ -276,7 +276,7 @@
         </p></td></tr>
 </table></div>
 <a name="math_toolkit.backgrounders.implementation.median_of_distributions"></a><h5>
-<a name="id856833"></a>
+<a name="id859785"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.median_of_distributions">Median
         of distributions</a>
       </h5>
@@ -309,7 +309,7 @@
         Basic Statistics.</a> give more detail, in particular for discrete distributions.
       </p>
 <a name="math_toolkit.backgrounders.implementation.handling_of_floating_point_infinity"></a><h5>
-<a name="id856977"></a>
+<a name="id859930"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.handling_of_floating_point_infinity">Handling
         of Floating-Point Infinity</a>
       </h5>
@@ -353,7 +353,7 @@
         handling policies</a>.
       </p>
 <a name="math_toolkit.backgrounders.implementation.scale__shape_and_location"></a><h5>
-<a name="id857135"></a>
+<a name="id860087"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.scale__shape_and_location">Scale,
         Shape and Location</a>
       </h5>
@@ -380,7 +380,7 @@
         functions, they can be added if required.
       </p>
 <a name="math_toolkit.backgrounders.implementation.notes_on_implementation_of_specific_functions__amp__distributions"></a><h5>
-<a name="id857600"></a>
+<a name="id860552"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.notes_on_implementation_of_specific_functions__amp__distributions">Notes
         on Implementation of Specific Functions &amp; Distributions</a>
       </h5>
@@ -392,7 +392,7 @@
           0 and upper = 1 would be more suitable.
         </li></ul></div>
 <a name="math_toolkit.backgrounders.implementation.rational_approximations_used"></a><h5>
-<a name="id857640"></a>
+<a name="id860593"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.rational_approximations_used">Rational
         Approximations Used</a>
       </h5>
@@ -435,7 +435,7 @@
         to the "true" minimax solution.
       </p>
 <a name="math_toolkit.backgrounders.implementation.representation_of_mathematical_constants"></a><h5>
-<a name="id857737"></a>
+<a name="id860689"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.representation_of_mathematical_constants">Representation
         of Mathematical Constants</a>
       </h5>
@@ -496,7 +496,7 @@
 </span><span class="keyword">double</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">();</span> <span class="comment">// Context does not allow for disambiguation of overloaded function
 </span></pre>
 <a name="math_toolkit.backgrounders.implementation.thread_safety"></a><h5>
-<a name="id858305"></a>
+<a name="id861231"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.thread_safety">Thread
         safety</a>
       </h5>
@@ -521,7 +521,7 @@
         the right thing here at some point.
       </p>
 <a name="math_toolkit.backgrounders.implementation.sources_of_test_data"></a><h5>
-<a name="id858370"></a>
+<a name="id861296"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.sources_of_test_data">Sources
         of Test Data</a>
       </h5>
@@ -565,7 +565,7 @@
         the underlying special function is known to be difficult to implement.
       </p>
 <a name="math_toolkit.backgrounders.implementation.creating_and_managing_the_equations"></a><h5>
-<a name="id858481"></a>
+<a name="id861406"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.creating_and_managing_the_equations">Creating
         and Managing the Equations</a>
       </h5>
@@ -726,7 +726,7 @@
         HTML: this needs further investigation.
       </p>
 <a name="math_toolkit.backgrounders.implementation.producing_graphs"></a><h5>
-<a name="id858866"></a>
+<a name="id861801"></a>
         <a href="implementation.html#math_toolkit.backgrounders.implementation.producing_graphs">Producing
         Graphs</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.backgrounders.lanczos"></a> The Lanczos Approximation
 </h3></div></div></div>
 <a name="math_toolkit.backgrounders.lanczos.motivation"></a><h5>
-<a name="id859245"></a>
+<a name="id862180"></a>
         <a href="lanczos.html#math_toolkit.backgrounders.lanczos.motivation">Motivation</a>
       </h5>
 <p>
@@ -98,7 +98,7 @@
         functions divided by large powers into single (simpler) expressions.
       </p>
 <a name="math_toolkit.backgrounders.lanczos.the_approximation"></a><h5>
-<a name="id859623"></a>
+<a name="id862557"></a>
         <a href="lanczos.html#math_toolkit.backgrounders.lanczos.the_approximation">The
         Approximation</a>
       </h5>
@@ -160,7 +160,7 @@
         </p></td></tr>
 </table></div>
 <a name="math_toolkit.backgrounders.lanczos.computing_the_coefficients"></a><h5>
-<a name="id859886"></a>
+<a name="id862820"></a>
         <a href="lanczos.html#math_toolkit.backgrounders.lanczos.computing_the_coefficients">Computing
         the Coefficients</a>
       </h5>
@@ -204,7 +204,7 @@
         multiplied by <span class="emphasis"><em>F</em></span> as the last step.
       </p>
 <a name="math_toolkit.backgrounders.lanczos.choosing_the_right_parameters"></a><h5>
-<a name="id860091"></a>
+<a name="id863026"></a>
         <a href="lanczos.html#math_toolkit.backgrounders.lanczos.choosing_the_right_parameters">Choosing
         the Right Parameters</a>
       </h5>
@@ -228,7 +228,7 @@
         computing to float precision with double precision arithmetic.
       </p>
 <div class="table">
-<a name="id860174"></a><p class="title"><b>Table 52. Optimal choices for N and g when computing with
+<a name="id863109"></a><p class="title"><b>Table 53. Optimal choices for N and g when computing with
       guard digits (source: Pugh)</b></p>
 <div class="table-contents"><table class="table" summary="Optimal choices for N and g when computing with
       guard digits (source: Pugh)">
@@ -371,7 +371,7 @@
         exactly matches the machine epsilon for the type in question.
       </p>
 <div class="table">
-<a name="id860506"></a><p class="title"><b>Table 53. Optimum value for N and g when computing at fixed
+<a name="id863431"></a><p class="title"><b>Table 54. Optimum value for N and g when computing at fixed
       precision</b></p>
 <div class="table-contents"><table class="table" summary="Optimum value for N and g when computing at fixed
       precision">
@@ -536,7 +536,7 @@
         is exact, and so isn't used for the gamma function.
       </p>
 <a name="math_toolkit.backgrounders.lanczos.references"></a><h5>
-<a name="id860784"></a>
+<a name="id863709"></a>
         <a href="lanczos.html#math_toolkit.backgrounders.lanczos.references">References</a>
       </h5>
 <a name="godfrey"></a><a name="pugh"></a><div class="orderedlist"><ol type="1">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.backgrounders.refs"></a> References
 </h3></div></div></div>
 <a name="math_toolkit.backgrounders.refs.general_references"></a><h5>
-<a name="id862196"></a>
+<a name="id865073"></a>
         <a href="refs.html#math_toolkit.backgrounders.refs.general_references">General
         references</a>
       </h5>
@@ -91,7 +91,7 @@
         Library (version 2), Walter E. Brown</a>
       </p>
 <a name="math_toolkit.backgrounders.refs.calculators__that_we_found__and_used_to_cross_check___as_far_as_their_widely_varying_accuracy_allowed__"></a><h5>
-<a name="id862370"></a>
+<a name="id865248"></a>
         <a href="refs.html#math_toolkit.backgrounders.refs.calculators__that_we_found__and_used_to_cross_check___as_far_as_their_widely_varying_accuracy_allowed__">Calculators*
         that we found (and used to cross-check - as far as their widely-varying accuracy
         allowed).</a>
@@ -101,7 +101,7 @@
         Binomial Probability Distribution Calculator.
       </p>
 <a name="math_toolkit.backgrounders.refs.other_libraries"></a><h5>
-<a name="id862414"></a>
+<a name="id865292"></a>
         <a href="refs.html#math_toolkit.backgrounders.refs.other_libraries">Other Libraries</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -81,7 +81,7 @@
 <a name="zero_error"></a><p>
       </p>
 <a name="math_toolkit.backgrounders.relative_error.the_impossibility_of_zero_error"></a><h5>
-<a name="id859167"></a>
+<a name="id862101"></a>
         <a href="relative_error.html#math_toolkit.backgrounders.relative_error.the_impossibility_of_zero_error">The
         Impossibility of Zero Error</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -94,7 +94,7 @@
         are located!</em></span>
       </p>
 <a name="math_toolkit.backgrounders.remez.the_remez_method"></a><h5>
-<a name="id861035"></a>
+<a name="id863960"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.the_remez_method">The Remez
         Method</a>
       </h5>
@@ -174,7 +174,7 @@
 </td></tr>
 </table></div>
 <a name="math_toolkit.backgrounders.remez.remez_step_1"></a><h5>
-<a name="id861265"></a>
+<a name="id864180"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.remez_step_1">Remez Step
         1</a>
       </h5>
@@ -205,7 +205,7 @@
         to 5.6x10<sup>-4</sup>.
       </p>
 <a name="math_toolkit.backgrounders.remez.remez_step_2"></a><h5>
-<a name="id861371"></a>
+<a name="id864286"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.remez_step_2">Remez Step
         2</a>
       </h5>
@@ -234,7 +234,7 @@
         In our example we perform multi-point exchange.
       </p>
 <a name="math_toolkit.backgrounders.remez.iteration"></a><h5>
-<a name="id861431"></a>
+<a name="id864346"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.iteration">Iteration</a>
       </h5>
 <p>
@@ -250,7 +250,7 @@
         <span class="inlinemediaobject"><img src="../../../graphs/remez-4.png" alt="remez-4"></span>
       </p>
 <a name="math_toolkit.backgrounders.remez.rational_approximations"></a><h5>
-<a name="id861492"></a>
+<a name="id864407"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.rational_approximations">Rational
         Approximations</a>
       </h5>
@@ -299,7 +299,7 @@
         number of terms overall.
       </p>
 <a name="math_toolkit.backgrounders.remez.practical_considerations"></a><h5>
-<a name="id861631"></a>
+<a name="id864530"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.practical_considerations">Practical
         Considerations</a>
       </h5>
@@ -407,7 +407,7 @@
         desired minimax solution (5x10<sup>-4</sup>).
       </p>
 <a name="math_toolkit.backgrounders.remez.remez_method_checklist"></a><h5>
-<a name="id861911"></a>
+<a name="id864789"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.remez_method_checklist">Remez
         Method Checklist</a>
       </h5>
@@ -461,7 +461,7 @@
         </li>
 </ul></div>
 <a name="math_toolkit.backgrounders.remez.references"></a><h5>
-<a name="id862014"></a>
+<a name="id864892"></a>
         <a href="remez.html#math_toolkit.backgrounders.remez.references">References</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dist_algorithms.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dist_algorithms.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dist_algorithms.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Algorithms</a>
 </h4></div></div></div>
 <a name="math_toolkit.dist.dist_ref.dist_algorithms.finding_the_location_and_scale_for_normal_and_similar_distributions"></a><h5>
-<a name="id648539"></a>
+<a name="id648826"></a>
           <a href="dist_algorithms.html#math_toolkit.dist.dist_ref.dist_algorithms.finding_the_location_and_scale_for_normal_and_similar_distributions">Finding
           the Location and Scale for Normal and similar distributions</a>
         </h5>
@@ -50,7 +50,7 @@
 </span><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">complement</span><span class="special">;</span> <span class="comment">// Will be needed by users who want to use complements.
 </span></pre>
 <a name="math_toolkit.dist.dist_ref.dist_algorithms.find_location_function"></a><h5>
-<a name="id648693"></a>
+<a name="id648980"></a>
           <a href="dist_algorithms.html#math_toolkit.dist.dist_ref.dist_algorithms.find_location_function">find_location
           function</a>
         </h5>
@@ -80,7 +80,7 @@
   <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.dist.dist_ref.dist_algorithms.find_scale_function"></a><h5>
-<a name="id649314"></a>
+<a name="id649601"></a>
           <a href="dist_algorithms.html#math_toolkit.dist.dist_ref.dist_algorithms.find_scale_function">find_scale
           function</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/bernoulli_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/bernoulli_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/bernoulli_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -87,7 +87,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/bernoulli_cdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.bernoulli_dist.member_functions"></a><h5>
-<a name="id601092"></a>
+<a name="id601360"></a>
             <a href="bernoulli_dist.html#math_toolkit.dist.dist_ref.dists.bernoulli_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -103,7 +103,7 @@
             Returns the <span class="emphasis"><em>success_fraction</em></span> parameter of this distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.bernoulli_dist.non_member_accessors"></a><h5>
-<a name="id601207"></a>
+<a name="id601476"></a>
             <a href="bernoulli_dist.html#math_toolkit.dist.dist_ref.dists.bernoulli_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -128,7 +128,7 @@
             exception and make an error message available.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.bernoulli_dist.accuracy"></a><h5>
-<a name="id601382"></a>
+<a name="id601651"></a>
             <a href="bernoulli_dist.html#math_toolkit.dist.dist_ref.dists.bernoulli_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -136,7 +136,7 @@
             and so should have errors within an epsilon or two.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.bernoulli_dist.implementation"></a><h5>
-<a name="id601413"></a>
+<a name="id601681"></a>
             <a href="bernoulli_dist.html#math_toolkit.dist.dist_ref.dists.bernoulli_dist.implementation">Implementation</a>
           </h5>
 <p>
@@ -327,7 +327,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.bernoulli_dist.references"></a><h5>
-<a name="id601784"></a>
+<a name="id602053"></a>
             <a href="bernoulli_dist.html#math_toolkit.dist.dist_ref.dists.bernoulli_dist.references">References</a>
           </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/beta_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/beta_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/beta_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -133,12 +133,12 @@
             from the centre (where x = half).
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.beta_dist.member_functions"></a><h5>
-<a name="id602930"></a>
+<a name="id603198"></a>
             <a href="beta_dist.html#math_toolkit.dist.dist_ref.dists.beta_dist.member_functions">Member
             Functions</a>
           </h5>
 <a name="math_toolkit.dist.dist_ref.dists.beta_dist.constructor"></a><h6>
-<a name="id602956"></a>
+<a name="id603225"></a>
             <a href="beta_dist.html#math_toolkit.dist.dist_ref.dists.beta_dist.constructor">Constructor</a>
           </h6>
 <pre class="programlisting"><span class="identifier">beta_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">beta</span><span class="special">);</span>
@@ -165,7 +165,7 @@
             yellow in the graph above).
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.beta_dist.parameter_accessors"></a><h6>
-<a name="id603136"></a>
+<a name="id603405"></a>
             <a href="beta_dist.html#math_toolkit.dist.dist_ref.dists.beta_dist.parameter_accessors">Parameter
             Accessors</a>
           </h6>
@@ -189,7 +189,7 @@
 </span><span class="identifier">assert</span><span class="special">(</span><span class="identifier">mybeta</span><span class="special">.</span><span class="identifier">beta</span><span class="special">()</span> <span class="special">==</span> <span class="number">5.</span><span class="special">);</span> <span class="comment">// mybeta.beta() returns 5
 </span></pre>
 <a name="math_toolkit.dist.dist_ref.dists.beta_dist.parameter_estimators"></a><h5>
-<a name="id603412"></a>
+<a name="id603681"></a>
             <a href="beta_dist.html#math_toolkit.dist.dist_ref.dists.beta_dist.parameter_estimators">Parameter
             Estimators</a>
           </h5>
@@ -242,7 +242,7 @@
             Returns the value of &#946; that gives: <code class="computeroutput"><span class="identifier">cdf</span><span class="special">(</span><span class="identifier">beta_distribution</span><span class="special">&lt;</span><span class="identifier">RealType</span><span class="special">&gt;(</span><span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">beta</span><span class="special">),</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">probability</span></code>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.beta_dist.non_member_accessor_functions"></a><h5>
-<a name="id604048"></a>
+<a name="id604315"></a>
             <a href="beta_dist.html#math_toolkit.dist.dist_ref.dists.beta_dist.non_member_accessor_functions">Non-member
             Accessor Functions</a>
           </h5>
@@ -264,7 +264,7 @@
             Mathworld</a>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.beta_dist.applications"></a><h5>
-<a name="id604225"></a>
+<a name="id604494"></a>
             <a href="beta_dist.html#math_toolkit.dist.dist_ref.dists.beta_dist.applications">Applications</a>
           </h5>
 <p>
@@ -277,7 +277,7 @@
             statistical inference</a>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.beta_dist.related_distributions"></a><h5>
-<a name="id604270"></a>
+<a name="id604539"></a>
             <a href="beta_dist.html#math_toolkit.dist.dist_ref.dists.beta_dist.related_distributions">Related
             distributions</a>
           </h5>
@@ -303,7 +303,7 @@
             Distribution</a> with its p parameter set to x.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.beta_dist.accuracy"></a><h5>
-<a name="id604360"></a>
+<a name="id604628"></a>
             <a href="beta_dist.html#math_toolkit.dist.dist_ref.dists.beta_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -315,7 +315,7 @@
             please refer to these functions for information on accuracy.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.beta_dist.implementation"></a><h5>
-<a name="id604439"></a>
+<a name="id604707"></a>
             <a href="beta_dist.html#math_toolkit.dist.dist_ref.dists.beta_dist.implementation">Implementation</a>
           </h5>
 <p>
@@ -597,7 +597,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.beta_dist.references"></a><h5>
-<a name="id605737"></a>
+<a name="id606004"></a>
             <a href="beta_dist.html#math_toolkit.dist.dist_ref.dists.beta_dist.references">References</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/binomial_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/binomial_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/binomial_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -167,12 +167,12 @@
 <p>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.member_functions"></a><h5>
-<a name="id607067"></a>
+<a name="id607335"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.member_functions">Member
             Functions</a>
           </h5>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.construct"></a><h6>
-<a name="id607092"></a>
+<a name="id607359"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.construct">Construct</a>
           </h6>
 <pre class="programlisting"><span class="identifier">binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
@@ -189,7 +189,7 @@
             otherwise calls domain_error.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.accessors"></a><h6>
-<a name="id607253"></a>
+<a name="id607520"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.accessors">Accessors</a>
           </h6>
 <pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
@@ -205,7 +205,7 @@
             was constructed.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.lower_bound_on_the_success_fraction"></a><h6>
-<a name="id607369"></a>
+<a name="id607636"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.lower_bound_on_the_success_fraction">Lower
             Bound on the Success Fraction</a>
           </h6>
@@ -311,7 +311,7 @@
             limits illustrated in the case of the binomial. Biometrika 26 404-413.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.upper_bound_on_the_success_fraction"></a><h6>
-<a name="id608000"></a>
+<a name="id608267"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.upper_bound_on_the_success_fraction">Upper
             Bound on the Success Fraction</a>
           </h6>
@@ -389,7 +389,7 @@
 </td></tr>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.estimating_the_number_of_trials_required_for_a_certain_number_of_successes"></a><h6>
-<a name="id608440"></a>
+<a name="id608707"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.estimating_the_number_of_trials_required_for_a_certain_number_of_successes">Estimating
             the Number of Trials Required for a Certain Number of Successes</a>
           </h6>
@@ -431,7 +431,7 @@
             of seeing 10 events that occur with frequency one half.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.estimating_the_maximum_number_of_trials_to_ensure_no_more_than_a_certain_number_of_successes"></a><h6>
-<a name="id608713"></a>
+<a name="id608980"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.estimating_the_maximum_number_of_trials_to_ensure_no_more_than_a_certain_number_of_successes">Estimating
             the Maximum Number of Trials to Ensure no more than a Certain Number
             of Successes</a>
@@ -479,7 +479,7 @@
             Worked Example.</a>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.non_member_accessors"></a><h5>
-<a name="id609005"></a>
+<a name="id609272"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -504,7 +504,7 @@
             in the context of this distribution:
           </p>
 <div class="table">
-<a name="id609218"></a><p class="title"><b>Table 10. Meaning of the non-member accessors</b></p>
+<a name="id609486"></a><p class="title"><b>Table 11. Meaning of the non-member accessors</b></p>
 <div class="table-contents"><table class="table" summary="Meaning of the non-member accessors">
 <colgroup>
 <col>
@@ -627,7 +627,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.dist.dist_ref.dists.binomial_dist.examples"></a><h5>
-<a name="id609778"></a>
+<a name="id610046"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.examples">Examples</a>
           </h5>
 <p>
@@ -635,7 +635,7 @@
             examples</a> are available illustrating the use of the binomial distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.accuracy"></a><h5>
-<a name="id609818"></a>
+<a name="id610086"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -645,7 +645,7 @@
             please refer to these functions for information on accuracy.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.implementation"></a><h5>
-<a name="id609868"></a>
+<a name="id610135"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.implementation">Implementation</a>
           </h5>
 <p>
@@ -886,7 +886,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.binomial_dist.references"></a><h5>
-<a name="id611207"></a>
+<a name="id611474"></a>
             <a href="binomial_dist.html#math_toolkit.dist.dist_ref.dists.binomial_dist.references">References</a>
           </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/cauchy_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/cauchy_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/cauchy_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -88,7 +88,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/cauchy_pdf2.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.cauchy_dist.member_functions"></a><h5>
-<a name="id611916"></a>
+<a name="id612186"></a>
             <a href="cauchy_dist.html#math_toolkit.dist.dist_ref.dists.cauchy_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -114,7 +114,7 @@
             Returns the scale parameter of the distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.cauchy_dist.non_member_accessors"></a><h5>
-<a name="id612127"></a>
+<a name="id612396"></a>
             <a href="cauchy_dist.html#math_toolkit.dist.dist_ref.dists.cauchy_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -151,7 +151,7 @@
             The domain of the random variable is [-[max_value], +[min_value]].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.cauchy_dist.accuracy"></a><h5>
-<a name="id612381"></a>
+<a name="id612649"></a>
             <a href="cauchy_dist.html#math_toolkit.dist.dist_ref.dists.cauchy_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -160,7 +160,7 @@
             have very low error rates.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.cauchy_dist.implementation"></a><h5>
-<a name="id612437"></a>
+<a name="id612704"></a>
             <a href="cauchy_dist.html#math_toolkit.dist.dist_ref.dists.cauchy_dist.implementation">Implementation</a>
           </h5>
 <p>
@@ -276,7 +276,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.cauchy_dist.references"></a><h5>
-<a name="id612726"></a>
+<a name="id612994"></a>
             <a href="cauchy_dist.html#math_toolkit.dist.dist_ref.dists.cauchy_dist.references">References</a>
           </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/chi_squared_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/chi_squared_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/chi_squared_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -87,7 +87,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/chi_squared_pdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.chi_squared_dist.member_functions"></a><h5>
-<a name="id613503"></a>
+<a name="id613772"></a>
             <a href="chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.chi_squared_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -170,7 +170,7 @@
             NIST Engineering Statistics Handbook, Section 7.2.3.2</a>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.chi_squared_dist.non_member_accessors"></a><h5>
-<a name="id613948"></a>
+<a name="id614214"></a>
             <a href="chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.chi_squared_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -196,7 +196,7 @@
             The domain of the random variable is [0, +&#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.chi_squared_dist.examples"></a><h5>
-<a name="id614135"></a>
+<a name="id614403"></a>
             <a href="chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.chi_squared_dist.examples">Examples</a>
           </h5>
 <p>
@@ -204,7 +204,7 @@
             are available illustrating the use of the Chi Squared Distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.chi_squared_dist.accuracy"></a><h5>
-<a name="id614175"></a>
+<a name="id614444"></a>
             <a href="chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.chi_squared_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -212,7 +212,7 @@
             gamma functions</a>: please refer to the accuracy data for those functions.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.chi_squared_dist.implementation"></a><h5>
-<a name="id614218"></a>
+<a name="id614486"></a>
             <a href="chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.chi_squared_dist.implementation">Implementation</a>
           </h5>
 <p>
@@ -379,7 +379,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.chi_squared_dist.references"></a><h5>
-<a name="id614561"></a>
+<a name="id614830"></a>
             <a href="chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.chi_squared_dist.references">References</a>
           </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/exp_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/exp_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/exp_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -71,7 +71,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/exponential_pdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.exp_dist.member_functions"></a><h5>
-<a name="id615145"></a>
+<a name="id615412"></a>
             <a href="exp_dist.html#math_toolkit.dist.dist_ref.dists.exp_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -91,7 +91,7 @@
             Accessor function returns the lambda parameter of the distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.exp_dist.non_member_accessors"></a><h5>
-<a name="id615287"></a>
+<a name="id615553"></a>
             <a href="exp_dist.html#math_toolkit.dist.dist_ref.dists.exp_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -111,7 +111,7 @@
             The domain of the random variable is [0, +&#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.exp_dist.accuracy"></a><h5>
-<a name="id615458"></a>
+<a name="id615725"></a>
             <a href="exp_dist.html#math_toolkit.dist.dist_ref.dists.exp_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -122,7 +122,7 @@
             should have very low error rates.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.exp_dist.implementation"></a><h5>
-<a name="id615536"></a>
+<a name="id615802"></a>
             <a href="exp_dist.html#math_toolkit.dist.dist_ref.dists.exp_dist.implementation">Implementation</a>
           </h5>
 <p>
@@ -283,7 +283,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.exp_dist.references"></a><h5>
-<a name="id615838"></a>
+<a name="id616104"></a>
             <a href="exp_dist.html#math_toolkit.dist.dist_ref.dists.exp_dist.references">references</a>
           </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/extreme_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/extreme_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/extreme_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -100,7 +100,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/extreme_value_pdf2.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.extreme_dist.member_functions"></a><h5>
-<a name="id616596"></a>
+<a name="id616863"></a>
             <a href="extreme_dist.html#math_toolkit.dist.dist_ref.dists.extreme_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -125,7 +125,7 @@
             Returns the scale parameter of the distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.extreme_dist.non_member_accessors"></a><h5>
-<a name="id616820"></a>
+<a name="id617086"></a>
             <a href="extreme_dist.html#math_toolkit.dist.dist_ref.dists.extreme_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -145,7 +145,7 @@
             The domain of the random parameter is [-&#8734;, +&#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.extreme_dist.accuracy"></a><h5>
-<a name="id616990"></a>
+<a name="id617257"></a>
             <a href="extreme_dist.html#math_toolkit.dist.dist_ref.dists.extreme_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -154,7 +154,7 @@
             very low error rates.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.extreme_dist.implementation"></a><h5>
-<a name="id617044"></a>
+<a name="id617310"></a>
             <a href="extreme_dist.html#math_toolkit.dist.dist_ref.dists.extreme_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/f_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/f_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/f_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -80,7 +80,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/fisher_f_pdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.f_dist.member_functions"></a><h5>
-<a name="id618003"></a>
+<a name="id618270"></a>
             <a href="f_dist.html#math_toolkit.dist.dist_ref.dists.f_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -106,7 +106,7 @@
             Returns the denominator degrees of freedom parameter of the distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.f_dist.non_member_accessors"></a><h5>
-<a name="id618217"></a>
+<a name="id618483"></a>
             <a href="f_dist.html#math_toolkit.dist.dist_ref.dists.f_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -126,7 +126,7 @@
             The domain of the random variable is [0, +&#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.f_dist.examples"></a><h5>
-<a name="id618388"></a>
+<a name="id618654"></a>
             <a href="f_dist.html#math_toolkit.dist.dist_ref.dists.f_dist.examples">Examples</a>
           </h5>
 <p>
@@ -134,7 +134,7 @@
             are available illustrating the use of the F Distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.f_dist.accuracy"></a><h5>
-<a name="id618428"></a>
+<a name="id618694"></a>
             <a href="f_dist.html#math_toolkit.dist.dist_ref.dists.f_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -143,7 +143,7 @@
             refer to those functions for accuracy data.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.f_dist.implementation"></a><h5>
-<a name="id618477"></a>
+<a name="id618743"></a>
             <a href="f_dist.html#math_toolkit.dist.dist_ref.dists.f_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/gamma_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/gamma_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/gamma_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -137,7 +137,7 @@
             than a dedicated Erlang Distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.gamma_dist.member_functions"></a><h5>
-<a name="id619898"></a>
+<a name="id620164"></a>
             <a href="gamma_dist.html#math_toolkit.dist.dist_ref.dists.gamma_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -162,7 +162,7 @@
             Returns the <span class="emphasis"><em>scale</em></span> parameter of this distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.gamma_dist.non_member_accessors"></a><h5>
-<a name="id620102"></a>
+<a name="id620368"></a>
             <a href="gamma_dist.html#math_toolkit.dist.dist_ref.dists.gamma_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -182,7 +182,7 @@
             The domain of the random variable is [0,+&#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.gamma_dist.accuracy"></a><h5>
-<a name="id620273"></a>
+<a name="id620539"></a>
             <a href="gamma_dist.html#math_toolkit.dist.dist_ref.dists.gamma_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -194,7 +194,7 @@
             refer to the accuracy data for those functions for more information.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.gamma_dist.implementation"></a><h5>
-<a name="id620342"></a>
+<a name="id620608"></a>
             <a href="gamma_dist.html#math_toolkit.dist.dist_ref.dists.gamma_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/lognormal_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/lognormal_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/lognormal_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -88,7 +88,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/lognormal_pdf2.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.lognormal_dist.member_functions"></a><h5>
-<a name="id621390"></a>
+<a name="id621659"></a>
             <a href="lognormal_dist.html#math_toolkit.dist.dist_ref.dists.lognormal_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -121,7 +121,7 @@
             Returns the <span class="emphasis"><em>scale</em></span> parameter of this distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.lognormal_dist.non_member_accessors"></a><h5>
-<a name="id621617"></a>
+<a name="id621886"></a>
             <a href="lognormal_dist.html#math_toolkit.dist.dist_ref.dists.lognormal_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -141,7 +141,7 @@
             The domain of the random variable is [0,+&#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.lognormal_dist.accuracy"></a><h5>
-<a name="id621785"></a>
+<a name="id622055"></a>
             <a href="lognormal_dist.html#math_toolkit.dist.dist_ref.dists.lognormal_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -150,7 +150,7 @@
             function</a>, and as such should have very low error rates.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.lognormal_dist.implementation"></a><h5>
-<a name="id621826"></a>
+<a name="id622096"></a>
             <a href="lognormal_dist.html#math_toolkit.dist.dist_ref.dists.lognormal_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_beta_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_beta_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_beta_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -96,7 +96,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/nc_beta_pdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_beta_dist.member_functions"></a><h5>
-<a name="id627709"></a>
+<a name="id627976"></a>
             <a href="nc_beta_dist.html#math_toolkit.dist.dist_ref.dists.nc_beta_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -128,7 +128,7 @@
             was constructed.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_beta_dist.non_member_accessors"></a><h5>
-<a name="id627966"></a>
+<a name="id628233"></a>
             <a href="nc_beta_dist.html#math_toolkit.dist.dist_ref.dists.nc_beta_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -152,7 +152,7 @@
             The domain of the random variable is [0, 1].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_beta_dist.accuracy"></a><h5>
-<a name="id628140"></a>
+<a name="id628407"></a>
             <a href="nc_beta_dist.html#math_toolkit.dist.dist_ref.dists.nc_beta_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -168,7 +168,7 @@
             zero error</a>.
           </p>
 <div class="table">
-<a name="id628202"></a><p class="title"><b>Table 12. Errors In CDF of the Noncentral Beta</b></p>
+<a name="id628469"></a><p class="title"><b>Table 13. Errors In CDF of the Noncentral Beta</b></p>
 <div class="table-contents"><table class="table" summary="Errors In CDF of the Noncentral Beta">
 <colgroup>
 <col>
@@ -295,7 +295,7 @@
             functions are broadly similar.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_beta_dist.tests"></a><h5>
-<a name="id628412"></a>
+<a name="id628679"></a>
             <a href="nc_beta_dist.html#math_toolkit.dist.dist_ref.dists.nc_beta_dist.tests">Tests</a>
           </h5>
 <p>
@@ -307,7 +307,7 @@
             tests.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_beta_dist.implementation"></a><h5>
-<a name="id628455"></a>
+<a name="id628722"></a>
             <a href="nc_beta_dist.html#math_toolkit.dist.dist_ref.dists.nc_beta_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_chi_squared_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_chi_squared_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_chi_squared_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -110,7 +110,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/nccs_pdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.member_functions"></a><h5>
-<a name="id629888"></a>
+<a name="id630162"></a>
             <a href="nc_chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -183,7 +183,7 @@
             <span class="special">==</span> <span class="identifier">q</span></code>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.non_member_accessors"></a><h5>
-<a name="id631124"></a>
+<a name="id631398"></a>
             <a href="nc_chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -203,7 +203,7 @@
             The domain of the random variable is [0, +&#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.examples"></a><h5>
-<a name="id631295"></a>
+<a name="id631570"></a>
             <a href="nc_chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.examples">Examples</a>
           </h5>
 <p>
@@ -211,7 +211,7 @@
             example</a> for the noncentral chi-squared distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.accuracy"></a><h5>
-<a name="id631335"></a>
+<a name="id631609"></a>
             <a href="nc_chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -223,7 +223,7 @@
             zero error</a>.
           </p>
 <div class="table">
-<a name="id631383"></a><p class="title"><b>Table 13. Errors In CDF of the Noncentral Chi-Squared</b></p>
+<a name="id631657"></a><p class="title"><b>Table 14. Errors In CDF of the Noncentral Chi-Squared</b></p>
 <div class="table-contents"><table class="table" summary="Errors In CDF of the Noncentral Chi-Squared">
 <colgroup>
 <col>
@@ -359,7 +359,7 @@
             produce an accuracy greater than the square root of the machine epsilon.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.tests"></a><h5>
-<a name="id631617"></a>
+<a name="id631892"></a>
             <a href="nc_chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.tests">Tests</a>
           </h5>
 <p>
@@ -373,7 +373,7 @@
             to at least 50 decimal digits - and is the used for our accuracy tests.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.implementation"></a><h5>
-<a name="id631659"></a>
+<a name="id631933"></a>
             <a href="nc_chi_squared_dist.html#math_toolkit.dist.dist_ref.dists.nc_chi_squared_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_f_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_f_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_f_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -95,7 +95,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/nc_f_pdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_f_dist.member_functions"></a><h5>
-<a name="id632896"></a>
+<a name="id633179"></a>
             <a href="nc_f_dist.html#math_toolkit.dist.dist_ref.dists.nc_f_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -127,7 +127,7 @@
             which this object was constructed.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_f_dist.non_member_accessors"></a><h5>
-<a name="id633154"></a>
+<a name="id633436"></a>
             <a href="nc_f_dist.html#math_toolkit.dist.dist_ref.dists.nc_f_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -147,7 +147,7 @@
             The domain of the random variable is [0, +&#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_f_dist.accuracy"></a><h5>
-<a name="id633326"></a>
+<a name="id633608"></a>
             <a href="nc_f_dist.html#math_toolkit.dist.dist_ref.dists.nc_f_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -155,7 +155,7 @@
             Beta Distribution</a>: refer to that distribution for accuracy data.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_f_dist.tests"></a><h5>
-<a name="id633366"></a>
+<a name="id633648"></a>
             <a href="nc_f_dist.html#math_toolkit.dist.dist_ref.dists.nc_f_dist.tests">Tests</a>
           </h5>
 <p>
@@ -164,7 +164,7 @@
             Math library statistical package</a> and its pbeta and dbeta functions.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_f_dist.implementation"></a><h5>
-<a name="id633404"></a>
+<a name="id633686"></a>
             <a href="nc_f_dist.html#math_toolkit.dist.dist_ref.dists.nc_f_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_t_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_t_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/nc_t_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -85,7 +85,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/nc_t_pdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_t_dist.member_functions"></a><h5>
-<a name="id634566"></a>
+<a name="id634850"></a>
             <a href="nc_t_dist.html#math_toolkit.dist.dist_ref.dists.nc_t_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -111,7 +111,7 @@
             which this object was constructed.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_t_dist.non_member_accessors"></a><h5>
-<a name="id634760"></a>
+<a name="id635044"></a>
             <a href="nc_t_dist.html#math_toolkit.dist.dist_ref.dists.nc_t_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -131,7 +131,7 @@
             The domain of the random variable is [-&#8734;, +&#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_t_dist.accuracy"></a><h5>
-<a name="id634932"></a>
+<a name="id635216"></a>
             <a href="nc_t_dist.html#math_toolkit.dist.dist_ref.dists.nc_t_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -141,7 +141,7 @@
             one shown will have effectively zero error.
           </p>
 <div class="table">
-<a name="id634972"></a><p class="title"><b>Table 14. Errors In CDF of the Noncentral T Distribution</b></p>
+<a name="id635256"></a><p class="title"><b>Table 15. Errors In CDF of the Noncentral T Distribution</b></p>
 <div class="table-contents"><table class="table" summary="Errors In CDF of the Noncentral T Distribution">
 <colgroup>
 <col>
@@ -255,7 +255,7 @@
             epsilon.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_t_dist.tests"></a><h5>
-<a name="id635166"></a>
+<a name="id635453"></a>
             <a href="nc_t_dist.html#math_toolkit.dist.dist_ref.dists.nc_t_dist.tests">Tests</a>
           </h5>
 <p>
@@ -270,7 +270,7 @@
             least 50 decimal places.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.nc_t_dist.implementation"></a><h5>
-<a name="id635208"></a>
+<a name="id635496"></a>
             <a href="nc_t_dist.html#math_toolkit.dist.dist_ref.dists.nc_t_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/negative_binomial_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/negative_binomial_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/negative_binomial_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -123,7 +123,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/negative_binomial_pdf_2.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.related_distributions"></a><h5>
-<a name="id623305"></a>
+<a name="id623573"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.related_distributions">Related
             Distributions</a>
           </h5>
@@ -200,12 +200,12 @@
 <p>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.member_functions"></a><h5>
-<a name="id623509"></a>
+<a name="id623774"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.member_functions">Member
             Functions</a>
           </h5>
 <a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.construct"></a><h6>
-<a name="id623536"></a>
+<a name="id623802"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.construct">Construct</a>
           </h6>
 <pre class="programlisting"><span class="identifier">negative_binomial_distribution</span><span class="special">(</span><span class="identifier">RealType</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">RealType</span> <span class="identifier">p</span><span class="special">);</span>
@@ -221,7 +221,7 @@
             <span class="special">&lt;=</span> <span class="number">1</span></code>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.accessors"></a><h6>
-<a name="id623691"></a>
+<a name="id623956"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.accessors">Accessors</a>
           </h6>
 <pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">success_fraction</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span> <span class="comment">// successes / trials (0 &lt;= p &lt;= 1)
@@ -237,7 +237,7 @@
             was constructed.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.lower_bound_on_parameter_p"></a><h6>
-<a name="id623817"></a>
+<a name="id624082"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.lower_bound_on_parameter_p">Lower
             Bound on Parameter p</a>
           </h6>
@@ -298,7 +298,7 @@
             vol. 48, no3, 605-621</a>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.upper_bound_on_parameter_p"></a><h6>
-<a name="id624180"></a>
+<a name="id624446"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.upper_bound_on_parameter_p">Upper
             Bound on Parameter p</a>
           </h6>
@@ -358,7 +358,7 @@
             vol. 48, no3, 605-621</a>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.estimating_number_of_trials_to_ensure_at_least_a_certain_number_of_failures"></a><h6>
-<a name="id624542"></a>
+<a name="id624808"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.estimating_number_of_trials_to_ensure_at_least_a_certain_number_of_failures">Estimating
             Number of Trials to Ensure at Least a Certain Number of Failures</a>
           </h6>
@@ -409,7 +409,7 @@
             probability of observing k failures or fewer.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.estimating_number_of_trials_to_ensure_a_maximum_number_of_failures_or_less"></a><h6>
-<a name="id624850"></a>
+<a name="id625115"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.estimating_number_of_trials_to_ensure_a_maximum_number_of_failures_or_less">Estimating
             Number of Trials to Ensure a Maximum Number of Failures or Less</a>
           </h6>
@@ -457,7 +457,7 @@
             probability of observing more than k failures.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.non_member_accessors"></a><h5>
-<a name="id625166"></a>
+<a name="id625432"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -478,7 +478,7 @@
             in the context of this distribution:
           </p>
 <div class="table">
-<a name="id625330"></a><p class="title"><b>Table 11. Meaning of the non-member accessors.</b></p>
+<a name="id625595"></a><p class="title"><b>Table 12. Meaning of the non-member accessors.</b></p>
 <div class="table-contents"><table class="table" summary="Meaning of the non-member accessors.">
 <colgroup>
 <col>
@@ -603,7 +603,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.accuracy"></a><h5>
-<a name="id625888"></a>
+<a name="id626153"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -613,7 +613,7 @@
             please refer to these functions for information on accuracy.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.negative_binomial_dist.implementation"></a><h5>
-<a name="id625938"></a>
+<a name="id626203"></a>
             <a href="negative_binomial_dist.html#math_toolkit.dist.dist_ref.dists.negative_binomial_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/normal_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/normal_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/normal_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -79,7 +79,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/normal_pdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.normal_dist.member_functions"></a><h5>
-<a name="id636213"></a>
+<a name="id636497"></a>
             <a href="normal_dist.html#math_toolkit.dist.dist_ref.dists.normal_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -109,7 +109,7 @@
             be used generically).
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.normal_dist.non_member_accessors"></a><h5>
-<a name="id636487"></a>
+<a name="id636771"></a>
             <a href="normal_dist.html#math_toolkit.dist.dist_ref.dists.normal_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -131,7 +131,7 @@
             and complement cdf -&#8734; = 1 and +&#8734; = 0, if RealType permits.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.normal_dist.accuracy"></a><h5>
-<a name="id636667"></a>
+<a name="id636948"></a>
             <a href="normal_dist.html#math_toolkit.dist.dist_ref.dists.normal_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -139,7 +139,7 @@
             function</a>, and as such should have very low error rates.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.normal_dist.implementation"></a><h5>
-<a name="id636706"></a>
+<a name="id636988"></a>
             <a href="normal_dist.html#math_toolkit.dist.dist_ref.dists.normal_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/pareto.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/pareto.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/pareto.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -86,12 +86,12 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/pareto_pdf2.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.pareto.related_distributions"></a><h5>
-<a name="id637729"></a>
+<a name="id638011"></a>
             <a href="pareto.html#math_toolkit.dist.dist_ref.dists.pareto.related_distributions">Related
             distributions</a>
           </h5>
 <a name="math_toolkit.dist.dist_ref.dists.pareto.member_functions"></a><h5>
-<a name="id637754"></a>
+<a name="id638036"></a>
             <a href="pareto.html#math_toolkit.dist.dist_ref.dists.pareto.member_functions">Member
             Functions</a>
           </h5>
@@ -117,7 +117,7 @@
             Returns the <span class="emphasis"><em>shape</em></span> parameter of this distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.pareto.non_member_accessors"></a><h5>
-<a name="id637984"></a>
+<a name="id638266"></a>
             <a href="pareto.html#math_toolkit.dist.dist_ref.dists.pareto.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -137,7 +137,7 @@
             The supported domain of the random variable is [location, &#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.pareto.accuracy"></a><h5>
-<a name="id638156"></a>
+<a name="id638438"></a>
             <a href="pareto.html#math_toolkit.dist.dist_ref.dists.pareto.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -147,7 +147,7 @@
             to unity.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.pareto.implementation"></a><h5>
-<a name="id638211"></a>
+<a name="id638493"></a>
             <a href="pareto.html#math_toolkit.dist.dist_ref.dists.pareto.implementation">Implementation</a>
           </h5>
 <p>
@@ -315,7 +315,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.pareto.references"></a><h5>
-<a name="id638567"></a>
+<a name="id638849"></a>
             <a href="pareto.html#math_toolkit.dist.dist_ref.dists.pareto.references">References</a>
           </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/poisson_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/poisson_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/poisson_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -122,7 +122,7 @@
 <p>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.poisson_dist.member_functions"></a><h5>
-<a name="id639312"></a>
+<a name="id639604"></a>
             <a href="poisson_dist.html#math_toolkit.dist.dist_ref.dists.poisson_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -137,7 +137,7 @@
             Returns the <span class="emphasis"><em>mean</em></span> of this distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.poisson_dist.non_member_accessors"></a><h5>
-<a name="id639436"></a>
+<a name="id639728"></a>
             <a href="poisson_dist.html#math_toolkit.dist.dist_ref.dists.poisson_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -157,7 +157,7 @@
             The domain of the random variable is [0, &#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.poisson_dist.accuracy"></a><h5>
-<a name="id639605"></a>
+<a name="id639897"></a>
             <a href="poisson_dist.html#math_toolkit.dist.dist_ref.dists.poisson_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -171,7 +171,7 @@
             using an iterative method with a lower tolerance to avoid excessive computation.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.poisson_dist.implementation"></a><h5>
-<a name="id639654"></a>
+<a name="id639946"></a>
             <a href="poisson_dist.html#math_toolkit.dist.dist_ref.dists.poisson_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/rayleigh.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/rayleigh.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/rayleigh.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -86,7 +86,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/rayleigh_cdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.rayleigh.related_distributions"></a><h5>
-<a name="id640598"></a>
+<a name="id640885"></a>
             <a href="rayleigh.html#math_toolkit.dist.dist_ref.dists.rayleigh.related_distributions">Related
             distributions</a>
           </h5>
@@ -102,7 +102,7 @@
             distribution</a>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.rayleigh.member_functions"></a><h5>
-<a name="id640674"></a>
+<a name="id640961"></a>
             <a href="rayleigh.html#math_toolkit.dist.dist_ref.dists.rayleigh.member_functions">Member
             Functions</a>
           </h5>
@@ -121,7 +121,7 @@
             Returns the <span class="emphasis"><em>sigma</em></span> parameter of this distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.rayleigh.non_member_accessors"></a><h5>
-<a name="id640820"></a>
+<a name="id641107"></a>
             <a href="rayleigh.html#math_toolkit.dist.dist_ref.dists.rayleigh.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -141,7 +141,7 @@
             The domain of the random variable is [0, max_value].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.rayleigh.accuracy"></a><h5>
-<a name="id640991"></a>
+<a name="id641278"></a>
             <a href="rayleigh.html#math_toolkit.dist.dist_ref.dists.rayleigh.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -151,7 +151,7 @@
             using NTL RR type with 150-bit accuracy, about 50 decimal digits.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.rayleigh.implementation"></a><h5>
-<a name="id641047"></a>
+<a name="id641334"></a>
             <a href="rayleigh.html#math_toolkit.dist.dist_ref.dists.rayleigh.implementation">Implementation</a>
           </h5>
 <p>
@@ -320,7 +320,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.rayleigh.references"></a><h5>
-<a name="id641437"></a>
+<a name="id641724"></a>
             <a href="rayleigh.html#math_toolkit.dist.dist_ref.dists.rayleigh.references">References</a>
           </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/students_t_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/students_t_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/students_t_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -97,7 +97,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/students_t_pdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.students_t_dist.member_functions"></a><h5>
-<a name="id642239"></a>
+<a name="id642526"></a>
             <a href="students_t_dist.html#math_toolkit.dist.dist_ref.dists.students_t_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -174,7 +174,7 @@
             Engineering Statistics Handbook</a>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.students_t_dist.non_member_accessors"></a><h5>
-<a name="id642625"></a>
+<a name="id642912"></a>
             <a href="students_t_dist.html#math_toolkit.dist.dist_ref.dists.students_t_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -194,7 +194,7 @@
             The domain of the random variable is [-&#8734;, +&#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.students_t_dist.examples"></a><h5>
-<a name="id642795"></a>
+<a name="id643082"></a>
             <a href="students_t_dist.html#math_toolkit.dist.dist_ref.dists.students_t_dist.examples">Examples</a>
           </h5>
 <p>
@@ -202,7 +202,7 @@
             are available illustrating the use of the Student's t distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.students_t_dist.accuracy"></a><h5>
-<a name="id642835"></a>
+<a name="id643123"></a>
             <a href="students_t_dist.html#math_toolkit.dist.dist_ref.dists.students_t_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -211,7 +211,7 @@
             inverses</a>, refer to accuracy data on those functions for more information.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.students_t_dist.implementation"></a><h5>
-<a name="id642884"></a>
+<a name="id643172"></a>
             <a href="students_t_dist.html#math_toolkit.dist.dist_ref.dists.students_t_dist.implementation">Implementation</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/triangular_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/triangular_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/triangular_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -128,7 +128,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/triangular_cdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.triangular_dist.member_functions"></a><h5>
-<a name="id644237"></a>
+<a name="id644524"></a>
             <a href="triangular_dist.html#math_toolkit.dist.dist_ref.dists.triangular_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -163,7 +163,7 @@
             (default+1).
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.triangular_dist.non_member_accessors"></a><h5>
-<a name="id644543"></a>
+<a name="id644829"></a>
             <a href="triangular_dist.html#math_toolkit.dist.dist_ref.dists.triangular_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -184,7 +184,7 @@
             range is lower &lt;= x &lt;= upper.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.triangular_dist.accuracy"></a><h5>
-<a name="id644714"></a>
+<a name="id645000"></a>
             <a href="triangular_dist.html#math_toolkit.dist.dist_ref.dists.triangular_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -193,7 +193,7 @@
             with arguments nearing the extremes of zero and unity.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.triangular_dist.implementation"></a><h5>
-<a name="id644746"></a>
+<a name="id645033"></a>
             <a href="triangular_dist.html#math_toolkit.dist.dist_ref.dists.triangular_dist.implementation">Implementation</a>
           </h5>
 <p>
@@ -378,7 +378,7 @@
             Calculate and plot probability distributions</a>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.triangular_dist.references"></a><h5>
-<a name="id645138"></a>
+<a name="id645423"></a>
             <a href="triangular_dist.html#math_toolkit.dist.dist_ref.dists.triangular_dist.references">References</a>
           </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/uniform_dist.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/uniform_dist.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/uniform_dist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -117,7 +117,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/uniform_cdf.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.uniform_dist.member_functions"></a><h5>
-<a name="id647700"></a>
+<a name="id647987"></a>
             <a href="uniform_dist.html#math_toolkit.dist.dist_ref.dists.uniform_dist.member_functions">Member
             Functions</a>
           </h5>
@@ -144,7 +144,7 @@
             Returns the <span class="emphasis"><em>upper</em></span> parameter of this distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.uniform_dist.non_member_accessors"></a><h5>
-<a name="id647933"></a>
+<a name="id648219"></a>
             <a href="uniform_dist.html#math_toolkit.dist.dist_ref.dists.uniform_dist.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -165,7 +165,7 @@
             range is only <span class="emphasis"><em>lower</em></span> &lt;= x &lt;= <span class="emphasis"><em>upper</em></span>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.uniform_dist.accuracy"></a><h5>
-<a name="id648111"></a>
+<a name="id648398"></a>
             <a href="uniform_dist.html#math_toolkit.dist.dist_ref.dists.uniform_dist.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -173,7 +173,7 @@
             and so should have errors within an epsilon or two.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.uniform_dist.implementation"></a><h5>
-<a name="id648142"></a>
+<a name="id648429"></a>
             <a href="uniform_dist.html#math_toolkit.dist.dist_ref.dists.uniform_dist.implementation">Implementation</a>
           </h5>
 <p>
@@ -337,7 +337,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.uniform_dist.references"></a><h5>
-<a name="id648450"></a>
+<a name="id648737"></a>
             <a href="uniform_dist.html#math_toolkit.dist.dist_ref.dists.uniform_dist.references">References</a>
           </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/weibull.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/weibull.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/weibull.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -100,7 +100,7 @@
             <span class="inlinemediaobject"><img src="../../../../../graphs/weibull_pdf2.png" align="middle"></span>
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.weibull.related_distributions"></a><h5>
-<a name="id645927"></a>
+<a name="id646213"></a>
             <a href="weibull.html#math_toolkit.dist.dist_ref.dists.weibull.related_distributions">Related
             distributions</a>
           </h5>
@@ -114,7 +114,7 @@
             Distributions, Theory and Applications Samuel Kotz &amp; Saralees Nadarajah</a>.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.weibull.member_functions"></a><h5>
-<a name="id645995"></a>
+<a name="id646281"></a>
             <a href="weibull.html#math_toolkit.dist.dist_ref.dists.weibull.member_functions">Member
             Functions</a>
           </h5>
@@ -140,7 +140,7 @@
             Returns the <span class="emphasis"><em>scale</em></span> parameter of this distribution.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.weibull.non_member_accessors"></a><h5>
-<a name="id646213"></a>
+<a name="id646500"></a>
             <a href="weibull.html#math_toolkit.dist.dist_ref.dists.weibull.non_member_accessors">Non-member
             Accessors</a>
           </h5>
@@ -160,7 +160,7 @@
             The domain of the random variable is [0, &#8734;].
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.weibull.accuracy"></a><h5>
-<a name="id646385"></a>
+<a name="id646672"></a>
             <a href="weibull.html#math_toolkit.dist.dist_ref.dists.weibull.accuracy">Accuracy</a>
           </h5>
 <p>
@@ -170,7 +170,7 @@
             as such should have very low error rates.
           </p>
 <a name="math_toolkit.dist.dist_ref.dists.weibull.implementation"></a><h5>
-<a name="id646457"></a>
+<a name="id646743"></a>
             <a href="weibull.html#math_toolkit.dist.dist_ref.dists.weibull.implementation">Implementation</a>
           </h5>
 <p>
@@ -337,7 +337,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.dist.dist_ref.dists.weibull.references"></a><h5>
-<a name="id646843"></a>
+<a name="id647129"></a>
             <a href="weibull.html#math_toolkit.dist.dist_ref.dists.weibull.references">References</a>
           </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/nmp.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/nmp.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/nmp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -37,7 +37,7 @@
           the function you want if you already know its name.
         </p>
 <a name="function_index"></a><a name="math_toolkit.dist.dist_ref.nmp.function_index"></a><h5>
-<a name="id595274"></a>
+<a name="id595542"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.function_index">Function
           Index</a>
         </h5>
@@ -93,7 +93,7 @@
           </li>
 </ul></div>
 <a name="concept_index"></a><a name="math_toolkit.dist.dist_ref.nmp.conceptual_index"></a><h5>
-<a name="id595532"></a>
+<a name="id595800"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.conceptual_index">Conceptual
           Index</a>
         </h5>
@@ -174,7 +174,7 @@
           </li>
 </ul></div>
 <a name="math.dist.cdf"></a><a name="math_toolkit.dist.dist_ref.nmp.cumulative_distribution_function"></a><h5>
-<a name="id595887"></a>
+<a name="id596155"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.cumulative_distribution_function">Cumulative
           Distribution Function</a>
         </h5>
@@ -198,7 +198,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/cdf.png" alt="cdf"></span>
         </p>
 <a name="math.dist.ccdf"></a><a name="math_toolkit.dist.dist_ref.nmp.complement_of_the_cumulative_distribution_function"></a><h5>
-<a name="id596134"></a>
+<a name="id596402"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.complement_of_the_cumulative_distribution_function">Complement
           of the Cumulative Distribution Function</a>
         </h5>
@@ -239,7 +239,7 @@
           complement is useful and when it should be used.
         </p>
 <a name="math.dist.hazard"></a><a name="math_toolkit.dist.dist_ref.nmp.hazard_function"></a><h5>
-<a name="id596551"></a>
+<a name="id596819"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.hazard_function">Hazard Function</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> Policy<span class="special">&gt;</span>
@@ -267,7 +267,7 @@
           </p></td></tr>
 </table></div>
 <a name="math.dist.chf"></a><a name="math_toolkit.dist.dist_ref.nmp.cumulative_hazard_function"></a><h5>
-<a name="id596804"></a>
+<a name="id597072"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.cumulative_hazard_function">Cumulative
           Hazard Function</a>
         </h5>
@@ -295,7 +295,7 @@
           </p></td></tr>
 </table></div>
 <a name="math.dist.mean"></a><a name="math_toolkit.dist.dist_ref.nmp.mean"></a><h5>
-<a name="id597058"></a>
+<a name="id597327"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.mean">mean</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> Policy<span class="special">&gt;</span>
@@ -310,7 +310,7 @@
           distribution).
         </p>
 <a name="math.dist.median"></a><a name="math_toolkit.dist.dist_ref.nmp.median"></a><h5>
-<a name="id597230"></a>
+<a name="id597499"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.median">median</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> Policy<span class="special">&gt;</span>
@@ -320,7 +320,7 @@
           Returns the median of the distribution <span class="emphasis"><em>dist</em></span>.
         </p>
 <a name="math.dist.mode"></a><a name="math_toolkit.dist.dist_ref.nmp.mode"></a><h5>
-<a name="id597388"></a>
+<a name="id597656"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.mode">mode</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> Policy<span class="special">&gt;</span>
@@ -334,7 +334,7 @@
           if the distribution does not have a defined mode.
         </p>
 <a name="math.dist.pdf"></a><a name="math_toolkit.dist.dist_ref.nmp.probability_density_function"></a><h5>
-<a name="id597553"></a>
+<a name="id597821"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.probability_density_function">Probability
           Density Function</a>
         </h5>
@@ -363,7 +363,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/pdf.png" alt="pdf"></span>
         </p>
 <a name="math.dist.range"></a><a name="math_toolkit.dist.dist_ref.nmp.range"></a><h5>
-<a name="id597796"></a>
+<a name="id598064"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.range">range</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> Policy<span class="special">&gt;</span>
@@ -373,7 +373,7 @@
           Returns the valid range of the random variable over distribution <span class="emphasis"><em>dist</em></span>.
         </p>
 <a name="math.dist.quantile"></a><a name="math_toolkit.dist.dist_ref.nmp.quantile"></a><h5>
-<a name="id597991"></a>
+<a name="id598260"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.quantile">Quantile</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> Policy<span class="special">&gt;</span>
@@ -402,7 +402,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/quantile.png" alt="quantile"></span>
         </p>
 <a name="math.dist.quantile_c"></a><a name="math_toolkit.dist.dist_ref.nmp.quantile_from_the_complement_of_the_probability_"></a><h5>
-<a name="id598308"></a>
+<a name="id598577"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.quantile_from_the_complement_of_the_probability_">Quantile
           from the complement of the probability.</a>
         </h5>
@@ -448,7 +448,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/survival_inv.png" alt="survival_inv"></span>
         </p>
 <a name="math.dist.sd"></a><a name="math_toolkit.dist.dist_ref.nmp.standard_deviation"></a><h5>
-<a name="id598786"></a>
+<a name="id599055"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.standard_deviation">Standard
           Deviation</a>
         </h5>
@@ -463,7 +463,7 @@
           if the distribution does not have a defined standard deviation.
         </p>
 <a name="math.dist.support"></a><a name="math_toolkit.dist.dist_ref.nmp.support"></a><h5>
-<a name="id598962"></a>
+<a name="id599231"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.support">support</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> Policy<span class="special">&gt;</span>
@@ -480,7 +480,7 @@
           where the pdf is zero, and the cdf zero or unity.
         </p>
 <a name="math.dist.variance"></a><a name="math_toolkit.dist.dist_ref.nmp.variance"></a><h5>
-<a name="id599174"></a>
+<a name="id599443"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.variance">Variance</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> Policy<span class="special">&gt;</span>
@@ -494,7 +494,7 @@
           if the distribution does not have a defined variance.
         </p>
 <a name="math.dist.skewness"></a><a name="math_toolkit.dist.dist_ref.nmp.skewness"></a><h5>
-<a name="id599348"></a>
+<a name="id599616"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.skewness">Skewness</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> Policy<span class="special">&gt;</span>
@@ -508,7 +508,7 @@
           if the distribution does not have a defined skewness.
         </p>
 <a name="math.dist.kurtosis"></a><a name="math_toolkit.dist.dist_ref.nmp.kurtosis"></a><h5>
-<a name="id599522"></a>
+<a name="id599790"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.kurtosis">Kurtosis</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">RealType</span><span class="special">,</span> <span class="keyword">class</span> Policy<span class="special">&gt;</span>
@@ -550,7 +550,7 @@
           'Proper' kurtosis can have a value from zero to + infinity.
         </p>
 <a name="math.dist.kurtosis_excess"></a><a name="math_toolkit.dist.dist_ref.nmp.kurtosis_excess"></a><h5>
-<a name="id599819"></a>
+<a name="id600088"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.kurtosis_excess">Kurtosis
           excess</a>
         </h5>
@@ -585,7 +585,7 @@
           The kurtosis excess of a normal distribution is zero.
         </p>
 <a name="cdfPQ"></a><a name="math_toolkit.dist.dist_ref.nmp.p_and_q"></a><h5>
-<a name="id600080"></a>
+<a name="id600348"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.p_and_q">P and Q</a>
         </h5>
 <p>
@@ -595,7 +595,7 @@
           returned by these functions.
         </p>
 <a name="percent"></a><a name="math_toolkit.dist.dist_ref.nmp.percent_point_function"></a><h5>
-<a name="id600134"></a>
+<a name="id600403"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.percent_point_function">Percent
           Point Function</a>
         </h5>
@@ -604,7 +604,7 @@
           the Quantile.
         </p>
 <a name="cdf_inv"></a><a name="math_toolkit.dist.dist_ref.nmp.inverse_cdf_function_"></a><h5>
-<a name="id600178"></a>
+<a name="id600447"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.inverse_cdf_function_">Inverse
           CDF Function.</a>
         </h5>
@@ -613,7 +613,7 @@
           <a href="nmp.html#math.dist.quantile">Quantile</a>.
         </p>
 <a name="survival_inv"></a><a name="math_toolkit.dist.dist_ref.nmp.inverse_survival_function_"></a><h5>
-<a name="id600223"></a>
+<a name="id600492"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.inverse_survival_function_">Inverse
           Survival Function.</a>
         </h5>
@@ -621,7 +621,7 @@
           The inverse of the survival function, is the same as computing the quantile from the complement of the probability.
         </p>
 <a name="pmf"></a><a name="math_toolkit.dist.dist_ref.nmp.probability_mass_function"></a><h5>
-<a name="id600269"></a>
+<a name="id600538"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.probability_mass_function">Probability
           Mass Function</a>
         </h5>
@@ -635,7 +635,7 @@
           applies to continuous distributions.
         </p>
 <a name="lower_critical"></a><a name="math_toolkit.dist.dist_ref.nmp.lower_critical_value_"></a><h5>
-<a name="id600328"></a>
+<a name="id600597"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.lower_critical_value_">Lower
           Critical Value.</a>
         </h5>
@@ -645,7 +645,7 @@
           the Quantile.
         </p>
 <a name="upper_critical"></a><a name="math_toolkit.dist.dist_ref.nmp.upper_critical_value_"></a><h5>
-<a name="id600374"></a>
+<a name="id600642"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.upper_critical_value_">Upper
           Critical Value.</a>
         </h5>
@@ -656,7 +656,7 @@
           complement of the probability</a>.
         </p>
 <a name="survival"></a><a name="math_toolkit.dist.dist_ref.nmp.survival_function"></a><h5>
-<a name="id600421"></a>
+<a name="id600690"></a>
           <a href="nmp.html#math_toolkit.dist.dist_ref.nmp.survival_function">Survival
           Function</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/future.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/future.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/future.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.dist.future"></a> Extras/Future Directions
 </h3></div></div></div>
 <a name="math_toolkit.dist.future.adding_additional_location_and_scale_parameters"></a><h5>
-<a name="id650008"></a>
+<a name="id650295"></a>
         <a href="future.html#math_toolkit.dist.future.adding_additional_location_and_scale_parameters">Adding
         Additional Location and Scale Parameters</a>
       </h5>
@@ -55,7 +55,7 @@
         functions.
       </p>
 <a name="math_toolkit.dist.future.an__quot_any_distribution_quot__class"></a><h5>
-<a name="id650236"></a>
+<a name="id650523"></a>
         <a href="future.html#math_toolkit.dist.future.an__quot_any_distribution_quot__class">An
         "any_distribution" class</a>
       </h5>
@@ -84,7 +84,7 @@
         use case: this needs more investigation.
       </p>
 <a name="math_toolkit.dist.future.higher_level_hypothesis_tests"></a><h5>
-<a name="id650532"></a>
+<a name="id650820"></a>
         <a href="future.html#math_toolkit.dist.future.higher_level_hypothesis_tests">Higher
         Level Hypothesis Tests</a>
       </h5>
@@ -104,7 +104,7 @@
         <span class="emphasis"><em>expected_mean</em></span>.
       </p>
 <a name="math_toolkit.dist.future.integration_with_statistical_accumulators"></a><h5>
-<a name="id650764"></a>
+<a name="id651051"></a>
         <a href="future.html#math_toolkit.dist.future.integration_with_statistical_accumulators">Integration
         With Statistical Accumulators</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/dist_params.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/dist_params.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/dist_params.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/overview.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/overview.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.dist.stat_tut.overview"></a> Overview
 </h4></div></div></div>
 <a name="math_toolkit.dist.stat_tut.overview.headers_and_namespaces"></a><h5>
-<a name="id518107"></a>
+<a name="id518382"></a>
           <a href="overview.html#math_toolkit.dist.stat_tut.overview.headers_and_namespaces">Headers
           and Namespaces</a>
         </h5>
@@ -44,7 +44,7 @@
           or &lt;boost/math/distributions.hpp&gt;
         </p>
 <a name="math_toolkit.dist.stat_tut.overview.distributions_are_objects"></a><h5>
-<a name="id518159"></a>
+<a name="id518434"></a>
           <a href="overview.html#math_toolkit.dist.stat_tut.overview.distributions_are_objects">Distributions
           are Objects</a>
         </h5>
@@ -131,7 +131,7 @@
           and <span class="emphasis"><em>quantiles</em></span> etc for these distributions.
         </p>
 <a name="math_toolkit.dist.stat_tut.overview.generic_operations_common_to_all_distributions_are_non_member_functions"></a><h5>
-<a name="id518692"></a>
+<a name="id518967"></a>
           <a href="overview.html#math_toolkit.dist.stat_tut.overview.generic_operations_common_to_all_distributions_are_non_member_functions">Generic
           operations common to all distributions are non-member functions</a>
         </h5>
@@ -326,7 +326,7 @@
 <a name="complements"></a><p>
         </p>
 <a name="math_toolkit.dist.stat_tut.overview.complements_are_supported_too"></a><h5>
-<a name="id519522"></a>
+<a name="id519796"></a>
           <a href="overview.html#math_toolkit.dist.stat_tut.overview.complements_are_supported_too">Complements
           are supported too</a>
         </h5>
@@ -461,7 +461,7 @@
 </td></tr>
 </table></div>
 <a name="math_toolkit.dist.stat_tut.overview.parameters_can_be_calculated"></a><h5>
-<a name="id520710"></a>
+<a name="id520977"></a>
           <a href="overview.html#math_toolkit.dist.stat_tut.overview.parameters_can_be_calculated">Parameters
           can be calculated</a>
         </h5>
@@ -492,7 +492,7 @@
           sample size.
         </p>
 <a name="math_toolkit.dist.stat_tut.overview.summary"></a><h5>
-<a name="id520863"></a>
+<a name="id521142"></a>
           <a href="overview.html#math_toolkit.dist.stat_tut.overview.summary">Summary</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/variates.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/variates.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/variates.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_conf.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_conf.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_conf.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_size_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_size_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_size_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_coinflip_example.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_coinflip_example.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_coinflip_example.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_quiz_example.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_quiz_example.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_quiz_example.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -497,7 +497,7 @@
               <a name="math_toolkit.dist.stat_tut.weg.binom_eg.binomial_quiz_example.using_binomial_distribution_moments"></a>
               </p>
 <h5>
-<a name="id549141"></a>
+<a name="id549392"></a>
                 <a href="binomial_quiz_example.html#math_toolkit.dist.stat_tut.weg.binom_eg.binomial_quiz_example.using_binomial_distribution_moments">Using
                 Binomial distribution moments</a>
               </h5>
@@ -534,7 +534,7 @@
               <a name="math_toolkit.dist.stat_tut.weg.binom_eg.binomial_quiz_example.quantiles"></a>
               </p>
 <h5>
-<a name="id549658"></a>
+<a name="id549910"></a>
                 <a href="binomial_quiz_example.html#math_toolkit.dist.stat_tut.weg.binom_eg.binomial_quiz_example.quantiles">Quantiles</a>
               </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_intervals.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_intervals.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_intervals.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -139,7 +139,7 @@
               is between 0.00551 and 0.00729.
             </p>
 <a name="math_toolkit.dist.stat_tut.weg.cs_eg.chi_sq_intervals.confidence_intervals_as_a_function_of_the_number_of_observations"></a><h5>
-<a name="id532771"></a>
+<a name="id532889"></a>
               <a href="chi_sq_intervals.html#math_toolkit.dist.stat_tut.weg.cs_eg.chi_sq_intervals.confidence_intervals_as_a_function_of_the_number_of_observations">Confidence
               intervals as a function of the number of observations</a>
             </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_size.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_size.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_size.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_test.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_test.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_test.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/dist_construct_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/dist_construct_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/dist_construct_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -332,7 +332,7 @@
             <a name="math_toolkit.dist.stat_tut.weg.dist_construct_eg.default_arguments_to_distribution_constructors_"></a>
             </p>
 <h6>
-<a name="id523058"></a>
+<a name="id523319"></a>
               <a href="dist_construct_eg.html#math_toolkit.dist.stat_tut.weg.dist_construct_eg.default_arguments_to_distribution_constructors_">Default
               arguments to distribution constructors.</a>
             </h6>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/error_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/error_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/error_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/f_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/f_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/f_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_location_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_location_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_location_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -175,7 +175,7 @@
               <a name="math_toolkit.dist.stat_tut.weg.find_eg.find_location_eg.controlling_error_handling_from_find_location"></a>
               </p>
 <h5>
-<a name="id583413"></a>
+<a name="id583684"></a>
                 <a href="find_location_eg.html#math_toolkit.dist.stat_tut.weg.find_eg.find_location_eg.controlling_error_handling_from_find_location">Controlling
                 Error Handling from find_location</a>
               </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_mean_and_sd_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_mean_and_sd_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_mean_and_sd_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -62,7 +62,7 @@
               <a name="math_toolkit.dist.stat_tut.weg.find_eg.find_mean_and_sd_eg.using_find_location_and_find_scale_to_meet_dispensing_and_measurement_specifications"></a>
               </p>
 <h5>
-<a name="id588582"></a>
+<a name="id588854"></a>
                 <a href="find_mean_and_sd_eg.html#math_toolkit.dist.stat_tut.weg.find_eg.find_mean_and_sd_eg.using_find_location_and_find_scale_to_meet_dispensing_and_measurement_specifications">Using
                 find_location and find_scale to meet dispensing and measurement specifications</a>
               </h5>
@@ -246,7 +246,7 @@
               <a name="math_toolkit.dist.stat_tut.weg.find_eg.find_mean_and_sd_eg.using_cauchy_lorentz_instead_of_normal_distribution"></a>
               </p>
 <h5>
-<a name="id590226"></a>
+<a name="id590501"></a>
                 <a href="find_mean_and_sd_eg.html#math_toolkit.dist.stat_tut.weg.find_eg.find_mean_and_sd_eg.using_cauchy_lorentz_instead_of_normal_distribution">Using
                 Cauchy-Lorentz instead of normal distribution</a>
               </h5>
@@ -397,7 +397,7 @@
               <a name="math_toolkit.dist.stat_tut.weg.find_eg.find_mean_and_sd_eg.changing_the_scale_or_standard_deviation"></a>
               </p>
 <h5>
-<a name="id591179"></a>
+<a name="id591454"></a>
                 <a href="find_mean_and_sd_eg.html#math_toolkit.dist.stat_tut.weg.find_eg.find_mean_and_sd_eg.changing_the_scale_or_standard_deviation">Changing
                 the scale or standard deviation</a>
               </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_scale_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_scale_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_scale_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -179,7 +179,7 @@
               <a name="math_toolkit.dist.stat_tut.weg.find_eg.find_scale_eg.controlling_how_errors_from_find_scale_are_handled"></a>
               </p>
 <h5>
-<a name="id586428"></a>
+<a name="id586699"></a>
                 <a href="find_scale_eg.html#math_toolkit.dist.stat_tut.weg.find_eg.find_scale_eg.controlling_how_errors_from_find_scale_are_handled">Controlling
                 how Errors from find_scale are handled</a>
               </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nag_library.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nag_library.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nag_library.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg/nccs_power_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg/nccs_power_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nccs_eg/nccs_power_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_conf.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_conf.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_conf.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -32,7 +32,7 @@
               illustrates their use.
             </p>
 <a name="math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.traditional_tables"></a><h5>
-<a name="id568451"></a>
+<a name="id568724"></a>
               <a href="normal_misc.html#math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.traditional_tables">Traditional
               Tables</a>
             </h5>
@@ -278,7 +278,7 @@
 <p>
             </p>
 <a name="math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.standard_deviations_either_side_of_the_mean"></a><h5>
-<a name="id571614"></a>
+<a name="id571887"></a>
               <a href="normal_misc.html#math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.standard_deviations_either_side_of_the_mean">Standard
               deviations either side of the Mean</a>
             </h5>
@@ -346,12 +346,12 @@
 <p>
             </p>
 <a name="math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.some_simple_examples"></a><h5>
-<a name="id572347"></a>
+<a name="id572620"></a>
               <a href="normal_misc.html#math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.some_simple_examples">Some
               simple examples</a>
             </h5>
 <a name="math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.life_of_light_bulbs"></a><h5>
-<a name="id572374"></a>
+<a name="id572647"></a>
               <a href="normal_misc.html#math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.life_of_light_bulbs">Life
               of light bulbs</a>
             </h5>
@@ -435,7 +435,7 @@
 <p>
             </p>
 <a name="math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.how_many_onions_"></a><h5>
-<a name="id573074"></a>
+<a name="id573347"></a>
               <a href="normal_misc.html#math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.how_many_onions_">How
               many onions?</a>
             </h5>
@@ -494,7 +494,7 @@
 <p>
             </p>
 <a name="math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.packing_beef"></a><h5>
-<a name="id573646"></a>
+<a name="id573919"></a>
               <a href="normal_misc.html#math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.packing_beef">Packing
               beef</a>
             </h5>
@@ -703,7 +703,7 @@
 <p>
             </p>
 <a name="math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.length_of_bolts"></a><h5>
-<a name="id576649"></a>
+<a name="id576922"></a>
               <a href="normal_misc.html#math_toolkit.dist.stat_tut.weg.normal_example.normal_misc.length_of_bolts">Length
               of bolts</a>
             </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/paired_st.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/paired_st.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/paired_st.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_intervals.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_intervals.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_intervals.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_size.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_size.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_size.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_test.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_test.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_test.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/two_sample_students_t.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/two_sample_students_t.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/two_sample_students_t.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/compilers_overview.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/compilers_overview.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/compilers_overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -37,7 +37,7 @@
 <p>
         </p>
 <div class="table">
-<a name="id505733"></a><p class="title"><b>Table 8. Supported/Tested Compilers</b></p>
+<a name="id506128"></a><p class="title"><b>Table 9. Supported/Tested Compilers</b></p>
 <div class="table-contents"><table class="table" summary="Supported/Tested Compilers">
 <colgroup>
 <col>
@@ -540,7 +540,7 @@
 </div>
 <p><br class="table-break"> </p>
 <div class="table">
-<a name="id506523"></a><p class="title"><b>Table 9. Unsupported Compilers</b></p>
+<a name="id506919"></a><p class="title"><b>Table 10. Unsupported Compilers</b></p>
 <div class="table-contents"><table class="table" summary="Unsupported Compilers">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/contact.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/contact.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/contact.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/directories.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/directories.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/directories.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       File Structure</a>
 </h3></div></div></div>
 <a name="math_toolkit.main_overview.directories.boost_math"></a><h5>
-<a name="id445809"></a>
+<a name="id445901"></a>
         <a href="directories.html#math_toolkit.main_overview.directories.boost_math">boost/math</a>
       </h5>
 <div class="variablelist">
@@ -73,7 +73,7 @@
 </dl>
 </div>
 <a name="math_toolkit.main_overview.directories.boost_libs"></a><h5>
-<a name="id446000"></a>
+<a name="id446092"></a>
         <a href="directories.html#math_toolkit.main_overview.directories.boost_libs">boost/libs</a>
       </h5>
 <div class="variablelist">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/error_handling.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/error_handling.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/error_handling.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.main_overview.error_handling"></a> Error Handling
 </h3></div></div></div>
 <a name="math_toolkit.main_overview.error_handling.quick_reference"></a><h5>
-<a name="id500941"></a>
+<a name="id500968"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.quick_reference">Quick
         Reference</a>
       </h5>
@@ -89,6 +89,11 @@
             being evaluated: this should never occur, but if it does, then it's likely
             to be due to an iterative method not converging fast enough.
           </p></dd>
+<dt><span class="term">Indeterminate Result Error</span></dt>
+<dd><p>
+ Occurs when the result of a function is not defined for the values that
+ were passed to it.
+ </p></dd>
 </dl>
 </div>
 <p>
@@ -129,7 +134,7 @@
         the default action for each error shown in bold:
       </p>
 <div class="table">
-<a name="id501246"></a><p class="title"><b>Table 1. Possible Actions for Domain Errors</b></p>
+<a name="id501289"></a><p class="title"><b>Table 1. Possible Actions for Domain Errors</b></p>
 <div class="table-contents"><table class="table" summary="Possible Actions for Domain Errors">
 <colgroup>
 <col>
@@ -204,7 +209,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id501562"></a><p class="title"><b>Table 2. Possible Actions for Pole Errors</b></p>
+<a name="id501606"></a><p class="title"><b>Table 2. Possible Actions for Pole Errors</b></p>
 <div class="table-contents"><table class="table" summary="Possible Actions for Pole Errors">
 <colgroup>
 <col>
@@ -279,7 +284,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id501876"></a><p class="title"><b>Table 3. Possible Actions for Overflow Errors</b></p>
+<a name="id501920"></a><p class="title"><b>Table 3. Possible Actions for Overflow Errors</b></p>
 <div class="table-contents"><table class="table" summary="Possible Actions for Overflow Errors">
 <colgroup>
 <col>
@@ -354,7 +359,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id502192"></a><p class="title"><b>Table 4. Possible Actions for Underflow Errors</b></p>
+<a name="id502235"></a><p class="title"><b>Table 4. Possible Actions for Underflow Errors</b></p>
 <div class="table-contents"><table class="table" summary="Possible Actions for Underflow Errors">
 <colgroup>
 <col>
@@ -429,7 +434,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id502416"></a><p class="title"><b>Table 5. Possible Actions for Denorm Errors</b></p>
+<a name="id502459"></a><p class="title"><b>Table 5. Possible Actions for Denorm Errors</b></p>
 <div class="table-contents"><table class="table" summary="Possible Actions for Denorm Errors">
 <colgroup>
 <col>
@@ -504,7 +509,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id502640"></a><p class="title"><b>Table 6. Possible Actions for Rounding Errors</b></p>
+<a name="id502683"></a><p class="title"><b>Table 6. Possible Actions for Rounding Errors</b></p>
 <div class="table-contents"><table class="table" summary="Possible Actions for Rounding Errors">
 <colgroup>
 <col>
@@ -579,7 +584,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id502874"></a><p class="title"><b>Table 7. Possible Actions for Internal Evaluation
+<a name="id502918"></a><p class="title"><b>Table 7. Possible Actions for Internal Evaluation
       Errors</b></p>
 <div class="table-contents"><table class="table" summary="Possible Actions for Internal Evaluation
       Errors">
@@ -622,7 +627,7 @@
             <p>
               Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
               to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns
- <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">infinity</span><span class="special">()</span></code>.
+ the closest approximation found.
             </p>
             </td>
 </tr>
@@ -634,7 +639,7 @@
             </td>
 <td>
             <p>
- Returns <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">infinity</span><span class="special">()</span></code>.
+ Returns the closest approximation found.
             </p>
             </td>
 </tr>
@@ -655,8 +660,86 @@
 </tbody>
 </table></div>
 </div>
+<br class="table-break"><div class="table">
+<a name="id503152"></a><p class="title"><b>Table 8. Possible Actions for Indeterminate Result
+ Errors</b></p>
+<div class="table-contents"><table class="table" summary="Possible Actions for Indeterminate Result
+ Errors">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Action
+ </p>
+ </th>
+<th>
+ <p>
+ Behaviour
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ throw_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Throws <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ errno_on_error
+ </p>
+ </td>
+<td>
+ <p>
+ Sets <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns
+ the same value as <code class="computeroutput"><span class="identifier">ignore_error</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ ignore_error
+ </p>
+ </td>
+<td>
+ <p>
+ <span class="bold"><strong>Returns a default result that depends on the
+ function where the error occurred.</strong></span>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ user_error
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_indeterminate_result_error</span></code>:
+ <a href="../policy/pol_tutorial/user_def_err_pol.html" title="Calling User Defined Error Handlers">this
+ function must be defined by the user</a>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
 <br class="table-break"><a name="math_toolkit.main_overview.error_handling.rationale"></a><h5>
-<a name="id503210"></a>
+<a name="id503399"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.rationale">Rationale</a>
       </h5>
 <p>
@@ -675,7 +758,7 @@
         </li>
 </ul></div>
 <a name="math_toolkit.main_overview.error_handling.finding_more_information"></a><h5>
-<a name="id503259"></a>
+<a name="id503448"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.finding_more_information">Finding
         More Information</a>
       </h5>
@@ -697,7 +780,7 @@
         The various kind of errors are described in more detail below.
       </p>
 <a name="domain_error"></a><a name="math_toolkit.main_overview.error_handling.domain_errors"></a><h5>
-<a name="id503354"></a>
+<a name="id503542"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.domain_errors">Domain
         Errors</a>
       </h5>
@@ -790,7 +873,7 @@
         for more details.
       </p>
 <a name="pole_error"></a><a name="math_toolkit.main_overview.error_handling.evaluation_at_a_pole"></a><h5>
-<a name="id503736"></a>
+<a name="id503925"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.evaluation_at_a_pole">Evaluation
         at a pole</a>
       </h5>
@@ -829,7 +912,7 @@
         for more details.
       </p>
 <a name="overflow_error"></a><a name="math_toolkit.main_overview.error_handling.numeric_overflow"></a><h5>
-<a name="id504058"></a>
+<a name="id504247"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.numeric_overflow">Numeric
         Overflow</a>
       </h5>
@@ -854,7 +937,7 @@
         doesn't support infinities, the maximum value for the type is returned.
       </p>
 <a name="underflow_error"></a><a name="math_toolkit.main_overview.error_handling.numeric_underflow"></a><h5>
-<a name="id504338"></a>
+<a name="id504527"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.numeric_underflow">Numeric
         Underflow</a>
       </h5>
@@ -877,7 +960,7 @@
         an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code> C++ exception.
       </p>
 <a name="denorm_error"></a><a name="math_toolkit.main_overview.error_handling.denormalisation_errors"></a><h5>
-<a name="id504560"></a>
+<a name="id504749"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.denormalisation_errors">Denormalisation
         Errors</a>
       </h5>
@@ -900,7 +983,7 @@
         throws an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">underflow_error</span></code> C++ exception.
       </p>
 <a name="evaluation_error"></a><a name="math_toolkit.main_overview.error_handling.evaluation_errors"></a><h5>
-<a name="id504797"></a>
+<a name="id504986"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.evaluation_errors">Evaluation
         Errors</a>
       </h5>
@@ -936,8 +1019,35 @@
         <a href="../../../../../../format/index.html" target="_top">Boost.Format</a> documentation
         for more details.
       </p>
+<a name="indeterminate_result_error"></a><a name="math_toolkit.main_overview.error_handling.indeterminate_result_errors"></a><h5>
+<a name="id505317"></a>
+ <a href="error_handling.html#math_toolkit.main_overview.error_handling.indeterminate_result_errors">Indeterminate
+ Result Errors</a>
+ </h5>
+<p>
+ When the result of a special function is indeterminate for the value that
+ was passed to it, then the function returns the result of:
+ </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">raise_overflow_error</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">FunctionName</span><span class="special">,</span> <span class="identifier">Message</span><span class="special">,</span> <span class="identifier">Val</span><span class="special">,</span> <span class="identifier">Default</span><span class="special">,</span> Policy<span class="special">);</span>
+</pre>
+<p>
+ Where <code class="computeroutput"><span class="identifier">T</span></code> is the floating-point
+ type passed to the function, <code class="computeroutput"><span class="identifier">FunctionName</span></code>
+ is the name of the function, <code class="computeroutput"><span class="identifier">Message</span></code>
+ is an error message describing the problem, Val is the value for which the
+ result is indeterminate, Default is an alternative default result that must
+ be returned for ignore_error and errno_on_error policies, and Policy
+ is the current policy in use for the function that was called.
+ </p>
+<p>
+ The default policy for this function is <code class="computeroutput"><span class="identifier">ignore_error</span></code>:
+ note that this error type is reserved for situations where the result is
+ mathematically undefined or indeterminate, but there is none the less a convention
+ for what the result should be: for example the C99 standard specifies that
+ the result of 0<sup>0</sup> is 1, even though the result is actually mathematically indeterminate.
+ </p>
 <a name="rounding_error"></a><a name="math_toolkit.main_overview.error_handling.rounding_errors"></a><h5>
-<a name="id505125"></a>
+<a name="id505544"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.rounding_errors">Rounding
         Errors</a>
       </h5>
@@ -976,7 +1086,7 @@
         for more details.
       </p>
 <a name="checked_narrowing_cast"></a><a name="math_toolkit.main_overview.error_handling.errors_from_typecasts"></a><h5>
-<a name="id505481"></a>
+<a name="id505899"></a>
         <a href="error_handling.html#math_toolkit.main_overview.error_handling.errors_from_typecasts">Errors
         from typecasts</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,57 +31,45 @@
         <a name="math_toolkit.main_overview.history1.boost_1_36_0"></a>
         </p>
 <h5>
-<a name="id507234"></a>
+<a name="id507618"></a>
           <a href="history1.html#math_toolkit.main_overview.history1.boost_1_36_0">Boost-1.36.0</a>
         </h5>
 <p>
         </p>
 <div class="itemizedlist"><ul type="disc">
 <li>
- Added <a href="../dist/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution">Noncentral
- Chi Squared Distribution</a>.
+ Added Noncentral Chi Squared Distribution.
           </li>
 <li>
- Added <a href="../dist/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution">Noncentral
- Beta Distribution</a>.
+ Added Noncentral Beta Distribution.
           </li>
 <li>
- Added <a href="../dist/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution">Noncentral
- F Distribution</a>.
+ Added Noncentral F Distribution.
           </li>
 <li>
- Added <a href="../dist/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution">Noncentral
- T Distribution</a>.
+ Added Noncentral T Distribution.
           </li>
 <li>
- Added <a href="../special/expint.html" title="Exponential Integrals">Exponential Integral
- Functions</a>.
+ Added Exponential Integral Functions.
           </li>
 <li>
- Added zeta Function.
+ Added Zeta Function.
           </li>
 <li>
- Added <a href="../special/rounding.html" title="Rounding Truncation and Integer Conversion">Rounding and Truncation
- functions</a>.
+ Added Rounding and Truncation functions.
           </li>
 <li>
- Added <a href="../special/powers/ct_pow.html" title="Compile Time Power of a Runtime Base">Compile time
- powers of runtime bases</a>.
+ Added Compile time powers of runtime bases.
           </li>
 <li>
- Added <a href="../special/next_float.html" title="Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values">nextafter and related
- functions</a>.
- </li>
-<li>
- Added separate <a href="../special/extern_c.html" title='TR1 and C99 external "C" Functions'>TR1 and
- C99 "C" language bindings</a>.
+ Added SSE2 optimizations for Lanczos evaluation.
           </li>
 </ul></div>
 <p>
         <a name="math_toolkit.main_overview.history1.boost_1_35_0__post_review_first_official_release"></a>
         </p>
 <h5>
-<a name="id507414"></a>
+<a name="id507692"></a>
           <a href="history1.html#math_toolkit.main_overview.history1.boost_1_35_0__post_review_first_official_release">Boost-1.35.0:
           Post Review First Official Release</a>
         </h5>
@@ -118,7 +106,7 @@
         <a name="math_toolkit.main_overview.history1.milestone_4__second_review_candidate__1st_march_2007_"></a>
         </p>
 <h5>
-<a name="id507519"></a>
+<a name="id507795"></a>
           <a href="history1.html#math_toolkit.main_overview.history1.milestone_4__second_review_candidate__1st_march_2007_">Milestone
           4: Second Review Candidate (1st March 2007)</a>
         </h5>
@@ -137,7 +125,7 @@
         <a name="math_toolkit.main_overview.history1.milestone_3__first_review_candidate__31st_dec_2006_"></a>
         </p>
 <h5>
-<a name="id507561"></a>
+<a name="id507837"></a>
           <a href="history1.html#math_toolkit.main_overview.history1.milestone_3__first_review_candidate__31st_dec_2006_">Milestone
           3: First Review Candidate (31st Dec 2006)</a>
         </h5>
@@ -170,7 +158,7 @@
         <a name="math_toolkit.main_overview.history1.milestone_2__released_september_10th_2006"></a>
         </p>
 <h5>
-<a name="id507625"></a>
+<a name="id507901"></a>
           <a href="history1.html#math_toolkit.main_overview.history1.milestone_2__released_september_10th_2006">Milestone
           2: Released September 10th 2006</a>
         </h5>
@@ -211,7 +199,7 @@
         <a name="math_toolkit.main_overview.history1.milestone_1__released_march_31st_2006"></a>
         </p>
 <h5>
-<a name="id507702"></a>
+<a name="id507977"></a>
           <a href="history1.html#math_toolkit.main_overview.history1.milestone_1__released_march_31st_2006">Milestone
           1: Released March 31st 2006</a>
         </h5>
@@ -246,7 +234,7 @@
 <p>
         </p>
 <p>
- Sandbox and trunk last synchonised at revision: 45483.
+ Sandbox and trunk last synchonised at revision: 47084.
         </p>
 <p>
       </p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/intro.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/intro.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/intro.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
         This library is divided into three interconnected parts:
       </p>
 <a name="math_toolkit.main_overview.intro.statistical_distributions"></a><h5>
-<a name="id450206"></a>
+<a name="id450195"></a>
         <a href="intro.html#math_toolkit.main_overview.intro.statistical_distributions">Statistical
         Distributions</a>
       </h5>
@@ -56,7 +56,7 @@
         tests.
       </p>
 <a name="math_toolkit.main_overview.intro.mathematical_special_functions"></a><h5>
-<a name="id446134"></a>
+<a name="id446223"></a>
         <a href="intro.html#math_toolkit.main_overview.intro.mathematical_special_functions">Mathematical
         Special Functions</a>
       </h5>
@@ -83,7 +83,7 @@
         <span class="keyword">double</span></code>.
       </p>
 <a name="math_toolkit.main_overview.intro.implementation_toolkit"></a><h5>
-<a name="id446256"></a>
+<a name="id446348"></a>
         <a href="intro.html#math_toolkit.main_overview.intro.implementation_toolkit">Implementation
         Toolkit</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/namespaces.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/namespaces.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/namespaces.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -31,7 +31,7 @@
         as handy shortcuts for common navigation tasks.
       </p>
 <a name="math_toolkit.main_overview.navigation.shortcuts"></a><h6>
-<a name="id447676"></a>
+<a name="id447735"></a>
         <a href="navigation.html#math_toolkit.main_overview.navigation.shortcuts">Shortcuts</a>
       </h6>
 <div class="blockquote"><blockquote class="blockquote">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/perf_over.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/perf_over.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/perf_over.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/pol_overview.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/pol_overview.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/pol_overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/result_type.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/result_type.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/result_type.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/threads.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/threads.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/threads.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/tr1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/tr1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/main_overview/tr1.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -284,7 +284,7 @@
         <a name="math_toolkit.main_overview.tr1.usage_recomendations"></a>
         </p>
 <h5>
-<a name="id508265"></a>
+<a name="id508541"></a>
           <a href="tr1.html#math_toolkit.main_overview.tr1.usage_recomendations">Usage
           Recomendations</a>
         </h5>
@@ -336,7 +336,7 @@
         <a name="math_toolkit.main_overview.tr1.supported_c99_functions"></a>
         </p>
 <h5>
-<a name="id508555"></a>
+<a name="id508831"></a>
           <a href="tr1.html#math_toolkit.main_overview.tr1.supported_c99_functions">Supported
           C99 Functions</a>
         </h5>
@@ -440,7 +440,7 @@
         <a name="math_toolkit.main_overview.tr1.supported_tr1_functions"></a>
         </p>
 <h5>
-<a name="id511357"></a>
+<a name="id511633"></a>
           <a href="tr1.html#math_toolkit.main_overview.tr1.supported_tr1_functions">Supported
           TR1 Functions</a>
         </h5>
@@ -579,7 +579,7 @@
         <a name="math_toolkit.main_overview.tr1.currently_unsupported_c99_functions"></a>
         </p>
 <h5>
-<a name="id515208"></a>
+<a name="id515484"></a>
           <a href="tr1.html#math_toolkit.main_overview.tr1.currently_unsupported_c99_functions">Currently
           Unsupported C99 Functions</a>
         </h5>
@@ -650,7 +650,7 @@
         <a name="math_toolkit.main_overview.tr1.currently_unsupported_tr1_functions"></a>
         </p>
 <h5>
-<a name="id517420"></a>
+<a name="id517695"></a>
           <a href="tr1.html#math_toolkit.main_overview.tr1.currently_unsupported_tr1_functions">Currently
           Unsupported TR1 Functions</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -35,7 +35,7 @@
         in this respect).
       </p>
 <div class="table">
-<a name="id849993"></a><p class="title"><b>Table 47. Performance Comparison of Various Windows Compilers</b></p>
+<a name="id852958"></a><p class="title"><b>Table 48. Performance Comparison of Various Windows Compilers</b></p>
 <div class="table-contents"><table class="table" summary="Performance Comparison of Various Windows Compilers">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -46,7 +46,7 @@
         </p></td></tr>
 </table></div>
 <a name="math_toolkit.perf.comparisons.comparison_to_gsl_1_9_and_cephes"></a><h5>
-<a name="id852462"></a>
+<a name="id855417"></a>
         <a href="comparisons.html#math_toolkit.perf.comparisons.comparison_to_gsl_1_9_and_cephes">Comparison
         to GSL-1.9 and Cephes</a>
       </h5>
@@ -213,7 +213,7 @@
 <td>
               <p>
                 +INF
- <sup>[<a name="id852829" href="#ftn.id852829">1</a>]</sup>
+ <sup>[<a name="id855785" href="#ftn.id855785">1</a>]</sup>
               </p>
               </td>
 </tr>
@@ -284,13 +284,13 @@
               </td>
 </tr>
 </tbody>
-<tbody class="footnotes"><tr><td colspan="4"><div class="footnote"><p><sup>[<a name="ftn.id852829" href="#id852829">1</a>] </sup>
+<tbody class="footnotes"><tr><td colspan="4"><div class="footnote"><p><sup>[<a name="ftn.id855785" href="#id855785">1</a>] </sup>
                     Cephes gets stuck in an infinite loop while trying to execute
                     our test cases.
                   </p></div></td></tr></tbody>
 </table></div>
 <a name="math_toolkit.perf.comparisons.comparison_to_the_r_statistical_library_on_windows"></a><h5>
-<a name="id852999"></a>
+<a name="id855954"></a>
         <a href="comparisons.html#math_toolkit.perf.comparisons.comparison_to_the_r_statistical_library_on_windows">Comparison
         to the R Statistical Library on Windows</a>
       </h5>
@@ -301,7 +301,7 @@
         appears not to be buildable with Visual C++).
       </p>
 <div class="table">
-<a name="id853026"></a><p class="title"><b>Table 50. A Comparison to the R Statistical Library on Windows
+<a name="id855981"></a><p class="title"><b>Table 51. A Comparison to the R Statistical Library on Windows
       XP</b></p>
 <div class="table-contents"><table class="table" summary="A Comparison to the R Statistical Library on Windows
       XP">
@@ -374,7 +374,7 @@
             <p>
               </p>
 <p>74.66
- <sup>[<a name="id853166" href="#ftn.id853166">1</a>]</sup>
+ <sup>[<a name="id856122" href="#ftn.id856122">1</a>]</sup>
               </p>
 <p> </p>
 <p>(4.905e-004s)</p>
@@ -792,7 +792,7 @@
             <p>
               </p>
 <p>53.59
- <sup>[<a name="id854015" href="#ftn.id854015">2</a>]</sup>
+ <sup>[<a name="id856970" href="#ftn.id856970">2</a>]</sup>
               </p>
 <p> </p>
 <p>(5.145e-004s)</p>
@@ -1010,12 +1010,12 @@
 </tr>
 </tbody>
 <tbody class="footnotes"><tr><td colspan="3">
-<div class="footnote"><p><sup>[<a name="ftn.id853166" href="#id853166">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id856122" href="#id856122">1</a>] </sup>
                   There are a small number of our test cases where the R library
                   fails to converge on a result: these tend to dominate the performance
                   result.
                 </p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id854015" href="#id854015">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id856970" href="#id856970">2</a>] </sup>
                   The R library appears to use a linear-search strategy, that can
                   perform very badly in a small number of pathological cases, but
                   may or may not be more efficient in "typical" cases
@@ -1024,7 +1024,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.perf.comparisons.comparison_to_the_r_statistical_library_on_linux"></a><h5>
-<a name="id854465"></a>
+<a name="id857421"></a>
         <a href="comparisons.html#math_toolkit.perf.comparisons.comparison_to_the_r_statistical_library_on_linux">Comparison
         to the R Statistical Library on Linux</a>
       </h5>
@@ -1033,7 +1033,7 @@
         Linux machine, with the test program and R-2.5.0 compiled with GNU G++ 4.2.0.
       </p>
 <div class="table">
-<a name="id854490"></a><p class="title"><b>Table 51. A Comparison to the R Statistical Library on Linux</b></p>
+<a name="id857446"></a><p class="title"><b>Table 52. A Comparison to the R Statistical Library on Linux</b></p>
 <div class="table-contents"><table class="table" summary="A Comparison to the R Statistical Library on Linux">
 <colgroup>
 <col>
@@ -1104,7 +1104,7 @@
             <p>
               </p>
 <p>44.06
- <sup>[<a name="id854630" href="#ftn.id854630">1</a>]</sup>
+ <sup>[<a name="id857585" href="#ftn.id857585">1</a>]</sup>
               </p>
 <p> </p>
 <p>(5.701e-004s)</p>
@@ -1522,7 +1522,7 @@
             <p>
               </p>
 <p>30.07
- <sup>[<a name="id855474" href="#ftn.id855474">2</a>]</sup>
+ <sup>[<a name="id858430" href="#ftn.id858430">2</a>]</sup>
               </p>
 <p> </p>
 <p>(5.490e-004s)</p>
@@ -1740,12 +1740,12 @@
 </tr>
 </tbody>
 <tbody class="footnotes"><tr><td colspan="3">
-<div class="footnote"><p><sup>[<a name="ftn.id854630" href="#id854630">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id857585" href="#id857585">1</a>] </sup>
                   There are a small number of our test cases where the R library
                   fails to converge on a result: these tend to dominate the performance
                   result.
                 </p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id855474" href="#id855474">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id858430" href="#id858430">2</a>] </sup>
                   The R library appears to use a linear-search strategy, that can
                   perform very badly in a small number of pathological cases, but
                   may or may not be more efficient in "typical" cases

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -33,7 +33,7 @@
         penalty for using the library in debug mode can be quite large.
       </p>
 <div class="table">
-<a name="id849421"></a><p class="title"><b>Table 46. Performance Comparison of Release and Debug Settings</b></p>
+<a name="id852387"></a><p class="title"><b>Table 47. Performance Comparison of Release and Debug Settings</b></p>
 <div class="table-contents"><table class="table" summary="Performance Comparison of Release and Debug Settings">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/interp.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/interp.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/interp.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/perf_over.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/perf_over.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/perf_over.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/perf_test_app.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/perf_test_app.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/perf_test_app.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/tuning.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/tuning.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/perf/tuning.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -234,7 +234,7 @@
         highly vectorisable processors in the future.
       </p>
 <div class="table">
-<a name="id851111"></a><p class="title"><b>Table 48. A Comparison of Polynomial Evaluation Methods</b></p>
+<a name="id854066"></a><p class="title"><b>Table 49. A Comparison of Polynomial Evaluation Methods</b></p>
 <div class="table-contents"><table class="table" summary="A Comparison of Polynomial Evaluation Methods">
 <colgroup>
 <col>
@@ -634,7 +634,7 @@
         tutorial</a>.
       </p>
 <div class="table">
-<a name="id851866"></a><p class="title"><b>Table 49. Performance Comparison with and Without Internal
+<a name="id854821"></a><p class="title"><b>Table 50. Performance Comparison with and Without Internal
       Promotion to long double</b></p>
 <div class="table-contents"><table class="table" summary="Performance Comparison with and Without Internal
       Promotion to long double">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_overview.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_overview.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/assert_undefined.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/assert_undefined.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/assert_undefined.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -55,7 +55,7 @@
           can take have the following meanings:
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.real"></a><h6>
-<a name="id839520"></a>
+<a name="id842089"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.real">real</a>
         </h6>
 <p>
@@ -93,7 +93,7 @@
           <span class="special">=</span> <span class="number">68.1584</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_outwards"></a><h6>
-<a name="id840006"></a>
+<a name="id842575"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_outwards">integer_round_outwards</a>
         </h6>
 <p>
@@ -151,7 +151,7 @@
           in each tail</em></span>.
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_inwards"></a><h6>
-<a name="id840525"></a>
+<a name="id843094"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_inwards">integer_round_inwards</a>
         </h6>
 <p>
@@ -214,7 +214,7 @@
           in each tail</em></span>.
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_down"></a><h6>
-<a name="id841179"></a>
+<a name="id843748"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_down">integer_round_down</a>
         </h6>
 <p>
@@ -222,7 +222,7 @@
           or a lower quantile.
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_up"></a><h6>
-<a name="id841210"></a>
+<a name="id843779"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_up">integer_round_up</a>
         </h6>
 <p>
@@ -230,7 +230,7 @@
           a lower quantile.
         </p>
 <a name="math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_nearest"></a><h6>
-<a name="id841242"></a>
+<a name="id843811"></a>
           <a href="discrete_quant_ref.html#math_toolkit.policy.pol_ref.discrete_quant_ref.integer_round_nearest">integer_round_nearest</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -39,7 +39,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.available_actions_when_an_error_is_raised"></a><h5>
-<a name="id833801"></a>
+<a name="id836051"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.available_actions_when_an_error_is_raised">Available
           Actions When an Error is Raised</a>
         </h5>
@@ -62,7 +62,7 @@
           The various enumerated values have the following meanings:
         </p>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.throw_on_error"></a><h6>
-<a name="id834054"></a>
+<a name="id836303"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.throw_on_error">throw_on_error</a>
         </h6>
 <p>
@@ -159,10 +159,22 @@
                 </p>
                 </td>
 </tr>
+<tr>
+<td>
+ <p>
+ Indeterminate Result Error
+ </p>
+ </td>
+<td>
+ <p>
+ std::domain_error
+ </p>
+ </td>
+</tr>
 </tbody>
 </table></div>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.errno_on_error"></a><h6>
-<a name="id834236"></a>
+<a name="id836505"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.errno_on_error">errno_on_error</a>
         </h6>
 <p>
@@ -260,14 +272,26 @@
                 </p>
                 </td>
 </tr>
+<tr>
+<td>
+ <p>
+ Indeterminate Result Error
+ </p>
+ </td>
+<td>
+ <p>
+ EDOM
+ </p>
+ </td>
+</tr>
 </tbody>
 </table></div>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.ignore_error"></a><h6>
-<a name="id834436"></a>
+<a name="id836723"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.ignore_error">ignore_error</a>
         </h6>
 <p>
- Will return a one of the values below depending on the error type (<code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ Will return one of the values below depending on the error type (<code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
           is NOT changed)::
         </p>
 <div class="informaltable"><table class="table">
@@ -361,10 +385,22 @@
                 </p>
                 </td>
 </tr>
+<tr>
+<td>
+ <p>
+ Indeterminate Result Error
+ </p>
+ </td>
+<td>
+ <p>
+ Depends on the function where the error occurred
+ </p>
+ </td>
+</tr>
 </tbody>
 </table></div>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.user_error"></a><h6>
-<a name="id834636"></a>
+<a name="id836944"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.user_error">user_error</a>
         </h6>
 <p>
@@ -394,6 +430,9 @@
 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
 <span class="identifier">T</span> <span class="identifier">user_evaluation_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">);</span>
 
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">T</span> <span class="identifier">user_indeterminate_result_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">);</span>
+
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <p>
@@ -410,12 +449,12 @@
           here</a>.
         </p>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.kinds_of_error_raised"></a><h5>
-<a name="id835701"></a>
+<a name="id838144"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.kinds_of_error_raised">Kinds
           of Error Raised</a>
         </h5>
 <p>
- There are five kinds of error reported by this library, which are summarised
+ There are six kinds of error reported by this library, which are summarised
           in the following table:
         </p>
 <div class="informaltable"><table class="table">
@@ -621,10 +660,35 @@
                 </p>
                 </td>
 </tr>
+<tr>
+<td>
+ <p>
+ Indeterminate Result Error
+ </p>
+ </td>
+<td>
+ <p>
+ boost::math::policies::indeterminate_result_error&lt;<span class="emphasis"><em>action</em></span>&gt;
+ </p>
+ </td>
+<td>
+ <p>
+ Raised when the result of a function is not defined for the values
+ that were passed to it.
+ </p>
+ <p>
+ Defaults to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">indeterminate_result_error</span><span class="special">&lt;</span><span class="identifier">ignore_error</span><span class="special">&gt;</span></code>
+ </p>
+ <p>
+ When the action is <span class="emphasis"><em>throw_on_error</em></span> then throws
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code>
+ </p>
+ </td>
+</tr>
 </tbody>
 </table></div>
 <a name="math_toolkit.policy.pol_ref.error_handling_policies.examples"></a><h5>
-<a name="id836706"></a>
+<a name="id839275"></a>
           <a href="error_handling_policies.html#math_toolkit.policy.pol_ref.error_handling_policies.examples">Examples</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -84,7 +84,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.policy.pol_ref.internal_promotion.examples"></a><h5>
-<a name="id838020"></a>
+<a name="id840589"></a>
           <a href="internal_promotion.html#math_toolkit.policy.pol_ref.internal_promotion.examples">Examples</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/iteration_pol.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/iteration_pol.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/iteration_pol.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/namespace_pol.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/namespace_pol.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/namespace_pol.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/pol_ref_ref.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/pol_ref_ref.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/pol_ref_ref.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -51,7 +51,9 @@
           <span class="keyword">class</span> <span class="identifier">A8</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
           <span class="keyword">class</span> <span class="identifier">A9</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
           <span class="keyword">class</span> <span class="identifier">A10</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
- <span class="keyword">class</span> <span class="identifier">A11</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">A11</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A12</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A13</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">policy</span>
 <span class="special">{</span>
 <span class="keyword">public</span><span class="special">:</span>
@@ -62,6 +64,7 @@
    <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">denorm_error_type</span><span class="special">;</span>
    <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">rounding_error_type</span><span class="special">;</span>
    <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">evaluation_error_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">indeterminate_result_error_type</span><span class="special">;</span>
    <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">precision_type</span><span class="special">;</span>
    <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">promote_float_type</span><span class="special">;</span>
    <span class="keyword">typedef</span> <span class="emphasis"><em>computed-from-template-arguments</em></span> <span class="identifier">promote_double_type</span><span class="special">;</span>
@@ -83,7 +86,9 @@
           <span class="keyword">class</span> <span class="identifier">A8</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
           <span class="keyword">class</span> <span class="identifier">A9</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
           <span class="keyword">class</span> <span class="identifier">A10</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
- <span class="keyword">class</span> <span class="identifier">A11</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">A11</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A12</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A13</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">normalise</span>
 <span class="special">{</span>
    <span class="keyword">typedef</span> computed-from-template-arguments <span class="identifier">type</span><span class="special">;</span>
@@ -150,6 +155,15 @@
           one of the <code class="computeroutput"><span class="identifier">error_policy_type</span></code>
           enumerated values.
         </p>
+<pre class="programlisting"><span class="identifier">policy</span><span class="special">&lt;...&gt;::</span><span class="identifier">indeterminate_error_type</span>
+</pre>
+<p>
+ Specifies how indeterminate result errors are handled, will be an instance
+ of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">indeterminate_result_error</span><span class="special">&lt;&gt;</span></code>
+ with the template argument to <code class="computeroutput"><span class="identifier">indeterminate_result_error</span></code>
+ one of the <code class="computeroutput"><span class="identifier">error_policy_type</span></code>
+ enumerated values.
+ </p>
 <pre class="programlisting"><span class="identifier">policy</span><span class="special">&lt;...&gt;::</span><span class="identifier">precision_type</span>
 </pre>
 <p>
@@ -204,7 +218,9 @@
           <span class="keyword">class</span> <span class="identifier">A8</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
           <span class="keyword">class</span> <span class="identifier">A9</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
           <span class="keyword">class</span> <span class="identifier">A10</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
- <span class="keyword">class</span> <span class="identifier">A11</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">A11</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A12</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">,</span>
+ <span class="keyword">class</span> <span class="identifier">A13</span> <span class="special">=</span> <span class="identifier">default_policy</span><span class="special">&gt;</span>
 <span class="keyword">struct</span> <span class="identifier">normalise</span>
 <span class="special">{</span>
    <span class="keyword">typedef</span> computed-from-template-arguments <span class="identifier">type</span><span class="special">;</span>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -61,7 +61,7 @@
           then you can do so by defining various macros in boost/math/tools/user.hpp.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_domain_error_policy"></a><h6>
-<a name="id843044"></a>
+<a name="id845613"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_domain_error_policy">BOOST_MATH_DOMAIN_ERROR_POLICY</a>
         </h6>
 <p>
@@ -71,7 +71,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_pole_error_policy"></a><h6>
-<a name="id843137"></a>
+<a name="id845706"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_pole_error_policy">BOOST_MATH_POLE_ERROR_POLICY</a>
         </h6>
 <p>
@@ -81,7 +81,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_overflow_error_policy"></a><h6>
-<a name="id843229"></a>
+<a name="id845798"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_overflow_error_policy">BOOST_MATH_OVERFLOW_ERROR_POLICY</a>
         </h6>
 <p>
@@ -91,7 +91,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_rounding_error_policy"></a><h6>
-<a name="id843322"></a>
+<a name="id845891"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_rounding_error_policy">BOOST_MATH_ROUNDING_ERROR_POLICY</a>
         </h6>
 <p>
@@ -101,7 +101,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_evaluation_error_policy"></a><h6>
-<a name="id843415"></a>
+<a name="id845984"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_evaluation_error_policy">BOOST_MATH_EVALUATION_ERROR_POLICY</a>
         </h6>
 <p>
@@ -111,7 +111,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_underflow_error_policy"></a><h6>
-<a name="id843508"></a>
+<a name="id846077"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_underflow_error_policy">BOOST_MATH_UNDERFLOW_ERROR_POLICY</a>
         </h6>
 <p>
@@ -121,7 +121,7 @@
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_denorm_error_policy"></a><h6>
-<a name="id843601"></a>
+<a name="id846170"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_denorm_error_policy">BOOST_MATH_DENORM_ERROR_POLICY</a>
         </h6>
 <p>
@@ -130,8 +130,19 @@
           but can be set to any of the enumerated actions for error handing: <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, <code class="computeroutput"><span class="identifier">errno_on_error</span></code>,
           <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
         </p>
+<a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_indeterminate_result_error_policy"></a><h6>
+<a name="id846263"></a>
+ BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY
+ </h6>
+<p>
+ Defines what happens when the result is indeterminate, but where there
+ is none the less a convention for the result. If not defined then defaults
+ to <code class="computeroutput"><span class="identifier">ignore_error</span></code>, but can
+ be set to any of the enumerated actions for error handing: <code class="computeroutput"><span class="identifier">throw_on_error</span></code>, <code class="computeroutput"><span class="identifier">errno_on_error</span></code>,
+ <code class="computeroutput"><span class="identifier">ignore_error</span></code> or <code class="computeroutput"><span class="identifier">user_error</span></code>.
+ </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_digits10_policy"></a><h6>
-<a name="id843693"></a>
+<a name="id846360"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_digits10_policy">BOOST_MATH_DIGITS10_POLICY</a>
         </h6>
 <p>
@@ -142,7 +153,7 @@
           recommended that you change this from the default.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_promote_float_policy"></a><h6>
-<a name="id843742"></a>
+<a name="id846408"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_promote_float_policy">BOOST_MATH_PROMOTE_FLOAT_POLICY</a>
         </h6>
 <p>
@@ -154,7 +165,7 @@
           off.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_promote_double_policy"></a><h6>
-<a name="id843834"></a>
+<a name="id846500"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_promote_double_policy">BOOST_MATH_PROMOTE_DOUBLE_POLICY</a>
         </h6>
 <p>
@@ -166,7 +177,7 @@
           off.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_discrete_quantile_policy"></a><h6>
-<a name="id843933"></a>
+<a name="id846598"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_discrete_quantile_policy">BOOST_MATH_DISCRETE_QUANTILE_POLICY</a>
         </h6>
 <p>
@@ -177,7 +188,7 @@
           Defaults to <code class="computeroutput"><span class="identifier">integer_round_outwards</span></code>.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_assert_undefined_policy"></a><h6>
-<a name="id844049"></a>
+<a name="id846715"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_assert_undefined_policy">BOOST_MATH_ASSERT_UNDEFINED_POLICY</a>
         </h6>
 <p>
@@ -190,7 +201,7 @@
           whether or not a particular property is well defined.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_max_series_iteration_policy"></a><h6>
-<a name="id844114"></a>
+<a name="id846778"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_max_series_iteration_policy">BOOST_MATH_MAX_SERIES_ITERATION_POLICY</a>
         </h6>
 <p>
@@ -199,7 +210,7 @@
           Defaults to 1000000.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.boost_math_max_root_iteration_policy"></a><h6>
-<a name="id844155"></a>
+<a name="id846819"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.boost_math_max_root_iteration_policy">BOOST_MATH_MAX_ROOT_ITERATION_POLICY</a>
         </h6>
 <p>
@@ -208,7 +219,7 @@
           Defaults to 200.
         </p>
 <a name="math_toolkit.policy.pol_ref.policy_defaults.example"></a><h6>
-<a name="id844198"></a>
+<a name="id846861"></a>
           <a href="policy_defaults.html#math_toolkit.policy.pol_ref.policy_defaults.example">Example</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/precision_pol.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/precision_pol.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/precision_pol.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_dist_policies.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_dist_policies.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_dist_policies.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_sf_policies.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_sf_policies.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_sf_policies.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/changing_policy_defaults.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/changing_policy_defaults.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/changing_policy_defaults.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/namespace_policies.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/namespace_policies.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/namespace_policies.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_tut_defaults.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_tut_defaults.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_tut_defaults.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -63,6 +63,10 @@
 <dd><p>
               Throws a <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">evaluation_error</span></code> exception.
             </p></dd>
+<dt><span class="term">Indeterminate Result Error</span></dt>
+<dd><p>
+ Returns a result that depends on the function where the error occurred.
+ </p></dd>
 <dt><span class="term">Promotion of float to double</span></dt>
 <dd><p>
               Does occur by default - gives full float precision results.

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_usage.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_usage.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_usage.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -177,7 +177,7 @@
           <span class="emphasis"><em>base your comparisons on CDF's instead</em></span>.
         </p>
 <a name="math_toolkit.policy.pol_tutorial.understand_dis_quant.other_rounding_policies_are_available"></a><h6>
-<a name="id830316"></a>
+<a name="id832566"></a>
           <a href="understand_dis_quant.html#math_toolkit.policy.pol_tutorial.understand_dis_quant.other_rounding_policies_are_available">Other
           Rounding Policies are Available</a>
         </h6>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/user_def_err_pol.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/user_def_err_pol.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/user_def_err_pol.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -54,6 +54,8 @@
 <span class="identifier">T</span> <span class="identifier">user_denorm_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">);</span>
 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
 <span class="identifier">T</span> <span class="identifier">user_evaluation_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">T</span> <span class="identifier">user_indeterminate_result_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">function</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">message</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">);</span>
 
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/what_is_a_policy.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/what_is_a_policy.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/what_is_a_policy.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         of the First and Second Kinds</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.bessel.bessel.synopsis"></a><h5>
-<a name="id707287"></a>
+<a name="id707576"></a>
           <a href="bessel.html#math_toolkit.special.bessel.bessel.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
@@ -44,7 +44,7 @@
 <a href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_neumann</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a href="../../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
 </pre>
 <a name="math_toolkit.special.bessel.bessel.description"></a><h5>
-<a name="id707796"></a>
+<a name="id708085"></a>
           <a href="bessel.html#math_toolkit.special.bessel.bessel.description">Description</a>
         </h5>
 <p>
@@ -110,7 +110,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/cyl_neumann.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.bessel.bessel.testing"></a><h5>
-<a name="id708197"></a>
+<a name="id708486"></a>
           <a href="bessel.html#math_toolkit.special.bessel.bessel.testing">Testing</a>
         </h5>
 <p>
@@ -119,7 +119,7 @@
           (with all the special case handling removed).
         </p>
 <a name="math_toolkit.special.bessel.bessel.accuracy"></a><h5>
-<a name="id708236"></a>
+<a name="id708524"></a>
           <a href="bessel.html#math_toolkit.special.bessel.bessel.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -135,7 +135,7 @@
           zero error</a>. All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id708292"></a><p class="title"><b>Table 35. Errors Rates in cyl_bessel_j</b></p>
+<a name="id708581"></a><p class="title"><b>Table 36. Errors Rates in cyl_bessel_j</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in cyl_bessel_j">
 <colgroup>
 <col>
@@ -304,7 +304,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id708596"></a><p class="title"><b>Table 36. Errors Rates in cyl_neumann</b></p>
+<a name="id708885"></a><p class="title"><b>Table 37. Errors Rates in cyl_neumann</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in cyl_neumann">
 <colgroup>
 <col>
@@ -494,7 +494,7 @@
           were found.
         </p>
 <a name="math_toolkit.special.bessel.bessel.implementation"></a><h5>
-<a name="id709025"></a>
+<a name="id709314"></a>
           <a href="bessel.html#math_toolkit.special.bessel.bessel.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Overview</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.bessel.bessel_over.ordinary_bessel_functions"></a><h5>
-<a name="id706299"></a>
+<a name="id706588"></a>
           <a href="bessel_over.html#math_toolkit.special.bessel.bessel_over.ordinary_bessel_functions">Ordinary
           Bessel Functions</a>
         </h5>
@@ -103,7 +103,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/bessel10.png"></span>
         </p>
 <a name="math_toolkit.special.bessel.bessel_over.modified_bessel_functions"></a><h5>
-<a name="id706716"></a>
+<a name="id707005"></a>
           <a href="bessel_over.html#math_toolkit.special.bessel.bessel_over.modified_bessel_functions">Modified
           Bessel Functions</a>
         </h5>
@@ -167,7 +167,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/mbessel10.png"></span>
         </p>
 <a name="math_toolkit.special.bessel.bessel_over.spherical_bessel_functions"></a><h5>
-<a name="id707112"></a>
+<a name="id707400"></a>
           <a href="bessel_over.html#math_toolkit.special.bessel.bessel_over.spherical_bessel_functions">Spherical
           Bessel Functions</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Functions of the First and Second Kinds</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.bessel.mbessel.synopsis"></a><h5>
-<a name="id709814"></a>
+<a name="id710103"></a>
           <a href="mbessel.html#math_toolkit.special.bessel.mbessel.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
@@ -44,7 +44,7 @@
 <a href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">cyl_bessel_k</span><span class="special">(</span><span class="identifier">T1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a href="../../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
 </pre>
 <a name="math_toolkit.special.bessel.mbessel.description"></a><h5>
-<a name="id710323"></a>
+<a name="id710612"></a>
           <a href="mbessel.html#math_toolkit.special.bessel.mbessel.description">Description</a>
         </h5>
 <p>
@@ -109,7 +109,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/cyl_bessel_k.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.bessel.mbessel.testing"></a><h5>
-<a name="id710712"></a>
+<a name="id711001"></a>
           <a href="mbessel.html#math_toolkit.special.bessel.mbessel.testing">Testing</a>
         </h5>
 <p>
@@ -118,7 +118,7 @@
           (with all the special case handling removed).
         </p>
 <a name="math_toolkit.special.bessel.mbessel.accuracy"></a><h5>
-<a name="id710751"></a>
+<a name="id711040"></a>
           <a href="mbessel.html#math_toolkit.special.bessel.mbessel.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -129,7 +129,7 @@
           zero error</a>. All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id710791"></a><p class="title"><b>Table 37. Errors Rates in cyl_bessel_i</b></p>
+<a name="id711080"></a><p class="title"><b>Table 38. Errors Rates in cyl_bessel_i</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in cyl_bessel_i">
 <colgroup>
 <col>
@@ -226,7 +226,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id710946"></a><p class="title"><b>Table 38. Errors Rates in cyl_bessel_k</b></p>
+<a name="id711235"></a><p class="title"><b>Table 39. Errors Rates in cyl_bessel_k</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in cyl_bessel_k">
 <colgroup>
 <col>
@@ -326,7 +326,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.bessel.mbessel.implementation"></a><h5>
-<a name="id711114"></a>
+<a name="id711403"></a>
           <a href="mbessel.html#math_toolkit.special.bessel.mbessel.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Bessel Functions of the First and Second Kinds</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.bessel.sph_bessel.synopsis"></a><h5>
-<a name="id711792"></a>
+<a name="id712081"></a>
           <a href="sph_bessel.html#math_toolkit.special.bessel.sph_bessel.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
@@ -44,7 +44,7 @@
 <a href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a href="../../policy.html" title="Policies">Policy</a><span class="special">&amp;);</span>
 </pre>
 <a name="math_toolkit.special.bessel.sph_bessel.description"></a><h5>
-<a name="id712302"></a>
+<a name="id712590"></a>
           <a href="sph_bessel.html#math_toolkit.special.bessel.sph_bessel.description">Description</a>
         </h5>
 <p>
@@ -97,7 +97,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/sph_neumann.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.bessel.sph_bessel.testing"></a><h5>
-<a name="id712582"></a>
+<a name="id712870"></a>
           <a href="sph_bessel.html#math_toolkit.special.bessel.sph_bessel.testing">Testing</a>
         </h5>
 <p>
@@ -106,7 +106,7 @@
           implementation (with all the special case handling removed).
         </p>
 <a name="math_toolkit.special.bessel.sph_bessel.accuracy"></a><h5>
-<a name="id712621"></a>
+<a name="id712909"></a>
           <a href="sph_bessel.html#math_toolkit.special.bessel.sph_bessel.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -116,7 +116,7 @@
           refer to these functions for accuracy data.
         </p>
 <a name="math_toolkit.special.bessel.sph_bessel.implementation"></a><h5>
-<a name="id712670"></a>
+<a name="id712959"></a>
           <a href="sph_bessel.html#math_toolkit.special.bessel.sph_bessel.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         of the First Kind - Legendre Form</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.ellint.ellint_1.synopsis"></a><h6>
-<a name="id718362"></a>
+<a name="id718650"></a>
           <a href="ellint_1.html#math_toolkit.special.ellint.ellint_1.synopsis">Synopsis</a>
         </h6>
 <p>
@@ -55,7 +55,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.ellint.ellint_1.description"></a><h6>
-<a name="id718925"></a>
+<a name="id719213"></a>
           <a href="ellint_1.html#math_toolkit.special.ellint.ellint_1.description">Description</a>
         </h6>
 <p>
@@ -123,7 +123,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.ellint.ellint_1.accuracy"></a><h6>
-<a name="id719584"></a>
+<a name="id719873"></a>
           <a href="ellint_1.html#math_toolkit.special.ellint.ellint_1.accuracy">Accuracy</a>
         </h6>
 <p>
@@ -134,7 +134,7 @@
           All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id719618"></a><p class="title"><b>Table 40. Errors Rates in the Elliptic Integrals of the
+<a name="id719906"></a><p class="title"><b>Table 41. Errors Rates in the Elliptic Integrals of the
         First Kind</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in the Elliptic Integrals of the
         First Kind">
@@ -237,7 +237,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.ellint.ellint_1.testing"></a><h6>
-<a name="id719780"></a>
+<a name="id720069"></a>
           <a href="ellint_1.html#math_toolkit.special.ellint.ellint_1.testing">Testing</a>
         </h6>
 <p>
@@ -247,7 +247,7 @@
           this implementation.
         </p>
 <a name="math_toolkit.special.ellint.ellint_1.implementation"></a><h6>
-<a name="id719820"></a>
+<a name="id720108"></a>
           <a href="ellint_1.html#math_toolkit.special.ellint.ellint_1.implementation">Implementation</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         of the Second Kind - Legendre Form</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.ellint.ellint_2.synopsis"></a><h6>
-<a name="id719936"></a>
+<a name="id720224"></a>
           <a href="ellint_2.html#math_toolkit.special.ellint.ellint_2.synopsis">Synopsis</a>
         </h6>
 <p>
@@ -55,7 +55,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.ellint.ellint_2.description"></a><h6>
-<a name="id720497"></a>
+<a name="id720786"></a>
           <a href="ellint_2.html#math_toolkit.special.ellint.ellint_2.description">Description</a>
         </h6>
 <p>
@@ -123,7 +123,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.ellint.ellint_2.accuracy"></a><h6>
-<a name="id721156"></a>
+<a name="id721444"></a>
           <a href="ellint_2.html#math_toolkit.special.ellint.ellint_2.accuracy">Accuracy</a>
         </h6>
 <p>
@@ -134,7 +134,7 @@
           All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id721190"></a><p class="title"><b>Table 41. Errors Rates in the Elliptic Integrals of the
+<a name="id721478"></a><p class="title"><b>Table 42. Errors Rates in the Elliptic Integrals of the
         Second Kind</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in the Elliptic Integrals of the
         Second Kind">
@@ -237,7 +237,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.ellint.ellint_2.testing"></a><h6>
-<a name="id721353"></a>
+<a name="id721641"></a>
           <a href="ellint_2.html#math_toolkit.special.ellint.ellint_2.testing">Testing</a>
         </h6>
 <p>
@@ -247,7 +247,7 @@
           this implementation.
         </p>
 <a name="math_toolkit.special.ellint.ellint_2.implementation"></a><h6>
-<a name="id721392"></a>
+<a name="id721680"></a>
           <a href="ellint_2.html#math_toolkit.special.ellint.ellint_2.implementation">Implementation</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         of the Third Kind - Legendre Form</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.ellint.ellint_3.synopsis"></a><h6>
-<a name="id721508"></a>
+<a name="id721796"></a>
           <a href="ellint_3.html#math_toolkit.special.ellint.ellint_3.synopsis">Synopsis</a>
         </h6>
 <p>
@@ -55,7 +55,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.ellint.ellint_3.description"></a><h6>
-<a name="id722207"></a>
+<a name="id722496"></a>
           <a href="ellint_3.html#math_toolkit.special.ellint.ellint_3.description">Description</a>
         </h6>
 <p>
@@ -135,7 +135,7 @@
           [opitonal_policy]
         </p>
 <a name="math_toolkit.special.ellint.ellint_3.accuracy"></a><h6>
-<a name="id723051"></a>
+<a name="id723339"></a>
           <a href="ellint_3.html#math_toolkit.special.ellint.ellint_3.accuracy">Accuracy</a>
         </h6>
 <p>
@@ -146,7 +146,7 @@
           All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id723085"></a><p class="title"><b>Table 42. Errors Rates in the Elliptic Integrals of the
+<a name="id723373"></a><p class="title"><b>Table 43. Errors Rates in the Elliptic Integrals of the
         Third Kind</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in the Elliptic Integrals of the
         Third Kind">
@@ -249,7 +249,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.ellint.ellint_3.testing"></a><h6>
-<a name="id723248"></a>
+<a name="id723536"></a>
           <a href="ellint_3.html#math_toolkit.special.ellint.ellint_3.testing">Testing</a>
         </h6>
 <p>
@@ -259,7 +259,7 @@
           this implementation.
         </p>
 <a name="math_toolkit.special.ellint.ellint_3.implementation"></a><h6>
-<a name="id723286"></a>
+<a name="id723574"></a>
           <a href="ellint_3.html#math_toolkit.special.ellint.ellint_3.implementation">Implementation</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Integrals - Carlson Form</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.ellint.ellint_carlson.synopsis"></a><h6>
-<a name="id714242"></a>
+<a name="id714531"></a>
           <a href="ellint_carlson.html#math_toolkit.special.ellint.ellint_carlson.synopsis">Synopsis</a>
         </h6>
 <p>
@@ -100,7 +100,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.ellint.ellint_carlson.description"></a><h6>
-<a name="id716013"></a>
+<a name="id716301"></a>
           <a href="ellint_carlson.html#math_toolkit.special.ellint.ellint_carlson.description">Description</a>
         </h6>
 <p>
@@ -236,7 +236,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/ellint18.png"></span>
         </p>
 <a name="math_toolkit.special.ellint.ellint_carlson.testing"></a><h6>
-<a name="id717782"></a>
+<a name="id718070"></a>
           <a href="ellint_carlson.html#math_toolkit.special.ellint.ellint_carlson.testing">Testing</a>
         </h6>
 <p>
@@ -265,7 +265,7 @@
           to verify their correctness: see the above Carlson paper for details.
         </p>
 <a name="math_toolkit.special.ellint.ellint_carlson.accuracy"></a><h6>
-<a name="id717852"></a>
+<a name="id718140"></a>
           <a href="ellint_carlson.html#math_toolkit.special.ellint.ellint_carlson.accuracy">Accuracy</a>
         </h6>
 <p>
@@ -276,7 +276,7 @@
           All values are relative errors in units of epsilon.
         </p>
 <div class="table">
-<a name="id717886"></a><p class="title"><b>Table 39. Errors Rates in the Carlson Elliptic Integrals</b></p>
+<a name="id718175"></a><p class="title"><b>Table 40. Errors Rates in the Carlson Elliptic Integrals</b></p>
 <div class="table-contents"><table class="table" summary="Errors Rates in the Carlson Elliptic Integrals">
 <colgroup>
 <col>
@@ -419,7 +419,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.ellint.ellint_carlson.implementation"></a><h6>
-<a name="id718117"></a>
+<a name="id718405"></a>
           <a href="ellint_carlson.html#math_toolkit.special.ellint.ellint_carlson.implementation">Implementation</a>
         </h6>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -61,14 +61,14 @@
           Elliptic integral</a>.
         </p>
 <a name="math_toolkit.special.ellint.ellint_intro.notation"></a><h5>
-<a name="id712899"></a>
+<a name="id713188"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.notation">Notation</a>
         </h5>
 <p>
           All variables are real numbers unless otherwise noted.
         </p>
 <a name="ellint_def"></a><a name="math_toolkit.special.ellint.ellint_intro.definition"></a><h5>
-<a name="id712936"></a>
+<a name="id713224"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.definition">Definition</a>
         </h5>
 <p>
@@ -257,7 +257,7 @@
 </td></tr>
 </table></div>
 <a name="ellint_theorem"></a><a name="math_toolkit.special.ellint.ellint_intro.duplication_theorem"></a><h5>
-<a name="id713691"></a>
+<a name="id713980"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.duplication_theorem">Duplication
           Theorem</a>
         </h5>
@@ -269,7 +269,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/ellint13.png"></span>
         </p>
 <a name="ellint_formula"></a><a name="math_toolkit.special.ellint.ellint_intro.carlson_s_formulas"></a><h5>
-<a name="id713766"></a>
+<a name="id714055"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.carlson_s_formulas">Carlson's
           Formulas</a>
         </h5>
@@ -287,7 +287,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/ellint15.png"></span>
         </p>
 <a name="math_toolkit.special.ellint.ellint_intro.numerical_algorithms"></a><h5>
-<a name="id713861"></a>
+<a name="id714149"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.numerical_algorithms">Numerical
           Algorithms</a>
         </h5>
@@ -301,7 +301,7 @@
           integrals with satisfactory precisions.
         </p>
 <a name="ellint_refs"></a><a name="math_toolkit.special.ellint.ellint_intro.references"></a><h5>
-<a name="id713923"></a>
+<a name="id714211"></a>
           <a href="ellint_intro.html#math_toolkit.special.ellint.ellint_intro.references">References</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_i.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_i.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_i.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Integral Ei</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.expint.expint_i.synopsis"></a><h5>
-<a name="id726202"></a>
+<a name="id726494"></a>
           <a href="expint_i.html#math_toolkit.special.expint.expint_i.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -63,7 +63,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.expint.expint_i.description"></a><h5>
-<a name="id726578"></a>
+<a name="id726870"></a>
           <a href="expint_i.html#math_toolkit.special.expint.expint_i.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -83,7 +83,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/expint_i.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.expint.expint_i.accuracy"></a><h5>
-<a name="id726856"></a>
+<a name="id727148"></a>
           <a href="expint_i.html#math_toolkit.special.expint.expint_i.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -95,7 +95,7 @@
           error</a>.
         </p>
 <div class="table">
-<a name="id726896"></a><p class="title"><b>Table 45. Errors In the Function expint(z)</b></p>
+<a name="id727188"></a><p class="title"><b>Table 46. Errors In the Function expint(z)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function expint(z)">
 <colgroup>
 <col>
@@ -207,7 +207,7 @@
           slightly over the range [4,6].
         </p>
 <a name="math_toolkit.special.expint.expint_i.testing"></a><h5>
-<a name="id727080"></a>
+<a name="id727372"></a>
           <a href="expint_i.html#math_toolkit.special.expint.expint_i.testing">Testing</a>
         </h5>
 <p>
@@ -222,7 +222,7 @@
           check.
         </p>
 <a name="math_toolkit.special.expint.expint_i.implementation"></a><h5>
-<a name="id727133"></a>
+<a name="id727425"></a>
           <a href="expint_i.html#math_toolkit.special.expint.expint_i.implementation">Implementation</a>
         </h5>
 <p>
@@ -253,7 +253,7 @@
           [-1,1]. Note that while the rational approximation over [0,6] converges
           rapidly to the minimax solution it is rather ill-conditioned in practice.
           Cody and Thacher
- <sup>[<a name="id727272" href="#ftn.id727272">1</a>]</sup>
+ <sup>[<a name="id727563" href="#ftn.id727563">1</a>]</sup>
           experienced the same issue and converted the polynomials into Chebeshev
           form to ensure stable computation. By experiment we found that the polynomials
           are just as stable in polynomial as Chebyshev form, <span class="emphasis"><em>provided</em></span>
@@ -284,7 +284,7 @@
         </p>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id727272" href="#id727272">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id727563" href="#id727563">1</a>] </sup>
               W. J. Cody and H. C. Thacher, Jr., Rational Chebyshev approximations
               for the exponential integral E<sub>1</sub>(x), Math. Comp. 22 (1968), 641-649,
               and W. J. Cody and H. C. Thacher, Jr., Chebyshev approximations for

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_n.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_n.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/expint/expint_n.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Integral En</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.expint.expint_n.synopsis"></a><h5>
-<a name="id724878"></a>
+<a name="id725169"></a>
           <a href="expint_n.html#math_toolkit.special.expint.expint_n.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -63,7 +63,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.expint.expint_n.description"></a><h5>
-<a name="id725287"></a>
+<a name="id725579"></a>
           <a href="expint_n.html#math_toolkit.special.expint.expint_n.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -83,7 +83,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/expint2.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.expint.expint_n.accuracy"></a><h5>
-<a name="id725600"></a>
+<a name="id725892"></a>
           <a href="expint_n.html#math_toolkit.special.expint.expint_n.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -94,7 +94,7 @@
           the one shown will have effectively zero error.
         </p>
 <div class="table">
-<a name="id725640"></a><p class="title"><b>Table 44. Errors In the Function expint(n, z)</b></p>
+<a name="id725931"></a><p class="title"><b>Table 45. Errors In the Function expint(n, z)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function expint(n, z)">
 <colgroup>
 <col>
@@ -225,7 +225,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.expint.expint_n.testing"></a><h5>
-<a name="id725857"></a>
+<a name="id726149"></a>
           <a href="expint_n.html#math_toolkit.special.expint.expint_n.testing">Testing</a>
         </h5>
 <p>
@@ -240,7 +240,7 @@
           check.
         </p>
 <a name="math_toolkit.special.expint.expint_n.implementation"></a><h5>
-<a name="id725910"></a>
+<a name="id726202"></a>
           <a href="expint_n.html#math_toolkit.special.expint.expint_n.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/c99.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/c99.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/c99.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.extern_c.c99"></a> C99 C Functions
 </h4></div></div></div>
 <a name="math_toolkit.special.extern_c.c99.supported_c99_functions"></a><h5>
-<a name="id753911"></a>
+<a name="id754402"></a>
           <a href="c99.html#math_toolkit.special.extern_c.c99.supported_c99_functions">Supported
           C99 Functions</a>
         </h5>
@@ -138,7 +138,7 @@
 </span><span class="identifier">acosh</span><span class="special">(</span><span class="number">2</span><span class="special">);</span> <span class="comment">// integer argument is treated as a double, returns double.
 </span></pre>
 <a name="math_toolkit.special.extern_c.c99.quick_reference"></a><h5>
-<a name="id756944"></a>
+<a name="id757436"></a>
           <a href="c99.html#math_toolkit.special.extern_c.c99.quick_reference">Quick
           Reference</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/tr1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/tr1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/tr1.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -288,7 +288,7 @@
           <a name="math_toolkit.special.extern_c.tr1.usage_recomendations"></a>
           </p>
 <h5>
-<a name="id744172"></a>
+<a name="id744657"></a>
             <a href="tr1.html#math_toolkit.special.extern_c.tr1.usage_recomendations">Usage
             Recomendations</a>
           </h5>
@@ -341,7 +341,7 @@
           <a name="math_toolkit.special.extern_c.tr1.supported_c99_functions"></a>
           </p>
 <h5>
-<a name="id744471"></a>
+<a name="id744962"></a>
             <a href="tr1.html#math_toolkit.special.extern_c.tr1.supported_c99_functions">Supported
             C99 Functions</a>
           </h5>
@@ -445,7 +445,7 @@
           <a name="math_toolkit.special.extern_c.tr1.supported_tr1_functions"></a>
           </p>
 <h5>
-<a name="id747271"></a>
+<a name="id747763"></a>
             <a href="tr1.html#math_toolkit.special.extern_c.tr1.supported_tr1_functions">Supported
             TR1 Functions</a>
           </h5>
@@ -584,7 +584,7 @@
           <a name="math_toolkit.special.extern_c.tr1.currently_unsupported_c99_functions"></a>
           </p>
 <h5>
-<a name="id751122"></a>
+<a name="id751614"></a>
             <a href="tr1.html#math_toolkit.special.extern_c.tr1.currently_unsupported_c99_functions">Currently
             Unsupported C99 Functions</a>
           </h5>
@@ -655,7 +655,7 @@
           <a name="math_toolkit.special.extern_c.tr1.currently_unsupported_tr1_functions"></a>
           </p>
 <h5>
-<a name="id753333"></a>
+<a name="id753824"></a>
             <a href="tr1.html#math_toolkit.special.extern_c.tr1.currently_unsupported_tr1_functions">Currently
             Unsupported TR1 Functions</a>
           </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/tr1_ref.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/tr1_ref.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/extern_c/tr1_ref.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Quick Reference</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.extern_c.tr1_ref.supported_tr1_functions"></a><h5>
-<a name="id760823"></a>
+<a name="id761314"></a>
           <a href="tr1_ref.html#math_toolkit.special.extern_c.tr1_ref.supported_tr1_functions">Supported
           TR1 Functions</a>
         </h5>
@@ -163,7 +163,7 @@
 </span><span class="identifier">expint</span><span class="special">(</span><span class="number">2</span><span class="special">);</span> <span class="comment">// integer argument is treated as a double, returns double.
 </span></pre>
 <a name="math_toolkit.special.extern_c.tr1_ref.quick_reference"></a><h5>
-<a name="id764829"></a>
+<a name="id765320"></a>
           <a href="tr1_ref.html#math_toolkit.special.extern_c.tr1_ref.quick_reference">Quick
           Reference</a>
         </h5>
@@ -495,7 +495,7 @@
           for the full template (header only) version of this function.
         </p>
 <a name="math_toolkit.special.extern_c.tr1_ref.currently_unsupported_tr1_functions"></a><h5>
-<a name="id769795"></a>
+<a name="id770287"></a>
           <a href="tr1_ref.html#math_toolkit.special.extern_c.tr1_ref.currently_unsupported_tr1_functions">Currently
           Unsupported TR1 Functions</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_binomial.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_binomial.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_binomial.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -65,7 +65,7 @@
           if the result is too large to represent in type T.
         </p>
 <a name="math_toolkit.special.factorials.sf_binomial.accuracy"></a><h5>
-<a name="id670594"></a>
+<a name="id670892"></a>
           <a href="sf_binomial.html#math_toolkit.special.factorials.sf_binomial.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -74,14 +74,14 @@
           function for larger arguments.
         </p>
 <a name="math_toolkit.special.factorials.sf_binomial.testing"></a><h5>
-<a name="id670635"></a>
+<a name="id670933"></a>
           <a href="sf_binomial.html#math_toolkit.special.factorials.sf_binomial.testing">Testing</a>
         </h5>
 <p>
           The spot tests for the binomial coefficients use data generated by functions.wolfram.com.
         </p>
 <a name="math_toolkit.special.factorials.sf_binomial.implementation"></a><h5>
-<a name="id670665"></a>
+<a name="id670963"></a>
           <a href="sf_binomial.html#math_toolkit.special.factorials.sf_binomial.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_double_factorial.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_double_factorial.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_double_factorial.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -64,7 +64,7 @@
           of i! is possible.
         </p>
 <a name="math_toolkit.special.factorials.sf_double_factorial.accuracy"></a><h5>
-<a name="id668917"></a>
+<a name="id669215"></a>
           <a href="sf_double_factorial.html#math_toolkit.special.factorials.sf_double_factorial.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -72,14 +72,14 @@
           so error rates should be no more than a couple of epsilon higher.
         </p>
 <a name="math_toolkit.special.factorials.sf_double_factorial.testing"></a><h5>
-<a name="id668948"></a>
+<a name="id669246"></a>
           <a href="sf_double_factorial.html#math_toolkit.special.factorials.sf_double_factorial.testing">Testing</a>
         </h5>
 <p>
           The spot tests for the double factorial use data generated by functions.wolfram.com.
         </p>
 <a name="math_toolkit.special.factorials.sf_double_factorial.implementation"></a><h5>
-<a name="id668980"></a>
+<a name="id669278"></a>
           <a href="sf_double_factorial.html#math_toolkit.special.factorials.sf_double_factorial.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_factorial.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_factorial.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_factorial.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.factorials.sf_factorial"></a> Factorial
 </h4></div></div></div>
 <a name="math_toolkit.special.factorials.sf_factorial.synopsis"></a><h5>
-<a name="id667459"></a>
+<a name="id667757"></a>
           <a href="sf_factorial.html#math_toolkit.special.factorials.sf_factorial.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -54,7 +54,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.factorials.sf_factorial.description"></a><h5>
-<a name="id667882"></a>
+<a name="id668180"></a>
           <a href="sf_factorial.html#math_toolkit.special.factorials.sf_factorial.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -112,7 +112,7 @@
           the size of further tables that depend on the factorials.
         </p>
 <a name="math_toolkit.special.factorials.sf_factorial.accuracy"></a><h5>
-<a name="id668396"></a>
+<a name="id668694"></a>
           <a href="sf_factorial.html#math_toolkit.special.factorials.sf_factorial.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -121,7 +121,7 @@
           will be the same as for tgamma.
         </p>
 <a name="math_toolkit.special.factorials.sf_factorial.testing"></a><h5>
-<a name="id668469"></a>
+<a name="id668766"></a>
           <a href="sf_factorial.html#math_toolkit.special.factorials.sf_factorial.testing">Testing</a>
         </h5>
 <p>
@@ -130,7 +130,7 @@
           function handle those cases already.
         </p>
 <a name="math_toolkit.special.factorials.sf_factorial.implementation"></a><h5>
-<a name="id668509"></a>
+<a name="id668806"></a>
           <a href="sf_factorial.html#math_toolkit.special.factorials.sf_factorial.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_falling_factorial.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_falling_factorial.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_falling_factorial.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -76,7 +76,7 @@
           the type of the result is T.
         </p>
 <a name="math_toolkit.special.factorials.sf_falling_factorial.accuracy"></a><h5>
-<a name="id670080"></a>
+<a name="id670378"></a>
           <a href="sf_falling_factorial.html#math_toolkit.special.factorials.sf_falling_factorial.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -84,14 +84,14 @@
           function.
         </p>
 <a name="math_toolkit.special.factorials.sf_falling_factorial.testing"></a><h5>
-<a name="id670118"></a>
+<a name="id670416"></a>
           <a href="sf_falling_factorial.html#math_toolkit.special.factorials.sf_falling_factorial.testing">Testing</a>
         </h5>
 <p>
           The spot tests for the falling factorials use data generated by functions.wolfram.com.
         </p>
 <a name="math_toolkit.special.factorials.sf_falling_factorial.implementation"></a><h5>
-<a name="id670150"></a>
+<a name="id670448"></a>
           <a href="sf_falling_factorial.html#math_toolkit.special.factorials.sf_falling_factorial.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_rising_factorial.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_rising_factorial.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_rising_factorial.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -80,7 +80,7 @@
           the type of the result is T.
         </p>
 <a name="math_toolkit.special.factorials.sf_rising_factorial.accuracy"></a><h5>
-<a name="id669503"></a>
+<a name="id669801"></a>
           <a href="sf_rising_factorial.html#math_toolkit.special.factorials.sf_rising_factorial.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -88,14 +88,14 @@
           function.
         </p>
 <a name="math_toolkit.special.factorials.sf_rising_factorial.testing"></a><h5>
-<a name="id669540"></a>
+<a name="id669839"></a>
           <a href="sf_rising_factorial.html#math_toolkit.special.factorials.sf_rising_factorial.testing">Testing</a>
         </h5>
 <p>
           The spot tests for the rising factorials use data generated by functions.wolfram.com.
         </p>
 <a name="math_toolkit.special.factorials.sf_rising_factorial.implementation"></a><h5>
-<a name="id669572"></a>
+<a name="id669870"></a>
           <a href="sf_rising_factorial.html#math_toolkit.special.factorials.sf_rising_factorial.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/fpclass.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/fpclass.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/fpclass.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Infinities and NaN's</a>
 </h3></div></div></div>
 <a name="math_toolkit.special.fpclass.synopsis"></a><h5>
-<a name="id739710"></a>
+<a name="id740192"></a>
         <a href="fpclass.html#math_toolkit.special.fpclass.synopsis">Synopsis</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">FP_ZERO</span> <span class="comment">/* implementation specific value */</span>
@@ -58,7 +58,7 @@
         to use these functions.
       </p>
 <a name="math_toolkit.special.fpclass.description"></a><h5>
-<a name="id740244"></a>
+<a name="id740726"></a>
         <a href="fpclass.html#math_toolkit.special.fpclass.description">Description</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/acosh.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/acosh.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/acosh.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/asinh.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/asinh.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/asinh.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/atanh.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/atanh.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/atanh.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/inv_hyper_over.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/inv_hyper_over.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/inv_hyper_over.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_advance.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_advance.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_advance.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -32,7 +32,7 @@
           number of ULP.
         </p>
 <a name="math_toolkit.special.next_float.float_advance.synopsis"></a><h5>
-<a name="id743341"></a>
+<a name="id743824"></a>
           <a href="float_advance.html#math_toolkit.special.next_float.float_advance.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -50,7 +50,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.next_float.float_advance.description___float_advance"></a><h5>
-<a name="id743572"></a>
+<a name="id744055"></a>
           <a href="float_advance.html#math_toolkit.special.next_float.float_advance.description___float_advance">Description
           - float_advance</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_distance.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_distance.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_distance.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
           different.
         </p>
 <a name="math_toolkit.special.next_float.float_distance.synopsis"></a><h5>
-<a name="id742821"></a>
+<a name="id743306"></a>
           <a href="float_distance.html#math_toolkit.special.next_float.float_distance.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -52,7 +52,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.next_float.float_distance.description___float_distance"></a><h5>
-<a name="id743054"></a>
+<a name="id743537"></a>
           <a href="float_distance.html#math_toolkit.special.next_float.float_distance.description___float_distance">Description
           - float_distance</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_next.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_next.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_next.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         the Next Greater Representable Value (float_next)</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.next_float.float_next.synopsis"></a><h5>
-<a name="id742065"></a>
+<a name="id742550"></a>
           <a href="float_next.html#math_toolkit.special.next_float.float_next.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -46,7 +46,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.next_float.float_next.description___float_next"></a><h5>
-<a name="id742280"></a>
+<a name="id742765"></a>
           <a href="float_next.html#math_toolkit.special.next_float.float_next.description___float_next">Description
           - float_next</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_prior.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_prior.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/float_prior.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         the Next Smaller Representable Value (float_prior)</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.next_float.float_prior.synopsis"></a><h5>
-<a name="id742433"></a>
+<a name="id742918"></a>
           <a href="float_prior.html#math_toolkit.special.next_float.float_prior.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -46,7 +46,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.next_float.float_prior.description___float_prior"></a><h5>
-<a name="id742648"></a>
+<a name="id743133"></a>
           <a href="float_prior.html#math_toolkit.special.next_float.float_prior.description___float_prior">Description
           - float_prior</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/nextafter.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/nextafter.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/nextafter.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         the Next Representable Value in a Specific Direction (nextafter)</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.next_float.nextafter.synopsis"></a><h5>
-<a name="id741333"></a>
+<a name="id741817"></a>
           <a href="nextafter.html#math_toolkit.special.next_float.nextafter.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -46,7 +46,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.next_float.nextafter.description___nextafter"></a><h5>
-<a name="id741565"></a>
+<a name="id742049"></a>
           <a href="nextafter.html#math_toolkit.special.next_float.nextafter.description___nextafter">Description
           - nextafter</a>
         </h5>
@@ -76,7 +76,7 @@
           returns an overflow_error.
         </p>
 <a name="math_toolkit.special.next_float.nextafter.examples___nextafter"></a><h5>
-<a name="id741688"></a>
+<a name="id742172"></a>
           <a href="nextafter.html#math_toolkit.special.next_float.nextafter.examples___nextafter">Examples
           - nextafter</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -71,7 +71,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/cbrt.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.powers.cbrt.accuracy"></a><h5>
-<a name="id729511"></a>
+<a name="id729803"></a>
           <a href="cbrt.html#math_toolkit.special.powers.cbrt.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -79,7 +79,7 @@
           should have approximately 2 epsilon accuracy.
         </p>
 <a name="math_toolkit.special.powers.cbrt.testing"></a><h5>
-<a name="id729553"></a>
+<a name="id729844"></a>
           <a href="cbrt.html#math_toolkit.special.powers.cbrt.testing">Testing</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/ct_pow.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/ct_pow.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/ct_pow.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -32,7 +32,7 @@
           computes the compile-time integral power of a run-time base.
         </p>
 <a name="math_toolkit.special.powers.ct_pow.synopsis"></a><h5>
-<a name="id731217"></a>
+<a name="id731509"></a>
           <a href="ct_pow.html#math_toolkit.special.powers.ct_pow.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -49,7 +49,7 @@
 <span class="special">}}</span>
 </pre>
 <a name="math_toolkit.special.powers.ct_pow.rationale_and_usage"></a><h5>
-<a name="id731580"></a>
+<a name="id731872"></a>
           <a href="ct_pow.html#math_toolkit.special.powers.ct_pow.rationale_and_usage">Rationale
           and Usage</a>
         </h5>
@@ -91,13 +91,12 @@
           Only 3 different products were actually computed.
         </p>
 <a name="math_toolkit.special.powers.ct_pow.return_type"></a><h5>
-<a name="id731986"></a>
+<a name="id732278"></a>
           <a href="ct_pow.html#math_toolkit.special.powers.ct_pow.return_type">Return Type</a>
         </h5>
 <p>
           The return type of these functions is computed using the <a href="../../main_overview/result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
- type calculation rules</em></span></a> when T1 and T2 are different types.
- For example:
+ type calculation rules</em></span></a>. For example:
         </p>
 <div class="itemizedlist"><ul type="disc">
 <li>
@@ -113,7 +112,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.special.powers.ct_pow.policies"></a><h5>
-<a name="id732114"></a>
+<a name="id732406"></a>
           <a href="ct_pow.html#math_toolkit.special.powers.ct_pow.policies">Policies</a>
         </h5>
 <p>
@@ -127,18 +126,25 @@
 <p>
         </p>
 <a name="math_toolkit.special.powers.ct_pow.error_handling"></a><h5>
-<a name="id732167"></a>
+<a name="id732458"></a>
           <a href="ct_pow.html#math_toolkit.special.powers.ct_pow.error_handling">Error
           Handling</a>
         </h5>
 <p>
- In the case where <code class="computeroutput"><span class="identifier">pow</span></code> is
- called with a null base and a negative exponent, an error occurs since
- this operation is a division by 0 (it equals to 1/0). The error raised
- is an overflow_error following the
- <a href="../../../sf_and_dist/html/math_toolkit/main_overview/error_handling.html" target="_top">general
- policies of error handling in Boost.Math</a>.
+ Two cases of errors can occur when using <code class="computeroutput"><span class="identifier">pow</span></code>:
         </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ In case of null base and negative exponent, an overflow_error
+ occurs since this operation is a division by 0 (it equals to 1/0).
+ </li>
+<li>
+ In case of null exponent, an indeterminate_result_error
+ occurs since the result of a null power is indeterminate. Those errors
+ follow the <a href="../../main_overview/error_handling.html" title="Error Handling">general
+ policies of error handling in Boost.Math</a>.
+ </li>
+</ul></div>
 <p>
           The default overflow error policy is <code class="computeroutput"><span class="identifier">throw_on_error</span></code>.
           A call like <code class="computeroutput"><span class="identifier">pow</span><span class="special">&lt;-</span><span class="number">2</span><span class="special">&gt;(</span><span class="number">0</span><span class="special">)</span></code> will thus throw a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">overflow_error</span></code>
@@ -163,6 +169,27 @@
           </li>
 </ul></div>
 <p>
+ The default indeterminate result error policy is <code class="computeroutput"><span class="identifier">ignore_error</span></code>,
+ which for this function returns 1 since it's the most commonly chosen result
+ for a power of 0. Here again, other error handling policies can be used:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+<code class="computeroutput"><span class="identifier">throw_on_error</span></code>: Throws
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">domain_error</span></code>
+</li>
+<li>
+<code class="computeroutput"><span class="identifier">errno_on_error</span></code>: Sets
+ <code class="computeroutput"><span class="special">::</span><span class="identifier">errno</span></code>
+ to <code class="computeroutput"><span class="identifier">EDOM</span></code> and returns 1.
+ </li>
+<li>
+<code class="computeroutput"><span class="identifier">user_error</span></code>: Returns the
+ result of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">policies</span><span class="special">::</span><span class="identifier">user_indeterminate_result_error</span></code>: this
+ function must be defined by the user.
+ </li>
+</ul></div>
+<p>
           Here is an example of error handling customization where we want to specify
           the result that has to be returned in case of error. We will thus use the
           <code class="computeroutput"><span class="identifier">user_error</span></code> policy, by passing
@@ -204,7 +231,7 @@
 <span class="keyword">double</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">pow</span><span class="special">&lt;-</span><span class="number">5</span><span class="special">&gt;(</span><span class="identifier">base</span><span class="special">);</span>
 </pre>
 <a name="math_toolkit.special.powers.ct_pow.acknowledgements"></a><h5>
-<a name="id733153"></a>
+<a name="id733633"></a>
           <a href="ct_pow.html#math_toolkit.special.powers.ct_pow.acknowledgements">Acknowledgements</a>
         </h5>
 <p>
@@ -215,7 +242,7 @@
 improving the implementation.
         </p>
 <a name="math_toolkit.special.powers.ct_pow.references"></a><h5>
-<a name="id733191"></a>
+<a name="id733671"></a>
           <a href="ct_pow.html#math_toolkit.special.powers.ct_pow.references">References</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -80,7 +80,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/expm1.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.powers.expm1.accuracy"></a><h5>
-<a name="id729011"></a>
+<a name="id729302"></a>
           <a href="expm1.html#math_toolkit.special.powers.expm1.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -88,7 +88,7 @@
           should have approximately 1 epsilon accuracy.
         </p>
 <a name="math_toolkit.special.powers.expm1.testing"></a><h5>
-<a name="id729052"></a>
+<a name="id729344"></a>
           <a href="expm1.html#math_toolkit.special.powers.expm1.testing">Testing</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -58,7 +58,7 @@
           representable.
         </p>
 <a name="math_toolkit.special.powers.hypot.implementation"></a><h5>
-<a name="id731094"></a>
+<a name="id731385"></a>
           <a href="hypot.html#math_toolkit.special.powers.hypot.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -93,7 +93,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/log1p.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.powers.log1p.accuracy"></a><h5>
-<a name="id728415"></a>
+<a name="id728707"></a>
           <a href="log1p.html#math_toolkit.special.powers.log1p.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -101,7 +101,7 @@
           should have approximately 1 epsilon accuracy.
         </p>
 <a name="math_toolkit.special.powers.log1p.testing"></a><h5>
-<a name="id728456"></a>
+<a name="id728748"></a>
           <a href="log1p.html#math_toolkit.special.powers.log1p.testing">Testing</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -74,14 +74,14 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/powm1.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.powers.powm1.accuracy"></a><h5>
-<a name="id730654"></a>
+<a name="id730945"></a>
           <a href="powm1.html#math_toolkit.special.powers.powm1.accuracy">Accuracy</a>
         </h5>
 <p>
           Should have approximately 2-3 epsilon accuracy.
         </p>
 <a name="math_toolkit.special.powers.powm1.testing"></a><h5>
-<a name="id730684"></a>
+<a name="id730974"></a>
           <a href="powm1.html#math_toolkit.special.powers.powm1.testing">Testing</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -76,7 +76,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/sqrt1pm1.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.powers.sqrt1pm1.accuracy"></a><h5>
-<a name="id730086"></a>
+<a name="id730377"></a>
           <a href="sqrt1pm1.html#math_toolkit.special.powers.sqrt1pm1.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -84,7 +84,7 @@
           should have approximately 3 epsilon accuracy.
         </p>
 <a name="math_toolkit.special.powers.sqrt1pm1.testing"></a><h5>
-<a name="id730128"></a>
+<a name="id730418"></a>
           <a href="sqrt1pm1.html#math_toolkit.special.powers.sqrt1pm1.testing">Testing</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/modf.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/modf.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/modf.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/round.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/round.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/round.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/trunc.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/trunc.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/rounding/trunc.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_derivative.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_derivative.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_derivative.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         of the Incomplete Beta Function</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_beta.beta_derivative.synopsis"></a><h5>
-<a name="id684315"></a>
+<a name="id684605"></a>
           <a href="beta_derivative.html#math_toolkit.special.sf_beta.beta_derivative.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -49,7 +49,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_beta.beta_derivative.description"></a><h5>
-<a name="id684774"></a>
+<a name="id685064"></a>
           <a href="beta_derivative.html#math_toolkit.special.sf_beta.beta_derivative.description">Description</a>
         </h5>
 <p>
@@ -76,14 +76,14 @@
 <p>
         </p>
 <a name="math_toolkit.special.sf_beta.beta_derivative.accuracy"></a><h5>
-<a name="id684891"></a>
+<a name="id685181"></a>
           <a href="beta_derivative.html#math_toolkit.special.sf_beta.beta_derivative.accuracy">Accuracy</a>
         </h5>
 <p>
           Almost identical to the incomplete beta function ibeta.
         </p>
 <a name="math_toolkit.special.sf_beta.beta_derivative.implementation"></a><h5>
-<a name="id684929"></a>
+<a name="id685219"></a>
           <a href="beta_derivative.html#math_toolkit.special.sf_beta.beta_derivative.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_function.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_function.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_function.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.sf_beta.beta_function"></a> Beta
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_beta.beta_function.synopsis"></a><h5>
-<a name="id670797"></a>
+<a name="id671095"></a>
           <a href="beta_function.html#math_toolkit.special.sf_beta.beta_function.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -48,7 +48,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_beta.beta_function.description"></a><h5>
-<a name="id671187"></a>
+<a name="id671485"></a>
           <a href="beta_function.html#math_toolkit.special.sf_beta.beta_function.description">Description</a>
         </h5>
 <p>
@@ -86,7 +86,7 @@
           type calculation rules</em></span></a> when T1 and T2 are different types.
         </p>
 <a name="math_toolkit.special.sf_beta.beta_function.accuracy"></a><h5>
-<a name="id671363"></a>
+<a name="id671661"></a>
           <a href="beta_function.html#math_toolkit.special.sf_beta.beta_function.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -98,7 +98,7 @@
           zero error</a>.
         </p>
 <div class="table">
-<a name="id671411"></a><p class="title"><b>Table 21. Peak Errors In the Beta Function</b></p>
+<a name="id671709"></a><p class="title"><b>Table 22. Peak Errors In the Beta Function</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Beta Function">
 <colgroup>
 <col>
@@ -244,7 +244,7 @@
           very small.
         </p>
 <a name="math_toolkit.special.sf_beta.beta_function.testing"></a><h5>
-<a name="id671656"></a>
+<a name="id671954"></a>
           <a href="beta_function.html#math_toolkit.special.sf_beta.beta_function.testing">Testing</a>
         </h5>
 <p>
@@ -253,7 +253,7 @@
           at 1000-bit precision.
         </p>
 <a name="math_toolkit.special.sf_beta.beta_function.implementation"></a><h5>
-<a name="id671694"></a>
+<a name="id671992"></a>
           <a href="beta_function.html#math_toolkit.special.sf_beta.beta_function.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_function.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_function.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_function.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Beta Functions</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_beta.ibeta_function.synopsis"></a><h5>
-<a name="id672017"></a>
+<a name="id672315"></a>
           <a href="ibeta_function.html#math_toolkit.special.sf_beta.ibeta_function.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -67,7 +67,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_beta.ibeta_function.description"></a><h5>
-<a name="id673399"></a>
+<a name="id673697"></a>
           <a href="ibeta_function.html#math_toolkit.special.sf_beta.ibeta_function.description">Description</a>
         </h5>
 <p>
@@ -153,7 +153,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/ibeta2.png"></span>
         </p>
 <a name="math_toolkit.special.sf_beta.ibeta_function.accuracy"></a><h5>
-<a name="id674953"></a>
+<a name="id675252"></a>
           <a href="ibeta_function.html#math_toolkit.special.sf_beta.ibeta_function.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -172,7 +172,7 @@
           with the wider exponent range of the long double types.
         </p>
 <div class="table">
-<a name="id675011"></a><p class="title"><b>Table 22. Errors In the Function ibeta(a,b,x)</b></p>
+<a name="id675310"></a><p class="title"><b>Table 23. Errors In the Function ibeta(a,b,x)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function ibeta(a,b,x)">
 <colgroup>
 <col>
@@ -359,7 +359,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id675359"></a><p class="title"><b>Table 23. Errors In the Function ibetac(a,b,x)</b></p>
+<a name="id675658"></a><p class="title"><b>Table 24. Errors In the Function ibetac(a,b,x)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function ibetac(a,b,x)">
 <colgroup>
 <col>
@@ -526,7 +526,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id675644"></a><p class="title"><b>Table 24. Errors In the Function beta(a, b, x)</b></p>
+<a name="id675943"></a><p class="title"><b>Table 25. Errors In the Function beta(a, b, x)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function beta(a, b, x)">
 <colgroup>
 <col>
@@ -693,7 +693,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id675925"></a><p class="title"><b>Table 25. Errors In the Function betac(a,b,x)</b></p>
+<a name="id676224"></a><p class="title"><b>Table 26. Errors In the Function betac(a,b,x)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function betac(a,b,x)">
 <colgroup>
 <col>
@@ -860,7 +860,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.sf_beta.ibeta_function.testing"></a><h5>
-<a name="id676219"></a>
+<a name="id676518"></a>
           <a href="ibeta_function.html#math_toolkit.special.sf_beta.ibeta_function.testing">Testing</a>
         </h5>
 <p>
@@ -878,7 +878,7 @@
           have test data that is fully independent of the code.
         </p>
 <a name="math_toolkit.special.sf_beta.ibeta_function.implementation"></a><h5>
-<a name="id676282"></a>
+<a name="id676580"></a>
           <a href="ibeta_function.html#math_toolkit.special.sf_beta.ibeta_function.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_inv_function.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_inv_function.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_inv_function.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -87,7 +87,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_beta.ibeta_inv_function.description"></a><h5>
-<a name="id679429"></a>
+<a name="id679727"></a>
           <a href="ibeta_inv_function.html#math_toolkit.special.sf_beta.ibeta_inv_function.description">Description</a>
         </h5>
 <p>
@@ -323,7 +323,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.sf_beta.ibeta_inv_function.accuracy"></a><h5>
-<a name="id683148"></a>
+<a name="id683446"></a>
           <a href="ibeta_inv_function.html#math_toolkit.special.sf_beta.ibeta_inv_function.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -335,7 +335,7 @@
           or <code class="computeroutput"><span class="number">1</span></code>.
         </p>
 <a name="math_toolkit.special.sf_beta.ibeta_inv_function.testing"></a><h5>
-<a name="id683214"></a>
+<a name="id683512"></a>
           <a href="ibeta_inv_function.html#math_toolkit.special.sf_beta.ibeta_inv_function.testing">Testing</a>
         </h5>
 <p>
@@ -359,7 +359,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.special.sf_beta.ibeta_inv_function.implementation_of_ibeta_inv_and_ibetac_inv"></a><h5>
-<a name="id683292"></a>
+<a name="id683590"></a>
           <a href="ibeta_inv_function.html#math_toolkit.special.sf_beta.ibeta_inv_function.implementation_of_ibeta_inv_and_ibetac_inv">Implementation
           of ibeta_inv and ibetac_inv</a>
         </h5>
@@ -527,7 +527,7 @@
           rapidly converges on the true value.
         </p>
 <a name="math_toolkit.special.sf_beta.ibeta_inv_function.implementation_of_inverses_on_the_a_and_b_parameters"></a><h5>
-<a name="id684213"></a>
+<a name="id684503"></a>
           <a href="ibeta_inv_function.html#math_toolkit.special.sf_beta.ibeta_inv_function.implementation_of_inverses_on_the_a_and_b_parameters">Implementation
           of inverses on the a and b parameters</a>
         </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Functions</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_erf.error_function.synopsis"></a><h5>
-<a name="id685006"></a>
+<a name="id685295"></a>
           <a href="error_function.html#math_toolkit.special.sf_erf.error_function.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -69,7 +69,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.sf_erf.error_function.description"></a><h5>
-<a name="id685552"></a>
+<a name="id685842"></a>
           <a href="error_function.html#math_toolkit.special.sf_erf.error_function.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -106,7 +106,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/erfc.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.sf_erf.error_function.accuracy"></a><h5>
-<a name="id686089"></a>
+<a name="id686379"></a>
           <a href="error_function.html#math_toolkit.special.sf_erf.error_function.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -119,7 +119,7 @@
           the one shown will have effectively zero error.
         </p>
 <div class="table">
-<a name="id686151"></a><p class="title"><b>Table 26. Errors In the Function erf(z)</b></p>
+<a name="id686440"></a><p class="title"><b>Table 27. Errors In the Function erf(z)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function erf(z)">
 <colgroup>
 <col>
@@ -325,7 +325,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id686524"></a><p class="title"><b>Table 27. Errors In the Function erfc(z)</b></p>
+<a name="id686814"></a><p class="title"><b>Table 28. Errors In the Function erfc(z)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function erfc(z)">
 <colgroup>
 <col>
@@ -531,7 +531,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.sf_erf.error_function.testing"></a><h5>
-<a name="id686907"></a>
+<a name="id687196"></a>
           <a href="error_function.html#math_toolkit.special.sf_erf.error_function.testing">Testing</a>
         </h5>
 <p>
@@ -546,7 +546,7 @@
           check.
         </p>
 <a name="math_toolkit.special.sf_erf.error_function.implementation"></a><h5>
-<a name="id686960"></a>
+<a name="id687249"></a>
           <a href="error_function.html#math_toolkit.special.sf_erf.error_function.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Inverses</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_erf.error_inv.synopsis"></a><h5>
-<a name="id687981"></a>
+<a name="id688270"></a>
           <a href="error_inv.html#math_toolkit.special.sf_erf.error_inv.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -69,7 +69,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.sf_erf.error_inv.description"></a><h5>
-<a name="id688527"></a>
+<a name="id688817"></a>
           <a href="error_inv.html#math_toolkit.special.sf_erf.error_inv.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -103,7 +103,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/erfc_inv.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.sf_erf.error_inv.accuracy"></a><h5>
-<a name="id689072"></a>
+<a name="id689361"></a>
           <a href="error_inv.html#math_toolkit.special.sf_erf.error_inv.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -113,7 +113,7 @@
           error functions</a>.
         </p>
 <a name="math_toolkit.special.sf_erf.error_inv.testing"></a><h5>
-<a name="id689112"></a>
+<a name="id689402"></a>
           <a href="error_inv.html#math_toolkit.special.sf_erf.error_inv.testing">Testing</a>
         </h5>
 <p>
@@ -135,7 +135,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.special.sf_erf.error_inv.implementation"></a><h5>
-<a name="id689180"></a>
+<a name="id689469"></a>
           <a href="error_inv.html#math_toolkit.special.sf_erf.error_inv.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/digamma.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/digamma.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/digamma.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.sf_gamma.digamma"></a> Digamma
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_gamma.digamma.synopsis"></a><h5>
-<a name="id655883"></a>
+<a name="id656170"></a>
           <a href="digamma.html#math_toolkit.special.sf_gamma.digamma.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -48,7 +48,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_gamma.digamma.description"></a><h5>
-<a name="id656204"></a>
+<a name="id656490"></a>
           <a href="digamma.html#math_toolkit.special.sf_gamma.digamma.description">Description</a>
         </h5>
 <p>
@@ -82,7 +82,7 @@
           T otherwise.
         </p>
 <a name="math_toolkit.special.sf_gamma.digamma.accuracy"></a><h5>
-<a name="id656364"></a>
+<a name="id656650"></a>
           <a href="digamma.html#math_toolkit.special.sf_gamma.digamma.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -270,7 +270,7 @@
           absolute error will remain very low.
         </p>
 <a name="math_toolkit.special.sf_gamma.digamma.testing"></a><h5>
-<a name="id656663"></a>
+<a name="id656954"></a>
           <a href="digamma.html#math_toolkit.special.sf_gamma.digamma.testing">Testing</a>
         </h5>
 <p>
@@ -280,7 +280,7 @@
           see below).
         </p>
 <a name="math_toolkit.special.sf_gamma.digamma.implementation"></a><h5>
-<a name="id656705"></a>
+<a name="id656997"></a>
           <a href="digamma.html#math_toolkit.special.sf_gamma.digamma.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_derivatives.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_derivatives.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_derivatives.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         of the Incomplete Gamma Function</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_gamma.gamma_derivatives.synopsis"></a><h5>
-<a name="id666822"></a>
+<a name="id667121"></a>
           <a href="gamma_derivatives.html#math_toolkit.special.sf_gamma.gamma_derivatives.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -49,7 +49,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_gamma.gamma_derivatives.description"></a><h5>
-<a name="id667213"></a>
+<a name="id667511"></a>
           <a href="gamma_derivatives.html#math_toolkit.special.sf_gamma.gamma_derivatives.description">Description</a>
         </h5>
 <p>
@@ -80,7 +80,7 @@
           otherwise the return type is simply T1.
         </p>
 <a name="math_toolkit.special.sf_gamma.gamma_derivatives.accuracy"></a><h5>
-<a name="id667337"></a>
+<a name="id667636"></a>
           <a href="gamma_derivatives.html#math_toolkit.special.sf_gamma.gamma_derivatives.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -88,7 +88,7 @@
           refer to the documentation for that function for more information.
         </p>
 <a name="math_toolkit.special.sf_gamma.gamma_derivatives.implementation"></a><h5>
-<a name="id667378"></a>
+<a name="id667676"></a>
           <a href="gamma_derivatives.html#math_toolkit.special.sf_gamma.gamma_derivatives.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_ratios.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_ratios.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_ratios.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -51,7 +51,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_gamma.gamma_ratios.description"></a><h5>
-<a name="id658076"></a>
+<a name="id658368"></a>
           <a href="gamma_ratios.html#math_toolkit.special.sf_gamma.gamma_ratios.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
@@ -117,7 +117,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/tgamma_delta_ratio.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.sf_gamma.gamma_ratios.accuracy"></a><h5>
-<a name="id658847"></a>
+<a name="id659138"></a>
           <a href="gamma_ratios.html#math_toolkit.special.sf_gamma.gamma_ratios.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -127,7 +127,7 @@
           <a href="../../backgrounders/relative_error.html#zero_error">effectively zero error</a>.
         </p>
 <div class="table">
-<a name="id658880"></a><p class="title"><b>Table 15. Errors In the Function tgamma_delta_ratio(a, delta)</b></p>
+<a name="id659172"></a><p class="title"><b>Table 16. Errors In the Function tgamma_delta_ratio(a, delta)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function tgamma_delta_ratio(a, delta)">
 <colgroup>
 <col>
@@ -230,7 +230,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id659041"></a><p class="title"><b>Table 16. Errors In the Function tgamma_ratio(a,
+<a name="id659332"></a><p class="title"><b>Table 17. Errors In the Function tgamma_ratio(a,
         b)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function tgamma_ratio(a,
         b)">
@@ -329,7 +329,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.sf_gamma.gamma_ratios.testing"></a><h5>
-<a name="id659203"></a>
+<a name="id659494"></a>
           <a href="gamma_ratios.html#math_toolkit.special.sf_gamma.gamma_ratios.testing">Testing</a>
         </h5>
 <p>
@@ -338,7 +338,7 @@
           a deliberately naive calculation of &#915;(x)/&#915;(y).
         </p>
 <a name="math_toolkit.special.sf_gamma.gamma_ratios.implementation"></a><h5>
-<a name="id659243"></a>
+<a name="id659536"></a>
           <a href="gamma_ratios.html#math_toolkit.special.sf_gamma.gamma_ratios.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Functions</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_gamma.igamma.synopsis"></a><h5>
-<a name="id659316"></a>
+<a name="id659609"></a>
           <a href="igamma.html#math_toolkit.special.sf_gamma.igamma.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -67,7 +67,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_gamma.igamma.description"></a><h5>
-<a name="id660423"></a>
+<a name="id660716"></a>
           <a href="igamma.html#math_toolkit.special.sf_gamma.igamma.description">Description</a>
         </h5>
 <p>
@@ -160,7 +160,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/igamma1.png"></span>
         </p>
 <a name="math_toolkit.special.sf_gamma.igamma.accuracy"></a><h5>
-<a name="id661746"></a>
+<a name="id662040"></a>
           <a href="igamma.html#math_toolkit.special.sf_gamma.igamma.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -185,7 +185,7 @@
           All values are in units of epsilon.
         </p>
 <div class="table">
-<a name="id661815"></a><p class="title"><b>Table 17. Errors In the Function gamma_p(a,z)</b></p>
+<a name="id662109"></a><p class="title"><b>Table 18. Errors In the Function gamma_p(a,z)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function gamma_p(a,z)">
 <colgroup>
 <col>
@@ -372,7 +372,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id662134"></a><p class="title"><b>Table 18. Errors In the Function gamma_q(a,z)</b></p>
+<a name="id662428"></a><p class="title"><b>Table 19. Errors In the Function gamma_q(a,z)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function gamma_q(a,z)">
 <colgroup>
 <col>
@@ -558,7 +558,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id662472"></a><p class="title"><b>Table 19. Errors In the Function tgamma_lower(a,z)</b></p>
+<a name="id662766"></a><p class="title"><b>Table 20. Errors In the Function tgamma_lower(a,z)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function tgamma_lower(a,z)">
 <colgroup>
 <col>
@@ -693,7 +693,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id662685"></a><p class="title"><b>Table 20. Errors In the Function tgamma(a,z)</b></p>
+<a name="id662979"></a><p class="title"><b>Table 21. Errors In the Function tgamma(a,z)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function tgamma(a,z)">
 <colgroup>
 <col>
@@ -828,7 +828,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.sf_gamma.igamma.testing"></a><h5>
-<a name="id662906"></a>
+<a name="id663200"></a>
           <a href="igamma.html#math_toolkit.special.sf_gamma.igamma.testing">Testing</a>
         </h5>
 <p>
@@ -844,7 +844,7 @@
           fraction (see below) is unstable for small a and z.
         </p>
 <a name="math_toolkit.special.sf_gamma.igamma.implementation"></a><h5>
-<a name="id662965"></a>
+<a name="id663258"></a>
           <a href="igamma.html#math_toolkit.special.sf_gamma.igamma.implementation">Implementation</a>
         </h5>
 <p>
@@ -1013,7 +1013,7 @@
           by Temme (see references below).
         </p>
 <a name="math_toolkit.special.sf_gamma.igamma.references"></a><h5>
-<a name="id663995"></a>
+<a name="id664286"></a>
           <a href="igamma.html#math_toolkit.special.sf_gamma.igamma.references">References</a>
         </h5>
 <div class="itemizedlist"><ul type="disc">

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma_inv.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma_inv.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma_inv.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Gamma Function Inverses</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_gamma.igamma_inv.synopsis"></a><h5>
-<a name="id664077"></a>
+<a name="id664368"></a>
           <a href="igamma_inv.html#math_toolkit.special.sf_gamma.igamma_inv.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -67,7 +67,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_gamma.igamma_inv.description"></a><h5>
-<a name="id665186"></a>
+<a name="id665477"></a>
           <a href="igamma_inv.html#math_toolkit.special.sf_gamma.igamma_inv.description">Description</a>
         </h5>
 <p>
@@ -173,7 +173,7 @@
           0</em></span>.
         </p>
 <a name="math_toolkit.special.sf_gamma.igamma_inv.accuracy"></a><h5>
-<a name="id666578"></a>
+<a name="id666868"></a>
           <a href="igamma_inv.html#math_toolkit.special.sf_gamma.igamma_inv.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -187,7 +187,7 @@
           functions.
         </p>
 <a name="math_toolkit.special.sf_gamma.igamma_inv.testing"></a><h5>
-<a name="id666632"></a>
+<a name="id666922"></a>
           <a href="igamma_inv.html#math_toolkit.special.sf_gamma.igamma_inv.testing">Testing</a>
         </h5>
 <p>
@@ -210,7 +210,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.special.sf_gamma.igamma_inv.implementation"></a><h5>
-<a name="id666707"></a>
+<a name="id666997"></a>
           <a href="igamma_inv.html#math_toolkit.special.sf_gamma.igamma_inv.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/lgamma.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/lgamma.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/lgamma.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.sf_gamma.lgamma"></a> Log Gamma
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_gamma.lgamma.synopsis"></a><h5>
-<a name="id653521"></a>
+<a name="id653810"></a>
           <a href="lgamma.html#math_toolkit.special.sf_gamma.lgamma.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -54,7 +54,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_gamma.lgamma.description"></a><h5>
-<a name="id654055"></a>
+<a name="id654344"></a>
           <a href="lgamma.html#math_toolkit.special.sf_gamma.lgamma.description">Description</a>
         </h5>
 <p>
@@ -98,7 +98,7 @@
           T otherwise.
         </p>
 <a name="math_toolkit.special.sf_gamma.lgamma.accuracy"></a><h5>
-<a name="id654257"></a>
+<a name="id654546"></a>
           <a href="lgamma.html#math_toolkit.special.sf_gamma.lgamma.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -349,7 +349,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.special.sf_gamma.lgamma.testing"></a><h5>
-<a name="id654781"></a>
+<a name="id655069"></a>
           <a href="lgamma.html#math_toolkit.special.sf_gamma.lgamma.testing">Testing</a>
         </h5>
 <p>
@@ -360,7 +360,7 @@
           Random tests in key problem areas are also used.
         </p>
 <a name="math_toolkit.special.sf_gamma.lgamma.implementation"></a><h5>
-<a name="id654816"></a>
+<a name="id655105"></a>
           <a href="lgamma.html#math_toolkit.special.sf_gamma.lgamma.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/tgamma.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/tgamma.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/tgamma.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.sf_gamma.tgamma"></a> Gamma
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_gamma.tgamma.synopsis"></a><h5>
-<a name="id651104"></a>
+<a name="id651392"></a>
           <a href="tgamma.html#math_toolkit.special.sf_gamma.tgamma.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -54,7 +54,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_gamma.tgamma.description"></a><h5>
-<a name="id651595"></a>
+<a name="id651882"></a>
           <a href="tgamma.html#math_toolkit.special.sf_gamma.tgamma.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -129,7 +129,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.sf_gamma.tgamma.accuracy"></a><h5>
-<a name="id652281"></a>
+<a name="id652568"></a>
           <a href="tgamma.html#math_toolkit.special.sf_gamma.tgamma.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -384,7 +384,7 @@
 </tbody>
 </table></div>
 <a name="math_toolkit.special.sf_gamma.tgamma.testing"></a><h5>
-<a name="id652816"></a>
+<a name="id653104"></a>
           <a href="tgamma.html#math_toolkit.special.sf_gamma.tgamma.testing">Testing</a>
         </h5>
 <p>
@@ -399,7 +399,7 @@
           a lanczos approximation accurate to around 100 decimal digits.
         </p>
 <a name="math_toolkit.special.sf_gamma.tgamma.implementation"></a><h5>
-<a name="id652909"></a>
+<a name="id653197"></a>
           <a href="tgamma.html#math_toolkit.special.sf_gamma.tgamma.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.sf_poly.hermite"></a> Hermite Polynomials
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_poly.hermite.synopsis"></a><h5>
-<a name="id697452"></a>
+<a name="id697741"></a>
           <a href="hermite.html#math_toolkit.special.sf_poly.hermite.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -51,7 +51,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_poly.hermite.description"></a><h5>
-<a name="id697959"></a>
+<a name="id698248"></a>
           <a href="hermite.html#math_toolkit.special.sf_poly.hermite.description">Description</a>
         </h5>
 <p>
@@ -136,7 +136,7 @@
 </dl>
 </div>
 <a name="math_toolkit.special.sf_poly.hermite.accuracy"></a><h5>
-<a name="id698972"></a>
+<a name="id699260"></a>
           <a href="hermite.html#math_toolkit.special.sf_poly.hermite.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -146,7 +146,7 @@
           zero error</a>.
         </p>
 <div class="table">
-<a name="id699002"></a><p class="title"><b>Table 33. Peak Errors In the Hermite Polynomial</b></p>
+<a name="id699291"></a><p class="title"><b>Table 34. Peak Errors In the Hermite Polynomial</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Hermite Polynomial">
 <colgroup>
 <col>
@@ -253,7 +253,7 @@
           is very close to a root.
         </p>
 <a name="math_toolkit.special.sf_poly.hermite.testing"></a><h5>
-<a name="id699179"></a>
+<a name="id699467"></a>
           <a href="hermite.html#math_toolkit.special.sf_poly.hermite.testing">Testing</a>
         </h5>
 <p>
@@ -263,7 +263,7 @@
           precision.
         </p>
 <a name="math_toolkit.special.sf_poly.hermite.implementation"></a><h5>
-<a name="id699218"></a>
+<a name="id699506"></a>
           <a href="hermite.html#math_toolkit.special.sf_poly.hermite.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Associated) Polynomials</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_poly.laguerre.synopsis"></a><h5>
-<a name="id694031"></a>
+<a name="id694321"></a>
           <a href="laguerre.html#math_toolkit.special.sf_poly.laguerre.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -62,7 +62,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_poly.laguerre.description"></a><h5>
-<a name="id694949"></a>
+<a name="id695238"></a>
           <a href="laguerre.html#math_toolkit.special.sf_poly.laguerre.description">Description</a>
         </h5>
 <p>
@@ -210,7 +210,7 @@
 </dl>
 </div>
 <a name="math_toolkit.special.sf_poly.laguerre.accuracy"></a><h5>
-<a name="id696986"></a>
+<a name="id697275"></a>
           <a href="laguerre.html#math_toolkit.special.sf_poly.laguerre.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -220,7 +220,7 @@
           zero error</a>.
         </p>
 <div class="table">
-<a name="id697017"></a><p class="title"><b>Table 31. Peak Errors In the Laguerre Polynomial</b></p>
+<a name="id697306"></a><p class="title"><b>Table 32. Peak Errors In the Laguerre Polynomial</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Laguerre Polynomial">
 <colgroup>
 <col>
@@ -320,7 +320,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id697183"></a><p class="title"><b>Table 32. Peak Errors In the Associated Laguerre
+<a name="id697472"></a><p class="title"><b>Table 33. Peak Errors In the Associated Laguerre
         Polynomial</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Associated Laguerre
         Polynomial">
@@ -429,7 +429,7 @@
           is very close to a root.
         </p>
 <a name="math_toolkit.special.sf_poly.laguerre.testing"></a><h5>
-<a name="id697360"></a>
+<a name="id697649"></a>
           <a href="laguerre.html#math_toolkit.special.sf_poly.laguerre.testing">Testing</a>
         </h5>
 <p>
@@ -439,7 +439,7 @@
           precision.
         </p>
 <a name="math_toolkit.special.sf_poly.laguerre.implementation"></a><h5>
-<a name="id697399"></a>
+<a name="id697688"></a>
           <a href="laguerre.html#math_toolkit.special.sf_poly.laguerre.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Associated) Polynomials</a>
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_poly.legendre.synopsis"></a><h5>
-<a name="id689700"></a>
+<a name="id689990"></a>
           <a href="legendre.html#math_toolkit.special.sf_poly.legendre.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -84,7 +84,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.sf_poly.legendre.description"></a><h5>
-<a name="id690877"></a>
+<a name="id691167"></a>
           <a href="legendre.html#math_toolkit.special.sf_poly.legendre.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -292,7 +292,7 @@
 </dl>
 </div>
 <a name="math_toolkit.special.sf_poly.legendre.accuracy"></a><h5>
-<a name="id693325"></a>
+<a name="id693614"></a>
           <a href="legendre.html#math_toolkit.special.sf_poly.legendre.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -302,7 +302,7 @@
           zero error</a>.
         </p>
 <div class="table">
-<a name="id693356"></a><p class="title"><b>Table 28. Peak Errors In the Legendre P Function</b></p>
+<a name="id693645"></a><p class="title"><b>Table 29. Peak Errors In the Legendre P Function</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Legendre P Function">
 <colgroup>
 <col>
@@ -431,7 +431,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id693554"></a><p class="title"><b>Table 29. Peak Errors In the Associated Legendre
+<a name="id693844"></a><p class="title"><b>Table 30. Peak Errors In the Associated Legendre
         P Function</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Associated Legendre
         P Function">
@@ -533,7 +533,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id693712"></a><p class="title"><b>Table 30. Peak Errors In the Legendre Q Function</b></p>
+<a name="id694001"></a><p class="title"><b>Table 31. Peak Errors In the Legendre Q Function</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Legendre Q Function">
 <colgroup>
 <col>
@@ -675,7 +675,7 @@
           given here.
         </p>
 <a name="math_toolkit.special.sf_poly.legendre.testing"></a><h5>
-<a name="id693938"></a>
+<a name="id694227"></a>
           <a href="legendre.html#math_toolkit.special.sf_poly.legendre.testing">Testing</a>
         </h5>
 <p>
@@ -685,7 +685,7 @@
           precision.
         </p>
 <a name="math_toolkit.special.sf_poly.legendre.implementation"></a><h5>
-<a name="id693977"></a>
+<a name="id694266"></a>
           <a href="legendre.html#math_toolkit.special.sf_poly.legendre.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.sf_poly.sph_harm"></a> Spherical Harmonics
 </h4></div></div></div>
 <a name="math_toolkit.special.sf_poly.sph_harm.synopsis"></a><h5>
-<a name="id699272"></a>
+<a name="id699560"></a>
           <a href="sph_harm.html#math_toolkit.special.sf_poly.sph_harm.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -60,7 +60,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.special.sf_poly.sph_harm.description"></a><h5>
-<a name="id700397"></a>
+<a name="id700686"></a>
           <a href="sph_harm.html#math_toolkit.special.sf_poly.sph_harm.description">Description</a>
         </h5>
 <p>
@@ -155,7 +155,7 @@
           <span class="inlinemediaobject"><img src="../../../../equations/spherical_2.png"></span>
         </p>
 <a name="math_toolkit.special.sf_poly.sph_harm.accuracy"></a><h5>
-<a name="id701669"></a>
+<a name="id701958"></a>
           <a href="sph_harm.html#math_toolkit.special.sf_poly.sph_harm.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -170,7 +170,7 @@
           All values are in units of epsilon.
         </p>
 <div class="table">
-<a name="id701708"></a><p class="title"><b>Table 34. Peak Errors In the Sperical Harmonic Functions</b></p>
+<a name="id701997"></a><p class="title"><b>Table 35. Peak Errors In the Sperical Harmonic Functions</b></p>
 <div class="table-contents"><table class="table" summary="Peak Errors In the Sperical Harmonic Functions">
 <colgroup>
 <col>
@@ -276,7 +276,7 @@
           arbitrarily large when the function is very close to a root.
         </p>
 <a name="math_toolkit.special.sf_poly.sph_harm.testing"></a><h5>
-<a name="id701888"></a>
+<a name="id702177"></a>
           <a href="sph_harm.html#math_toolkit.special.sf_poly.sph_harm.testing">Testing</a>
         </h5>
 <p>
@@ -286,7 +286,7 @@
           precision.
         </p>
 <a name="math_toolkit.special.sf_poly.sph_harm.implementation"></a><h5>
-<a name="id706194"></a>
+<a name="id702216"></a>
           <a href="sph_harm.html#math_toolkit.special.sf_poly.sph_harm.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_overview.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_overview.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_pi.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_pi.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_pi.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinhc_pi.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinhc_pi.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/sinc/sinhc_pi.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/special/zetas/zeta.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.special.zetas.zeta"></a> Riemann Zeta Function
 </h4></div></div></div>
 <a name="math_toolkit.special.zetas.zeta.synopsis"></a><h5>
-<a name="id723558"></a>
+<a name="id723848"></a>
           <a href="zeta.html#math_toolkit.special.zetas.zeta.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -62,7 +62,7 @@
 <p>
         </p>
 <a name="math_toolkit.special.zetas.zeta.description"></a><h5>
-<a name="id723933"></a>
+<a name="id724223"></a>
           <a href="zeta.html#math_toolkit.special.zetas.zeta.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -85,7 +85,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/zeta2.png" align="middle"></span>
         </p>
 <a name="math_toolkit.special.zetas.zeta.accuracy"></a><h5>
-<a name="id724244"></a>
+<a name="id724534"></a>
           <a href="zeta.html#math_toolkit.special.zetas.zeta.accuracy">Accuracy</a>
         </h5>
 <p>
@@ -97,7 +97,7 @@
           shown will have effectively zero error.
         </p>
 <div class="table">
-<a name="id724291"></a><p class="title"><b>Table 43. Errors In the Function zeta(z)</b></p>
+<a name="id724580"></a><p class="title"><b>Table 44. Errors In the Function zeta(z)</b></p>
 <div class="table-contents"><table class="table" summary="Errors In the Function zeta(z)">
 <colgroup>
 <col>
@@ -234,7 +234,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="math_toolkit.special.zetas.zeta.testing"></a><h5>
-<a name="id724518"></a>
+<a name="id724808"></a>
           <a href="zeta.html#math_toolkit.special.zetas.zeta.testing">Testing</a>
         </h5>
 <p>
@@ -249,7 +249,7 @@
           check.
         </p>
 <a name="math_toolkit.special.zetas.zeta.implementation"></a><h5>
-<a name="id724571"></a>
+<a name="id724860"></a>
           <a href="zeta.html#math_toolkit.special.zetas.zeta.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/compilers.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/compilers.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/compilers.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -37,7 +37,7 @@
 <p>
         </p>
 <div class="table">
-<a name="id863169"></a><p class="title"><b>Table 54. Supported/Tested Compilers</b></p>
+<a name="id865953"></a><p class="title"><b>Table 55. Supported/Tested Compilers</b></p>
 <div class="table-contents"><table class="table" summary="Supported/Tested Compilers">
 <colgroup>
 <col>
@@ -540,7 +540,7 @@
 </div>
 <p><br class="table-break"> </p>
 <div class="table">
-<a name="id863962"></a><p class="title"><b>Table 55. Unsupported Compilers</b></p>
+<a name="id866746"></a><p class="title"><b>Table 56. Unsupported Compilers</b></p>
 <div class="table-contents"><table class="table" summary="Unsupported Compilers">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/credits.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/credits.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/credits.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,8 +13,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/history1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/history1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/history1.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,57 +30,45 @@
         <a name="math_toolkit.status.history1.boost_1_36_0"></a>
         </p>
 <h5>
-<a name="id862624"></a>
+<a name="id865502"></a>
           <a href="history1.html#math_toolkit.status.history1.boost_1_36_0">Boost-1.36.0</a>
         </h5>
 <p>
         </p>
 <div class="itemizedlist"><ul type="disc">
 <li>
- Added <a href="../dist/dist_ref/dists/nc_chi_squared_dist.html" title="Noncentral Chi-Squared Distribution">Noncentral
- Chi Squared Distribution</a>.
+ Added Noncentral Chi Squared Distribution.
           </li>
 <li>
- Added <a href="../dist/dist_ref/dists/nc_beta_dist.html" title="Noncentral Beta Distribution">Noncentral
- Beta Distribution</a>.
+ Added Noncentral Beta Distribution.
           </li>
 <li>
- Added <a href="../dist/dist_ref/dists/nc_f_dist.html" title="Noncentral F Distribution">Noncentral
- F Distribution</a>.
+ Added Noncentral F Distribution.
           </li>
 <li>
- Added <a href="../dist/dist_ref/dists/nc_t_dist.html" title="Noncentral T Distribution">Noncentral
- T Distribution</a>.
+ Added Noncentral T Distribution.
           </li>
 <li>
- Added <a href="../special/expint.html" title="Exponential Integrals">Exponential Integral
- Functions</a>.
+ Added Exponential Integral Functions.
           </li>
 <li>
- Added zeta Function.
+ Added Zeta Function.
           </li>
 <li>
- Added <a href="../special/rounding.html" title="Rounding Truncation and Integer Conversion">Rounding and Truncation
- functions</a>.
+ Added Rounding and Truncation functions.
           </li>
 <li>
- Added <a href="../special/powers/ct_pow.html" title="Compile Time Power of a Runtime Base">Compile time
- powers of runtime bases</a>.
+ Added Compile time powers of runtime bases.
           </li>
 <li>
- Added <a href="../special/next_float.html" title="Floating-Point Representation Distance (ULP), and Finding Adjacent Floating-Point Values">nextafter and related
- functions</a>.
- </li>
-<li>
- Added separate <a href="../special/extern_c.html" title='TR1 and C99 external "C" Functions'>TR1 and
- C99 "C" language bindings</a>.
+ Added SSE2 optimizations for Lanczos evaluation.
           </li>
 </ul></div>
 <p>
         <a name="math_toolkit.status.history1.boost_1_35_0__post_review_first_official_release"></a>
         </p>
 <h5>
-<a name="id862791"></a>
+<a name="id865575"></a>
           <a href="history1.html#math_toolkit.status.history1.boost_1_35_0__post_review_first_official_release">Boost-1.35.0:
           Post Review First Official Release</a>
         </h5>
@@ -117,7 +105,7 @@
         <a name="math_toolkit.status.history1.milestone_4__second_review_candidate__1st_march_2007_"></a>
         </p>
 <h5>
-<a name="id862894"></a>
+<a name="id865678"></a>
           <a href="history1.html#math_toolkit.status.history1.milestone_4__second_review_candidate__1st_march_2007_">Milestone
           4: Second Review Candidate (1st March 2007)</a>
         </h5>
@@ -136,7 +124,7 @@
         <a name="math_toolkit.status.history1.milestone_3__first_review_candidate__31st_dec_2006_"></a>
         </p>
 <h5>
-<a name="id862937"></a>
+<a name="id865719"></a>
           <a href="history1.html#math_toolkit.status.history1.milestone_3__first_review_candidate__31st_dec_2006_">Milestone
           3: First Review Candidate (31st Dec 2006)</a>
         </h5>
@@ -169,7 +157,7 @@
         <a name="math_toolkit.status.history1.milestone_2__released_september_10th_2006"></a>
         </p>
 <h5>
-<a name="id863001"></a>
+<a name="id865785"></a>
           <a href="history1.html#math_toolkit.status.history1.milestone_2__released_september_10th_2006">Milestone
           2: Released September 10th 2006</a>
         </h5>
@@ -210,7 +198,7 @@
         <a name="math_toolkit.status.history1.milestone_1__released_march_31st_2006"></a>
         </p>
 <h5>
-<a name="id863078"></a>
+<a name="id865862"></a>
           <a href="history1.html#math_toolkit.status.history1.milestone_1__released_march_31st_2006">Milestone
           1: Released March 31st 2006</a>
         </h5>
@@ -245,7 +233,7 @@
 <p>
         </p>
 <p>
- Sandbox and trunk last synchonised at revision: 45483.
+ Sandbox and trunk last synchonised at revision: 47084.
         </p>
 <p>
       </p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/issues.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/issues.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/status/issues.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -43,7 +43,7 @@
         with it.
       </p>
 <a name="math_toolkit.status.issues.tgamma"></a><h5>
-<a name="id864139"></a>
+<a name="id866930"></a>
         <a href="issues.html#math_toolkit.status.issues.tgamma">tgamma</a>
       </h5>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -51,7 +51,7 @@
           be optimized any further? (low priority)
         </li></ul></div>
 <a name="math_toolkit.status.issues.incomplete_beta"></a><h5>
-<a name="id864181"></a>
+<a name="id866972"></a>
         <a href="issues.html#math_toolkit.status.issues.incomplete_beta">Incomplete Beta</a>
       </h5>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -59,7 +59,7 @@
           (medium priority).
         </li></ul></div>
 <a name="math_toolkit.status.issues.inverse_gamma"></a><h5>
-<a name="id864214"></a>
+<a name="id867005"></a>
         <a href="issues.html#math_toolkit.status.issues.inverse_gamma">Inverse Gamma</a>
       </h5>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -67,7 +67,7 @@
           is good enough (Medium Priority).
         </li></ul></div>
 <a name="math_toolkit.status.issues.polynomials"></a><h5>
-<a name="id864246"></a>
+<a name="id867038"></a>
         <a href="issues.html#math_toolkit.status.issues.polynomials">Polynomials</a>
       </h5>
 <div class="itemizedlist"><ul type="disc"><li>
@@ -77,7 +77,7 @@
           not (Low Priority).
         </li></ul></div>
 <a name="math_toolkit.status.issues.elliptic_integrals"></a><h5>
-<a name="id864283"></a>
+<a name="id867074"></a>
         <a href="issues.html#math_toolkit.status.issues.elliptic_integrals">Elliptic Integrals</a>
       </h5>
 <div class="itemizedlist"><ul type="disc">
@@ -127,7 +127,7 @@
         </li>
 </ul></div>
 <a name="math_toolkit.status.issues.inverse_hyperbolic_functions"></a><h5>
-<a name="id864441"></a>
+<a name="id867232"></a>
         <a href="issues.html#math_toolkit.status.issues.inverse_hyperbolic_functions">Inverse
         Hyperbolic Functions</a>
       </h5>
@@ -137,7 +137,7 @@
           is probably only an issue for very high precision types (Low Priority).
         </li></ul></div>
 <a name="math_toolkit.status.issues.statistical_distributions"></a><h5>
-<a name="id864486"></a>
+<a name="id867277"></a>
         <a href="issues.html#math_toolkit.status.issues.statistical_distributions">Statistical
         distributions</a>
       </h5>
@@ -146,7 +146,7 @@
           for very large degrees of freedom?
         </li></ul></div>
 <a name="math_toolkit.status.issues.feature_requests"></a><h5>
-<a name="id864521"></a>
+<a name="id867312"></a>
         <a href="issues.html#math_toolkit.status.issues.feature_requests">Feature Requests</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,6 +30,8 @@
 <dt><span class="section"> Overview</span></dt>
 <dt><span class="section"> Reused Utilities</span></dt>
 <dd><dl>
+<dt><span class="section"><a href="toolkit/internals1/constants.html"> Numeric
+ Constants</a></span></dt>
 <dt><span class="section"><a href="toolkit/internals1/series_evaluation.html">
         Series Evaluation</a></span></dt>
 <dt><span class="section"><a href="toolkit/internals1/cf.html"> Continued Fraction

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,26 +7,28 @@
 <link rel="start" href="../../index.html" title="Math Toolkit">
 <link rel="up" href="../toolkit.html" title="Internal Details and Tools (Experimental)">
 <link rel="prev" href="internals_overview.html" title="Overview">
-<link rel="next" href="internals1/series_evaluation.html" title="Series Evaluation">
+<link rel="next" href="internals1/constants.html" title="Numeric Constants">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="internals_overview.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../toolkit.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="internals1/series_evaluation.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="internals_overview.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../toolkit.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="internals1/constants.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="math_toolkit.toolkit.internals1"></a> Reused Utilities
 </h3></div></div></div>
 <div class="toc"><dl>
+<dt><span class="section"><a href="internals1/constants.html"> Numeric
+ Constants</a></span></dt>
 <dt><span class="section"><a href="internals1/series_evaluation.html">
         Series Evaluation</a></span></dt>
 <dt><span class="section"><a href="internals1/cf.html"> Continued Fraction
@@ -52,7 +54,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="internals_overview.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../toolkit.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="internals1/series_evaluation.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="internals_overview.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../toolkit.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="internals1/constants.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Evaluation</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.cf.synopsis"></a><h5>
-<a name="id772322"></a>
+<a name="id774407"></a>
           <a href="cf.html#math_toolkit.toolkit.internals1.cf.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -59,7 +59,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals1.cf.description"></a><h5>
-<a name="id773044"></a>
+<a name="id775128"></a>
           <a href="cf.html#math_toolkit.toolkit.internals1.cf.description">Description</a>
         </h5>
 <p>
@@ -157,7 +157,7 @@
           a continued fraction for convergence.
         </p>
 <a name="math_toolkit.toolkit.internals1.cf.implementation"></a><h5>
-<a name="id773320"></a>
+<a name="id775404"></a>
           <a href="cf.html#math_toolkit.toolkit.internals1.cf.implementation">Implementation</a>
         </h5>
 <p>
@@ -167,7 +167,7 @@
           Lentz, W.J. 1976, Applied Optics, vol. 15, pp. 668-671.
         </p>
 <a name="math_toolkit.toolkit.internals1.cf.examples"></a><h5>
-<a name="id773354"></a>
+<a name="id775438"></a>
           <a href="cf.html#math_toolkit.toolkit.internals1.cf.examples">Examples</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Minima</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.minima.synopsis"></a><h5>
-<a name="id790029"></a>
+<a name="id792115"></a>
           <a href="minima.html#math_toolkit.toolkit.internals1.minima.synopsis">synopsis</a>
         </h5>
 <p>
@@ -45,7 +45,7 @@
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">brent_find_minima</span><span class="special">(</span><span class="identifier">F</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">min</span><span class="special">,</span> <span class="identifier">T</span> <span class="identifier">max</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">bits</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span><span class="special">&amp;</span> <span class="identifier">max_iter</span><span class="special">);</span>
 </pre>
 <a name="math_toolkit.toolkit.internals1.minima.description"></a><h5>
-<a name="id790499"></a>
+<a name="id792584"></a>
           <a href="minima.html#math_toolkit.toolkit.internals1.minima.description">Description</a>
         </h5>
 <p>
@@ -88,7 +88,7 @@
           the abscissa at the minima and the value of f(x) at the minima.
         </p>
 <a name="math_toolkit.toolkit.internals1.minima.implementation"></a><h5>
-<a name="id790638"></a>
+<a name="id792724"></a>
           <a href="minima.html#math_toolkit.toolkit.internals1.minima.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         and Rational Function Evaluation</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.rational.synopsis"></a><h5>
-<a name="id774336"></a>
+<a name="id776420"></a>
           <a href="rational.html#math_toolkit.toolkit.internals1.rational.synopsis">synopsis</a>
         </h5>
 <p>
@@ -79,7 +79,7 @@
 <span class="identifier">V</span> <span class="identifier">evaluate_rational</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">*</span> <span class="identifier">num</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">*</span> <span class="identifier">denom</span><span class="special">,</span> <span class="identifier">V</span> <span class="identifier">z</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">count</span><span class="special">);</span>
 </pre>
 <a name="math_toolkit.toolkit.internals1.rational.description"></a><h5>
-<a name="id776460"></a>
+<a name="id778545"></a>
           <a href="rational.html#math_toolkit.toolkit.internals1.rational.description">Description</a>
         </h5>
 <p>
@@ -193,7 +193,7 @@
           evaluation with compile-time array sizes may offer slightly better performance.
         </p>
 <a name="math_toolkit.toolkit.internals1.rational.implementation"></a><h5>
-<a name="id778924"></a>
+<a name="id781009"></a>
           <a href="rational.html#math_toolkit.toolkit.internals1.rational.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         With Derivatives</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.roots.synopsis"></a><h5>
-<a name="id779042"></a>
+<a name="id781127"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -61,7 +61,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals1.roots.description"></a><h5>
-<a name="id780197"></a>
+<a name="id782282"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.description">Description</a>
         </h5>
 <p>
@@ -176,7 +176,7 @@
 <a name="newton"></a><p>
         </p>
 <a name="math_toolkit.toolkit.internals1.roots.newton_raphson_method"></a><h5>
-<a name="id780518"></a>
+<a name="id782603"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.newton_raphson_method">Newton
           Raphson Method</a>
         </h5>
@@ -196,7 +196,7 @@
 <a name="halley"></a><p>
         </p>
 <a name="math_toolkit.toolkit.internals1.roots.halley_s_method"></a><h5>
-<a name="id780600"></a>
+<a name="id782685"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.halley_s_method">Halley's
           Method</a>
         </h5>
@@ -220,7 +220,7 @@
 <a name="schroeder"></a><p>
         </p>
 <a name="math_toolkit.toolkit.internals1.roots.schroeder_s_method"></a><h5>
-<a name="id780687"></a>
+<a name="id782772"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.schroeder_s_method">Schroeder's
           Method</a>
         </h5>
@@ -244,7 +244,7 @@
           iteration.
         </p>
 <a name="math_toolkit.toolkit.internals1.roots.example"></a><h5>
-<a name="id780768"></a>
+<a name="id782852"></a>
           <a href="roots.html#math_toolkit.toolkit.internals1.roots.example">Example</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Without Derivatives</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.roots2.synopsis"></a><h5>
-<a name="id782876"></a>
+<a name="id784960"></a>
           <a href="roots2.html#math_toolkit.toolkit.internals1.roots2.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -141,7 +141,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals1.roots2.description"></a><h5>
-<a name="id785518"></a>
+<a name="id787603"></a>
           <a href="roots2.html#math_toolkit.toolkit.internals1.roots2.description">Description</a>
         </h5>
 <p>
@@ -559,7 +559,7 @@
           as soon as both ends of the interval round to the same nearest integer.
         </p>
 <a name="math_toolkit.toolkit.internals1.roots2.implementation"></a><h5>
-<a name="id789962"></a>
+<a name="id792048"></a>
           <a href="roots2.html#math_toolkit.toolkit.internals1.roots2.implementation">Implementation</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_2006-12-17_0120">
 <link rel="start" href="../../../index.html" title="Math Toolkit">
 <link rel="up" href="../internals1.html" title="Reused Utilities">
-<link rel="prev" href="../internals1.html" title="Reused Utilities">
+<link rel="prev" href="constants.html" title="Numeric Constants">
 <link rel="next" href="cf.html" title="Continued Fraction Evaluation">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -14,13 +14,13 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../internals1.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="cf.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="constants.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="cf.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
@@ -28,7 +28,7 @@
         Series Evaluation</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals1.series_evaluation.synopsis"></a><h5>
-<a name="id770466"></a>
+<a name="id772551"></a>
           <a href="series_evaluation.html#math_toolkit.toolkit.internals1.series_evaluation.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -61,7 +61,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals1.series_evaluation.description"></a><h5>
-<a name="id771415"></a>
+<a name="id773500"></a>
           <a href="series_evaluation.html#math_toolkit.toolkit.internals1.series_evaluation.description">Description</a>
         </h5>
 <p>
@@ -117,7 +117,7 @@
           summation in this way.
         </p>
 <a name="math_toolkit.toolkit.internals1.series_evaluation.example"></a><h5>
-<a name="id771563"></a>
+<a name="id773648"></a>
           <a href="series_evaluation.html#math_toolkit.toolkit.internals1.series_evaluation.example">Example</a>
         </h5>
 <p>
@@ -184,7 +184,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../internals1.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="cf.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="constants.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../internals1.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="cf.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
         Error and Testing</a>
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals2.error_test.synopsis"></a><h5>
-<a name="id794715"></a>
+<a name="id796800"></a>
           <a href="error_test.html#math_toolkit.toolkit.internals2.error_test.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -45,7 +45,7 @@
 <span class="identifier">test_result</span><span class="special">&lt;</span><span class="identifier">see</span><span class="special">-</span><span class="identifier">below</span><span class="special">&gt;</span> <span class="identifier">test</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">A</span><span class="special">&amp;</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">F1</span> <span class="identifier">test_func</span><span class="special">,</span> <span class="identifier">F2</span> <span class="identifier">expect_func</span><span class="special">);</span>
 </pre>
 <a name="math_toolkit.toolkit.internals2.error_test.description"></a><h5>
-<a name="id795066"></a>
+<a name="id797152"></a>
           <a href="error_test.html#math_toolkit.toolkit.internals2.error_test.description">Description</a>
         </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -165,7 +165,7 @@
           is mainly a debugging/development aid (and a good place for a breakpoint).
         </p>
 <a name="math_toolkit.toolkit.internals2.error_test.example"></a><h5>
-<a name="id796018"></a>
+<a name="id798103"></a>
           <a href="error_test.html#math_toolkit.toolkit.internals2.error_test.example">Example</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/minimax.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/minimax.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/minimax.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="math_toolkit.toolkit.internals2.polynomials"></a> Polynomials
 </h4></div></div></div>
 <a name="math_toolkit.toolkit.internals2.polynomials.synopsis"></a><h5>
-<a name="id790727"></a>
+<a name="id792813"></a>
           <a href="polynomials.html#math_toolkit.toolkit.internals2.polynomials.synopsis">Synopsis</a>
         </h5>
 <p>
@@ -103,7 +103,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals2.polynomials.description"></a><h5>
-<a name="id793501"></a>
+<a name="id795587"></a>
           <a href="polynomials.html#math_toolkit.toolkit.internals2.polynomials.description">Description</a>
         </h5>
 <p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -46,7 +46,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.toolkit.internals2.test_data.synopsis"></a><h5>
-<a name="id797114"></a>
+<a name="id799199"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.synopsis">Synopsis</a>
         </h5>
 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tools</span><span class="special">{</span>
@@ -147,7 +147,7 @@
 <span class="special">}}}</span> <span class="comment">// namespaces
 </span></pre>
 <a name="math_toolkit.toolkit.internals2.test_data.description"></a><h5>
-<a name="id800038"></a>
+<a name="id802124"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.description">Description</a>
         </h5>
 <p>
@@ -177,7 +177,7 @@
           </li>
 </ul></div>
 <a name="math_toolkit.toolkit.internals2.test_data.example_1__output_data_for_graph_plotting"></a><h6>
-<a name="id800112"></a>
+<a name="id802197"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.example_1__output_data_for_graph_plotting">Example
           1: Output Data for Graph Plotting</a>
         </h6>
@@ -211,7 +211,7 @@
           <span class="inlinemediaobject"><img src="../../../../graphs/lgamma.png" align="middle"></span>
         </p>
 <a name="math_toolkit.toolkit.internals2.test_data.example_2__creating_test_data"></a><h6>
-<a name="id800669"></a>
+<a name="id802755"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.example_2__creating_test_data">Example
           2: Creating Test Data</a>
         </h6>
@@ -375,7 +375,7 @@
           used by default as it's rather hard on the compiler when the table is large.
         </p>
 <a name="math_toolkit.toolkit.internals2.test_data.example_3__profiling_a_continued_fraction_for_convergence_and_accuracy"></a><h6>
-<a name="id803157"></a>
+<a name="id805252"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.example_3__profiling_a_continued_fraction_for_convergence_and_accuracy">Example
           3: Profiling a Continued Fraction for Convergence and Accuracy</a>
         </h6>
@@ -481,7 +481,7 @@
           of a and z.
         </p>
 <a name="math_toolkit.toolkit.internals2.test_data.reference"></a><h5>
-<a name="id805396"></a>
+<a name="id807491"></a>
           <a href="test_data.html#math_toolkit.toolkit.internals2.test_data.reference">reference</a>
         </h5>
 <a name="test_data_reference"></a><p>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals_overview.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals_overview.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals_overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/archetypes.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/archetypes.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/archetypes.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -42,7 +42,7 @@
         behaves just like a built in floating point type.
       </p>
 <a name="math_toolkit.using_udt.concepts.basic_arithmetic_requirements"></a><h5>
-<a name="id806401"></a>
+<a name="id808500"></a>
         <a href="concepts.html#math_toolkit.using_udt.concepts.basic_arithmetic_requirements">Basic
         Arithmetic Requirements</a>
       </h5>
@@ -1034,7 +1034,7 @@
 </td></tr>
 </table></div>
 <a name="math_toolkit.using_udt.concepts.standard_library_support_requirements"></a><h5>
-<a name="id809470"></a>
+<a name="id811568"></a>
         <a href="concepts.html#math_toolkit.using_udt.concepts.standard_library_support_requirements">Standard
         Library Support Requirements</a>
       </h5>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/dist_concept.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/dist_concept.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/dist_concept.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/use_ntl.html
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/use_ntl.html (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/html/math_toolkit/using_udt/use_ntl.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/math.qbk
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/math.qbk (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/math.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -76,6 +76,7 @@
 [def __denorm_error [link denorm_error denorm_error]]
 [def __evaluation_error [link evaluation_error evaluation_error]]
 [def __rounding_error [link rounding_error rounding_error]]
+[def __indeterminate_result_error [link indeterminate_result_error indeterminate_result_error]]
 [def __checked_narrowing_cast [link checked_narrowing_cast checked_narrowing_cast]]
 
 [def __arg_pomotion_rules [link math_toolkit.main_overview.result_type ['result type calculation rules]]]
@@ -420,6 +421,7 @@
 [include internals_overview.qbk]
 
 [section:internals1 Reused Utilities]
+[include constants.qbk]
 [include series.qbk]
 [include fraction.qbk]
 [include rational.qbk]

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/policy.qbk
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/policy.qbk (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/policy.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -45,6 +45,7 @@
        [[Underflow Error][std::underflow_error]]
        [[Denorm Error][std::underflow_error]]
        [[Evaluation Error][boost::math::evaluation_error]]
+ [[Indeterminate Result Error][std::domain_error]]
     ]
 
 [h5 errno_on_error]
@@ -60,11 +61,12 @@
     [[Underflow Error][ERANGE]]
     [[Denorm Error][ERANGE]]
     [[Evaluation Error][EDOM]]
+ [[Indeterminate Result Error][EDOM]]
  ]
 
 [h5 ignore_error]
 
-Will return a one of the values below depending on the error type (`::errno` is NOT changed)::
+Will return one of the values below depending on the error type (`::errno` is NOT changed)::
  [table
     [[Error Type][Returned Value]]
     [[Domain Error][std::numeric_limits<T>::quiet_NaN()]]
@@ -74,6 +76,7 @@
     [[Denorm Error][The denormalised value.]]
     [[Evaluation Error][The best guess as to the result: which
           may be significantly in error.]]
+ [[Indeterminate Result Error][Depends on the function where the error occurred]]
  ]
 
 [h5 user_error]
@@ -83,28 +86,31 @@
 must be provided by the user:
 
    namespace boost{ namespace math{ namespace policies{
-
+
    template <class T>
    T user_domain_error(const char* function, const char* message, const T& val);
-
+
    template <class T>
    T user_pole_error(const char* function, const char* message, const T& val);
-
+
    template <class T>
    T user_overflow_error(const char* function, const char* message, const T& val);
-
+
    template <class T>
    T user_underflow_error(const char* function, const char* message, const T& val);
-
+
    template <class T>
    T user_denorm_error(const char* function, const char* message, const T& val);
-
+
    template <class T>
    T user_rounding_error(const char* function, const char* message, const T& val);
-
+
    template <class T>
    T user_evaluation_error(const char* function, const char* message, const T& val);
-
+
+ template <class T>
+ T user_indeterminate_result_error(const char* function, const char* message, const T& val);
+
    }}} // namespaces
 
 Note that the strings ['function] and ['message] may contain "%1%" format specifiers
@@ -121,7 +127,7 @@
 
 [h4 Kinds of Error Raised]
 
-There are five kinds of error reported by this library,
+There are six kinds of error reported by this library,
 which are summarised in the following table:
 
 [table
@@ -191,6 +197,14 @@
       Defaults to `boost::math::policies::evaluation_error<throw_on_error>`
 
       When the action is ['throw_on_error] then throws `boost::math::evaluation_error`]]
+[[Indeterminate Result Error]
+ [boost::math::policies::indeterminate_result_error<['action]>]
+ [Raised when the result of a function is not defined for the values that
+ were passed to it.
+
+ Defaults to `boost::math::policies::indeterminate_result_error<ignore_error>`
+
+ When the action is ['throw_on_error] then throws `std::domain_error`]]
 ]
 
 [h4 Examples]
@@ -537,6 +551,14 @@
 actions for error handing: `throw_on_error`, `errno_on_error`,
 `ignore_error` or `user_error`.
 
+[h5 BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY]
+
+Defines what happens when the result is indeterminate, but where there
+is none the less a convention for the result. If not defined then
+defaults to `ignore_error`, but can be set to any of the enumerated
+actions for error handing: `throw_on_error`, `errno_on_error`,
+`ignore_error` or `user_error`.
+
 [h5 BOOST_MATH_DIGITS10_POLICY]
 
 Defines how many decimal digits to use in internal computations:
@@ -684,7 +706,9 @@
              class A8 = default_policy,
              class A9 = default_policy,
              class A10 = default_policy,
- class A11 = default_policy>
+ class A11 = default_policy,
+ class A12 = default_policy,
+ class A13 = default_policy>
    struct policy
    {
    public:
@@ -695,6 +719,7 @@
       typedef ``['computed-from-template-arguments]`` denorm_error_type;
       typedef ``['computed-from-template-arguments]`` rounding_error_type;
       typedef ``['computed-from-template-arguments]`` evaluation_error_type;
+ typedef ``['computed-from-template-arguments]`` indeterminate_result_error_type;
       typedef ``['computed-from-template-arguments]`` precision_type;
       typedef ``['computed-from-template-arguments]`` promote_float_type;
       typedef ``['computed-from-template-arguments]`` promote_double_type;
@@ -716,7 +741,9 @@
              class A8 = default_policy,
              class A9 = default_policy,
              class A10 = default_policy,
- class A11 = default_policy>
+ class A11 = default_policy,
+ class A12 = default_policy,
+ class A13 = default_policy>
    struct normalise
    {
       typedef ``computed-from-template-arguments`` type;
@@ -767,6 +794,13 @@
 `boost::math::policies::evaluation_error<>` with the template argument to
 `evaluation_error` one of the `error_policy_type` enumerated values.
 
+ policy<...>::indeterminate_error_type
+
+Specifies how indeterminate result errors are handled, will be an instance of
+`boost::math::policies::indeterminate_result_error<>` with the template argument
+to `indeterminate_result_error` one of the `error_policy_type` enumerated
+values.
+
    policy<...>::precision_type
    
 Specifies the internal precision to use in binary digits (uses zero
@@ -817,7 +851,9 @@
              class A8 = default_policy,
              class A9 = default_policy,
              class A10 = default_policy,
- class A11 = default_policy>
+ class A11 = default_policy,
+ class A12 = default_policy,
+ class A13 = default_policy>
    struct normalise
    {
       typedef ``computed-from-template-arguments`` type;

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/policy_tutorial.qbk
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/policy_tutorial.qbk (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/policy_tutorial.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -46,6 +46,7 @@
 [[Denormalised Result][Ignores the fact that the result is denormalised, and returns it.]]
 [[Rounding Error][Throws a `boost::math::rounding_error` exception.]]
 [[Internal Evaluation Error][Throws a `boost::math::evaluation_error` exception.]]
+[[Indeterminate Result Error][Returns a result that depends on the function where the error occurred.]]
 [[Promotion of float to double][Does occur by default - gives full float precision results.]]
 [[Promotion of double to long double][Does occur by default if long double offers
    more precision than double.]]

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/pow.qbk
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/pow.qbk (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/pow.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -53,8 +53,8 @@
 
 [h4 Return Type]
 
-The return type of these functions is computed using the __arg_pomotion_rules
-when T1 and T2 are different types. For example:
+The return type of these functions is computed using the __arg_pomotion_rules.
+For example:
 
 * If T is a `float`, the return type is a `float`.
 * If T is a `long double`, the return type is a `long double`.
@@ -66,10 +66,14 @@
 
 [h4 Error Handling]
 
-In the case where `pow` is called with a null base and a negative exponent,
-an error occurs since this operation is a division by 0 (it equals to 1/0).
-The error raised is an __overflow_error following the
-[@sf_and_dist/html/math_toolkit/main_overview/error_handling.html
+Two cases of errors can occur when using `pow`:
+
+* In case of null base and negative exponent, an __overflow_error occurs since
+this operation is a division by 0 (it equals to 1/0).
+* In case of null exponent, an __indeterminate_result_error occurs since the
+result of a null power is indeterminate.
+Those errors follow the
+[link math_toolkit.main_overview.error_handling
 general policies of error handling in Boost.Math].
 
 The default overflow error policy is `throw_on_error`. A call like `pow<-2>(0)`
@@ -81,6 +85,15 @@
 * `user_error`: Returns the result of `boost::math::policies::user_overflow_error`:
    this function must be defined by the user.
 
+The default indeterminate result error policy is `ignore_error`, which for this
+function returns 1 since it's the most commonly chosen result for a power of 0.
+Here again, other error handling policies can be used:
+
+* `throw_on_error`: Throws `std::domain_error`
+* `errno_on_error`: Sets `::errno` to `EDOM` and returns 1.
+* `user_error`: Returns the result of `boost::math::policies::user_indeterminate_result_error`:
+ this function must be defined by the user.
+
 Here is an example of error handling customization where we want to
 specify the result that has to be returned in case of error. We will
 thus use the `user_error` policy, by passing as second argument an

Modified: branches/proto/v4/libs/math/doc/sf_and_dist/roadmap.qbk
==============================================================================
--- branches/proto/v4/libs/math/doc/sf_and_dist/roadmap.qbk (original)
+++ branches/proto/v4/libs/math/doc/sf_and_dist/roadmap.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,16 +2,15 @@
 
 [h4 Boost-1.36.0]
 
-* Added __non_central_chi_squared_distrib.
-* Added __non_central_beta_distrib.
-* Added __non_central_F_distrib.
-* Added __non_central_T_distrib.
-* Added [link math_toolkit.special.expint Exponential Integral Functions].
-* Added __zeta Function.
-* Added [link math_toolkit.special.rounding Rounding and Truncation functions].
-* Added [link math_toolkit.special.powers.ct_pow Compile time powers of runtime bases].
-* Added [link math_toolkit.special.next_float nextafter and related functions].
-* Added separate [link math_toolkit.special.extern_c TR1 and C99 "C" language bindings].
+* Added Noncentral Chi Squared Distribution.
+* Added Noncentral Beta Distribution.
+* Added Noncentral F Distribution.
+* Added Noncentral T Distribution.
+* Added Exponential Integral Functions.
+* Added Zeta Function.
+* Added Rounding and Truncation functions.
+* Added Compile time powers of runtime bases.
+* Added SSE2 optimizations for Lanczos evaluation.
 
 [h4 Boost-1.35.0: Post Review First Official Release]
 
@@ -73,7 +72,7 @@
 
 SVN Revisions:
 
-Sandbox and trunk last synchonised at revision: 45483.
+Sandbox and trunk last synchonised at revision: 47084.
 
 ]
 [/

Modified: branches/proto/v4/libs/math/example/policy_eg_8.cpp
==============================================================================
--- branches/proto/v4/libs/math/example/policy_eg_8.cpp (original)
+++ branches/proto/v4/libs/math/example/policy_eg_8.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -39,6 +39,8 @@
    T user_denorm_error(const char* function, const char* message, const T& val);
    template <class T>
    T user_evaluation_error(const char* function, const char* message, const T& val);
+ template <class T>
+ T user_indeterminate_result_error(const char* function, const char* message, const T& val);
 
    }}} // namespaces
 

Modified: branches/proto/v4/libs/math/minimax/f.cpp
==============================================================================
--- branches/proto/v4/libs/math/minimax/f.cpp (original)
+++ branches/proto/v4/libs/math/minimax/f.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -310,6 +310,14 @@
          y = sqrt(y);
          return boost::math::erf_inv(y) / (y);
       }
+ case 28:
+ {
+ // log1p over [-0.5,0.5]
+ boost::math::ntl::RR y = x;
+ if(fabs(y) < 1e-100)
+ y = (y == 0) ? 1e-100 : boost::math::sign(y) * 1e-100;
+ return (boost::math::log1p(y) - y + y * y / 2) / (y);
+ }
    }
    return 0;
 }

Modified: branches/proto/v4/libs/math/performance/performance_measure.hpp
==============================================================================
--- branches/proto/v4/libs/math/performance/performance_measure.hpp (original)
+++ branches/proto/v4/libs/math/performance/performance_measure.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,11 +10,19 @@
 #include <boost/timer.hpp>
 #include <cstring>
 
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
 template <class F>
 double performance_measure(F f)
 {
    unsigned count = 1;
    double time, result;
+#ifdef _WIN32
+ int old_priority = GetThreadPriority(GetCurrentThread());
+ SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
+#endif
    //
    // Begin by figuring out how many times to repeat
    // the function call in order to get a measureable time:
@@ -37,7 +45,7 @@
    // result, generally speaking this gives us
    // consistent results:
    //
- for(unsigned i = 0; i < 10u;++i)
+ for(unsigned i = 0; i < 20u;++i)
    {
       boost::timer t;
       for(unsigned i = 0; i < count; ++i)
@@ -47,6 +55,9 @@
          result = time;
       t.restart();
    }
+#ifdef _WIN32
+ SetThreadPriority(GetCurrentThread(), old_priority);
+#endif
    return result / count;
 }
 

Modified: branches/proto/v4/libs/math/src/tr1/acosh.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/acosh.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/acosh.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/acosh.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL acosh(double x)
+extern "C" double BOOST_MATH_TR1_DECL acosh BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::acosh(x);
+ return c_policies::acosh BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/acoshf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/acoshf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/acoshf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/acosh.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL acoshf(float x)
+extern "C" float BOOST_MATH_TR1_DECL acoshf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::acosh(x);
+ return c_policies::acosh BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/acoshl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/acoshl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/acoshl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/acosh.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL acoshl(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL acoshl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::acosh(x);
+ return c_policies::acosh BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/asinh.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/asinh.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/asinh.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/asinh.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL asinh(double x)
+extern "C" double BOOST_MATH_TR1_DECL asinh BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::asinh(x);
+ return c_policies::asinh BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/asinhf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/asinhf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/asinhf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/asinh.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL asinhf(float x)
+extern "C" float BOOST_MATH_TR1_DECL asinhf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::asinh(x);
+ return c_policies::asinh BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/asinhl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/asinhl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/asinhl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/asinh.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL asinhl(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL asinhl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::asinh(x);
+ return c_policies::asinh BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/assoc_laguerre.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/assoc_laguerre.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/assoc_laguerre.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/laguerre.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL assoc_laguerre(unsigned n, unsigned m, double x)
+extern "C" double BOOST_MATH_TR1_DECL assoc_laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, double x)
 {
- return c_policies::laguerre(n, m, x);
+ return c_policies::laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(n, m, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/assoc_laguerref.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/assoc_laguerref.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/assoc_laguerref.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/laguerre.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL assoc_laguerref(unsigned n, unsigned m, float x)
+extern "C" float BOOST_MATH_TR1_DECL assoc_laguerref BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, float x)
 {
- return c_policies::laguerre(n, m, x);
+ return c_policies::laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(n, m, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/assoc_laguerrel.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/assoc_laguerrel.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/assoc_laguerrel.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/laguerre.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL assoc_laguerrel(unsigned n, unsigned m, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL assoc_laguerrel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, long double x)
 {
- return c_policies::laguerre(n, m, x);
+ return c_policies::laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(n, m, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/assoc_legendre.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/assoc_legendre.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/assoc_legendre.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/legendre.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL assoc_legendre(unsigned l, unsigned m, double x)
+extern "C" double BOOST_MATH_TR1_DECL assoc_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, double x)
 {
- return (m&1 ? -1 : 1) * c_policies::legendre_p(l, m, x);
+ return (m&1 ? -1 : 1) * c_policies::legendre_p BOOST_PREVENT_MACRO_SUBSTITUTION(l, m, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/assoc_legendref.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/assoc_legendref.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/assoc_legendref.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/legendre.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL assoc_legendref(unsigned l, unsigned m, float x)
+extern "C" float BOOST_MATH_TR1_DECL assoc_legendref BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float x)
 {
- return (m&1 ? -1 : 1) * c_policies::legendre_p(l, m, x);
+ return (m&1 ? -1 : 1) * c_policies::legendre_p BOOST_PREVENT_MACRO_SUBSTITUTION(l, m, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/assoc_legendrel.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/assoc_legendrel.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/assoc_legendrel.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/legendre.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL assoc_legendrel(unsigned l, unsigned m, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL assoc_legendrel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double x)
 {
- return (m&1 ? -1 : 1) * c_policies::legendre_p(l, m, x);
+ return (m&1 ? -1 : 1) * c_policies::legendre_p BOOST_PREVENT_MACRO_SUBSTITUTION(l, m, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/atanh.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/atanh.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/atanh.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/atanh.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL atanh(double x)
+extern "C" double BOOST_MATH_TR1_DECL atanh BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::atanh(x);
+ return c_policies::atanh BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/atanhf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/atanhf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/atanhf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/atanh.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL atanhf(float x)
+extern "C" float BOOST_MATH_TR1_DECL atanhf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::atanh(x);
+ return c_policies::atanh BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/atanhl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/atanhl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/atanhl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/atanh.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL atanhl(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL atanhl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::atanh(x);
+ return c_policies::atanh BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/beta.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/beta.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/beta.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/beta.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL beta(double x, double y)
+extern "C" double BOOST_MATH_TR1_DECL beta BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y)
 {
- return c_policies::beta(x, y);
+ return c_policies::beta BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }

Modified: branches/proto/v4/libs/math/src/tr1/betaf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/betaf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/betaf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/beta.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL betaf(float x, float y)
+extern "C" float BOOST_MATH_TR1_DECL betaf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
 {
- return c_policies::beta(x, y);
+ return c_policies::beta BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }

Modified: branches/proto/v4/libs/math/src/tr1/betal.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/betal.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/betal.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/beta.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL betal(long double x, long double y)
+extern "C" long double BOOST_MATH_TR1_DECL betal BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
 {
- return c_policies::beta(x, y);
+ return c_policies::beta BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }

Modified: branches/proto/v4/libs/math/src/tr1/c_policy.hpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/c_policy.hpp (original)
+++ branches/proto/v4/libs/math/src/tr1/c_policy.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// 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/math/policies/policy.hpp>

Modified: branches/proto/v4/libs/math/src/tr1/cbrt.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cbrt.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cbrt.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/cbrt.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL cbrt(double x)
+extern "C" double BOOST_MATH_TR1_DECL cbrt BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::cbrt(x);
+ return c_policies::cbrt BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cbrtf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cbrtf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cbrtf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/cbrt.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL cbrtf(float x)
+extern "C" float BOOST_MATH_TR1_DECL cbrtf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::cbrt(x);
+ return c_policies::cbrt BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cbrtl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cbrtl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cbrtl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/cbrt.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL cbrtl(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL cbrtl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::cbrt(x);
+ return c_policies::cbrt BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/comp_ellint_1.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/comp_ellint_1.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/comp_ellint_1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_1.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL comp_ellint_1(double x)
+extern "C" double BOOST_MATH_TR1_DECL comp_ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::ellint_1(x);
+ return c_policies::ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/comp_ellint_1f.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/comp_ellint_1f.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/comp_ellint_1f.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_1.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL comp_ellint_1f(float x)
+extern "C" float BOOST_MATH_TR1_DECL comp_ellint_1f BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::ellint_1(x);
+ return c_policies::ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/comp_ellint_1l.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/comp_ellint_1l.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/comp_ellint_1l.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_1.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL comp_ellint_1l(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL comp_ellint_1l BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::ellint_1(x);
+ return c_policies::ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/comp_ellint_2.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/comp_ellint_2.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/comp_ellint_2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_2.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL comp_ellint_2(double x)
+extern "C" double BOOST_MATH_TR1_DECL comp_ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::ellint_2(x);
+ return c_policies::ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/comp_ellint_2f.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/comp_ellint_2f.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/comp_ellint_2f.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_2.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL comp_ellint_2f(float x)
+extern "C" float BOOST_MATH_TR1_DECL comp_ellint_2f BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::ellint_2(x);
+ return c_policies::ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/comp_ellint_2l.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/comp_ellint_2l.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/comp_ellint_2l.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_2.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL comp_ellint_2l(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL comp_ellint_2l BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::ellint_2(x);
+ return c_policies::ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/comp_ellint_3.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/comp_ellint_3.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/comp_ellint_3.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_3.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL comp_ellint_3(double k, double nu)
+extern "C" double BOOST_MATH_TR1_DECL comp_ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(double k, double nu)
 {
- return c_policies::ellint_3(k, nu);
+ return c_policies::ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(k, nu);
 }

Modified: branches/proto/v4/libs/math/src/tr1/comp_ellint_3f.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/comp_ellint_3f.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/comp_ellint_3f.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_3.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL comp_ellint_3f(float k, float nu)
+extern "C" float BOOST_MATH_TR1_DECL comp_ellint_3f BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float nu)
 {
- return c_policies::ellint_3(k, nu);
+ return c_policies::ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(k, nu);
 }

Modified: branches/proto/v4/libs/math/src/tr1/comp_ellint_3l.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/comp_ellint_3l.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/comp_ellint_3l.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_3.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL comp_ellint_3l(long double k, long double nu)
+extern "C" long double BOOST_MATH_TR1_DECL comp_ellint_3l BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double nu)
 {
- return c_policies::ellint_3(k, nu);
+ return c_policies::ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(k, nu);
 }

Modified: branches/proto/v4/libs/math/src/tr1/copysign.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/copysign.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/copysign.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,11 @@
 #include <boost/math/special_functions/sign.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL copysign(double x, double y)
+#if !(defined(__HP_aCC) && (__HP_aCC >= 61400))
+
+extern "C" double BOOST_MATH_TR1_DECL copysign BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y)
 {
- return boost::math::copysign(x, y);
+ return boost::math::copysign BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }
+
+#endif

Modified: branches/proto/v4/libs/math/src/tr1/copysignf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/copysignf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/copysignf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,11 @@
 #include <boost/math/special_functions/sign.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL copysignf(float x, float y)
+#if !(defined(__HP_aCC) && (__HP_aCC >= 61400))
+
+extern "C" float BOOST_MATH_TR1_DECL copysignf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
 {
- return boost::math::copysign(x, y);
+ return boost::math::copysign BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }
+
+#endif

Modified: branches/proto/v4/libs/math/src/tr1/copysignl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/copysignl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/copysignl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/sign.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL copysignl(long double x, long double y)
+extern "C" long double BOOST_MATH_TR1_DECL copysignl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
 {
- return boost::math::copysign(x, y);
+ return boost::math::copysign BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_bessel_i.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_bessel_i.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_bessel_i.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL cyl_bessel_i(double nu, double x)
+extern "C" double BOOST_MATH_TR1_DECL cyl_bessel_i BOOST_PREVENT_MACRO_SUBSTITUTION(double nu, double x)
 {
- return c_policies::cyl_bessel_i(nu, x);
+ return c_policies::cyl_bessel_i BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_bessel_if.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_bessel_if.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_bessel_if.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL cyl_bessel_if(float nu, float x)
+extern "C" float BOOST_MATH_TR1_DECL cyl_bessel_if BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x)
 {
- return c_policies::cyl_bessel_i(nu, x);
+ return c_policies::cyl_bessel_i BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_bessel_il.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_bessel_il.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_bessel_il.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL cyl_bessel_il(long double nu, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL cyl_bessel_il BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)
 {
- return c_policies::cyl_bessel_i(nu, x);
+ return c_policies::cyl_bessel_i BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_bessel_j.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_bessel_j.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_bessel_j.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL cyl_bessel_j(double nu, double x)
+extern "C" double BOOST_MATH_TR1_DECL cyl_bessel_j BOOST_PREVENT_MACRO_SUBSTITUTION(double nu, double x)
 {
- return c_policies::cyl_bessel_j(nu, x);
+ return c_policies::cyl_bessel_j BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_bessel_jf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_bessel_jf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_bessel_jf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL cyl_bessel_jf(float nu, float x)
+extern "C" float BOOST_MATH_TR1_DECL cyl_bessel_jf BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x)
 {
- return c_policies::cyl_bessel_j(nu, x);
+ return c_policies::cyl_bessel_j BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_bessel_jl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_bessel_jl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_bessel_jl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL cyl_bessel_jl(long double nu, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL cyl_bessel_jl BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)
 {
- return c_policies::cyl_bessel_j(nu, x);
+ return c_policies::cyl_bessel_j BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_bessel_k.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_bessel_k.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_bessel_k.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL cyl_bessel_k(double nu, double x)
+extern "C" double BOOST_MATH_TR1_DECL cyl_bessel_k BOOST_PREVENT_MACRO_SUBSTITUTION(double nu, double x)
 {
- return c_policies::cyl_bessel_k(nu, x);
+ return c_policies::cyl_bessel_k BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_bessel_kf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_bessel_kf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_bessel_kf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL cyl_bessel_kf(float nu, float x)
+extern "C" float BOOST_MATH_TR1_DECL cyl_bessel_kf BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x)
 {
- return c_policies::cyl_bessel_k(nu, x);
+ return c_policies::cyl_bessel_k BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_bessel_kl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_bessel_kl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_bessel_kl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL cyl_bessel_kl(long double nu, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL cyl_bessel_kl BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)
 {
- return c_policies::cyl_bessel_k(nu, x);
+ return c_policies::cyl_bessel_k BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_neumann.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_neumann.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_neumann.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL cyl_neumann(double nu, double x)
+extern "C" double BOOST_MATH_TR1_DECL cyl_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(double nu, double x)
 {
- return c_policies::cyl_neumann(nu, x);
+ return c_policies::cyl_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_neumannf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_neumannf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_neumannf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL cyl_neumannf(float nu, float x)
+extern "C" float BOOST_MATH_TR1_DECL cyl_neumannf BOOST_PREVENT_MACRO_SUBSTITUTION(float nu, float x)
 {
- return c_policies::cyl_neumann(nu, x);
+ return c_policies::cyl_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/cyl_neumannl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/cyl_neumannl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/cyl_neumannl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL cyl_neumannl(long double nu, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL cyl_neumannl BOOST_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)
 {
- return c_policies::cyl_neumann(nu, x);
+ return c_policies::cyl_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(nu, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/ellint_1.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/ellint_1.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/ellint_1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_1.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL ellint_1(double k, double phi)
+extern "C" double BOOST_MATH_TR1_DECL ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(double k, double phi)
 {
- return c_policies::ellint_1(k, phi);
+ return c_policies::ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(k, phi);
 }

Modified: branches/proto/v4/libs/math/src/tr1/ellint_1f.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/ellint_1f.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/ellint_1f.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_1.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL ellint_1f(float k, float phi)
+extern "C" float BOOST_MATH_TR1_DECL ellint_1f BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float phi)
 {
- return c_policies::ellint_1(k, phi);
+ return c_policies::ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(k, phi);
 }

Modified: branches/proto/v4/libs/math/src/tr1/ellint_1l.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/ellint_1l.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/ellint_1l.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_1.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL ellint_1l(long double k, long double phi)
+extern "C" long double BOOST_MATH_TR1_DECL ellint_1l BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi)
 {
- return c_policies::ellint_1(k, phi);
+ return c_policies::ellint_1 BOOST_PREVENT_MACRO_SUBSTITUTION(k, phi);
 }

Modified: branches/proto/v4/libs/math/src/tr1/ellint_2.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/ellint_2.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/ellint_2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_2.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL ellint_2(double k, double phi)
+extern "C" double BOOST_MATH_TR1_DECL ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(double k, double phi)
 {
- return c_policies::ellint_2(k, phi);
+ return c_policies::ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(k, phi);
 }

Modified: branches/proto/v4/libs/math/src/tr1/ellint_2f.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/ellint_2f.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/ellint_2f.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_2.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL ellint_2f(float k, float phi)
+extern "C" float BOOST_MATH_TR1_DECL ellint_2f BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float phi)
 {
- return c_policies::ellint_2(k, phi);
+ return c_policies::ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(k, phi);
 }

Modified: branches/proto/v4/libs/math/src/tr1/ellint_2l.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/ellint_2l.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/ellint_2l.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_2.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL ellint_2l(long double k, long double phi)
+extern "C" long double BOOST_MATH_TR1_DECL ellint_2l BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi)
 {
- return c_policies::ellint_2(k, phi);
+ return c_policies::ellint_2 BOOST_PREVENT_MACRO_SUBSTITUTION(k, phi);
 }

Modified: branches/proto/v4/libs/math/src/tr1/ellint_3.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/ellint_3.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/ellint_3.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_3.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL ellint_3(double k, double nu, double phi)
+extern "C" double BOOST_MATH_TR1_DECL ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(double k, double nu, double phi)
 {
- return c_policies::ellint_3(k, nu, phi);
+ return c_policies::ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(k, nu, phi);
 }

Modified: branches/proto/v4/libs/math/src/tr1/ellint_3f.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/ellint_3f.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/ellint_3f.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_3.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL ellint_3f(float k, float nu, float phi)
+extern "C" float BOOST_MATH_TR1_DECL ellint_3f BOOST_PREVENT_MACRO_SUBSTITUTION(float k, float nu, float phi)
 {
- return c_policies::ellint_3(k, nu, phi);
+ return c_policies::ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(k, nu, phi);
 }

Modified: branches/proto/v4/libs/math/src/tr1/ellint_3l.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/ellint_3l.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/ellint_3l.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/ellint_3.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL ellint_3l(long double k, long double nu, long double phi)
+extern "C" long double BOOST_MATH_TR1_DECL ellint_3l BOOST_PREVENT_MACRO_SUBSTITUTION(long double k, long double nu, long double phi)
 {
- return c_policies::ellint_3(k, nu, phi);
+ return c_policies::ellint_3 BOOST_PREVENT_MACRO_SUBSTITUTION(k, nu, phi);
 }

Modified: branches/proto/v4/libs/math/src/tr1/erf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/erf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/erf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/erf.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL erf(double x)
+extern "C" double BOOST_MATH_TR1_DECL erf BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::erf(x);
+ return c_policies::erf BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/erfc.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/erfc.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/erfc.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/erf.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL erfc(double x)
+extern "C" double BOOST_MATH_TR1_DECL erfc BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::erfc(x);
+ return c_policies::erfc BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/erfcf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/erfcf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/erfcf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/erf.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL erfcf(float x)
+extern "C" float BOOST_MATH_TR1_DECL erfcf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::erfc(x);
+ return c_policies::erfc BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/erfcl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/erfcl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/erfcl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/erf.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL erfcl(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL erfcl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::erfc(x);
+ return c_policies::erfc BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/erff.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/erff.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/erff.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/erf.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL erff(float x)
+extern "C" float BOOST_MATH_TR1_DECL erff BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::erf(x);
+ return c_policies::erf BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/erfl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/erfl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/erfl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/erf.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL erfl(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL erfl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::erf(x);
+ return c_policies::erf BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/expint.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/expint.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/expint.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/expint.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL expint(double x)
+extern "C" double BOOST_MATH_TR1_DECL expint BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::expint(x);
+ return c_policies::expint BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/expintf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/expintf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/expintf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/expint.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL expintf(float x)
+extern "C" float BOOST_MATH_TR1_DECL expintf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::expint(x);
+ return c_policies::expint BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/expintl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/expintl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/expintl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/expint.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL expintl(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL expintl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::expint(x);
+ return c_policies::expint BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/expm1.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/expm1.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/expm1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/expm1.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL boost_expm1(double x)
+extern "C" double BOOST_MATH_TR1_DECL boost_expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::expm1(x);
+ return c_policies::expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/expm1f.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/expm1f.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/expm1f.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/expm1.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL boost_expm1f(float x)
+extern "C" float BOOST_MATH_TR1_DECL boost_expm1f BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::expm1(x);
+ return c_policies::expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/expm1l.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/expm1l.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/expm1l.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/expm1.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL boost_expm1l(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL boost_expm1l BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::expm1(x);
+ return c_policies::expm1 BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/fmax.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/fmax.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/fmax.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,11 +8,11 @@
 #include <boost/math/special_functions/fpclassify.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL fmax(double x, double y)
+extern "C" double BOOST_MATH_TR1_DECL fmax BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y)
 {
    if((boost::math::isnan)(x))
       return y;
    if((boost::math::isnan)(y))
       return x;
- return (std::max)(x, y);
+ return (std::max)(x, y);
 }

Modified: branches/proto/v4/libs/math/src/tr1/fmaxf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/fmaxf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/fmaxf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,9 @@
 #include <boost/math/special_functions/fpclassify.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL fmaxf(float x, float y)
+#if !(defined(__HP_aCC) && (__HP_aCC >= 61400))
+
+extern "C" float BOOST_MATH_TR1_DECL fmaxf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
 {
    if((boost::math::isnan)(x))
       return y;
@@ -16,3 +18,5 @@
       return x;
    return (std::max)(x, y);
 }
+
+#endif

Modified: branches/proto/v4/libs/math/src/tr1/fmaxl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/fmaxl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/fmaxl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/fpclassify.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL fmaxl(long double x, long double y)
+extern "C" long double BOOST_MATH_TR1_DECL fmaxl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
 {
    if((boost::math::isnan)(x))
       return y;

Modified: branches/proto/v4/libs/math/src/tr1/fmin.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/fmin.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/fmin.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/fpclassify.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL fmin(double x, double y)
+extern "C" double BOOST_MATH_TR1_DECL fmin BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y)
 {
    if((boost::math::isnan)(x))
       return y;

Modified: branches/proto/v4/libs/math/src/tr1/fminf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/fminf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/fminf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,9 @@
 #include <boost/math/special_functions/fpclassify.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL fminf(float x, float y)
+#if !(defined(__HP_aCC) && (__HP_aCC >= 61400))
+
+extern "C" float BOOST_MATH_TR1_DECL fminf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
 {
    if((boost::math::isnan)(x))
       return y;
@@ -16,3 +18,5 @@
       return x;
    return (std::min)(x, y);
 }
+
+#endif

Modified: branches/proto/v4/libs/math/src/tr1/fminl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/fminl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/fminl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/fpclassify.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL fminl(long double x, long double y)
+extern "C" long double BOOST_MATH_TR1_DECL fminl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
 {
    if((boost::math::isnan)(x))
       return y;

Modified: branches/proto/v4/libs/math/src/tr1/fpclassify.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/fpclassify.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/fpclassify.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -11,36 +11,34 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-#define NO_MACRO_EXPAND /**/
-
-template<> bool BOOST_MATH_TR1_DECL signbit<double> NO_MACRO_EXPAND(double x)
+template<> bool BOOST_MATH_TR1_DECL signbit<double> BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return static_cast<bool>(boost::math::signbit(x));
+ return static_cast<bool>((boost::math::signbit)(x));
 }
 
-template<> int BOOST_MATH_TR1_DECL fpclassify<double> NO_MACRO_EXPAND(double x)
+template<> int BOOST_MATH_TR1_DECL fpclassify<double> BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return boost::math::fpclassify(x);
+ return (boost::math::fpclassify)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isfinite<double> NO_MACRO_EXPAND(double x)
+template<> bool BOOST_MATH_TR1_DECL isfinite<double> BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return boost::math::isfinite(x);
+ return (boost::math::isfinite)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isinf<double> NO_MACRO_EXPAND(double x)
+template<> bool BOOST_MATH_TR1_DECL isinf<double> BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return boost::math::isinf(x);
+ return (boost::math::isinf)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isnan<double> NO_MACRO_EXPAND(double x)
+template<> bool BOOST_MATH_TR1_DECL isnan<double> BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return boost::math::isnan(x);
+ return (boost::math::isnan)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isnormal<double> NO_MACRO_EXPAND(double x)
+template<> bool BOOST_MATH_TR1_DECL isnormal<double> BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return boost::math::isnormal(x);
+ return (boost::math::isnormal)(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/fpclassifyf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/fpclassifyf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/fpclassifyf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -11,36 +11,34 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-#define NO_MACRO_EXPAND /**/
-
-template<> bool BOOST_MATH_TR1_DECL signbit<float> NO_MACRO_EXPAND(float x)
+template<> bool BOOST_MATH_TR1_DECL signbit<float> BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return static_cast<bool>(boost::math::signbit(x));
+ return static_cast<bool>((boost::math::signbit)(x));
 }
 
-template<> int BOOST_MATH_TR1_DECL fpclassify<float> NO_MACRO_EXPAND(float x)
+template<> int BOOST_MATH_TR1_DECL fpclassify<float> BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return boost::math::fpclassify(x);
+ return (boost::math::fpclassify)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isfinite<float> NO_MACRO_EXPAND(float x)
+template<> bool BOOST_MATH_TR1_DECL isfinite<float> BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return boost::math::isfinite(x);
+ return (boost::math::isfinite)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isinf<float> NO_MACRO_EXPAND(float x)
+template<> bool BOOST_MATH_TR1_DECL isinf<float> BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return boost::math::isinf(x);
+ return (boost::math::isinf)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isnan<float> NO_MACRO_EXPAND(float x)
+template<> bool BOOST_MATH_TR1_DECL isnan<float> BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return boost::math::isnan(x);
+ return (boost::math::isnan)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isnormal<float> NO_MACRO_EXPAND(float x)
+template<> bool BOOST_MATH_TR1_DECL isnormal<float> BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return boost::math::isnormal(x);
+ return (boost::math::isnormal)(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/fpclassifyl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/fpclassifyl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/fpclassifyl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -11,36 +11,34 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-#define NO_MACRO_EXPAND /**/
-
-template<> bool BOOST_MATH_TR1_DECL signbit<long double> NO_MACRO_EXPAND(long double x)
+template<> bool BOOST_MATH_TR1_DECL signbit<long double> BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return static_cast<bool>(boost::math::signbit(x));
+ return static_cast<bool>((boost::math::signbit)(x));
 }
 
-template<> int BOOST_MATH_TR1_DECL fpclassify<long double> NO_MACRO_EXPAND(long double x)
+template<> int BOOST_MATH_TR1_DECL fpclassify<long double> BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return boost::math::fpclassify(x);
+ return (boost::math::fpclassify)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isfinite<long double> NO_MACRO_EXPAND(long double x)
+template<> bool BOOST_MATH_TR1_DECL isfinite<long double> BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return boost::math::isfinite(x);
+ return (boost::math::isfinite)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isinf<long double> NO_MACRO_EXPAND(long double x)
+template<> bool BOOST_MATH_TR1_DECL isinf<long double> BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return boost::math::isinf(x);
+ return (boost::math::isinf)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isnan<long double> NO_MACRO_EXPAND(long double x)
+template<> bool BOOST_MATH_TR1_DECL isnan<long double> BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return boost::math::isnan(x);
+ return (boost::math::isnan)(x);
 }
 
-template<> bool BOOST_MATH_TR1_DECL isnormal<long double> NO_MACRO_EXPAND(long double x)
+template<> bool BOOST_MATH_TR1_DECL isnormal<long double> BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return boost::math::isnormal(x);
+ return (boost::math::isnormal)(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/hermite.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/hermite.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/hermite.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/hermite.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL hermite(unsigned n, double x)
+extern "C" double BOOST_MATH_TR1_DECL hermite BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x)
 {
- return c_policies::hermite(n, x);
+ return c_policies::hermite BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/hermitef.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/hermitef.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/hermitef.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/hermite.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL hermitef(unsigned n, float x)
+extern "C" float BOOST_MATH_TR1_DECL hermitef BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)
 {
- return c_policies::hermite(n, x);
+ return c_policies::hermite BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/hermitel.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/hermitel.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/hermitel.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/hermite.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL hermitel(unsigned n, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL hermitel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)
 {
- return c_policies::hermite(n, x);
+ return c_policies::hermite BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/hypot.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/hypot.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/hypot.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" double BOOST_MATH_TR1_DECL hypot(double x, double y)
+extern "C" double BOOST_MATH_TR1_DECL hypot BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y)
 {
- return c_policies::hypot(x, y);
+ return c_policies::hypot BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/hypotf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/hypotf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/hypotf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" float BOOST_MATH_TR1_DECL hypotf(float x, float y)
+extern "C" float BOOST_MATH_TR1_DECL hypotf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
 {
- return c_policies::hypot(x, y);
+ return c_policies::hypot BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/hypotl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/hypotl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/hypotl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long double BOOST_MATH_TR1_DECL hypotl(long double x, long double y)
+extern "C" long double BOOST_MATH_TR1_DECL hypotl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
 {
- return c_policies::hypot(x, y);
+ return c_policies::hypot BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/laguerre.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/laguerre.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/laguerre.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/laguerre.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL laguerre(unsigned n, double x)
+extern "C" double BOOST_MATH_TR1_DECL laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x)
 {
- return c_policies::laguerre(n, x);
+ return c_policies::laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/laguerref.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/laguerref.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/laguerref.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/laguerre.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL laguerref(unsigned n, float x)
+extern "C" float BOOST_MATH_TR1_DECL laguerref BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)
 {
- return c_policies::laguerre(n, x);
+ return c_policies::laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/laguerrel.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/laguerrel.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/laguerrel.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/laguerre.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL laguerrel(unsigned n, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL laguerrel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)
 {
- return c_policies::laguerre(n, x);
+ return c_policies::laguerre BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/legendre.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/legendre.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/legendre.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/legendre.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL legendre(unsigned n, double x)
+extern "C" double BOOST_MATH_TR1_DECL legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x)
 {
- return c_policies::legendre_p(n, x);
+ return c_policies::legendre_p BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/legendref.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/legendref.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/legendref.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/legendre.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL legendref(unsigned n, float x)
+extern "C" float BOOST_MATH_TR1_DECL legendref BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)
 {
- return c_policies::legendre_p(n, x);
+ return c_policies::legendre_p BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/legendrel.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/legendrel.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/legendrel.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/legendre.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL legendrel(unsigned n, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL legendrel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)
 {
- return c_policies::legendre_p(n, x);
+ return c_policies::legendre_p BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/lgamma.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/lgamma.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/lgamma.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" double BOOST_MATH_TR1_DECL lgamma(double x)
+extern "C" double BOOST_MATH_TR1_DECL lgamma BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::lgamma(x);
+ return c_policies::lgamma BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/lgammaf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/lgammaf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/lgammaf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" float BOOST_MATH_TR1_DECL lgammaf(float x)
+extern "C" float BOOST_MATH_TR1_DECL lgammaf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::lgamma(x);
+ return c_policies::lgamma BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/lgammal.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/lgammal.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/lgammal.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long double BOOST_MATH_TR1_DECL lgammal(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL lgammal BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::lgamma(x);
+ return c_policies::lgamma BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/llround.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/llround.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/llround.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long long BOOST_MATH_TR1_DECL llround(double x)
+extern "C" long long BOOST_MATH_TR1_DECL llround BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::llround(x);
+ return c_policies::llround BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/llroundf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/llroundf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/llroundf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long long BOOST_MATH_TR1_DECL llroundf(float x)
+extern "C" long long BOOST_MATH_TR1_DECL llroundf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::llround(x);
+ return c_policies::llround BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/llroundl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/llroundl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/llroundl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long long BOOST_MATH_TR1_DECL llroundl(long double x)
+extern "C" long long BOOST_MATH_TR1_DECL llroundl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::llround(x);
+ return c_policies::llround BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/log1p.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/log1p.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/log1p.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" double BOOST_MATH_TR1_DECL boost_log1p(double x)
+extern "C" double BOOST_MATH_TR1_DECL boost_log1p BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::log1p(x);
+ return c_policies::log1p BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/log1pf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/log1pf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/log1pf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" float BOOST_MATH_TR1_DECL boost_log1pf(float x)
+extern "C" float BOOST_MATH_TR1_DECL boost_log1pf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::log1p(x);
+ return c_policies::log1p BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/log1pl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/log1pl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/log1pl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long double BOOST_MATH_TR1_DECL boost_log1pl(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL boost_log1pl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::log1p(x);
+ return c_policies::log1p BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/lround.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/lround.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/lround.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long BOOST_MATH_TR1_DECL lround(double x)
+extern "C" long BOOST_MATH_TR1_DECL lround BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::lround(x);
+ return c_policies::lround BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/lroundf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/lroundf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/lroundf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long BOOST_MATH_TR1_DECL lroundf(float x)
+extern "C" long BOOST_MATH_TR1_DECL lroundf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::lround(x);
+ return c_policies::lround BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/lroundl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/lroundl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/lroundl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long BOOST_MATH_TR1_DECL lroundl(long double x)
+extern "C" long BOOST_MATH_TR1_DECL lroundl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::lround(x);
+ return c_policies::lround BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/nextafter.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/nextafter.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/nextafter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" double BOOST_MATH_TR1_DECL boost_nextafter(double x, double y)
+extern "C" double BOOST_MATH_TR1_DECL boost_nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(double x, double y)
 {
- return c_policies::nextafter(x, y);
+ return c_policies::nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/nextafterf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/nextafterf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/nextafterf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" float BOOST_MATH_TR1_DECL boost_nextafterf(float x, float y)
+extern "C" float BOOST_MATH_TR1_DECL boost_nextafterf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, float y)
 {
- return c_policies::nextafter(x, y);
+ return c_policies::nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/nextafterl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/nextafterl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/nextafterl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long double BOOST_MATH_TR1_DECL boost_nextafterl(long double x, long double y)
+extern "C" long double BOOST_MATH_TR1_DECL boost_nextafterl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
 {
- return c_policies::nextafter(x, y);
+ return c_policies::nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/nexttoward.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/nexttoward.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/nexttoward.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" double BOOST_MATH_TR1_DECL nexttoward(double x, long double y)
+extern "C" double BOOST_MATH_TR1_DECL nexttoward BOOST_PREVENT_MACRO_SUBSTITUTION(double x, long double y)
 {
- return (double)c_policies::nextafter((long double)x, y);
+ return (double)c_policies::nextafter BOOST_PREVENT_MACRO_SUBSTITUTION((long double)x, y);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/nexttowardf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/nexttowardf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/nexttowardf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" float BOOST_MATH_TR1_DECL nexttowardf(float x, long double y)
+extern "C" float BOOST_MATH_TR1_DECL nexttowardf BOOST_PREVENT_MACRO_SUBSTITUTION(float x, long double y)
 {
- return (float)c_policies::nextafter((long double)x, y);
+ return (float)c_policies::nextafter BOOST_PREVENT_MACRO_SUBSTITUTION((long double)x, y);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/nexttowardl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/nexttowardl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/nexttowardl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long double BOOST_MATH_TR1_DECL nexttowardl(long double x, long double y)
+extern "C" long double BOOST_MATH_TR1_DECL nexttowardl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)
 {
- return c_policies::nextafter(x, y);
+ return c_policies::nextafter BOOST_PREVENT_MACRO_SUBSTITUTION(x, y);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/riemann_zeta.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/riemann_zeta.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/riemann_zeta.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/zeta.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL riemann_zeta(double x)
+extern "C" double BOOST_MATH_TR1_DECL riemann_zeta BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::zeta(x);
+ return c_policies::zeta BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/riemann_zetaf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/riemann_zetaf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/riemann_zetaf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/zeta.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL riemann_zetaf(float x)
+extern "C" float BOOST_MATH_TR1_DECL riemann_zetaf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::zeta(x);
+ return c_policies::zeta BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/riemann_zetal.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/riemann_zetal.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/riemann_zetal.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/zeta.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL riemann_zetal(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL riemann_zetal BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::zeta(x);
+ return c_policies::zeta BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/round.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/round.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/round.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" double BOOST_MATH_TR1_DECL round(double x)
+extern "C" double BOOST_MATH_TR1_DECL round BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::round(x);
+ return c_policies::round BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/roundf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/roundf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/roundf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" float BOOST_MATH_TR1_DECL roundf(float x)
+extern "C" float BOOST_MATH_TR1_DECL roundf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::round(x);
+ return c_policies::round BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/roundl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/roundl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/roundl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long double BOOST_MATH_TR1_DECL roundl(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL roundl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::round(x);
+ return c_policies::round BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/sph_bessel.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/sph_bessel.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/sph_bessel.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL sph_bessel(unsigned n, double x)
+extern "C" double BOOST_MATH_TR1_DECL sph_bessel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x)
 {
- return c_policies::sph_bessel(n, x);
+ return c_policies::sph_bessel BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/sph_besself.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/sph_besself.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/sph_besself.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL sph_besself(unsigned n, float x)
+extern "C" float BOOST_MATH_TR1_DECL sph_besself BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)
 {
- return c_policies::sph_bessel(n, x);
+ return c_policies::sph_bessel BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/sph_bessell.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/sph_bessell.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/sph_bessell.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL sph_bessell(unsigned n, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL sph_bessell BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)
 {
- return c_policies::sph_bessel(n, x);
+ return c_policies::sph_bessel BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/sph_legendre.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/sph_legendre.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/sph_legendre.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/spherical_harmonic.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL sph_legendre(unsigned n, unsigned m, double x)
+extern "C" double BOOST_MATH_TR1_DECL sph_legendre BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, double x)
 {
- return (m & 1 ? -1 : 1) * c_policies::spherical_harmonic_r(n, m, x, 0.0);
+ return (m & 1 ? -1 : 1) * c_policies::spherical_harmonic_r BOOST_PREVENT_MACRO_SUBSTITUTION(n, m, x, 0.0);
 }

Modified: branches/proto/v4/libs/math/src/tr1/sph_legendref.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/sph_legendref.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/sph_legendref.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/spherical_harmonic.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL sph_legendref(unsigned n, unsigned m, float x)
+extern "C" float BOOST_MATH_TR1_DECL sph_legendref BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, float x)
 {
- return (m & 1 ? -1 : 1) * c_policies::spherical_harmonic_r(n, m, x, 0.0f);
+ return (m & 1 ? -1 : 1) * c_policies::spherical_harmonic_r BOOST_PREVENT_MACRO_SUBSTITUTION(n, m, x, 0.0f);
 }

Modified: branches/proto/v4/libs/math/src/tr1/sph_legendrel.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/sph_legendrel.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/sph_legendrel.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/spherical_harmonic.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL sph_legendrel(unsigned n, unsigned m, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL sph_legendrel BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, long double x)
 {
- return (m & 1 ? -1 : 1) * c_policies::spherical_harmonic_r(n, m, x, 0.0L);
+ return (m & 1 ? -1 : 1) * c_policies::spherical_harmonic_r BOOST_PREVENT_MACRO_SUBSTITUTION(n, m, x, 0.0L);
 }

Modified: branches/proto/v4/libs/math/src/tr1/sph_neumann.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/sph_neumann.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/sph_neumann.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" double BOOST_MATH_TR1_DECL sph_neumann(unsigned n, double x)
+extern "C" double BOOST_MATH_TR1_DECL sph_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x)
 {
- return c_policies::sph_neumann(n, x);
+ return c_policies::sph_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/sph_neumannf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/sph_neumannf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/sph_neumannf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" float BOOST_MATH_TR1_DECL sph_neumannf(unsigned n, float x)
+extern "C" float BOOST_MATH_TR1_DECL sph_neumannf BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)
 {
- return c_policies::sph_neumann(n, x);
+ return c_policies::sph_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/sph_neumannl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/sph_neumannl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/sph_neumannl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -8,7 +8,7 @@
 #include <boost/math/special_functions/bessel.hpp>
 #include "c_policy.hpp"
 
-extern "C" long double BOOST_MATH_TR1_DECL sph_neumannl(unsigned n, long double x)
+extern "C" long double BOOST_MATH_TR1_DECL sph_neumannl BOOST_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)
 {
- return c_policies::sph_neumann(n, x);
+ return c_policies::sph_neumann BOOST_PREVENT_MACRO_SUBSTITUTION(n, x);
 }

Modified: branches/proto/v4/libs/math/src/tr1/tgamma.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/tgamma.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/tgamma.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" double BOOST_MATH_TR1_DECL tgamma(double x)
+extern "C" double BOOST_MATH_TR1_DECL tgamma BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::tgamma(x);
+ return c_policies::tgamma BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/tgammaf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/tgammaf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/tgammaf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" float BOOST_MATH_TR1_DECL tgammaf(float x)
+extern "C" float BOOST_MATH_TR1_DECL tgammaf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::tgamma(x);
+ return c_policies::tgamma BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/tgammal.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/tgammal.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/tgammal.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long double BOOST_MATH_TR1_DECL tgammal(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL tgammal BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::tgamma(x);
+ return c_policies::tgamma BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/trunc.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/trunc.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/trunc.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" double BOOST_MATH_TR1_DECL trunc(double x)
+extern "C" double BOOST_MATH_TR1_DECL trunc BOOST_PREVENT_MACRO_SUBSTITUTION(double x)
 {
- return c_policies::trunc(x);
+ return c_policies::trunc BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/truncf.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/truncf.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/truncf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" float BOOST_MATH_TR1_DECL truncf(float x)
+extern "C" float BOOST_MATH_TR1_DECL truncf BOOST_PREVENT_MACRO_SUBSTITUTION(float x)
 {
- return c_policies::trunc(x);
+ return c_policies::trunc BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/src/tr1/truncl.cpp
==============================================================================
--- branches/proto/v4/libs/math/src/tr1/truncl.cpp (original)
+++ branches/proto/v4/libs/math/src/tr1/truncl.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 // Copyright John Maddock 2008.
 // Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// Boost Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 #define BOOST_MATH_TR1_SOURCE
@@ -10,9 +10,9 @@
 
 namespace boost{ namespace math{ namespace tr1{
 
-extern "C" long double BOOST_MATH_TR1_DECL truncl(long double x)
+extern "C" long double BOOST_MATH_TR1_DECL truncl BOOST_PREVENT_MACRO_SUBSTITUTION(long double x)
 {
- return c_policies::trunc(x);
+ return c_policies::trunc BOOST_PREVENT_MACRO_SUBSTITUTION(x);
 }
 
 }}}

Modified: branches/proto/v4/libs/math/test/common_factor_test.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/common_factor_test.cpp (original)
+++ branches/proto/v4/libs/math/test/common_factor_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,7 @@
 // See http://www.boost.org for most recent version including documentation.
 
 // Revision History
-// 01 Dec 2006 Various fixes for old compilers (Joaquín M López Muñoz)
+// 01 Dec 2006 Various fixes for old compilers (Joaquin M Lopez Munoz)
 // 10 Nov 2006 Make long long and __int64 mutually exclusive (Daryle Walker)
 // 04 Nov 2006 Use more built-in numeric types, binary-GCD (Daryle Walker)
 // 03 Nov 2006 Use custom numeric types (Daryle Walker)

Modified: branches/proto/v4/libs/math/test/expint_1_data.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/expint_1_data.ipp (original)
+++ branches/proto/v4/libs/math/test/expint_1_data.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 3>, 79> expint_1_data = {{
       { SC_(1), SC_(0.1690093176520690576580818742513656616211e-8), SC_(19.62126651228390287899433646349668926594) },

Modified: branches/proto/v4/libs/math/test/expint_data.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/expint_data.ipp (original)
+++ branches/proto/v4/libs/math/test/expint_data.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 3>, 600> expint_data = {{
       { SC_(0), SC_(4.8770198822021484375), SC_(0.001562365538135970995717852896857631808327) },

Modified: branches/proto/v4/libs/math/test/expint_small_data.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/expint_small_data.ipp (original)
+++ branches/proto/v4/libs/math/test/expint_small_data.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 3>, 380> expint_small_data = {{
       { SC_(0), SC_(0.1730655412757187150418758392333984375e-5), SC_(577814.7758212256423775256378551874856003) },

Modified: branches/proto/v4/libs/math/test/expinti_data.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/expinti_data.ipp (original)
+++ branches/proto/v4/libs/math/test/expinti_data.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 2>, 336> expinti_data = {{
       { SC_(-49.689971923828125), SC_(-0.5189914452467706181911213069148082266893e-23) },

Modified: branches/proto/v4/libs/math/test/expinti_data_double.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/expinti_data_double.ipp (original)
+++ branches/proto/v4/libs/math/test/expinti_data_double.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 2>, 100> expinti_data_double = {{
       { SC_(102.87009429931640625), SC_(4654899469800805764672952463660041015404000.0) },

Modified: branches/proto/v4/libs/math/test/expinti_data_long.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/expinti_data_long.ipp (original)
+++ branches/proto/v4/libs/math/test/expinti_data_long.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 2>, 100> expinti_data_long = {{
       { SC_(850.51361083984375), SC_(0.27809823533792637952061836944224670902e367) },

Modified: branches/proto/v4/libs/math/test/ncbeta.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/ncbeta.ipp (original)
+++ branches/proto/v4/libs/math/test/ncbeta.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 6>, 3000> ncbeta = {{
       { SC_(1.454305052757263183593750000000000000000), SC_(1.454305052757263183593750000000000000000e-1), SC_(5.940588760375976562500000000000000000000e1), SC_(9.976066350936889648437500000000000000000e-1), SC_(2.759834870217354705236013708534509068967e-1), SC_(7.240165129782645294763986291465490931033e-1) },

Modified: branches/proto/v4/libs/math/test/ncbeta_big.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/ncbeta_big.ipp (original)
+++ branches/proto/v4/libs/math/test/ncbeta_big.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 6>, 72> ncbeta_big = {{
       { SC_(2.322846374511718750000000000000000000000e2), SC_(2.090561676025390625000000000000000000000e2), SC_(2.322846374511718750000000000000000000000e2), SC_(6.248598918318748474121093750000000000000e-2), SC_(5.822794103663371475941613559141512048716e-200), SC_(1.000000000000000000000000000000000000000) },

Modified: branches/proto/v4/libs/math/test/nccs.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/nccs.ipp (original)
+++ branches/proto/v4/libs/math/test/nccs.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 5>, 3200> nccs = {{
       { SC_(1.951913356781005859375000000000000000000), SC_(9.566968083381652832031250000000000000000e-1), SC_(2.908610105514526367187500000000000000000e-1), SC_(9.191713210042786241188236234883914114395e-2), SC_(9.080828678995721375881176376511608588560e-1) },

Modified: branches/proto/v4/libs/math/test/pow_test.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/pow_test.cpp (original)
+++ branches/proto/v4/libs/math/test/pow_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -111,10 +111,17 @@
 #endif
 }
 
+
 namespace boost { namespace math { namespace policies {
 template <class T>
 T user_overflow_error(const char*, const char*, const T&)
-{ return 123.456; }
+{ return T(123.45); }
+}}}
+
+namespace boost { namespace math { namespace policies {
+template <class T>
+T user_indeterminate_result_error(const char*, const char*, const T&)
+{ return T(456.78); }
 }}}
 
 
@@ -126,7 +133,13 @@
                     0.0,
                     policy< ::boost::math::policies::overflow_error<user_error> >()
                 )
- == 123.456);
+ == 123.45);
+
+ BOOST_CHECK(pow<0>(
+ 0.0,
+ policy< ::boost::math::policies::indeterminate_result_error<user_error> >()
+ )
+ == 456.78);
 }
 
 int test_main(int, char* [])
@@ -186,5 +199,3 @@
 
     return 0;
 }
-
-

Modified: branches/proto/v4/libs/math/test/test_error_handling.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_error_handling.cpp (original)
+++ branches/proto/v4/libs/math/test/test_error_handling.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -53,6 +53,12 @@
    throw user_defined_error();
 }
 
+template <class T>
+T user_indeterminate_result_error(const char* , const char* , const T& )
+{
+ throw user_defined_error();
+}
+
 }}} // namespaces
 
 #include <boost/math/concepts/real_concept.hpp>
@@ -69,21 +75,32 @@
    overflow_error<throw_on_error>,
    underflow_error<throw_on_error>,
    denorm_error<throw_on_error>,
- evaluation_error<throw_on_error> > throw_policy;
+ evaluation_error<throw_on_error>,
+ indeterminate_result_error<throw_on_error> > throw_policy;
 policy<
    domain_error<errno_on_error>,
    pole_error<errno_on_error>,
    overflow_error<errno_on_error>,
    underflow_error<errno_on_error>,
    denorm_error<errno_on_error>,
- evaluation_error<errno_on_error> > errno_policy;
+ evaluation_error<errno_on_error>,
+ indeterminate_result_error<errno_on_error> > errno_policy;
+policy<
+ domain_error<ignore_error>,
+ pole_error<ignore_error>,
+ overflow_error<ignore_error>,
+ underflow_error<ignore_error>,
+ denorm_error<ignore_error>,
+ evaluation_error<ignore_error>,
+ indeterminate_result_error<ignore_error> > ignore_policy;
 policy<
    domain_error<user_error>,
    pole_error<user_error>,
    overflow_error<user_error>,
    underflow_error<user_error>,
    denorm_error<user_error>,
- evaluation_error<user_error> > user_policy;
+ evaluation_error<user_error>,
+ indeterminate_result_error<user_error> > user_policy;
 policy<> default_policy;
 
 #define TEST_EXCEPTION(expression, exception)\
@@ -112,6 +129,8 @@
    TEST_EXCEPTION(boost::math::policies::raise_denorm_error<T>(func, 0, T(0), throw_policy), std::underflow_error);
    TEST_EXCEPTION(boost::math::policies::raise_evaluation_error(func, msg1, T(1.25), throw_policy), boost::math::evaluation_error);
    TEST_EXCEPTION(boost::math::policies::raise_evaluation_error(func, 0, T(1.25), throw_policy), boost::math::evaluation_error);
+ TEST_EXCEPTION(boost::math::policies::raise_indeterminate_result_error(func, msg1, T(1.25), T(12.34), throw_policy), std::domain_error);
+ TEST_EXCEPTION(boost::math::policies::raise_indeterminate_result_error(func, 0, T(1.25), T(12.34), throw_policy), std::domain_error);
    //
    // Now try user error handlers: these should all throw user_error():
    // - because by design these are undefined and must be defined by the user ;-)
@@ -121,7 +140,39 @@
    BOOST_CHECK_THROW(boost::math::policies::raise_underflow_error<T>(func, msg2, user_policy), user_defined_error);
    BOOST_CHECK_THROW(boost::math::policies::raise_denorm_error<T>(func, msg2, T(0), user_policy), user_defined_error);
    BOOST_CHECK_THROW(boost::math::policies::raise_evaluation_error(func, msg1, T(0.0), user_policy), user_defined_error);
+ BOOST_CHECK_THROW(boost::math::policies::raise_indeterminate_result_error(func, msg1, T(0.0), T(0.0), user_policy), user_defined_error);
 
+ // Test with ignore_error
+ BOOST_CHECK((boost::math::isnan)(boost::math::policies::raise_domain_error(func, msg1, T(0.0), ignore_policy)) || !std::numeric_limits<T>::has_quiet_NaN);
+ BOOST_CHECK((boost::math::isnan)(boost::math::policies::raise_pole_error(func, msg1, T(0.0), ignore_policy)) || !std::numeric_limits<T>::has_quiet_NaN);
+ BOOST_CHECK_EQUAL(boost::math::policies::raise_overflow_error<T>(func, msg2, ignore_policy), std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : boost::math::tools::max_value<T>());
+ BOOST_CHECK_EQUAL(boost::math::policies::raise_underflow_error<T>(func, msg2, ignore_policy), T(0));
+ BOOST_CHECK_EQUAL(boost::math::policies::raise_denorm_error<T>(func, msg2, T(1.25), ignore_policy), T(1.25));
+ BOOST_CHECK_EQUAL(boost::math::policies::raise_evaluation_error(func, msg1, T(1.25), ignore_policy), T(1.25));
+ BOOST_CHECK_EQUAL(boost::math::policies::raise_indeterminate_result_error(func, 0, T(0.0), T(12.34), ignore_policy), T(12.34));
+
+ // Test with errno_on_error
+ errno = 0;
+ BOOST_CHECK((boost::math::isnan)(boost::math::policies::raise_domain_error(func, msg1, T(0.0), errno_policy)) || !std::numeric_limits<T>::has_quiet_NaN);
+ BOOST_CHECK(errno == EDOM);
+ errno = 0;
+ BOOST_CHECK((boost::math::isnan)(boost::math::policies::raise_pole_error(func, msg1, T(0.0), errno_policy)) || !std::numeric_limits<T>::has_quiet_NaN);
+ BOOST_CHECK(errno == EDOM);
+ errno = 0;
+ BOOST_CHECK_EQUAL(boost::math::policies::raise_overflow_error<T>(func, msg2, errno_policy), std::numeric_limits<T>::has_infinity ? std::numeric_limits<T>::infinity() : boost::math::tools::max_value<T>());
+ BOOST_CHECK_EQUAL(errno, ERANGE);
+ errno = 0;
+ BOOST_CHECK_EQUAL(boost::math::policies::raise_underflow_error<T>(func, msg2, errno_policy), T(0));
+ BOOST_CHECK_EQUAL(errno, ERANGE);
+ errno = 0;
+ BOOST_CHECK_EQUAL(boost::math::policies::raise_denorm_error<T>(func, msg2, T(1.25), errno_policy), T(1.25));
+ BOOST_CHECK_EQUAL(errno, ERANGE);
+ errno = 0;
+ BOOST_CHECK_EQUAL(boost::math::policies::raise_evaluation_error(func, msg1, T(1.25), errno_policy), T(1.25));
+ BOOST_CHECK(errno == EDOM);
+ errno = 0;
+ BOOST_CHECK(boost::math::policies::raise_indeterminate_result_error(func, 0, T(0.0), T(12.34), errno_policy) == T(12.34));
+ BOOST_CHECK_EQUAL(errno, EDOM);
 }
 
 int test_main(int, char* [])
@@ -131,7 +182,7 @@
    test_error(0.0F); // Test float.
    test_error(0.0); // Test double.
    test_error(0.0L); // Test long double.
- test_error(boost::math::concepts::real_concept(0.0L)); // Test concepts.
+ test_error(boost::math::concepts::real_concept(0.0L)); // Test concepts.
    return 0;
 } // int test_main(int, char* [])
 

Modified: branches/proto/v4/libs/math/test/test_igamma_inv.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_igamma_inv.cpp (original)
+++ branches/proto/v4/libs/math/test/test_igamma_inv.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -355,9 +355,9 @@
 {
    std::cout << "Running spot checks for type " << type_name << std::endl;
    //
- // basic sanity checks, tolerance is 100 epsilon expressed as a percentage:
+ // basic sanity checks, tolerance is 150 epsilon expressed as a percentage:
    //
- T tolerance = boost::math::tools::epsilon<T>() * 10000;
+ T tolerance = boost::math::tools::epsilon<T>() * 15000;
    if(tolerance < 1e-25f)
       tolerance = 1e-25f; // limit of test data?
    BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast<T>(1)/100, static_cast<T>(1.0/128)), static_cast<T>(0.35767144525455121503672919307647515332256996883787L), tolerance);

Modified: branches/proto/v4/libs/math/test/test_nc_t.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_nc_t.cpp (original)
+++ branches/proto/v4/libs/math/test/test_nc_t.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -261,7 +261,7 @@
    // and the distribution of the square of the sample
    // multiple correlation coeficient.
    // Denise Benton, K. Krishnamoorthy.
- // Computational Statistics & Data Analysis 43 (2003) 249 – 267
+ // Computational Statistics & Data Analysis 43 (2003) 249 - 267
    //
    test_spot(
       static_cast<RealType>(3), // degrees of freedom

Modified: branches/proto/v4/libs/math/test/test_next.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_next.cpp (original)
+++ branches/proto/v4/libs/math/test/test_next.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -39,8 +39,11 @@
 
    BOOST_CHECK_EQUAL(float_distance(float_advance(val, 4), val), -4);
    BOOST_CHECK_EQUAL(float_distance(float_advance(val, -4), val), 4);
- BOOST_CHECK_EQUAL(float_distance(float_advance(float_next(float_next(val)), 4), float_next(float_next(val))), -4);
- BOOST_CHECK_EQUAL(float_distance(float_advance(float_next(float_next(val)), -4), float_next(float_next(val))), 4);
+ if(std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::has_denorm == std::denorm_present))
+ {
+ BOOST_CHECK_EQUAL(float_distance(float_advance(float_next(float_next(val)), 4), float_next(float_next(val))), -4);
+ BOOST_CHECK_EQUAL(float_distance(float_advance(float_next(float_next(val)), -4), float_next(float_next(val))), 4);
+ }
 }
 
 template <class T>
@@ -60,7 +63,7 @@
    test_value(-boost::math::tools::epsilon<T>(), name);
    test_value(boost::math::tools::min_value<T>(), name);
    test_value(-boost::math::tools::min_value<T>(), name);
- if(std::numeric_limits<T>::is_specialized)
+ if(std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::has_denorm == std::denorm_present))
    {
       test_value(z, name);
       test_value(-z, name);
@@ -69,7 +72,7 @@
    test_value(-one, name);
    test_value(two, name);
    test_value(-two, name);
- if(std::numeric_limits<T>::is_specialized && std::numeric_limits<T>::has_denorm)
+ if(std::numeric_limits<T>::is_specialized && (std::numeric_limits<T>::has_denorm == std::denorm_present))
    {
       test_value(std::numeric_limits<T>::denorm_min(), name);
       test_value(-std::numeric_limits<T>::denorm_min(), name);

Modified: branches/proto/v4/libs/math/test/test_policy.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_policy.cpp (original)
+++ branches/proto/v4/libs/math/test/test_policy.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -35,112 +35,134 @@
 
    BOOST_CHECK((is_same<policy<>::domain_error_type, domain_error<BOOST_MATH_DOMAIN_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<>::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
-
+
    BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::domain_error_type, domain_error<ignore_error> >::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::pole_error_type, pole_error<BOOST_MATH_POLE_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::overflow_error_type, overflow_error<BOOST_MATH_OVERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::underflow_error_type, underflow_error<BOOST_MATH_UNDERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::denorm_error_type, denorm_error<BOOST_MATH_DENORM_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
+ BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::indeterminate_result_error_type, indeterminate_result_error<BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::precision_type, policy<>::precision_type>::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
    BOOST_CHECK((is_same<policy<pole_error<user_error> >::domain_error_type, policy<>::domain_error_type >::value));
    BOOST_CHECK((is_same<policy<pole_error<user_error> >::pole_error_type, pole_error<user_error> >::value));
    BOOST_CHECK((is_same<policy<pole_error<user_error> >::overflow_error_type, overflow_error<BOOST_MATH_OVERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<pole_error<user_error> >::underflow_error_type, underflow_error<BOOST_MATH_UNDERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<pole_error<user_error> >::denorm_error_type, denorm_error<BOOST_MATH_DENORM_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<pole_error<user_error> >::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
+ BOOST_CHECK((is_same<policy<pole_error<user_error> >::indeterminate_result_error_type, indeterminate_result_error<BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<pole_error<user_error> >::precision_type, policy<>::precision_type>::value));
    BOOST_CHECK((is_same<policy<pole_error<user_error> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<pole_error<user_error> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<pole_error<user_error> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
    BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::domain_error_type, policy<>::domain_error_type >::value));
    BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::pole_error_type, policy<>::pole_error_type >::value));
    BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::overflow_error_type, overflow_error<errno_on_error> >::value));
    BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::underflow_error_type, underflow_error<BOOST_MATH_UNDERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::denorm_error_type, denorm_error<BOOST_MATH_DENORM_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
+ BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::indeterminate_result_error_type, indeterminate_result_error<BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::precision_type, policy<>::precision_type>::value));
    BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<overflow_error<errno_on_error> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
    BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::domain_error_type, policy<>::domain_error_type >::value));
    BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::pole_error_type, policy<>::pole_error_type >::value));
    BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::overflow_error_type, policy<>::overflow_error_type >::value));
    BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::underflow_error_type, underflow_error<errno_on_error> >::value));
    BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::denorm_error_type, denorm_error<BOOST_MATH_DENORM_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
+ BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::indeterminate_result_error_type, indeterminate_result_error<BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::precision_type, policy<>::precision_type>::value));
    BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<underflow_error<errno_on_error> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
    BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::domain_error_type, policy<>::domain_error_type >::value));
    BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::pole_error_type, policy<>::pole_error_type >::value));
    BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::overflow_error_type, policy<>::overflow_error_type >::value));
    BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::underflow_error_type, policy<>::underflow_error_type >::value));
    BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::denorm_error_type, denorm_error<errno_on_error> >::value));
    BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
+ BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::indeterminate_result_error_type, indeterminate_result_error<BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::precision_type, policy<>::precision_type>::value));
    BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<denorm_error<errno_on_error> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
    BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::domain_error_type, policy<>::domain_error_type >::value));
    BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::pole_error_type, policy<>::pole_error_type >::value));
    BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::overflow_error_type, policy<>::overflow_error_type >::value));
    BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::underflow_error_type, policy<>::underflow_error_type >::value));
    BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::denorm_error_type, policy<>::denorm_error_type >::value));
    BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::evaluation_error_type, evaluation_error<errno_on_error> >::value));
+ BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::indeterminate_result_error_type, policy<>::indeterminate_result_error_type >::value));
    BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::precision_type, policy<>::precision_type>::value));
    BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<evaluation_error<errno_on_error> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::domain_error_type, policy<>::domain_error_type >::value));
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::pole_error_type, policy<>::pole_error_type >::value));
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::overflow_error_type, policy<>::overflow_error_type >::value));
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::underflow_error_type, policy<>::underflow_error_type >::value));
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::denorm_error_type, policy<>::denorm_error_type >::value));
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::evaluation_error_type, policy<>::evaluation_error_type >::value));
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::indeterminate_result_error_type, indeterminate_result_error<ignore_error> >::value));
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::precision_type, policy<>::precision_type>::value));
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::promote_float_type, policy<>::promote_float_type>::value));
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::promote_double_type, policy<>::promote_double_type>::value));
+ BOOST_CHECK((is_same<policy<indeterminate_result_error<ignore_error> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
+
    BOOST_CHECK((is_same<policy<digits2<20> >::domain_error_type, policy<>::domain_error_type >::value));
    BOOST_CHECK((is_same<policy<digits2<20> >::pole_error_type, policy<>::pole_error_type >::value));
    BOOST_CHECK((is_same<policy<digits2<20> >::overflow_error_type, policy<>::overflow_error_type >::value));
    BOOST_CHECK((is_same<policy<digits2<20> >::underflow_error_type, policy<>::underflow_error_type >::value));
    BOOST_CHECK((is_same<policy<digits2<20> >::denorm_error_type, policy<>::denorm_error_type >::value));
    BOOST_CHECK((is_same<policy<digits2<20> >::evaluation_error_type, policy<>::evaluation_error_type >::value));
+ BOOST_CHECK((is_same<policy<digits2<20> >::indeterminate_result_error_type, policy<>::indeterminate_result_error_type >::value));
    BOOST_CHECK((is_same<policy<digits2<20> >::precision_type, digits2<20> >::value));
    BOOST_CHECK((is_same<policy<digits2<20> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<digits2<20> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<digits2<20> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
    BOOST_CHECK((is_same<policy<promote_float<false> >::domain_error_type, policy<>::domain_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_float<false> >::pole_error_type, policy<>::pole_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_float<false> >::overflow_error_type, policy<>::overflow_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_float<false> >::underflow_error_type, policy<>::underflow_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_float<false> >::denorm_error_type, policy<>::denorm_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_float<false> >::evaluation_error_type, policy<>::evaluation_error_type >::value));
+ BOOST_CHECK((is_same<policy<promote_float<false> >::indeterminate_result_error_type, policy<>::indeterminate_result_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_float<false> >::precision_type, policy<>::precision_type >::value));
    BOOST_CHECK((is_same<policy<promote_float<false> >::promote_float_type, promote_float<false> >::value));
    BOOST_CHECK((is_same<policy<promote_float<false> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<promote_float<false> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
    BOOST_CHECK((is_same<policy<promote_double<false> >::domain_error_type, policy<>::domain_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_double<false> >::pole_error_type, policy<>::pole_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_double<false> >::overflow_error_type, policy<>::overflow_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_double<false> >::underflow_error_type, policy<>::underflow_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_double<false> >::denorm_error_type, policy<>::denorm_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_double<false> >::evaluation_error_type, policy<>::evaluation_error_type >::value));
+ BOOST_CHECK((is_same<policy<promote_double<false> >::indeterminate_result_error_type, policy<>::indeterminate_result_error_type >::value));
    BOOST_CHECK((is_same<policy<promote_double<false> >::precision_type, policy<>::precision_type >::value));
    BOOST_CHECK((is_same<policy<promote_double<false> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<promote_double<false> >::promote_double_type, promote_double<false> >::value));
    BOOST_CHECK((is_same<policy<promote_double<false> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
    BOOST_CHECK((is_same<policy<discrete_quantile<integer_round_up> >::domain_error_type, policy<>::domain_error_type >::value));
    BOOST_CHECK((is_same<policy<discrete_quantile<integer_round_up> >::pole_error_type, policy<>::pole_error_type >::value));
    BOOST_CHECK((is_same<policy<discrete_quantile<integer_round_up> >::overflow_error_type, policy<>::overflow_error_type >::value));
    BOOST_CHECK((is_same<policy<discrete_quantile<integer_round_up> >::underflow_error_type, policy<>::underflow_error_type >::value));
    BOOST_CHECK((is_same<policy<discrete_quantile<integer_round_up> >::denorm_error_type, policy<>::denorm_error_type >::value));
    BOOST_CHECK((is_same<policy<discrete_quantile<integer_round_up> >::evaluation_error_type, policy<>::evaluation_error_type >::value));
+ BOOST_CHECK((is_same<policy<discrete_quantile<integer_round_up> >::indeterminate_result_error_type, policy<>::indeterminate_result_error_type >::value));
    BOOST_CHECK((is_same<policy<discrete_quantile<integer_round_up> >::precision_type, policy<>::precision_type >::value));
    BOOST_CHECK((is_same<policy<discrete_quantile<integer_round_up> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<discrete_quantile<integer_round_up> >::promote_double_type, policy<>::promote_double_type>::value));

Modified: branches/proto/v4/libs/math/test/test_policy_2.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_policy_2.cpp (original)
+++ branches/proto/v4/libs/math/test/test_policy_2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -33,50 +33,55 @@
    BOOST_CHECK((is_same<policy<domain_error<ignore_error>, overflow_error<ignore_error> >::underflow_error_type, underflow_error<BOOST_MATH_UNDERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error>, overflow_error<ignore_error> >::denorm_error_type, denorm_error<BOOST_MATH_DENORM_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error>, overflow_error<ignore_error> >::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
+ BOOST_CHECK((is_same<policy<domain_error<ignore_error>, overflow_error<ignore_error> >::indeterminate_result_error_type, indeterminate_result_error<BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error>, overflow_error<ignore_error> >::precision_type, policy<>::precision_type>::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error>, overflow_error<ignore_error> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error>, overflow_error<ignore_error> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<domain_error<ignore_error>, overflow_error<ignore_error> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
    BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::domain_error_type, domain_error<ignore_error> >::value));
    BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::pole_error_type, pole_error<BOOST_MATH_POLE_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::overflow_error_type, overflow_error<BOOST_MATH_OVERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::underflow_error_type, underflow_error<BOOST_MATH_UNDERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::denorm_error_type, denorm_error<throw_on_error> >::value));
    BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
+ BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::indeterminate_result_error_type, indeterminate_result_error<BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::precision_type, policy<>::precision_type>::value));
    BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::promote_float_type, policy<>::promote_float_type>::value));
    BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<denorm_error<throw_on_error>, domain_error<ignore_error> >::discrete_quantile_type, policy<>::discrete_quantile_type>::value));
-
+
    BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::domain_error_type, domain_error<ignore_error> >::value));
    BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::pole_error_type, pole_error<BOOST_MATH_POLE_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::overflow_error_type, overflow_error<BOOST_MATH_OVERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::underflow_error_type, underflow_error<BOOST_MATH_UNDERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::denorm_error_type, denorm_error<throw_on_error> >::value));
    BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
+ BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::indeterminate_result_error_type, indeterminate_result_error<BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::precision_type, digits2<20> >::value));
    BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::promote_float_type, promote_float<false> >::value));
    BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::discrete_quantile_type, discrete_quantile<integer_round_down> >::value));
-
+
    BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::domain_error_type, domain_error<ignore_error> >::value));
    BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::pole_error_type, pole_error<BOOST_MATH_POLE_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::overflow_error_type, overflow_error<BOOST_MATH_OVERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::underflow_error_type, underflow_error<BOOST_MATH_UNDERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::denorm_error_type, denorm_error<throw_on_error> >::value));
    BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
+ BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::indeterminate_result_error_type, indeterminate_result_error<BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::precision_type, digits2<20> >::value));
    BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::promote_float_type, promote_float<false> >::value));
    BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::promote_double_type, policy<>::promote_double_type>::value));
    BOOST_CHECK((is_same<normalise<policy<digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> > >::type::discrete_quantile_type, discrete_quantile<integer_round_down> >::value));
-
+
    BOOST_CHECK((is_same<normalise<policy<>, digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::type::domain_error_type, domain_error<ignore_error> >::value));
    BOOST_CHECK((is_same<normalise<policy<>, digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::type::pole_error_type, pole_error<BOOST_MATH_POLE_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<normalise<policy<>, digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::type::overflow_error_type, overflow_error<BOOST_MATH_OVERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<normalise<policy<>, digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::type::underflow_error_type, underflow_error<BOOST_MATH_UNDERFLOW_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<normalise<policy<>, digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::type::denorm_error_type, denorm_error<throw_on_error> >::value));
    BOOST_CHECK((is_same<normalise<policy<>, digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::type::evaluation_error_type, evaluation_error<BOOST_MATH_EVALUATION_ERROR_POLICY> >::value));
+ BOOST_CHECK((is_same<normalise<policy<>, digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::type::indeterminate_result_error_type, indeterminate_result_error<BOOST_MATH_INDETERMINATE_RESULT_ERROR_POLICY> >::value));
    BOOST_CHECK((is_same<normalise<policy<>, digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::type::precision_type, digits2<20> >::value));
    BOOST_CHECK((is_same<normalise<policy<>, digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::type::promote_float_type, promote_float<false> >::value));
    BOOST_CHECK((is_same<normalise<policy<>, digits2<20>, promote_float<false>, discrete_quantile<integer_round_down>, denorm_error<throw_on_error>, domain_error<ignore_error> >::type::promote_double_type, policy<>::promote_double_type>::value));
@@ -88,6 +93,7 @@
    BOOST_CHECK(check_same(make_policy(promote_float<false>()), normalise<policy<promote_float<false> > >::type()));
    BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>()), normalise<policy<domain_error<ignore_error> > >::type()));
    BOOST_CHECK(check_same(make_policy(pole_error<ignore_error>()), normalise<policy<pole_error<ignore_error> > >::type()));
+ BOOST_CHECK(check_same(make_policy(indeterminate_result_error<ignore_error>()), normalise<policy<indeterminate_result_error<ignore_error> > >::type()));
 
    BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>()), policy<domain_error<ignore_error> >()));
    BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>()), policy<domain_error<ignore_error>, pole_error<ignore_error> >()));
@@ -95,12 +101,13 @@
    BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error> >()));
    BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error> >()));
    BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error> >()));
- BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), digits2<10>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, digits2<10> >()));
- BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), digits10<5>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, digits2<19> >()));
- BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), digits2<10>(), promote_float<false>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, digits2<10>, promote_float<false> >()));
+ BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), indeterminate_result_error<throw_on_error>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, indeterminate_result_error<throw_on_error> >()));
+ BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), indeterminate_result_error<throw_on_error>(), digits2<10>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, indeterminate_result_error<throw_on_error>, digits2<10> >()));
+ BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), indeterminate_result_error<throw_on_error>(), digits10<5>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, indeterminate_result_error<throw_on_error>, digits2<19> >()));
+ BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), indeterminate_result_error<throw_on_error>(), digits2<10>(), promote_float<false>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, indeterminate_result_error<throw_on_error>, digits2<10>, promote_float<false> >()));
 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
- BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), digits2<10>(), promote_float<false>(), promote_double<false>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, digits2<10>, promote_float<false>, promote_double<false> >()));
- BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), digits2<10>(), promote_float<false>(), promote_double<false>(), discrete_quantile<integer_round_down>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, digits2<10>, promote_float<false>, promote_double<false>, discrete_quantile<integer_round_down> >()));
+ BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), indeterminate_result_error<throw_on_error>(), digits2<10>(), promote_float<false>(), promote_double<false>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, indeterminate_result_error<throw_on_error>, digits2<10>, promote_float<false>, promote_double<false> >()));
+ BOOST_CHECK(check_same(make_policy(domain_error<ignore_error>(), pole_error<ignore_error>(), overflow_error<ignore_error>(), underflow_error<throw_on_error>(), denorm_error<throw_on_error>(), evaluation_error<ignore_error>(), indeterminate_result_error<throw_on_error>(), digits2<10>(), promote_float<false>(), promote_double<false>(), discrete_quantile<integer_round_down>()), policy<domain_error<ignore_error>, pole_error<ignore_error>, overflow_error<ignore_error>, underflow_error<throw_on_error>, denorm_error<throw_on_error>, evaluation_error<ignore_error>, indeterminate_result_error<throw_on_error>, digits2<10>, promote_float<false>, promote_double<false>, discrete_quantile<integer_round_down> >()));
 #endif
    return 0;
 } // int test_main(int, char* [])

Modified: branches/proto/v4/libs/math/test/test_tr1.cpp
==============================================================================
--- branches/proto/v4/libs/math/test/test_tr1.cpp (original)
+++ branches/proto/v4/libs/math/test/test_tr1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -557,7 +557,7 @@
    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(800) / 1024, static_cast<float>(1e-05)), static_cast<float>(9.999999999898274739584436515967055859383969942432E-6), eps * 5000);
    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(100) / 1024, static_cast<float>(1e+05)), static_cast<float>(99761.153306972066658135668386691227343323331995888), eps * 5000);
    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(-0.5), static_cast<float>(1e+10)), static_cast<float>(9.3421545766487137036576748555295222252286528414669e9), eps * 5000);
- BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(400) / 1024, ldexpf(static_cast<float>(1), 66)), static_cast<float>(7.0886102721911705466476846969992069994308167515242e19), eps * 5000);
+ BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(400) / 1024, static_cast<float>(ldexp(static_cast<double>(1), 66))), static_cast<float>(7.0886102721911705466476846969992069994308167515242e19), eps * 5000);
 
    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0), static_cast<float>(1), static_cast<float>(-1)), static_cast<float>(-1.557407724654902230506974807458360173087), eps * 5000);
    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.4), static_cast<float>(0), static_cast<float>(-4)), static_cast<float>(-4.153623371196831087495427530365430979011), eps * 5000);
@@ -1230,7 +1230,7 @@
    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(10240L)/1024L, static_cast<long double>(1L)/1024L), static_cast<long double>(2.35522579263922076203415803966825431039900000000993410734978e38L), eps * 5000L);
    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(10240L)/1024L, static_cast<long double>(10L)), static_cast<long double>(0.00161425530039067002345725193091329085443750382929208307802221L), eps * 5000L);
    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(144793L)/1024L, static_cast<long double>(100L)), static_cast<long double>(1.39565245860302528069481472855619216759142225046370312329416e-6L), eps * 5000L);
- BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(144793L)/1024L, static_cast<long double>(200L)), static_cast<long double>(9.11950412043225432171915100042647230802198254567007382956336e-68L), eps * 5000L);
+ BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(144793L)/1024L, static_cast<long double>(200L)), static_cast<long double>(9.11950412043225432171915100042647230802198254567007382956336e-68L), eps * 7000L);
 
    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(0.5L), static_cast<long double>(1L) / (1024*1024L)), static_cast<long double>(-817.033790261762580469303126467917092806755460418223776544122L), eps * 5000L);
    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(5.5L), static_cast<long double>(3.125L)), static_cast<long double>(-2.61489440328417468776474188539366752698192046890955453259866L), eps * 5000L);
@@ -1471,7 +1471,7 @@
    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(10240L)/1024L, static_cast<long double>(1L)/1024L), static_cast<long double>(2.35522579263922076203415803966825431039900000000993410734978e38L), eps * 5000L);
    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(10240L)/1024L, static_cast<long double>(10L)), static_cast<long double>(0.00161425530039067002345725193091329085443750382929208307802221L), eps * 5000L);
    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(144793L)/1024L, static_cast<long double>(100L)), static_cast<long double>(1.39565245860302528069481472855619216759142225046370312329416e-6L), eps * 5000L);
- BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(144793L)/1024L, static_cast<long double>(200L)), static_cast<long double>(9.11950412043225432171915100042647230802198254567007382956336e-68L), eps * 5000L);
+ BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(144793L)/1024L, static_cast<long double>(200L)), static_cast<long double>(9.11950412043225432171915100042647230802198254567007382956336e-68L), eps * 7000L);
 
    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(0.5L), static_cast<long double>(1L) / (1024*1024L)), static_cast<long double>(-817.033790261762580469303126467917092806755460418223776544122L), eps * 5000L);
    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(5.5L), static_cast<long double>(3.125L)), static_cast<long double>(-2.61489440328417468776474188539366752698192046890955453259866L), eps * 5000L);

Modified: branches/proto/v4/libs/math/test/zeta_1_below_data.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/zeta_1_below_data.ipp (original)
+++ branches/proto/v4/libs/math/test/zeta_1_below_data.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 2>, 24> zeta_1_below_data = {{
       { SC_(0.02141654491424560546875), SC_(-0.5201506602793944998316548018699690797681) },

Modified: branches/proto/v4/libs/math/test/zeta_1_up_data.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/zeta_1_up_data.ipp (original)
+++ branches/proto/v4/libs/math/test/zeta_1_up_data.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 2>, 24> zeta_1_up_data = {{
       { SC_(1.00000011920928955078125), SC_(8388608.57721567358185799990090564625463) },

Modified: branches/proto/v4/libs/math/test/zeta_data.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/zeta_data.ipp (original)
+++ branches/proto/v4/libs/math/test/zeta_data.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 2>, 200> zeta_data = {{
       { SC_(1.16628754138946533203125), SC_(6.602868183069916948720755731837247651904) },

Modified: branches/proto/v4/libs/math/test/zeta_neg_data.ipp
==============================================================================
--- branches/proto/v4/libs/math/test/zeta_neg_data.ipp (original)
+++ branches/proto/v4/libs/math/test/zeta_neg_data.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+// 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)
+
 #define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
    static const boost::array<boost::array<T, 2>, 200> zeta_neg_data = {{
       { SC_(-29.912628173828125), SC_(-11411595.03734503626230312380285630491992) },

Modified: branches/proto/v4/libs/mpi/doc/mpi.qbk
==============================================================================
--- branches/proto/v4/libs/mpi/doc/mpi.qbk (original)
+++ branches/proto/v4/libs/mpi/doc/mpi.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -29,10 +29,6 @@
 [def _LAM_ [@http://www.lam-mpi.org/ LAM/MPI]]
 [def _MPICH_ [@http://www-unix.mcs.anl.gov/mpi/mpich/ MPICH]]
 [def _OpenMPI_ [@http://www.open-mpi.org OpenMPI]]
-[def _boost_cvs_ [@http://sourceforge.net/cvs/?group_id=7586
- Boost CVS Repository]]
-[def _sandbox_cvs_ [@http://sourceforge.net/cvs/?group_id=53513
- Boost Sandbox CVS Repository]]
 [def _accumulate_ [@http://www.sgi.com/tech/stl/accumulate.html
                      `accumulate`]]
 
@@ -163,21 +159,6 @@
 appears to be working with a C++ compiler and we're ready to move on.
 [endsect]
 
-[section:getting Getting Boost.MPI]
-
-Boost.MPI is not available in any version of Boost prior to the 1.35.x
-series. You may need to retrieve the
-latest version of Boost from CVS using the commands below. When CVS
-asks for a password, just hit "enter".
-
-[pre
-cvs -d:pserver:anonymous_at_[hidden]:/cvsroot/boost login
-cvs -z3 -d:pserver:anonymous_at_[hidden]:/cvsroot/boost \
- co -P boost
-]
-
-[endsect]
-
 [section:config Configure and Build]
 
 Boost.MPI uses version 2 of the

Modified: branches/proto/v4/libs/mpi/src/content_oarchive.cpp
==============================================================================
--- branches/proto/v4/libs/mpi/src/content_oarchive.cpp (original)
+++ branches/proto/v4/libs/mpi/src/content_oarchive.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,5 +14,6 @@
 // explicitly instantiate all required template functions
 
 template class archive_pointer_oserializer<mpi::detail::content_oarchive> ;
-
+template class archive_pointer_oserializer<boost::mpi::detail::ignore_skeleton_oarchive<boost::mpi::detail::content_oarchive> >;
+template class archive_pointer_oserializer<boost::mpi::detail::ignore_skeleton_oarchive<boost::mpi::detail::mpi_datatype_oarchive> >;
 } } }

Modified: branches/proto/v4/libs/mpi/src/mpi_datatype_cache.cpp
==============================================================================
--- branches/proto/v4/libs/mpi/src/mpi_datatype_cache.cpp (original)
+++ branches/proto/v4/libs/mpi/src/mpi_datatype_cache.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,16 +13,16 @@
 namespace boost { namespace mpi { namespace detail {
 
   typedef std::map<std::type_info const*,MPI_Datatype,type_info_compare>
- stored_map_type;
+ stored_map_type;
 
   struct mpi_datatype_map::implementation
   {
- stored_map_type map;
+ stored_map_type map;
   };
 
   mpi_datatype_map::mpi_datatype_map()
   {
- impl = new implementation();
+ impl = new implementation();
   }
 
   mpi_datatype_map::~mpi_datatype_map()
@@ -30,32 +30,31 @@
     // do not free after call to MPI_FInalize
     int finalized=0;
     BOOST_MPI_CHECK_RESULT(MPI_Finalized,(&finalized));
- if (!finalized) {
- // ignore errors in the destructor
- for (stored_map_type::iterator it=impl->map.begin(); it != impl->map.end(); ++it) {
- MPI_Type_free(&(it->second));
- }
- }
- delete impl;
+ if (!finalized) {
+ // ignore errors in the destructor
+ for (stored_map_type::iterator it=impl->map.begin(); it != impl->map.end(); ++it)
+ MPI_Type_free(&(it->second));
+ }
+ delete impl;
   }
 
   MPI_Datatype mpi_datatype_map::get(const std::type_info* t)
   {
- stored_map_type::iterator pos = impl->map.find(t);
- if (pos != impl->map.end())
- return pos->second;
- else
- return MPI_DATATYPE_NULL;
+ stored_map_type::iterator pos = impl->map.find(t);
+ if (pos != impl->map.end())
+ return pos->second;
+ else
+ return MPI_DATATYPE_NULL;
   }
 
   void mpi_datatype_map::set(const std::type_info* t, MPI_Datatype datatype)
   {
- impl->map[t] = datatype;
+ impl->map[t] = datatype;
   }
 
   mpi_datatype_map& mpi_datatype_cache()
   {
- static mpi_datatype_map cache;
- return cache;
+ static mpi_datatype_map cache;
+ return cache;
   }
 } } }

Modified: branches/proto/v4/libs/mpi/src/packed_skeleton_iarchive.cpp
==============================================================================
--- branches/proto/v4/libs/mpi/src/packed_skeleton_iarchive.cpp (original)
+++ branches/proto/v4/libs/mpi/src/packed_skeleton_iarchive.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,6 @@
 
 #define BOOST_ARCHIVE_SOURCE
 #include <boost/archive/impl/archive_pointer_iserializer.ipp>
-#include <boost/archive/impl/archive_pointer_oserializer.ipp>
 #include <boost/mpi/skeleton_and_content.hpp>
 
 #include <boost/archive/binary_iarchive.hpp>
@@ -21,6 +20,9 @@
 
 template class basic_binary_iarchive<mpi::packed_skeleton_iarchive> ;
 template class detail::archive_pointer_iserializer<mpi::packed_skeleton_iarchive> ;
+template class detail::archive_pointer_iserializer<
+ mpi::detail::forward_skeleton_iarchive<
+ boost::mpi::packed_skeleton_iarchive, boost::mpi::packed_iarchive> > ;
 //template class binary_iarchive_impl<packed_skeleton_iarchive> ;
 
 } } // end namespace boost::archive

Modified: branches/proto/v4/libs/mpi/src/packed_skeleton_oarchive.cpp
==============================================================================
--- branches/proto/v4/libs/mpi/src/packed_skeleton_oarchive.cpp (original)
+++ branches/proto/v4/libs/mpi/src/packed_skeleton_oarchive.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,6 +18,9 @@
 // explicitly instantiate all required templates
 
 template class detail::archive_pointer_oserializer<mpi::packed_skeleton_oarchive> ;
+template class detail::archive_pointer_oserializer<
+ mpi::detail::forward_skeleton_oarchive<
+ boost::mpi::packed_skeleton_oarchive, boost::mpi::packed_oarchive> > ;
 template class basic_binary_oarchive<mpi::packed_skeleton_oarchive> ;
 //template class binary_oarchive_impl<mpi_packed_oarchive> ;
 

Modified: branches/proto/v4/libs/mpi/src/point_to_point.cpp
==============================================================================
--- branches/proto/v4/libs/mpi/src/point_to_point.cpp (original)
+++ branches/proto/v4/libs/mpi/src/point_to_point.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,7 +32,7 @@
   BOOST_MPI_CHECK_RESULT(MPI_Send,
                          (const_cast<void*>(size), 1,
                           get_mpi_datatype<std::size_t>(ar.size()),
- dest, tag, comm));
+ dest, tag, comm));
   BOOST_MPI_CHECK_RESULT(MPI_Send,
                          (const_cast<void*>(ar.address()), ar.size(),
                           MPI_PACKED,

Modified: branches/proto/v4/libs/mpi/test/broadcast_test.cpp
==============================================================================
--- branches/proto/v4/libs/mpi/test/broadcast_test.cpp (original)
+++ branches/proto/v4/libs/mpi/test/broadcast_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -55,7 +55,6 @@
   using boost::mpi::get_content;
   using boost::make_counting_iterator;
   using boost::mpi::broadcast;
- using boost::mpi::content;
   using boost::mpi::get_content;
 
   typedef std::list<int>::iterator iterator;

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/AUX_LAMBDA_SUPPORT.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/AUX_LAMBDA_SUPPORT.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/AUX_LAMBDA_SUPPORT.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -102,5 +102,4 @@
 |Macros|, |Metafunctions|, |Lambda Expression|
 
 
-.. |PP-tuple| replace:: `PP-tuple`__
-__ http://www.boost.org/libs/preprocessor/doc/data/tuples.html
+.. |PP-tuple| replace:: `PP-tuple <http://www.boost.org/libs/preprocessor/doc/data/tuples.html>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Acknowledgements.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Acknowledgements.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Acknowledgements.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 The format and language of this reference documentation has been greatly influenced by
 the SGI's `Standard Template Library Programmer's Guide`__.
 

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Iteration.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Iteration.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Iteration.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 Iteration algorithms are the basic building blocks behind many of the
 MPL's algorithms, and are usually the first place to look at when
 starting to build a new one. Abstracting away the details of sequence

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Querying.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Querying.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Querying.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 .. |Querying Algorithms| replace:: `Querying Algorithms`_

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Runtime.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Runtime.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Runtime.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 .. The MPL *runtime algorithms* provide out-of-box support for the
    common scenarios of crossing compile time/runtime boundary.
 

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Transformation.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Transformation.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms-Transformation.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 According to their name, MPL's *transformation*, or *sequence-building
 algorithms* provide the tools for building new sequences from the existing
 ones by performing some kind of transformation. A typical transformation

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Algorithms.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 The MPL provides a broad range of fundamental algorithms aimed to
 satisfy the majority of sequential compile-time data processing
 needs. The algorithms include compile-time counterparts
@@ -40,6 +40,5 @@
 concept.
 
 
-.. |Output Iterator| replace:: `Output Iterator <http://www.sgi.com/tech/stl/OutputIterator.html>`_
-.. |sequence algorithms| replace:: `sequence algorithms`__
-__ `Algorithms`_
+.. |Output Iterator| replace:: `Output Iterator <http://www.sgi.com/tech/stl/OutputIterator.html>`__
+.. |sequence algorithms| replace:: `sequence algorithms <|Algorithms link|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/AssociativeSequence.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/AssociativeSequence.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/AssociativeSequence.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -114,8 +114,8 @@
 |Sequences|, |Extensible Associative Sequence|, |has_key|, |count|, |order|, |at|, |key_type|, |value_type|
 
 
-.. |key| replace:: `key`__
-__ `key-part`_
+.. |key| replace:: `key <|key-part_link|>`__
+.. |key-part_link| replace:: `key-part`_
 
-.. |value| replace:: `value`__
-__ `value-part`_
+.. |value| replace:: `value <|value-part_link|>`__
+.. |value-part_link| replace:: `value-part`_

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/CFG_NO_PREPROCESSED.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/CFG_NO_PREPROCESSED.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/CFG_NO_PREPROCESSED.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -40,5 +40,4 @@
 
 |Macros|, |Configuration|
 
-.. |preprocessed headers| replace:: `preprocessed headers`__
-__ `BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`_
+.. |preprocessed headers| replace:: `preprocessed headers <|BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS link|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Categorized.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Categorized.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Categorized.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 .. _`Categorized`:
 
 Concepts

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Data.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Data.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Data.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 .. _`Data`:
 
 .. |Data Types| replace:: `Data Types`_

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators-Concepts.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators-Concepts.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators-Concepts.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,4 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 2007.
 .. Distributed under the Boost
 .. Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators-Metafunctions.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators-Metafunctions.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators-Metafunctions.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 From the implementation standpoint, iterators are almost-opaque types which
 guarantee to provide us with the only memeber that we can access directly:
 their category. Incrementing, dereferencing and the rest of iterator

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Iterators.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 Iterators are generic means of addressing a particular element or a range
 of sequential elements in a sequence. They are also a mechanism that makes
 it possible to decouple `algorithms`__ from concrete compile-time `sequence

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Macros-Asserts.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Macros-Asserts.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Macros-Asserts.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,4 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 2007.
 .. Distributed under the Boost
 .. Software License, Version 1.0. (See accompanying

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Macros-Configuration.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Macros-Configuration.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Macros-Configuration.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 .. |Configuration| replace:: `Configuration`_

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Macros.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Macros.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Macros.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 Being a *template* metaprogramming framework, the MPL concentrates on
 getting one thing done well and leaves most of the clearly
 preprocessor-related tasks to the corresponding specialized

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Arithmetic.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Arithmetic.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Arithmetic.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,10 +1,8 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
-.. |Arithmetic Operations| replace:: `Arithmetic Operations`_
 
-.. |arithmetic| replace:: `arithmetic`__
-__ `Arithmetic Operations`_
+.. |Arithmetic Operations| replace:: `Arithmetic Operations`_
+.. |arithmetic| replace:: `arithmetic <|Arithmetic Operations|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Bitwise.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Bitwise.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Bitwise.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,10 +1,8 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
-.. |Bitwise Operations| replace:: `Bitwise Operations`_
 
-.. |bitwise| replace:: `bitwise`__
-__ `Bitwise Operations`_
+.. |Bitwise Operations| replace:: `Bitwise Operations`_
+.. |bitwise| replace:: `bitwise <|Bitwise Operations|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Comparisons.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Comparisons.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Comparisons.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,10 +1,8 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
-.. |Comparisons| replace:: `Comparisons`_
 
-.. |comparison| replace:: `comparison`__
-__ `Comparisons`_
+.. |Comparisons| replace:: `Comparisons`_
+.. |comparison| replace:: `comparison <|Comparisons|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Composition.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Composition.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Composition.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,12 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
 .. |Composition and Argument Binding| replace:: `Composition and Argument Binding`_
 
-.. |composition| replace:: `composition`__
-.. |argument binding| replace:: `argument binding`__
-__ `Composition and Argument Binding`_
-__ `Composition and Argument Binding`_
+.. |composition| replace:: `composition <|Composition and Argument Binding link|>`__
+.. |argument binding| replace:: `argument binding <|Composition and Argument Binding link|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Conditional.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Conditional.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Conditional.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,7 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
-.. |control flow| replace:: `control flow`__
-__ `Control Flow`_
+
+.. |control flow| replace:: `control flow <|Control Flow link|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Invocation.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Invocation.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Invocation.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,7 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
-.. |invocation| replace:: `invocation`__
-__ `Invocation`_
+
+.. |invocation| replace:: `invocation <|Invocation link|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Logical.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Logical.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Logical.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,11 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
-.. |logical| replace:: `logical`__
-__ `Logical Operations`_
 
+.. |logical| replace:: `logical <|Logical Operations|>`__
 .. |Logical Operations| replace:: `Logical Operations`_
 .. |logical operations| replace:: `logical operations`_

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Trivial.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Trivial.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Trivial.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 The MPL provides a number of |Trivial Metafunction|\ s that a nothing more than
 thin wrappers for a differently-named class nested type members. While important
 in the context of `in-place metafunction composition`__, these metafunctions have
@@ -23,22 +23,13 @@
 
 In the following table, ``x`` is an arbitrary class type.
 
-.. |first| replace:: |``first``|__
-.. |``first``| replace:: :refentry:`first`
-
-__ `trivial-first`_
-
-.. |second| replace:: |``second``|__
-.. |``second``| replace:: :refentry:`second`
-
-__ `trivial-second`_
-
-
-.. |base| replace:: |``base``|__
-.. |``base``| replace:: :refentry:`base`
-
-__ `trivial-base`_
-
+.. |first| replace:: `:refentry:`first` <|first link|>`__
+.. |second| replace:: `:refentry:`second` <|second link|>`__
+.. |base| replace:: `:refentry:`base` <|base link|>__
+
+.. |first link| replace:: `trivial-first`_
+.. |second link| replace:: `trivial-second`_
+.. |base link| replace:: `trivial-base`_
 
 
 .. _`trivial-first`:
@@ -62,5 +53,4 @@
 
 |Metafunctions|, |Trivial Metafunction|
 
-.. |Trivial Metafunctions| replace:: `Trivial Metafunctions`__
-__ `Trivial`_
+.. |Trivial Metafunctions| replace:: `Trivial Metafunctions <|Trivial link|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Type.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Type.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions-Type.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,8 +1,7 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
-.. |type selection| replace:: `type selection`__
-__ `Type Selection`_
+
+.. |type selection| replace:: `type selection <|Type Selection link|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Metafunctions.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 The MPL includes a number of predefined metafunctions that can be roughly
 classified in two categories: `general purpose metafunctions`, dealing with
 conditional |type selection| and higher-order metafunction |invocation|,

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Classes.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Classes.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Classes.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 The MPL provides a large number of predefined general-purpose sequence
 classes covering most of the typical metaprogramming needs out-of-box.
 

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Concepts.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Concepts.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Concepts.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 The taxonomy of sequence concepts in MPL parallels the taxonomy of the MPL
 |iterators|, with two additional classification dimensions:
 `extensibility` and `associativeness`.
@@ -29,5 +29,4 @@
    the common parts of different sequence classes' specifications.
 
 
-.. |sequence concepts| replace:: `sequence concepts`__
-__ `label-Sequences-Concepts`_
+.. |sequence concepts| replace:: `sequence concepts <|Sequences/Concepts link|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Intrinsic.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Intrinsic.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Intrinsic.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 The metafunctions that form the essential interface of sequence `classes`__
 documented in the corresponding |sequence concepts| are known as
 *intrinsic sequence operations*. They differ from generic

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Views.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Views.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences-Views.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 A *view* is a sequence adaptor delivering an altered presentation of
 one or more underlying sequences. Views are lazy, meaning that their
 elements are only computed on demand. Similarly to the short-circuit

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/Sequences.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 Compile-time sequences of types are one of the basic concepts of C++
 template metaprogramming. Differences in types of objects being
 manipulated is the most common point of variability of similar, but

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/TagDispatchedMetafunction.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/TagDispatchedMetafunction.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/TagDispatchedMetafunction.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -161,8 +161,5 @@
 |Metafunction|, |Metafunction Class|, |Numeric Metafunction|
 
 
-.. |tag-metafunction| replace:: `tag metafunction`__
-__ `tag-metafunction`_
-
-.. |tag dispatched| replace:: `tag dispatched`__
-__ `Tag Dispatched Metafunction`_
+.. |tag-metafunction| replace:: `tag metafunction <|tag-metafunction link|>`__
+.. |tag dispatched| replace:: `tag dispatched <|Tag Dispatched Metafunction link|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/VariadicSequence.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/VariadicSequence.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/VariadicSequence.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -113,11 +113,7 @@
 
 |Sequences|, |Configuration|, |Integral Sequence Wrapper|
 
-.. |variadic| replace:: `variadic`__
-__ `Variadic Sequence`_
-
-.. |variadic forms| replace:: `variadic forms`__
-__ `Variadic Sequence`_
-
-.. |numbered forms| replace:: `numbered forms`__
-__ `Variadic Sequence`_
+.. |variadic| replace:: `variadic <|Variadic Sequence link|>`__
+.. |variadic forms| replace:: `variadic forms <|Variadic Sequence link|>`__
+.. |numbered forms| replace:: `numbered forms <|Variadic Sequence link|>`__
+.. |Variadic Sequence link| replace:: `Variadic Sequence`_

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/bool_.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/bool_.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/bool_.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -88,10 +88,5 @@
 |Data Types|, |Integral Constant|, |int_|, |long_|, |integral_c|
 
 
-.. |true_| replace:: |``true_``|__
-.. |``true_``| replace:: ``true_``
-__ `bool\_`_
-
-.. |false_| replace:: |``false_``|__
-.. |``false_``| replace:: ``false_``
-__ `bool\_`_
+.. |true_| replace:: ```true_`` <|bool_ link|>`__
+.. |false_| replace:: ```false_`` <|bool_ link|>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/for_each.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/for_each.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/for_each.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -141,5 +141,5 @@
 
 |Runtime Algorithms|, |Views|, |transform_view|
 
-.. |unary function object| replace:: `unary function object <http://www.sgi.com/tech/stl/UnaryFunction.html>`_
-.. |value_initialized| replace:: `value_initialized <http://www.boost.org/libs/utility/value_init.htm>`_
+.. |unary function object| replace:: `unary function object <http://www.sgi.com/tech/stl/UnaryFunction.html>`__
+.. |value_initialized| replace:: `value_initialized <http://www.boost.org/libs/utility/value_init.htm>`__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/inserter_.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/inserter_.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/inserter_.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -101,6 +101,4 @@
 
 
 .. |+inserter+| replace:: inserter
-.. |inserter| replace:: |``inserter``|__
-.. |``inserter``| replace:: :refentry:`inserter`
-__ `inserter_`_
+.. |inserter| replace:: ':refentry:`inserter` <|inserter_ link|>'__

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/refmanual.py
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/refmanual.py (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/refmanual.py 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,7 +20,8 @@
     underline = underlines[len(parts) - 1] * len(parts[-1])
     if len(parts) > 0:
         hidden_target = '.. _`label-%s`:' % '-'.join( parts )
- return '\n%s\n%s\n%s\n\n' % (parts[-1], underline, hidden_target )
+ replacement_link = '.. |%s link| replace:: `label-%s`_' % ( '/'.join( parts ), '-'.join( parts ) )
+ return '\n%s\n%s\n%s\n%s\n\n' % (parts[-1], underline, hidden_target, replacement_link )
     else:
         return '\n%s\n%s\n\n' % (parts[-1], underline )
 
@@ -39,9 +40,10 @@
     else: ref = '/'.join( page.split('.')[0].split('-') )
     if ref.upper() == ref or ref.lower() == ref:
         output.write(
- ( '.. |%(ref)s| replace:: |``%(ref)s``|__\n'
- + '.. |``%(ref)s``| replace:: :refentry:`%(ref)s`\n'
- + '__ `%(ref)s`_\n' )
+ ( '.. |%(ref)s| replace:: `|%(ref)s refentry| <|%(ref)s link|>`__\n'
+ + '.. |%(ref)s refentry| replace:: :refentry:`%(ref)s`\n'
+ + '.. |%(ref)s link| replace:: `%(ref)s`_\n'
+ )
                     % { 'ref': ref }
             )
     else:

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/refmanual.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/refmanual.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/refmanual.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,9 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 The MPL Reference Manual
 ************************
 
@@ -29,11 +29,8 @@
 .. contents:: Table of Contents
     :depth: 3
 
-.. |Boost.Bind| replace:: `Boost.Bind`__
-__ http://www.boost.org/libs/bind/bind.html
-
-.. |Boost.Lambda| replace:: `Boost.Lambda`__
-__ http://www.boost.org/libs/lambda/doc/index.html
+.. |Boost.Bind| replace:: `Boost.Bind <http://www.boost.org/libs/bind/bind.html>`__
+.. |Boost.Lambda| replace:: `Boost.Lambda <http://www.boost.org/libs/lambda/doc/index.html>`__
 
 .. role:: refentry(literal)
 
@@ -87,24 +84,19 @@
 
 .. |O(1)| replace:: *O(1)*
 
-.. |_1| replace:: |``_1``|__
-.. |_2| replace:: |``_2``|__
-.. |_3| replace:: |``_3``|__
-.. |_4| replace:: |``_4``|__
-.. |_5| replace:: |``_5``|__
-.. |``_1``| replace:: :refentry:`_1`
-.. |``_2``| replace:: :refentry:`_2`
-.. |``_3``| replace:: :refentry:`_3`
-.. |``_4``| replace:: :refentry:`_4`
-.. |``_5``| replace:: :refentry:`_5`
-__ `Placeholders`_
-__ `Placeholders`_
-__ `Placeholders`_
-__ `Placeholders`_
-__ `Placeholders`_
+.. |_1| replace:: `|_1 refentry| <|Placeholders|>`__
+.. |_2| replace:: `|_2 refentry| <|Placeholders|>`__
+.. |_3| replace:: `|_3 refentry| <|Placeholders|>`__
+.. |_4| replace:: `|_4 refentry| <|Placeholders|>`__
+.. |_5| replace:: `|_5 refentry| <|Placeholders|>`__
+
+.. |_1 refentry| replace:: :refentry:`_1`
+.. |_2 refentry| replace:: :refentry:`_2`
+.. |_3 refentry| replace:: :refentry:`_3`
+.. |_4 refentry| replace:: :refentry:`_4`
+.. |_5 refentry| replace:: :refentry:`_5`
 
-.. |placeholder| replace:: `placeholder`__
-__ `Placeholders`_
+.. |placeholder| replace:: `placeholder <|Placeholders|>`__
 
 .. |_1,_2,..._n| replace:: |_1|, |_2|, |_3|,\ |...|
 
@@ -130,12 +122,12 @@
 
 
 .. |preprocessed headers disclaimer| replace:: [*Note:* Overriding will take effect
- *only* if the library is configured not to use `preprocessed headers`__. See
- |+BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS+|__ for more information. |--| *end note*\]
+ *only* if the library is configured not to use `preprocessed headers
+ <|BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS_link|>`__. See
+ |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS_ref| for more information. |--| *end note*\]
 
-.. |+BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS+| replace:: :refentry:`BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`
-__ `BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`_
-__ `BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`_
+.. |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS_ref| replace:: `:refentry:`BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS` <|BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS_link|>`__
+.. |BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS_link| replace:: `BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS`_
 
 
 .. |transformation algorithm disclaimer| replace::

Modified: branches/proto/v4/libs/mpl/doc/src/refmanual/terminology.rst
==============================================================================
--- branches/proto/v4/libs/mpl/doc/src/refmanual/terminology.rst (original)
+++ branches/proto/v4/libs/mpl/doc/src/refmanual/terminology.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,10 +1,11 @@
 
-
 .. Copyright Aleksey Gurtovoy, David Abrahams 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)
+
 .. _`Overloaded name`:
+.. |Overloaded name link| replace:: `Overloaded name`_
 
 Overloaded name
     Overloaded name is a term used in this reference documentation to designate
@@ -13,12 +14,11 @@
     is implemented by other, unspecified, means.
     
 
-.. |overloaded name| replace:: `overloaded name`__
-__ `Overloaded name`_
-
+.. |overloaded name| replace:: `overloaded name <|Overloaded name link|>`__
 
 
 .. _`Concept-identical`:
+.. |Concept-identical link| replace:: `Concept-identical`_
 
 Concept-identical
     A sequence ``s1`` is said to be concept-identical to a sequence ``s2`` if
@@ -26,6 +26,7 @@
 
 
 .. _`Bind expression`:
+.. |Bind expression link| replace:: `Bind expression`_
 
 Bind expression
     A bind expression is simply that |--| an instantiation of one of the |bind|
@@ -42,12 +43,5 @@
         _2
 
 
-.. |bind expression| replace:: `bind expression`__
-__ `Bind expression`_
-
-
-
-.. |concept-identical| replace:: `concept-identical`__
-__ `Concept-identical`_
-
-
+.. |bind expression| replace:: `bind expression <|Bind expression link|>`__
+.. |concept-identical| replace:: `concept-identical <|Concept-identical link|>`__

Modified: branches/proto/v4/libs/multi_array/doc/reference.html
==============================================================================
--- branches/proto/v4/libs/multi_array/doc/reference.html (original)
+++ branches/proto/v4/libs/multi_array/doc/reference.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Boost.MultiArray Reference Manual</title><meta name="generator" content="DocBook XSL Stylesheets V1.71.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id823342"></a>Boost.MultiArray Reference Manual</h1></div><div><div class="author"><h3 class="author"><span class="firstname">Ronald</span> <span class="surname">Garcia</span></h3><div class="affiliation"><span class="orgname">Indiana University<br></span> <span class="orgdiv">Open Systems Lab<br></span></div></div></div><div><p class="copyright">Copyright © 2002 The Trustees of Indiana University</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1">Library Synopsis</span></dt><dt><span class="sect1">MultiArray Concept</span></dt><dd><dl><dt
><span class="sect2">Notation</span></dt><dt><span class="sect2">Associated Types</span></dt><dt><span class="sect2">Valid expressions</span></dt><dt><span class="sect2">Complexity guarantees</span></dt><dt><span class="sect2">Invariants</span></dt><dt><span class="sect2">Associated Types for Views</span></dt><dt><span class="sect2">Models</span></dt></dl></dd><dt><span class="sect1">Array Components</span></dt><dd><dl><dt><span class="sect2">multi_array</span></dt><dt><span class="sect2">multi_array_ref</span></dt><dt><span class="sect2">const_multi_array_ref</span></dt></dl></dd><dt><span class="sect1"><a href="#auxiliary">Auxiliary C
omponents</a></span></dt><dd><dl><dt><span class="sect2">multi_array_types</span></dt><dt><span class="sect2">extent_range</span></dt><dt><span class="sect2">extent_gen</span></dt><dt><span class="sect2">Global Objects</span></dt><dt><span class="sect2">View and SubArray Generators</span></dt><dt><span class="sect2">Memory Layout Specifiers</span></dt><dt><span class="sect2">Range Checking</span></dt></dl></dd></dl></div><p>Boost.MultiArray is composed of several components.
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Boost.MultiArray Reference Manual</title><meta name="generator" content="DocBook XSL Stylesheets V1.71.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id730554"></a>Boost.MultiArray Reference Manual</h1></div><div><div class="author"><h3 class="author"><span class="firstname">Ronald</span> <span class="surname">Garcia</span></h3><div class="affiliation"><span class="orgname">Indiana University<br></span> <span class="orgdiv">Open Systems Lab<br></span></div></div></div><div><p class="copyright">Copyright © 2002 The Trustees of Indiana University</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1">Library Synopsis</span></dt><dt><span class="sect1">MultiArray Concept</span></dt><dd><dl><dt
><span class="sect2">Notation</span></dt><dt><span class="sect2">Associated Types</span></dt><dt><span class="sect2">Valid expressions</span></dt><dt><span class="sect2">Complexity guarantees</span></dt><dt><span class="sect2">Invariants</span></dt><dt><span class="sect2">Associated Types for Views</span></dt><dt><span class="sect2">Models</span></dt></dl></dd><dt><span class="sect1">Array Components</span></dt><dd><dl><dt><span class="sect2">multi_array</span></dt><dt><span class="sect2">multi_array_ref</span></dt><dt><span class="sect2">const_multi_array_ref</span></dt></dl></dd><dt><span class="sect1"><a href="#auxiliary">Auxiliary C
omponents</a></span></dt><dd><dl><dt><span class="sect2">multi_array_types</span></dt><dt><span class="sect2">extent_range</span></dt><dt><span class="sect2">extent_gen</span></dt><dt><span class="sect2">Global Objects</span></dt><dt><span class="sect2">View and SubArray Generators</span></dt><dt><span class="sect2">Memory Layout Specifiers</span></dt><dt><span class="sect2">Range Checking</span></dt></dl></dd></dl></div><p>Boost.MultiArray is composed of several components.
 The MultiArray concept defines a generic interface to multidimensional
 containers.
 <code class="literal">multi_array</code> is a general purpose container class
@@ -150,8 +150,8 @@
 dimensional array can be stored by row (i.e., the elements of each row
 are stored contiguously) or by column (i.e., the elements of each
 column are stored contiguously).
-</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id896773"></a>Notation</h3></div></div></div><p>What follows are the descriptions of symbols that will be used
-to describe the MultiArray interface.</p><div class="table"><a name="id896782"></a><p class="title"><b>Table 1. Notation</b></p><div class="table-contents"><table summary="Notation" border="1"><colgroup><col><col></colgroup><tbody><tr><td><code class="literal">A</code></td><td>A type that is a model of MultiArray
+</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id835332"></a>Notation</h3></div></div></div><p>What follows are the descriptions of symbols that will be used
+to describe the MultiArray interface.</p><div class="table"><a name="id835342"></a><p class="title"><b>Table 1. Notation</b></p><div class="table-contents"><table summary="Notation" border="1"><colgroup><col><col></colgroup><tbody><tr><td><code class="literal">A</code></td><td>A type that is a model of MultiArray
 </td></tr><tr><td><code class="literal">a,b</code></td><td>Objects of type <code class="literal">A</code></td></tr><tr><td><code class="literal">NumDims</code></td><td>The numeric dimension parameter associated with
 <code class="literal">A</code>.</td></tr><tr><td><code class="literal">Dims</code></td><td>Some numeric dimension parameter such that
 <code class="literal">0&lt;Dims&lt;NumDims</code>.
@@ -159,8 +159,8 @@
 to <code class="literal">index_gen::operator[](index_range)</code>.</td></tr><tr><td><code class="literal">index_list</code></td><td>An object whose type models
 <a href="../../utility/Collection.html" target="_top">Collection</a>
 </td></tr><tr><td><code class="literal">idx</code></td><td>A signed integral value.</td></tr><tr><td><code class="literal">tmp</code></td><td>An object of type
- <code class="literal">boost::array&lt;index,NumDims&gt;</code></td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id896941"></a>Associated Types</h3></div></div></div><p>
-</p><div class="table"><a name="id896949"></a><p class="title"><b>Table 2. Associated Types</b></p><div class="table-contents"><table summary="Associated Types" border="1"><colgroup><col><col></colgroup><thead><tr><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="literal">value_type</code></td><td>This is the value type of the container.
+ <code class="literal">boost::array&lt;index,NumDims&gt;</code></td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id835500"></a>Associated Types</h3></div></div></div><p>
+</p><div class="table"><a name="id835508"></a><p class="title"><b>Table 2. Associated Types</b></p><div class="table-contents"><table summary="Associated Types" border="1"><colgroup><col><col></colgroup><thead><tr><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="literal">value_type</code></td><td>This is the value type of the container.
   If <code class="literal">NumDims == 1</code>, then this is
 <code class="literal">element</code>. Otherwise, this is the value type of the
 immediately nested containers.
@@ -260,7 +260,7 @@
 const_array_view&lt;Dims&gt;::type</code>
 </td><td>
 This is the const view type with <code class="literal">Dims</code> dimensions.
-</td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id897451"></a>Valid expressions</h3></div></div></div><div class="table"><a name="id897455"></a><p class="title"><b>Table 3. Valid Expressions</b></p><div class="table-contents"><table summary="Valid Expressions" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Expression</th><th>Return type</th><th>Semantics</th></tr></thead><tbody><tr><td><code class="literal">A::dimensionality</code></td><td><code class="literal">size_type</code></td><td>This compile-time constant represents the number of
+</td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id836010"></a>Valid expressions</h3></div></div></div><div class="table"><a name="id836014"></a><p class="title"><b>Table 3. Valid Expressions</b></p><div class="table-contents"><table summary="Valid Expressions" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Expression</th><th>Return type</th><th>Semantics</th></tr></thead><tbody><tr><td><code class="literal">A::dimensionality</code></td><td><code class="literal">size_type</code></td><td>This compile-time constant represents the number of
 dimensions of the array (note that
 <code class="literal">A::dimensionality == NumDims</code>).</td></tr><tr><td><code class="literal">a.shape()</code></td><td><code class="literal">const size_type*</code></td><td>
 This returns a list of <code class="literal">NumDims</code> elements specifying the
@@ -360,11 +360,11 @@
 expression to be valid.</td></tr><tr><td><code class="literal">a &gt;= b</code></td><td>bool</td><td>This performs a lexicographical comparison of the
 values of <code class="literal">a</code> and <code class="literal">b</code>. The element
 type must model LessThanComparable for this
-expression to be valid.</td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id898268"></a>Complexity guarantees</h3></div></div></div><code class="literal">begin()</code> and <code class="literal">end()</code> execute in amortized
+expression to be valid.</td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id836828"></a>Complexity guarantees</h3></div></div></div><code class="literal">begin()</code> and <code class="literal">end()</code> execute in amortized
 constant time.
 <code class="literal">size()</code> executes in at most linear time in the
 MultiArray's size.
-</div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id898293"></a>Invariants</h3></div></div></div><div class="table"><a name="id898298"></a><p class="title"><b>Table 4. Invariants</b></p><div class="table-contents"><table summary="Invariants" border="1"><colgroup><col><col></colgroup><tbody><tr><td>Valid range</td><td><code class="literal">[a.begin(),a.end())</code> is a valid range.
+</div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id836852"></a>Invariants</h3></div></div></div><div class="table"><a name="id836858"></a><p class="title"><b>Table 4. Invariants</b></p><div class="table-contents"><table summary="Invariants" border="1"><colgroup><col><col></colgroup><tbody><tr><td>Valid range</td><td><code class="literal">[a.begin(),a.end())</code> is a valid range.
             </td></tr><tr><td>Range size</td><td>
 <code class="literal">a.size() == std::distance(a.begin(),a.end());</code>.
 </td></tr><tr><td>Completeness</td><td>
@@ -403,10 +403,10 @@
 
 The following describes the
 <code class="literal">index_range</code> interface.
-</p><div class="table"><a name="id898526"></a><p class="title"><b>Table 5. Notation</b></p><div class="table-contents"><table summary="Notation" border="1"><colgroup><col><col></colgroup><tbody><tr><td><code class="literal">i</code></td><td>An object of type <code class="literal">index_range</code>.</td></tr><tr><td><code class="literal">idx,idx1,idx2,idx3</code></td><td>Objects of type <code class="literal">index</code>.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id898580"></a><p class="title"><b>Table 6. Associated Types</b></p><div class="table-contents"><table summary="Associated Types" border="1"><colgroup><col><col></colgroup><thead><tr><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="literal">index</code></td><td>This is a signed integral type. It is used to
+</p><div class="table"><a name="id837086"></a><p class="title"><b>Table 5. Notation</b></p><div class="table-contents"><table summary="Notation" border="1"><colgroup><col><col></colgroup><tbody><tr><td><code class="literal">i</code></td><td>An object of type <code class="literal">index_range</code>.</td></tr><tr><td><code class="literal">idx,idx1,idx2,idx3</code></td><td>Objects of type <code class="literal">index</code>.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id837139"></a><p class="title"><b>Table 6. Associated Types</b></p><div class="table-contents"><table summary="Associated Types" border="1"><colgroup><col><col></colgroup><thead><tr><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="literal">index</code></td><td>This is a signed integral type. It is used to
 specify the start, finish, and stride values.</td></tr><tr><td><code class="literal">size_type</code></td><td>This is an unsigned integral type. It is used to
 report the size of the range an <code class="literal">index_range</code>
-represents.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id898642"></a><p class="title"><b>Table 7. Valid Expressions</b></p><div class="table-contents"><table summary="Valid Expressions" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Expression</th><th>Return type</th><th>Semantics</th></tr></thead><tbody><tr><td><code class="literal">index_range(idx1,idx2,idx3)</code></td><td><code class="literal">index_range</code></td><td>This constructs an <code class="literal">index_range</code>
+represents.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id837202"></a><p class="title"><b>Table 7. Valid Expressions</b></p><div class="table-contents"><table summary="Valid Expressions" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Expression</th><th>Return type</th><th>Semantics</th></tr></thead><tbody><tr><td><code class="literal">index_range(idx1,idx2,idx3)</code></td><td><code class="literal">index_range</code></td><td>This constructs an <code class="literal">index_range</code>
             representing the interval <code class="literal">[idx1,idx2)</code>
  with stride <code class="literal">idx3</code>.</td></tr><tr><td><code class="literal">index_range(idx1,idx2)</code></td><td><code class="literal">index_range</code></td><td>This constructs an <code class="literal">index_range</code>
             representing the interval <code class="literal">[idx1,idx2)</code>
@@ -443,9 +443,9 @@
 parameters. Chained calls to <code class="literal">operator[]</code> store
 range and dimension information used to
 instantiate a new view into a MultiArray.
-</p><div class="table"><a name="id899309"></a><p class="title"><b>Table 8. Notation</b></p><div class="table-contents"><table summary="Notation" border="1"><colgroup><col><col></colgroup><tbody><tr><td><code class="literal">Dims,Ranges</code></td><td>Unsigned integral values.</td></tr><tr><td><code class="literal">x</code></td><td>An object of type
+</p><div class="table"><a name="id837868"></a><p class="title"><b>Table 8. Notation</b></p><div class="table-contents"><table summary="Notation" border="1"><colgroup><col><col></colgroup><tbody><tr><td><code class="literal">Dims,Ranges</code></td><td>Unsigned integral values.</td></tr><tr><td><code class="literal">x</code></td><td>An object of type
 <code class="literal">template gen_type&lt;Dims,Ranges&gt;::type</code>.</td></tr><tr><td><code class="literal">i</code></td><td>An object of type
-<code class="literal">index_range</code>.</td></tr><tr><td><code class="literal">idx</code></td><td>Objects of type <code class="literal">index</code>.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id899395"></a><p class="title"><b>Table 9. Associated Types</b></p><div class="table-contents"><table summary="Associated Types" border="1"><colgroup><col><col></colgroup><thead><tr><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="literal">index</code></td><td>This is a signed integral type. It is used to
+<code class="literal">index_range</code>.</td></tr><tr><td><code class="literal">idx</code></td><td>Objects of type <code class="literal">index</code>.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id837954"></a><p class="title"><b>Table 9. Associated Types</b></p><div class="table-contents"><table summary="Associated Types" border="1"><colgroup><col><col></colgroup><thead><tr><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code class="literal">index</code></td><td>This is a signed integral type. It is used to
 specify degenerate dimensions.</td></tr><tr><td><code class="literal">size_type</code></td><td>This is an unsigned integral type. It is used to
 report the size of the range an <code class="literal">index_range</code>
 represents.</td></tr><tr><td>
@@ -456,21 +456,21 @@
 degenerate ranges specified (i.e. calls to
 <code class="literal">operator[](index)</code>). Note that
 <code class="classname">index_gen</code> and
-<code class="classname">gen_type&lt;0,0&gt;::type</code> are the same type.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id899506"></a><p class="title"><b>Table 10. Valid Expressions</b></p><div class="table-contents"><table summary="Valid Expressions" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Expression</th><th>Return type</th><th>Semantics</th></tr></thead><tbody><tr><td><code class="literal">index_gen()</code></td><td><code class="literal">gen_type&lt;0,0&gt;::type</code></td><td>This constructs an <code class="literal">index_gen</code>
+<code class="classname">gen_type&lt;0,0&gt;::type</code> are the same type.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id838066"></a><p class="title"><b>Table 10. Valid Expressions</b></p><div class="table-contents"><table summary="Valid Expressions" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Expression</th><th>Return type</th><th>Semantics</th></tr></thead><tbody><tr><td><code class="literal">index_gen()</code></td><td><code class="literal">gen_type&lt;0,0&gt;::type</code></td><td>This constructs an <code class="literal">index_gen</code>
 object. This object can then be used to generate tuples of
 <code class="literal">index_range</code> values.</td></tr><tr><td><code class="literal">x[i]</code></td><td><code class="literal">gen_type&lt;Dims+1,Ranges+1&gt;::type</code>
 </td><td>Returns a new object containing all previous
 <code class="classname">index_range</code> objects in addition to
 <code class="literal">i.</code> Chained calls to
 <code class="function">operator[]</code> are the means by which
-<code class="classname">index_range</code> objects are aggregated.</td></tr><tr><td><code class="literal">x[idx]</code></td><td><code class="literal">gen_type&lt;Dims,Ranges&gt;::type</code>
+<code class="classname">index_range</code> objects are aggregated.</td></tr><tr><td><code class="literal">x[idx]</code></td><td><code class="literal">gen_type&lt;Dims,Ranges+1&gt;::type</code>
 </td><td>Returns a new object containing all previous
 <code class="classname">index_range</code> objects in addition to a degenerate
 range, <code class="literal">index_range(idx,idx).</code> Note that this is NOT
 equivalent to <code class="literal">x[index_range(idx,idx)].</code>, which will
 return an object of type
 <code class="literal">gen_type&lt;Dims+1,Ranges+1&gt;::type</code>.
-</td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id899663"></a>Models</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><code class="literal">multi_array</code></li><li><code class="literal">multi_array_ref</code></li><li><code class="literal">const_multi_array_ref</code></li><li><code class="literal">template array_view&lt;Dims&gt;::type</code></li><li><code class="literal">template const_array_view&lt;Dims&gt;::type</code></li><li><code class="literal">template subarray&lt;Dims&gt;::type</code></li><li><code class="literal">template const_subarray&lt;Dims&gt;::type</code></li></ul></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="array_types"></a>Array Components</h2></div></div></div><p>
+</td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id838222"></a>Models</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><code class="literal">multi_array</code></li><li><code class="literal">multi_array_ref</code></li><li><code class="literal">const_multi_array_ref</code></li><li><code class="literal">template array_view&lt;Dims&gt;::type</code></li><li><code class="literal">template const_array_view&lt;Dims&gt;::type</code></li><li><code class="literal">template subarray&lt;Dims&gt;::type</code></li><li><code class="literal">template const_subarray&lt;Dims&gt;::type</code></li></ul></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="array_types"></a>Array Components</h2></div></div></div><p>
 Boost.MultiArray defines an array class,
 <code class="literal">multi_array</code>, and two adapter classes,
 <code class="literal">multi_array_ref</code> and
@@ -1158,7 +1158,7 @@
 };
 
 typedef *implementation_defined*&lt;0&gt; extent_gen;
-</pre><p><b>Methods and Types. </b></p><div class="variablelist"><dl><dt><span class="term"><code class="function">template gen_type::&lt;Ranges&gt;::type</code></span></dt><dd><p>This type generator is used to specify the result of
+</pre><p><b>Methods and Types. </b></p><div class="variablelist"><dl><dt><span class="term"><code class="function">template gen_type&lt;Ranges&gt;::type</code></span></dt><dd><p>This type generator is used to specify the result of
 <code class="literal">Ranges</code> chained calls to
 <code class="literal">extent_gen::operator[].</code> The types
 <code class="classname">extent_gen</code> and
@@ -1172,7 +1172,7 @@
 <code class="classname">extent_range</code> objects in addition to
 <code class="literal">extent_range(0,idx).</code> This function gives the array
 constructors a similar syntax to traditional C multidimensional array
-declaration.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id906792"></a>Global Objects</h3></div></div></div><p>For syntactic convenience, Boost.MultiArray defines two
+declaration.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id862830"></a>Global Objects</h3></div></div></div><p>For syntactic convenience, Boost.MultiArray defines two
 global objects as part of its
 interface. These objects play the role of object generators;
 expressions involving them create other objects of interest.

Modified: branches/proto/v4/libs/multi_array/doc/xml/MultiArray.xml
==============================================================================
--- branches/proto/v4/libs/multi_array/doc/xml/MultiArray.xml (original)
+++ branches/proto/v4/libs/multi_array/doc/xml/MultiArray.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -967,7 +967,7 @@
               </row>
               <row>
                 <entry><literal>x[idx]</literal></entry>
- <entry><literal>gen_type&lt;Dims,Ranges&gt;::type</literal>
+ <entry><literal>gen_type&lt;Dims,Ranges+1&gt;::type</literal>
 </entry>
         <entry>Returns a new object containing all previous
 <classname>index_range</classname> objects in addition to a degenerate

Modified: branches/proto/v4/libs/multi_array/doc/xml/reference.xml
==============================================================================
--- branches/proto/v4/libs/multi_array/doc/xml/reference.xml (original)
+++ branches/proto/v4/libs/multi_array/doc/xml/reference.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -488,7 +488,7 @@
 <formalpara><title>Methods and Types</title>
 <variablelist>
 <varlistentry>
-<term><function>template gen_type::&lt;Ranges&gt;::type</function></term>
+<term><function>template gen_type&lt;Ranges&gt;::type</function></term>
 <listitem>
 <para>This type generator is used to specify the result of
 <literal>Ranges</literal> chained calls to

Modified: branches/proto/v4/libs/multi_index/doc/acknowledgements.html
==============================================================================
--- branches/proto/v4/libs/multi_index/doc/acknowledgements.html (original)
+++ branches/proto/v4/libs/multi_index/doc/acknowledgements.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -160,6 +160,18 @@
 include guard bug present from the first release of the library.
 </p>
 
+<h2><a name="boost_1_36">Boost 1.36 release</a></h2>
+
+<p>
+Thanks to Amit Jain for reporting a problem with allocator management.
+Michael Fawcett proposed the addition of an allocator constructor to
+<code>multi_index_container</code>.
+A report from Zachary Zhou has led to
+<a href="release_notes.html#stable_update">enhancing the behavior of
+hashed indices update functions</a> so that they meet some intuitive expectations.
+Grzegorz Jakacki spotted some internal dead code.
+</p>
+
 <hr>
 
 <div class="prev_link"><a href="release_notes.html"><img src="prev.gif" alt="release notes" border="0"><br>
@@ -173,9 +185,9 @@
 
 <br>
 
-<p>Revised September 3rd 2007</p>
+<p>Revised June 25th 2008</p>
 
-<p>&copy; Copyright 2003-2007 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
+<p>&copy; Copyright 2003-2008 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
 Distributed under the Boost Software
 License, Version 1.0. (See accompanying file <a href="../../../LICENSE_1_0.txt">
 LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">

Modified: branches/proto/v4/libs/multi_index/doc/compiler_specifics.html
==============================================================================
--- branches/proto/v4/libs/multi_index/doc/compiler_specifics.html (original)
+++ branches/proto/v4/libs/multi_index/doc/compiler_specifics.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -37,8 +37,8 @@
 
 <ul>
   <li>Borland C++ Builder 6.4 and later</li>
- <li>Comeau C/C++ 4.3.3 for Windows (VC++ 7.0/7.1 backend)</li>
- <li>Compaq C++ 6.5-042 for Tru64 UNIX and later</li>
+ <li>Comeau C/C++ 4.3.10.1 for Windows (VC++ 9.0 backend)</li>
+ <li>Compaq C++ 6.5-042 and later for Tru64 UNIX</li>
   <li>
     <a href="#gcc_32">GNU GCC 3.2 and later</a>
     <ul>
@@ -46,14 +46,14 @@
       <li>Darwin GCC 4.0</li>
     </ul>
   </li>
- <li>HP aC++ A.06.12 for HP-UX and later</li>
+ <li>HP aC++ A.06.12 and later for HP-UX IA64</li>
+ <li>HP aC++ A.03.80 for HP-UX PA-RISC</li>
   <li>IBM VisualAge C++ V6.0 for AIX</li>
   <li>IBM VisualAge C++ V9.0 for AIX</li>
   <li>Intel C++ Compiler for Linux 8.1 and later</li>
   <li>Intel C++ Compiler for Mac OS 9.1 and later</li>
- <li>Intel C++ Compiler for Windows 32-bit 7.0/7.1</li>
   <li>Intel C++ Compiler for Windows 32-bit 8.0 and later</li>
- <li>Intel C++ Compiler for Windows 64-bit 10.0</li>
+ <li>Intel C++ Compiler for Windows 64-bit 10.0 and later</li>
   <li>Metrowerks CodeWarrior 8.3</li>
   <li>Metrowerks CodeWarrior 9 and later</li>
   <li>
@@ -68,21 +68,10 @@
       <li>Microsoft Visual C++ 7.0 + STLport 5.0.1</li>
     </ul>
   </li>
- <li>
- Microsoft Visual C++ 7.1
- <ul>
- <li>Microsoft Visual C++ 7.1 + STLport 4.6.2</li>
- </ul>
- </li>
- <li>
- Microsoft Visual C++ 8.0
- <ul>
- <li>Microsoft Visual C++ 8.0 + STLport 5.0.1</li>
- </ul>
- </li>
- <li>Microsoft Visual C++ 8.0 x64 cross-compiler</li>
- <li>Microsoft Visual C++ 9.0</li>
- <li>Sun Studio 10 for Solaris and later</li>
+ <li>Microsoft Visual C++ 7.1</li>
+ <li>Microsoft Visual C++ 8.0 and later</li>
+ <li>Microsoft Visual C++ 8.0 x64 cross-compiler and later</li>
+ <li>Sun Studio 10 and later for Solaris</li>
   <li>Portability techniques
     <ul>
       <li>Use of member_offset</li>
@@ -109,18 +98,16 @@
 future versions of the library can be made to work under these compilers.
 </p>
 
-<h2><a name="comeau_433_win_vc7_71">Comeau C/C++ 4.3.3 for Windows (VC++ 7.0/7.1 backend)</a></h2>
-
-<p>
-<b>Note:</b> Last tested in Boost 1.34.1. The information might be no longer accurate.
-</p>
+<h2><a name="comeau_43101_win_vc7_71">Comeau C/C++ 4.3.10.1 for Windows (VC++ 9.0 backend)</a></h2>
 
 <p>
 No problems have been detected with this compiler. The library fails to compile,
-however, when Microsoft Visual C++ 6.0 is used as the backend.
+however, when Microsoft Visual C++ 6.0 is used as the backend. Last time they were
+tested (Boost.1.34.1), VC++ 7.0/7.1 backends worked correctly. The beta 2 version of
+the Comeau compiler 4.3.10.1 has been used.
 </p>
 
-<h2><a name="compaq_65">Compaq C++ 6.5-042 for Tru64 UNIX and later</a></h2>
+<h2><a name="compaq_65">Compaq C++ 6.5-042 and later for Tru64 UNIX</a></h2>
 
 <p>
 No problems have been detected with this compiler. Last tested for version 7.1-006.
@@ -133,18 +120,15 @@
 starting from 3.2. The following versions have been explicitly tested:
 <ul>
   <li>GCC 3.2 20020927 (prerelease) under Cygwin 1.5.7,</li>
- <li>GCC 3.3.6 under Linux,</li>
- <li>GCC 3.4.2 under HP-UX IA64,</li>
+ <li>GCC 3.4.2 under HP-UX PA-RISC,</li>
   <li>GCC 3.4.3 under Linux x86-64,</li>
- <li>GCC 3.4.4 under Linux, (cygming special) under Cygwin 1.5.22,</li>
- <li>GCC 3.4.5 (mingw special) under Win32,</li>
- <li>GCC 3.4.6 under Linux x86-64 and Solaris,</li>
- <li>GCC 4.0.1 under Linux x86-64, (Apple builds 5363, 5367 and 5465) under Mac OS,</li>
- <li>GCC 4.1.1 under Linux x86-64,</li>
- <li>GCC 4.1.2 (OpenPKG-CURRENT) under Solaris,</li>
- <li>GCC 4.2.1 under HP-UX IA64 and Linux x86-64, (mingw32-2) under Win32,</li>
- <li>GCC 4.2.2 under Linux and Linux x86-64,</li>
- <li>GCC 4.3.0 20080206 (experimental) under Linux.</li>
+ <li>GCC 3.4.6 under Solaris, 20060404 (Red Hat 3.4.6-3) under Linux IA64,</li>
+ <li>GCC 4.0.1 under Linux x86-64, (Apple build 5363) under Mac OS,</li>
+ <li>GCC 4.1.1 20070105 (Red Hat 4.1.1-52) under Linux x86-64,</li>
+ <li>GCC 4.2.1 under HP-UX IA64 and Linux x86-64, (SUSE Linux) under Linux,</li>
+ <li>GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7) under Linux and Linux x86-64,</li>
+ <li>GCC 4.3.0 under Linux x86-64, with Apache C++ Standard Library 4.2.2 under Linux and Linux x86-64,</li>
+ <li>GCC 4.3.0 gnu++0x under Linux x86-64.</li>
 </ul>
 Boost.MultiIndex does not work with versions 3.1 and prior of GCC.
 </p>
@@ -177,13 +161,19 @@
 upgrade.
 </p>
 
-<h2><a name="acc_612">HP aC++ A.06.12 for HP-UX and later</a></h2>
+<h2><a name="acc_612_ia64">HP aC++ A.06.12 and later for HP-UX IA64</a></h2>
 
 <p>
 No problems have been detected with this compiler.
 Last tested for version A.06.14.
 </p>
 
+<h2><a name="acc_380_pa_risc">HP aC++ A.03.80 for HP-UX PA-RISC</a></h2>
+
+<p>
+No problems have been detected with this compiler.
+</p>
+
 <h2><a name="va_60">IBM VisualAge C++ V6.0 for AIX</a></h2>
 
 <p>
@@ -244,32 +234,14 @@
 
 <p>
 No problems have been detected with this compiler.
-Tested from version 8.1 to 10.1.
+Tested from version 8.1 to 10.0.
 </p>
 
 <h2><a name="intel_91_mac">Intel C++ Compiler for Mac OS 9.1 and later</a></h2>
 
 <p>
 No problems have been detected with this compiler.
-Last tested for versions 9.1 and 10.0.
-</p>
-
-<h2><a name="intel_7x_win">Intel C++ Compiler for Windows 32-bit 7.0/7.1</a></h2>
-
-<p>
-member not supported,
-refer to the section on
-use of member_offset for workarounds.
-</p>
-
-<blockquote><hr></blockquote>
-
-<p>
-When used on top of MSVC++ 7.0 or prior, argument dependent lookup is
-disabled by default. This will cause problems with many Boost libraries,
-and in particular with the serialization part of Boost.MultiIndex.
-Argument dependent lookup is enabled by adding
-<code>/Qoption,c,--arg_dep_lookup</code> to the project options.
+Tested from version 9.1 to 10.1.
 </p>
 
 <h2><a name="intel_80_win">Intel C++ Compiler for Windows 32-bit 8.0 and later</a></h2>
@@ -281,13 +253,14 @@
 Argument dependent lookup is enabled by adding
 <code>/Qoption,c,--arg_dep_lookup</code> to the project options.
 Other than this, Boost.MultiIndex works without problems.
-Last tested for compiler version 10.0.
+Last tested for compiler version 10.1.
 </p>
 
-<h2><a name="intel_100_win64">Intel C++ Compiler for Windows 64-bit 10.0</a></h2>
+<h2><a name="intel_100_win64">Intel C++ Compiler for Windows 64-bit 10.0 and later</a></h2>
 
 <p>
 No problems have been detected with this compiler.
+Last tested for compiler version 10.1.
 </p>
 
 <h2><a name="cw_83">Metrowerks CodeWarrior 8.3</a></h2>
@@ -322,12 +295,19 @@
 
 <p>
 Boost.MultiIndex works correctly with versions of this compiler from 9.0 to
-9.5, under the two operating systems tested: Mac OS and Windows.
+9.5, both under Mac OS and Windows.
 </p>
 
 <h2><a name="msvc_60">Microsoft Visual C++ 6.0 Service Pack 5</a></h2>
 
 <p>
+Beginning with Boost.1.36, Boost.Serialization is no longer supported in this
+compiler, thus the serialization capabilities cannot be used.
+</p>
+
+<blockquote><hr></blockquote>
+
+<p>
 <a href="reference/key_extraction.html#member"><code>member</code></a> not supported,
 refer to the section on
 <a href="#member_offset">use of <code>member_offset</code></a> for workarounds.
@@ -533,15 +513,20 @@
 5.0.1 has also been confirmed to work correctly.
 </p>
 
+<h2><a name="msvc_70">Microsoft Visual C++ 7.0</a></h2>
+
+<p>
+<b>Note:</b> Last tested in Boost 1.35. The information might be no longer accurate.
+</p>
+
 <blockquote><hr></blockquote>
 
 <p>
-It is not possible to use the serialization capabilities of Boost.MultiIndex
-along with the dynamic version of STLport, as some linking errors result.
-Use instead the static version of STLport. This bug is fixed in STLport 5.0.
+Beginning with Boost.1.36, Boost.Serialization is no longer supported in this
+compiler, thus the serialization capabilities cannot be used.
 </p>
 
-<h2><a name="msvc_70">Microsoft Visual C++ 7.0</a></h2>
+<blockquote><hr></blockquote>
 
 <p>
 <a href="reference/key_extraction.html#member"><code>member</code></a> not supported,
@@ -639,6 +624,10 @@
 <h3><a name="msvc_70_stlport_501">Microsoft Visual C++ 7.0 + STLport 5.0.1</a></h3>
 
 <p>
+<b>Note:</b> Last tested in Boost 1.35. The information might be no longer accurate.
+</p>
+
+<p>
 Boost.MultiIndex works for this configuration. The same issues apply as in
 MSVC++ 7.0 with its original Dinkumware standard library.
 </p>
@@ -655,38 +644,21 @@
 without further problems.
 </p>
 
-<h3><a name="msvc_71_stlport_462">Microsoft Visual C++ 7.1 + STLport 4.6.2</a></h3>
-
-<p>
-Boost.MultiIndex works for this configuration. The same issues apply as in
-MSVC++ 7.1 with its original Dinkumware standard library.
-</p>
-
-<h2><a name="msvc_80">Microsoft Visual C++ 8.0</a></h2>
-
-<p>
-No problems have been detected with this compiler.
-</p>
-
-<h3><a name="msvc_80_stlport_501">Microsoft Visual C++ 8.0 + STLport 5.0.1</a></h3>
-
-<p>
-No problems have been detected with this configuration.
-</p>
-
-<h2><a name="msvc_80_x86_amd64">Microsoft Visual C++ 8.0 x64 cross-compiler</a></h2>
+<h2><a name="msvc_80">Microsoft Visual C++ 8.0 and later</a></h2>
 
 <p>
 No problems have been detected with this compiler.
+Last tested for compiler versions 8.0 and 9.0.
 </p>
 
-<h2><a name="msvc_90">Microsoft Visual C++ 9.0</a></h2>
+<h2><a name="msvc_80_x86_amd64">Microsoft Visual C++ 8.0 x64 cross-compiler and later</a></h2>
 
 <p>
 No problems have been detected with this compiler.
+Last tested for compiler version 9.0.
 </p>
 
-<h2><a name="sun_10">Sun Studio 10 for Solaris and later</a></h2>
+<h2><a name="sun_10">Sun Studio 10 and later for Solaris</a></h2>
 
 <p>
 No problems have been detected with this platform. The exact compiler versions
@@ -1012,7 +984,7 @@
 </pre></blockquote>
 
 <p>
-Then, for instance, the type <code>employee_set::nth_type&lt;0&gt;::type</code>
+Then, for instance, the type <code>employee_set::nth_index&lt;0&gt;::type</code>
 resolves to the following in GCC:
 </p>
 
@@ -1075,7 +1047,7 @@
 <code>employee_set_indices</code> works as a conventional <code>typedef</code>
 in all respects, save for a detail: its name does not explicitly
 include the information contained in the <code>indexed_by</code> instantiation.
-Applying this technique, <code>employee_set::nth_type&lt;0&gt;::type</code>
+Applying this technique, <code>employee_set::nth_index&lt;0&gt;::type</code>
 now becomes:
 </p>
 
@@ -1121,7 +1093,7 @@
 
 <br>
 
-<p>Revised February 7th 2008</p>
+<p>Revised July 8th 2008</p>
 
 <p>&copy; Copyright 2003-2008 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
 Distributed under the Boost Software

Modified: branches/proto/v4/libs/multi_index/doc/reference/hash_indices.html
==============================================================================
--- branches/proto/v4/libs/multi_index/doc/reference/hash_indices.html (original)
+++ branches/proto/v4/libs/multi_index/doc/reference/hash_indices.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -452,11 +452,11 @@
 
 <h4><a name="iterators">Iterators</a></h4>
 
-<code>iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator_to(const value_type&amp; x);</br>
+<code>iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator_to(const value_type&amp; x);<br>
 const_iterator iterator_to(const value_type&amp; x)const;</code>
   
 <blockquote>
-<b>Requires:</b> <code>x</code> is a reference to an element of the container.</br>
+<b>Requires:</b> <code>x</code> is a reference to an element of the container.<br>
 <b>Returns:</b> An iterator to <code>x</code>.<br>
 <b>Complexity:</b> Constant.<br>
 <b>Exception safety:</b> <code>nothrow</code>.<br>
@@ -487,7 +487,7 @@
 <code>iterator insert(iterator position,const value_type&amp; x);</code>
 
 <blockquote>
-<b>Requires:</b> <code>position</code> is a valid iterator of the index.</br>
+<b>Requires:</b> <code>position</code> is a valid iterator of the index.<br>
 <b>Effects:</b> Inserts <code>x</code> into the <code>multi_index_container</code> to which
 the index belongs if
 <ul>
@@ -516,7 +516,7 @@
 <code>value_type</code> or a type convertible to <code>value_type</code>.
 <code>first</code> and <code>last</code> are not iterators into any
 index of the <code>multi_index_container</code> to which this index belongs.
-<code>last</code> is reachable from <code>first</code>.</br>
+<code>last</code> is reachable from <code>first</code>.<br>
 <b>Effects:</b>
 <blockquote><pre>
 <span class=identifier>iterator</span> <span class=identifier>hint</span><span class=special>=</span><span class=identifier>end</span><span class=special>();</span>
@@ -532,7 +532,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>position</code> is a valid dereferenceable iterator
-of the index.</br>
+of the index.<br>
 <b>Effects:</b> Deletes the element pointed to by <code>position</code>.<br>
 <b>Returns:</b> An iterator pointing to the element immediately following
 the one that was deleted, or <code>end()</code>
@@ -568,7 +568,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>position</code> is a valid dereferenceable iterator
-of the index.</br>
+of the index.<br>
 <b>Effects:</b> Assigns the value <code>x</code> to the element pointed
 to by <code>position</code> into the <code>multi_index_container</code> to which
 the index belongs if, for the value <code>x</code>
@@ -579,7 +579,8 @@
     <code>multi_index_container</code>.</li>
 </ul>
 <b>Postconditions:</b> Validity of <code>position</code> is preserved
-in all cases.<br>
+in all cases. If the key of the new value is equivalent to that of the replaced value,
+the position of the element does not change.<br>
 <b>Returns:</b> <code>true</code> if the replacement took place,
 <code>false</code> otherwise.<br>
 <b>Complexity:</b> <code>O(R(n))</code>.<br>
@@ -596,7 +597,7 @@
 <a href="http://www.sgi.com/tech/stl/UnaryFunction.html">
 <code>Unary Function</code></a> accepting arguments of type
 <code>value_type&amp;</code>. <code>position</code> is a valid dereferenceable
-iterator of the index.</br>
+iterator of the index.<br>
 <b>Effects:</b> Calls <code>mod(e)</code> where <code>e</code> is the element
 pointed to by <code>position</code> and rearranges <code>*position</code> into
 all the indices of the <code>multi_index_container</code>. Rearrangement is successful if
@@ -608,7 +609,8 @@
 </ul>
 If the rearrangement fails, the element is erased.<br>
 <b>Postconditions:</b> Validity of <code>position</code> is preserved if the
-operation succeeds.<br>
+operation succeeds. If the key of the modified value is equivalent to that of the original
+value, the position of the element does not change.<br>
 <b>Returns:</b> <code>true</code> if the operation succeeded, <code>false</code>
 otherwise.<br>
 <b>Complexity:</b> <code>O(M(n))</code>.<br>
@@ -628,7 +630,7 @@
 iterator of the index. The sequence of operations <code>mod(e)</code>,
 <code>back(e)</code>, where <code>e</code> is the element
 pointed to by <code>position</code>, restores all keys of the element
-to their original state.</br>
+to their original state.<br>
 <b>Effects:</b> Calls <code>mod(e)</code> where <code>e</code> is the element
 pointed to by <code>position</code> and tries to rearrange <code>*position</code> into
 all the indices of the <code>multi_index_container</code>. Rearrangement is successful if
@@ -641,7 +643,8 @@
 If the rearrangement fails, <code>back(e)</code> is invoked and the
 element is kept at its original position in all indices.<br>
 <b>Postconditions:</b> Validity of <code>position</code> is preserved except if
-the element is erased under the conditions described below.<br>
+the element is erased under the conditions described below. If the key of the modified value
+is equivalent to that of the original value, the position of the element does not change.<br>
 <b>Returns:</b> <code>true</code> if the operation succeeded, <code>false</code>
 otherwise.<br>
 <b>Complexity:</b> <code>O(M(n))</code>.<br>
@@ -662,7 +665,7 @@
 <a href="http://www.sgi.com/tech/stl/UnaryFunction.html">
 <code>Unary Function</code></a> accepting arguments of type
 <code>key_type&amp;</code>. <code>position</code> is a valid dereferenceable
-iterator of the index.</br>
+iterator of the index.<br>
 <b>Effects:</b> Equivalent to <code>modify(position,mod')</code>,
 with <code>mod'</code> defined in such a way that
 <code>mod'(x)</code> is the same as <code>mod(key(x))</code>, where
@@ -682,7 +685,7 @@
 iterator of the index.
 The sequence of operations <code>mod(k)</code>,
 <code>back(k)</code>, where <code>k</code> is the key of the element
-pointed to by <code>position</code>, restores k to its original state.</br>
+pointed to by <code>position</code>, restores k to its original state.<br>
 <b>Effects:</b> Equivalent to <code>modify(position,mod',back')</code>,
 with <code>mod'</code> and <code>back</code> defined in such a way that
 <code>mod'(x)</code> is the same as <code>mod(key(x))</code> and
@@ -774,7 +777,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>CompatibleKey</code> is a compatible key of
-(<code>hasher</code>, <code>key_equal</code>).</br>
+(<code>hasher</code>, <code>key_equal</code>).<br>
 <b>Effects:</b> Returns a pointer to an element whose key is equivalent to
 <code>x</code>, or <code>end()</code> if such an element does not exist.<br>
 <b>Complexity:</b> Average case <code>O(1)</code> (constant), worst case
@@ -792,7 +795,7 @@
 <blockquote>
 <b>Requires:</b> (<code>CompatibleKey</code>, <code>CompatibleHash</code>,
 <code>CompatiblePred</code>) is a compatible extension of
-(<code>hasher</code>, <code>key_equal</code>).</br>
+(<code>hasher</code>, <code>key_equal</code>).<br>
 <b>Effects:</b> Returns a pointer to an element whose key is equivalent to
 <code>x</code>, or <code>end()</code> if such an element does not exist.<br>
 <b>Complexity:</b> Average case <code>O(1)</code> (constant), worst case
@@ -805,7 +808,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>CompatibleKey</code> is a compatible key of
-(<code>hasher</code>, <code>key_equal</code>).</br>
+(<code>hasher</code>, <code>key_equal</code>).<br>
 <b>Effects:</b> Returns the number of elements with key equivalent to <code>x</code>.<br>
 <b>Complexity:</b> Average case <code>O(count(x))</code>, worst case
 <code>O(n)</code>.<br>
@@ -822,7 +825,7 @@
 <blockquote>
 <b>Requires:</b> (<code>CompatibleKey</code>, <code>CompatibleHash</code>,
 <code>CompatiblePred</code>) is a compatible extension of
-(<code>hasher</code>, <code>key_equal</code>).</br>
+(<code>hasher</code>, <code>key_equal</code>).<br>
 <b>Effects:</b> Returns the number of elements with key equivalent to <code>x</code>.<br>
 <b>Complexity:</b> Average case <code>O(count(x,hash,eq))</code>, worst case
 <code>O(n)</code>.<br>
@@ -834,7 +837,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>CompatibleKey</code> is a compatible key of
-(<code>hasher</code>, <code>key_equal</code>).</br>
+(<code>hasher</code>, <code>key_equal</code>).<br>
 <b>Effects:</b> Returns a range containing all elements with keys equivalent
 to <code>x</code> (and only those), or (<code>end()</code>,<code>end()</code>)
 if no such elements exist.<br>
@@ -845,7 +848,7 @@
 <code>template&lt;<br>
 &nbsp;&nbsp;typename CompatibleKey,typename CompatibleHash, typename CompatiblePred<br>
 &gt;<br>
-std::pair&lt;iterator,iterator> equal_range(</br>
+std::pair&lt;iterator,iterator> equal_range(<br>
 &nbsp;&nbsp;const CompatibleKey&amp; x,<br>
 &nbsp;&nbsp;const CompatibleHash&amp; hash,const CompatiblePred&amp; eq)const;
 </code>
@@ -853,7 +856,7 @@
 <blockquote>
 <b>Requires:</b> (<code>CompatibleKey</code>, <code>CompatibleHash</code>,
 <code>CompatiblePred</code>) is a compatible extension of
-(<code>hasher</code>, <code>key_equal</code>).</br>
+(<code>hasher</code>, <code>key_equal</code>).<br>
 <b>Effects:</b> Returns a range containing all elements with keys equivalent
 to <code>x</code> (and only those), or (<code>end()</code>,<code>end()</code>)
 if no such elements exist.<br>
@@ -863,11 +866,11 @@
 
 <h4><a name="bucket_interface">Bucket interface</a></h4>
 
-<code>local_iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local_iterator_to(const value_type&amp; x);</br>
+<code>local_iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local_iterator_to(const value_type&amp; x);<br>
 const_local_iterator local_iterator_to(const value_type&amp; x)const;</code>
   
 <blockquote>
-<b>Requires:</b> <code>x</code> is a reference to an element of the container.</br>
+<b>Requires:</b> <code>x</code> is a reference to an element of the container.<br>
 <b>Returns:</b> An iterator to <code>x</code>.<br>
 <b>Complexity:</b> Constant.<br>
 <b>Exception safety:</b> <code>nothrow</code>.<br>
@@ -977,9 +980,9 @@
 
 <br>
 
-<p>Revised July 2nd 2007</p>
+<p>Revised June 25th 2008</p>
 
-<p>&copy; Copyright 2003-2007 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
+<p>&copy; Copyright 2003-2008 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
 Distributed under the Boost Software
 License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
 LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">

Modified: branches/proto/v4/libs/multi_index/doc/reference/key_extraction.html
==============================================================================
--- branches/proto/v4/libs/multi_index/doc/reference/key_extraction.html (original)
+++ branches/proto/v4/libs/multi_index/doc/reference/key_extraction.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1228,7 +1228,7 @@
 <blockquote>
 <b>Requires:</b> <code>length(x)==length(y)</code>. The expression
 <code>x<sub>i</sub>==y<sub>i</sub></code> is valid for all <code>i</code>
-in <code>[0,length(x))</code>.</br>
+in <code>[0,length(x))</code>.<br>
 <b>Returns:</b> <code>true</code> if and only if
 <blockquote>
 <code>x<sub>i</sub>==y<sub>i</sub></code> for all <code>i</code>
@@ -1258,7 +1258,7 @@
 <b>Requires:</b> The expressions
 <code>x<sub>i</sub>&lt;y<sub>i</sub></code> and
 <code>y<sub>i</sub>&lt;x<sub>i</sub></code> are valid for all <code>i</code>
-in <code>[0,min(length(x),length(y)))</code>.</br>
+in <code>[0,min(length(x),length(y)))</code>.<br>
 <b>Returns:</b> <code>true</code> if and only if there exists some
 <code>j</code> in the range <code>[0,min(length(x),length(y)))</code>
 such that
@@ -1294,7 +1294,7 @@
 
 <blockquote>
 <b>Requires:</b> The expressions given below are valid (for the particular
-<code><b><i>OP</i></b></code> considered.)</br>
+<code><b><i>OP</i></b></code> considered.)<br>
 <b>Returns:</b> <code>true</code> if and only if
 <blockquote>
 <code>!(x==y)</code> (<code><b><i>OP</i></b></code> is <code>!=</code>),<br>
@@ -1435,7 +1435,7 @@
 <b>Requires:</b> <code>length(x)==length(y)</code>. The expressions
 <code>key_eqs().get&lt;i>()(x<sub>i</sub>,y<sub>i</sub>)</code> and
 <code>key_eqs().get&lt;i>()(y<sub>i</sub>,x<sub>i</sub>)</code>
-are valid for all <code>i</code> in <code>[0,length(x))</code>.</br>
+are valid for all <code>i</code> in <code>[0,length(x))</code>.<br>
 <b>Returns:</b> <code>true</code> if and only
 <blockquote>
 <code>key_eqs().get&lt;i>()(x<sub>i</sub>,y<sub>i</sub>)</code>
@@ -1683,7 +1683,7 @@
 <code>key_comps().get&lt;i>()(x<sub>i</sub>,y<sub>i</sub>)</code> and
 <code>key_comps().get&lt;i>()(y<sub>i</sub>,x<sub>i</sub>)</code>
 are valid for all <code>i</code>
-in <code>[0,min(length(x),length(y)))</code>.</br>
+in <code>[0,min(length(x),length(y)))</code>.<br>
 <b>Returns:</b> <code>true</code> if and only if there exists some
 <code>j</code> in the range <code>[0,min(length(x),length(y)))</code>
 such that
@@ -2263,9 +2263,9 @@
 
 <br>
 
-<p>Revised August 2nd 2007</p>
+<p>Revised June 25th 2008</p>
 
-<p>&copy; Copyright 2003-2007 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
+<p>&copy; Copyright 2003-2008 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
 Distributed under the Boost Software
 License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
 LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">

Modified: branches/proto/v4/libs/multi_index/doc/reference/multi_index_container.html
==============================================================================
--- branches/proto/v4/libs/multi_index/doc/reference/multi_index_container.html (original)
+++ branches/proto/v4/libs/multi_index/doc/reference/multi_index_container.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -278,6 +278,7 @@
   <span class=keyword>explicit</span> <span class=identifier>multi_index_container</span><span class=special>(
     </span><span class=keyword>const</span> <span class=identifier>ctor_args_list</span><span class=special>&amp;</span> <span class=identifier>args_list</span><span class=special>=</span><span class=identifier>ctor_args_list</span><span class=special>(),
     </span><span class=keyword>const</span> <span class=identifier>allocator_type</span><span class=special>&amp;</span> <span class=identifier>al</span><span class=special>=</span><span class=identifier>allocator_type</span><span class=special>());</span>
+ <span class=keyword>explicit</span> <span class=identifier>multi_index_container</span><span class=special>(</span><span class=keyword>const</span> <span class=identifier>allocator_type</span><span class=special>&amp;</span> <span class=identifier>al</span><span class=special>);</span>
   <span class=keyword>template</span><span class=special>&lt;</span><span class=keyword>typename</span> <span class=identifier>InputIterator</span><span class=special>&gt;</span>
   <span class=identifier>multi_index_container</span><span class=special>(</span>
     <span class=identifier>InputIterator</span> <span class=identifier>first</span><span class=special>,</span><span class=identifier>InputIterator</span> <span class=identifier>last</span><span class=special>,</span>
@@ -609,7 +610,7 @@
 
 <blockquote>
 <code>index&lt;Tag>::type</code> yields the type of the index which
-has <code>Tag</code> as an associated tag type.</br>
+has <code>Tag</code> as an associated tag type.<br>
 <b>Requires:</b> Some index of the <code>multi_index_container</code> has <code>Tag</code>
 as an associated tag type.
 </blockquote>
@@ -645,7 +646,7 @@
 <h4><a name="constructors">Constructors, copy and assignment</a></h4>
 
 <code>explicit multi_index_container(<br>
-&nbsp;&nbsp;const ctor_args_list&amp; comp=ctor_args_list(),<br>
+&nbsp;&nbsp;const ctor_args_list&amp; args_list=ctor_args_list(),<br>
 &nbsp;&nbsp;const allocator_type&amp; al=allocator_type());</code>
 
 <blockquote>
@@ -654,6 +655,14 @@
 <b>Complexity:</b> Constant.
 </blockquote>
 
+<code>explicit multi_index_container(const allocator_type&amp; al);</code>
+
+<blockquote>
+<b>Effects:</b> Constructs an empty <code>multi_index_container</code> using the
+specified allocator and the default value of <code>ctor_args_list</code>.<br>
+<b>Complexity:</b> Constant.
+</blockquote>
+
 <code>template&lt;typename InputIterator><br>
 multi_index_container(<br>
 &nbsp;&nbsp;InputIterator first,InputIterator last,<br>
@@ -665,7 +674,7 @@
 <a href="http://www.sgi.com/tech/stl/InputIterator.html">
 <code>Input Iterator</code></a> over elements of type
 <code>Value</code> or a type convertible to <code>Value</code>.
-<code>last</code> is reachable from <code>first</code>.</br>
+<code>last</code> is reachable from <code>first</code>.<br>
 <b>Effects:</b> Constructs and empty <code>multi_index_container</code> using the
 specified argument list and allocator and fills it with
 the elements in the range [<code>first</code>,<code>last</code>).
@@ -902,9 +911,9 @@
 
 <br>
 
-<p>Revised July 17th 2007</p>
+<p>Revised June 25th 2008</p>
 
-<p>&copy; Copyright 2003-2007 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
+<p>&copy; Copyright 2003-2008 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
 Distributed under the Boost Software
 License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
 LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">

Modified: branches/proto/v4/libs/multi_index/doc/reference/ord_indices.html
==============================================================================
--- branches/proto/v4/libs/multi_index/doc/reference/ord_indices.html (original)
+++ branches/proto/v4/libs/multi_index/doc/reference/ord_indices.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -462,11 +462,11 @@
 
 <h4><a name="iterators">Iterators</a></h4>
 
-<code>iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator_to(const value_type&amp; x);</br>
+<code>iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator_to(const value_type&amp; x);<br>
 const_iterator iterator_to(const value_type&amp; x)const;</code>
   
 <blockquote>
-<b>Requires:</b> <code>x</code> is a reference to an element of the container.</br>
+<b>Requires:</b> <code>x</code> is a reference to an element of the container.<br>
 <b>Returns:</b> An iterator to <code>x</code>.<br>
 <b>Complexity:</b> Constant.<br>
 <b>Exception safety:</b> <code>nothrow</code>.<br>
@@ -497,7 +497,7 @@
 <code>iterator insert(iterator position,const value_type&amp; x);</code>
 
 <blockquote>
-<b>Requires:</b> <code>position</code> is a valid iterator of the index.</br>
+<b>Requires:</b> <code>position</code> is a valid iterator of the index.<br>
 <b>Effects:</b> Inserts <code>x</code> into the <code>multi_index_container</code> to which
 the index belongs if
 <ul>
@@ -526,7 +526,7 @@
 <code>value_type</code> or a type convertible to <code>value_type</code>.
 <code>first</code> and <code>last</code> are not iterators into any
 index of the <code>multi_index_container</code> to which this index belongs.
-<code>last</code> is reachable from <code>first</code>.</br>
+<code>last</code> is reachable from <code>first</code>.<br>
 <b>Effects:</b>
 <blockquote><pre>
 <span class=identifier>iterator</span> <span class=identifier>hint</span><span class=special>=</span><span class=identifier>end</span><span class=special>();</span>
@@ -542,7 +542,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>position</code> is a valid dereferenceable iterator
-of the index.</br>
+of the index.<br>
 <b>Effects:</b> Deletes the element pointed to by <code>position</code>.<br>
 <b>Returns:</b> An iterator pointing to the element immediately following
 the one that was deleted, or <code>end()</code>
@@ -577,7 +577,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>position</code> is a valid dereferenceable iterator
-of the index.</br>
+of the index.<br>
 <b>Effects:</b> Assigns the value <code>x</code> to the element pointed
 to by <code>position</code> into the <code>multi_index_container</code> to which
 the index belongs if, for the value <code>x</code>
@@ -588,7 +588,8 @@
     <code>multi_index_container</code>.</li>
 </ul>
 <b>Postconditions:</b> Validity of <code>position</code> is preserved
-in all cases.<br>
+in all cases. If the key of the new value is equivalent to that of the
+replaced value, the position of the element does not change.<br>
 <b>Returns:</b> <code>true</code> if the replacement took place,
 <code>false</code> otherwise.<br>
 <b>Complexity:</b> <code>O(R(n))</code>.<br>
@@ -605,7 +606,7 @@
 <a href="http://www.sgi.com/tech/stl/UnaryFunction.html">
 <code>Unary Function</code></a> accepting arguments of type
 <code>value_type&amp;</code>. <code>position</code> is a valid dereferenceable
-iterator of the index.</br>
+iterator of the index.<br>
 <b>Effects:</b> Calls <code>mod(e)</code> where <code>e</code> is the element
 pointed to by <code>position</code> and rearranges <code>*position</code> into
 all the indices of the <code>multi_index_container</code>. Rearrangement is successful if
@@ -617,7 +618,8 @@
 </ul>
 If the rearrangement fails, the element is erased.<br>
 <b>Postconditions:</b> Validity of <code>position</code> is preserved if the
-operation succeeds.<br>
+operation succeeds. If the key of the modified value is equivalent to that of the
+original value, the position of the element does not change.<br>
 <b>Returns:</b> <code>true</code> if the operation succeeded, <code>false</code>
 otherwise.<br>
 <b>Complexity:</b> <code>O(M(n))</code>.<br>
@@ -637,7 +639,7 @@
 iterator of the index. The sequence of operations <code>mod(e)</code>,
 <code>back(e)</code>, where <code>e</code> is the element
 pointed to by <code>position</code>, restores all keys of the element
-to their original state.</br>
+to their original state.<br>
 <b>Effects:</b> Calls <code>mod(e)</code> where <code>e</code> is the element
 pointed to by <code>position</code> and tries to rearrange <code>*position</code> into
 all the indices of the <code>multi_index_container</code>. Rearrangement is successful if
@@ -650,7 +652,9 @@
 If the rearrangement fails, <code>back(e)</code> is invoked and the
 element is kept at its original position in all indices.<br>
 <b>Postconditions:</b> Validity of <code>position</code> is preserved except if
-the element is erased under the conditions described below.<br>
+the element is erased under the conditions described below.
+If the key of the modified value is equivalent to that of the
+original value, the position of the element does not change.<br>
 <b>Returns:</b> <code>true</code> if the operation succeeded, <code>false</code>
 otherwise.<br>
 <b>Complexity:</b> <code>O(M(n))</code>.<br>
@@ -671,7 +675,7 @@
 <a href="http://www.sgi.com/tech/stl/UnaryFunction.html">
 <code>Unary Function</code></a> accepting arguments of type
 <code>key_type&amp;</code>. <code>position</code> is a valid dereferenceable
-iterator of the index.</br>
+iterator of the index.<br>
 <b>Effects:</b> Equivalent to <code>modify(position,mod')</code>,
 with <code>mod'</code> defined in such a way that
 <code>mod'(x)</code> is the same as <code>mod(key(x))</code>, where
@@ -691,7 +695,7 @@
 iterator of the index.
 The sequence of operations <code>mod(k)</code>,
 <code>back(k)</code>, where <code>k</code> is the key of the element
-pointed to by <code>position</code>, restores k to its original state.</br>
+pointed to by <code>position</code>, restores k to its original state.<br>
 <b>Effects:</b> Equivalent to <code>modify(position,mod',back')</code>,
 with <code>mod'</code> and <code>back</code> defined in such a way that
 <code>mod'(x)</code> is the same as <code>mod(key(x))</code> and
@@ -779,7 +783,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>CompatibleKey</code> is a compatible key of
-<code>key_compare</code>.</br>
+<code>key_compare</code>.<br>
 <b>Effects:</b> Returns a pointer to an element whose key is equivalent to
 <code>x</code>, or <code>end()</code> if such an element does not exist.<br>
 <b>Complexity:</b> <code>O(log(n))</code>.<br>
@@ -791,7 +795,7 @@
 
 <blockquote>
 <b>Requires:</b> (<code>CompatibleKey</code>, <code>CompatibleCompare</code>)
-is a compatible extension of <code>key_compare</code>.</br>
+is a compatible extension of <code>key_compare</code>.<br>
 <b>Effects:</b> Returns a pointer to an element whose key is equivalent to
 <code>x</code>, or <code>end()</code> if such an element does not exist.<br>
 <b>Complexity:</b> <code>O(log(n))</code>.<br>
@@ -803,7 +807,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>CompatibleKey</code> is a compatible key of
-<code>key_compare</code>.</br>
+<code>key_compare</code>.<br>
 <b>Effects:</b> Returns the number of elements with key equivalent to <code>x</code>.<br>
 <b>Complexity:</b> <code>O(log(n) + count(x))</code>.<br>
 </blockquote>
@@ -814,7 +818,7 @@
 
 <blockquote>
 <b>Requires:</b> (<code>CompatibleKey</code>, <code>CompatibleCompare</code>)
-is a compatible extension of <code>key_compare</code>.</br>
+is a compatible extension of <code>key_compare</code>.<br>
 <b>Effects:</b> Returns the number of elements with key equivalent to <code>x</code>.<br>
 <b>Complexity:</b> <code>O(log(n) + count(x,comp))</code>.<br>
 </blockquote>
@@ -825,7 +829,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>CompatibleKey</code> is a compatible key of
-<code>key_compare</code>.</br>
+<code>key_compare</code>.<br>
 <b>Effects:</b> Returns an iterator pointing to the first element with
 key not less than <code>x</code>, or <code>end()</code> if such an element does
 not exist.<br>
@@ -838,7 +842,7 @@
 
 <blockquote>
 <b>Requires:</b> (<code>CompatibleKey</code>, <code>CompatibleCompare</code>)
-is a compatible extension of <code>key_compare</code>.</br>
+is a compatible extension of <code>key_compare</code>.<br>
 <b>Effects:</b> Returns an iterator pointing to the first element with
 key not less than <code>x</code>, or <code>end()</code> if such an element does
 not exist.<br>
@@ -851,7 +855,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>CompatibleKey</code> is a compatible key of
-<code>key_compare</code>.</br>
+<code>key_compare</code>.<br>
 <b>Effects:</b> Returns an iterator pointing to the first element with
 key greater than <code>x</code>, or <code>end()</code> if such an element does
 not exist.<br>
@@ -864,7 +868,7 @@
 
 <blockquote>
 <b>Requires:</b> (<code>CompatibleKey</code>, <code>CompatibleCompare</code>)
-is a compatible extension of <code>key_compare</code>.</br>
+is a compatible extension of <code>key_compare</code>.<br>
 <b>Effects:</b> Returns an iterator pointing to the first element with
 key greater than <code>x</code>, or <code>end()</code> if such an element does
 not exist.<br>
@@ -878,19 +882,19 @@
 
 <blockquote>
 <b>Requires:</b> <code>CompatibleKey</code> is a compatible key of
-<code>key_compare</code>.</br>
+<code>key_compare</code>.<br>
 <b>Effects:</b> Equivalent to <code>make_pair(lower_bound(x),upper_bound(x))</code>.<br>
 <b>Complexity:</b> <code>O(log(n))</code>.<br>
 </blockquote>
 
 <code>template&lt;typename CompatibleKey,typename CompatibleCompare><br>
-std::pair&lt;iterator,iterator> equal_range(</br>
+std::pair&lt;iterator,iterator> equal_range(<br>
 &nbsp;&nbsp;const CompatibleKey&amp; x,const CompatibleCompare&amp; comp)const;
 </code>
 
 <blockquote>
 <b>Requires:</b> (<code>CompatibleKey</code>, <code>CompatibleCompare</code>)
-is a compatible extension of <code>key_compare</code>.</br>
+is a compatible extension of <code>key_compare</code>.<br>
 <b>Effects:</b> Equivalent to
 <code>make_pair(lower_bound(x,comp),upper_bound(x,comp))</code>.<br>
 <b>Complexity:</b> <code>O(log(n))</code>.<br>
@@ -942,7 +946,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>LowerBounder</code> and <code>UpperBounder</code> are
-a lower and upper bounder of <code>key_compare</code>, respectively.</br>
+a lower and upper bounder of <code>key_compare</code>, respectively.<br>
 <b>Effects:</b> Returns a pair of iterators pointing to the beginning and one
 past the end of the subsequence of elements satisfying <code>lower</code> and
 <code>upper</code> simultaneously. If no such elements exist, the iterators
@@ -1018,9 +1022,9 @@
 
 <br>
 
-<p>Revised July 2nd 2007</p>
+<p>Revised June 25th 2008</p>
 
-<p>&copy; Copyright 2003-2007 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
+<p>&copy; Copyright 2003-2008 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
 Distributed under the Boost Software
 License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
 LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">

Modified: branches/proto/v4/libs/multi_index/doc/reference/rnd_indices.html
==============================================================================
--- branches/proto/v4/libs/multi_index/doc/reference/rnd_indices.html (original)
+++ branches/proto/v4/libs/multi_index/doc/reference/rnd_indices.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -454,7 +454,7 @@
 <code>value_type</code> or a type convertible to <code>value_type</code>.
 <code>first</code> and <code>last</code> are not iterators into any
 index of the <code>multi_index_container</code> to which this index belongs.
-<code>last</code> is reachable from <code>first</code>.</br>
+<code>last</code> is reachable from <code>first</code>.<br>
 <b>Effects:</b>
 <blockquote><pre>
 <span class=identifier>clear</span><span class=special>();</span>
@@ -474,11 +474,11 @@
 
 <h4><a name="iterators">Iterators</a></h4>
 
-<code>iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator_to(const value_type&amp; x);</br>
+<code>iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator_to(const value_type&amp; x);<br>
 const_iterator iterator_to(const value_type&amp; x)const;</code>
   
 <blockquote>
-<b>Requires:</b> <code>x</code> is a reference to an element of the container.</br>
+<b>Requires:</b> <code>x</code> is a reference to an element of the container.<br>
 <b>Returns:</b> An iterator to <code>x</code>.<br>
 <b>Complexity:</b> Constant.<br>
 <b>Exception safety:</b> <code>nothrow</code>.<br>
@@ -555,7 +555,7 @@
 <code>std::pair&lt;iterator,bool> insert(iterator position,const value_type&amp; x);</code>
 
 <blockquote>
-<b>Requires:</b> <code>position</code> is a valid iterator of the index.</br>
+<b>Requires:</b> <code>position</code> is a valid iterator of the index.<br>
 <b>Effects:</b> Inserts <code>x</code> before <code>position</code> if insertion
 is allowed by all other indices of the <code>multi_index_container</code>.<br>
 <b>Returns:</b> The return value is a pair <code>p</code>. <code>p.second</code>
@@ -570,7 +570,7 @@
 <code>void insert(iterator position,size_type m,const value_type&amp; x);</code>
 
 <blockquote>
-<b>Requires:</b> <code>position</code> is a valid iterator of the index.</br>
+<b>Requires:</b> <code>position</code> is a valid iterator of the index.<br>
 <b>Effects:</b>
 <blockquote><pre>
 <span class=keyword>for</span><span class=special>(</span><span class=identifier>size_type</span> <span class=identifier>i</span><span class=special>=</span><span class=number>0</span><span class=special>;</span><span class=identifier>i</span><span class=special>&lt;</span><span class=identifier>m</span><span class=special>;++</span><span class=identifier>i</span><span class=special>)</span><span class=identifier>insert</span><span class=special>(</span><span class=identifier>position</span><span class=special>,</span><span class=identifier>x</span><span class=special>);</span>
@@ -589,7 +589,7 @@
 <code>value_type</code> or a type convertible to <code>value_type</code>.
 <code>first</code> and <code>last</code> are not iterators into any
 index of the <code>multi_index_container</code> to which this index belongs.
-<code>last</code> is reachable from <code>first</code>.</br>
+<code>last</code> is reachable from <code>first</code>.<br>
 <b>Effects:</b>
 <blockquote><pre>
 <span class=keyword>while</span><span class=special>(</span><span class=identifier>first</span><span class=special>!=</span><span class=identifier>last</span><span class=special>)</span><span class=identifier>insert</span><span class=special>(</span><span class=identifier>position</span><span class=special>,*</span><span class=identifier>first</span><span class=special>++);</span>
@@ -604,7 +604,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>position</code> is a valid dereferenceable iterator
-of the index.</br>
+of the index.<br>
 <b>Effects:</b> Deletes the element pointed to by <code>position</code>.<br>
 <b>Returns:</b> An iterator pointing to the element immediately following
 the one that was deleted, or <code>end()</code>
@@ -629,7 +629,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>position</code> is a valid dereferenceable iterator
-of the index.</br>
+of the index.<br>
 <b>Effects:</b> Assigns the value <code>x</code> to the element pointed
 to by <code>position</code> into the <code>multi_index_container</code> to which
 the index belongs if replacing is allowed by all other indices of the
@@ -652,7 +652,7 @@
 <a href="http://www.sgi.com/tech/stl/UnaryFunction.html">
 <code>Unary Function</code></a> accepting arguments of type
 <code>value_type&amp;</code>. <code>position</code> is a valid dereferenceable
-iterator of the index.</br>
+iterator of the index.<br>
 <b>Effects:</b> Calls <code>mod(e)</code> where <code>e</code> is the element
 pointed to by <code>position</code> and rearranges <code>*position</code> into
 all the indices of the <code>multi_index_container</code>. Rearrangement on
@@ -680,7 +680,7 @@
 iterator of the index. The sequence of operations <code>mod(e)</code>,
 <code>back(e)</code>, where <code>e</code> is the element
 pointed to by <code>position</code>, restores all keys of the element
-to their original state.</br>
+to their original state.<br>
 <b>Effects:</b> Calls <code>mod(e)</code> where <code>e</code> is the element
 pointed to by <code>position</code> and tries to rearrange <code>*position</code> into
 all the indices of the <code>multi_index_container</code>. Rearrangement on
@@ -713,7 +713,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>position</code> is a valid iterator of the index.
-<code>&amp;x!=this</code>.</br>
+<code>&amp;x!=this</code>.<br>
 <b>Effects:</b> Inserts the contents of <code>x</code> before <code>position</code>,
 in the same order as they were in <code>x</code>. Those elements succesfully
 inserted are erased from <code>x</code>.<br>
@@ -999,9 +999,9 @@
 
 <br>
 
-<p>Revised July 2nd 2007</p>
+<p>Revised June 25th 2008</p>
 
-<p>&copy; Copyright 2003-2007 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
+<p>&copy; Copyright 2003-2008 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
 Distributed under the Boost Software
 License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
 LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">

Modified: branches/proto/v4/libs/multi_index/doc/reference/seq_indices.html
==============================================================================
--- branches/proto/v4/libs/multi_index/doc/reference/seq_indices.html (original)
+++ branches/proto/v4/libs/multi_index/doc/reference/seq_indices.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -428,7 +428,7 @@
 <code>value_type</code> or a type convertible to <code>value_type</code>.
 <code>first</code> and <code>last</code> are not iterators into any
 index of the <code>multi_index_container</code> to which this index belongs.
-<code>last</code> is reachable from <code>first</code>.</br>
+<code>last</code> is reachable from <code>first</code>.<br>
 <b>Effects:</b>
 <blockquote><pre>
 <span class=identifier>clear</span><span class=special>();</span>
@@ -448,11 +448,11 @@
 
 <h4><a name="iterators">Iterators</a></h4>
 
-<code>iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator_to(const value_type&amp; x);</br>
+<code>iterator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iterator_to(const value_type&amp; x);<br>
 const_iterator iterator_to(const value_type&amp; x)const;</code>
   
 <blockquote>
-<b>Requires:</b> <code>x</code> is a reference to an element of the container.</br>
+<b>Requires:</b> <code>x</code> is a reference to an element of the container.<br>
 <b>Returns:</b> An iterator to <code>x</code>.<br>
 <b>Complexity:</b> Constant.<br>
 <b>Exception safety:</b> <code>nothrow</code>.<br>
@@ -509,7 +509,7 @@
 <code>std::pair&lt;iterator,bool> insert(iterator position,const value_type&amp; x);</code>
 
 <blockquote>
-<b>Requires:</b> <code>position</code> is a valid iterator of the index.</br>
+<b>Requires:</b> <code>position</code> is a valid iterator of the index.<br>
 <b>Effects:</b> Inserts <code>x</code> before <code>position</code> if insertion
 is allowed by all other indices of the <code>multi_index_container</code>.<br>
 <b>Returns:</b> The return value is a pair <code>p</code>. <code>p.second</code>
@@ -524,7 +524,7 @@
 <code>void insert(iterator position,size_type n,const value_type&amp; x);</code>
 
 <blockquote>
-<b>Requires:</b> <code>position</code> is a valid iterator of the index.</br>
+<b>Requires:</b> <code>position</code> is a valid iterator of the index.<br>
 <b>Effects:</b>
 <blockquote><pre>
 <span class=keyword>for</span><span class=special>(</span><span class=identifier>size_type</span> <span class=identifier>i</span><span class=special>=</span><span class=number>0</span><span class=special>;</span><span class=identifier>i</span><span class=special>&lt;</span><span class=identifier>n</span><span class=special>;++</span><span class=identifier>i</span><span class=special>)</span><span class=identifier>insert</span><span class=special>(</span><span class=identifier>position</span><span class=special>,</span><span class=identifier>x</span><span class=special>);</span>
@@ -542,7 +542,7 @@
 <code>value_type</code> or a type convertible to <code>value_type</code>.
 <code>first</code> and <code>last</code> are not iterators into any
 index of the <code>multi_index_container</code> to which this index belongs.
-<code>last</code> is reachable from <code>first</code>.</br>
+<code>last</code> is reachable from <code>first</code>.<br>
 <b>Effects:</b>
 <blockquote><pre>
 <span class=keyword>while</span><span class=special>(</span><span class=identifier>first</span><span class=special>!=</span><span class=identifier>last</span><span class=special>)</span><span class=identifier>insert</span><span class=special>(</span><span class=identifier>position</span><span class=special>,*</span><span class=identifier>first</span><span class=special>++);</span>
@@ -556,7 +556,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>position</code> is a valid dereferenceable iterator
-of the index.</br>
+of the index.<br>
 <b>Effects:</b> Deletes the element pointed to by <code>position</code>.<br>
 <b>Returns:</b> An iterator pointing to the element immediately following
 the one that was deleted, or <code>end()</code>
@@ -581,7 +581,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>position</code> is a valid dereferenceable iterator
-of the index.</br>
+of the index.<br>
 <b>Effects:</b> Assigns the value <code>x</code> to the element pointed
 to by <code>position</code> into the <code>multi_index_container</code> to which
 the index belongs if replacing is allowed by all other indices of the
@@ -604,7 +604,7 @@
 <a href="http://www.sgi.com/tech/stl/UnaryFunction.html">
 <code>Unary Function</code></a> accepting arguments of type
 <code>value_type&amp;</code>. <code>position</code> is a valid dereferenceable
-iterator of the index.</br>
+iterator of the index.<br>
 <b>Effects:</b> Calls <code>mod(e)</code> where <code>e</code> is the element
 pointed to by <code>position</code> and rearranges <code>*position</code> into
 all the indices of the <code>multi_index_container</code>. Rearrangement on sequenced
@@ -632,7 +632,7 @@
 iterator of the index. The sequence of operations <code>mod(e)</code>,
 <code>back(e)</code>, where <code>e</code> is the element
 pointed to by <code>position</code>, restores all keys of the element
-to their original state.</br>
+to their original state.<br>
 <b>Effects:</b> Calls <code>mod(e)</code> where <code>e</code> is the element
 pointed to by <code>position</code> and tries to rearrange <code>*position</code> into
 all the indices of the <code>multi_index_container</code>. Rearrangement on sequenced
@@ -667,7 +667,7 @@
 
 <blockquote>
 <b>Requires:</b> <code>position</code> is a valid iterator of the index.
-<code>&amp;x!=this</code>.</br>
+<code>&amp;x!=this</code>.<br>
 <b>Effects:</b> Inserts the contents of <code>x</code> before <code>position</code>,
 in the same order as they were in <code>x</code>. Those elements succesfully
 inserted are erased from <code>x</code>.<br>
@@ -954,9 +954,9 @@
 
 <br>
 
-<p>Revised July 2nd 2007</p>
+<p>Revised June 25th 2008</p>
 
-<p>&copy; Copyright 2003-2007 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
+<p>&copy; Copyright 2003-2008 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
 Distributed under the Boost Software
 License, Version 1.0. (See accompanying file <a href="../../../../LICENSE_1_0.txt">
 LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">

Modified: branches/proto/v4/libs/multi_index/doc/release_notes.html
==============================================================================
--- branches/proto/v4/libs/multi_index/doc/release_notes.html (original)
+++ branches/proto/v4/libs/multi_index/doc/release_notes.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -31,12 +31,30 @@
 <h2>Contents</h2>
 
 <ul>
+ <li>Boost 1.36 release</li>
   <li>Boost 1.35 release</li>
   <li>Boost 1.34 release</li>
   <li>Boost 1.33.1 release</li>
   <li>Boost 1.33 release</li>
 </ul>
 
+<h2><a name="boost_1_36">Boost 1.36 release</a></h2>
+
+<p>
+<ul>
+ <a name="stable_update">
+ <li>On prior versions of the library, the <a href="tutorial/indices.html#hash_updating">update
+ member functions</a> of hashed indices could alter the position of an element even if the
+ associated key did not change with the update. This is legal but probably unexpected behavior.
+ The functions have been rewritten to provide the additional guarantee that elements with
+ unmodified key will not change position in hashed indices, just as always was the case with
+ ordered indices. These guarantees are now documented in the reference.</li>
+ <li>Added the constructor <code>multi_index_container::multi_index_container(const allocator_type&amp;)</code>
+ to mimic the equivalent interface in STL sequence containers.
+ <li>Maintenance fixes.</li>
+</ul>
+</p>
+
 <h2><a name="boost_1_35">Boost 1.35 release</a></h2>
 
 <p>
@@ -205,9 +223,9 @@
 
 <br>
 
-<p>Revised October 11th 2007</p>
+<p>Revised June 25th 2008</p>
 
-<p>&copy; Copyright 2003-2007 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
+<p>&copy; Copyright 2003-2008 Joaqu&iacute;n M L&oacute;pez Mu&ntilde;oz.
 Distributed under the Boost Software
 License, Version 1.0. (See accompanying file <a href="../../../LICENSE_1_0.txt">
 LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">

Modified: branches/proto/v4/libs/multi_index/example/basic.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/basic.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/basic.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex basic example.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/example/bimap.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/bimap.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/bimap.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example of a bidirectional map.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/example/complex_structs.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/complex_structs.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/complex_structs.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example: complex searches and foreign keys.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/example/composite_keys.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/composite_keys.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/composite_keys.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example of composite keys.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/example/fun_key.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/fun_key.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/fun_key.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example of functions used as key extractors.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/example/hashed.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/hashed.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/hashed.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example of use of hashed indices.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -66,6 +66,8 @@
 
 int main()
 {
+ /* boostinspect:noascii */
+
   std::string text=
     "En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha "
     "mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga "

Modified: branches/proto/v4/libs/multi_index/example/ip_allocator.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/ip_allocator.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/ip_allocator.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example of use of Boost.Interprocess allocators.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/example/non_default_ctor.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/non_default_ctor.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/non_default_ctor.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example of use of multi_index_container::ctor_args_list.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/example/random_access.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/random_access.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/random_access.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example of use of random access indices.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/example/rearrange.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/rearrange.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/rearrange.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example of use of rearrange facilities.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/example/sequenced.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/sequenced.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/sequenced.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example of use of sequenced indices.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/example/serialization.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/example/serialization.cpp (original)
+++ branches/proto/v4/libs/multi_index/example/serialization.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex example of serialization of a MRU list.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/perf/test_perf.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/perf/test_perf.cpp (original)
+++ branches/proto/v4/libs/multi_index/perf/test_perf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex performance test.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/employee.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/employee.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/employee.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Used in Boost.MultiIndex tests.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/non_std_allocator.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/non_std_allocator.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/non_std_allocator.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Used in Boost.MultiIndex tests.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -123,14 +123,4 @@
   }
 };
 
-template<>
-class non_std_allocator<void>
-{
-public:
- typedef non_raw_pointer<void> pointer;
- typedef non_raw_pointer<const void> const_pointer;
- typedef void value_type;
- template<class U>struct rebind{typedef non_std_allocator<U> other;};
-};
-
 #endif

Modified: branches/proto/v4/libs/multi_index/test/pair_of_ints.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/pair_of_ints.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/pair_of_ints.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Used in Boost.MultiIndex tests.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/pre_multi_index.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/pre_multi_index.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/pre_multi_index.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Used in Boost.MultiIndex tests.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_all_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_all_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_all_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test suite.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_basic.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_basic.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_basic.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex basic test.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_basic.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_basic.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_basic.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex basic test.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_basic_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_basic_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_basic_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex basic test.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_capacity.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_capacity.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_capacity.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for capacity memfuns.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_capacity.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_capacity.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_capacity.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for capacity memfuns.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_capacity_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_capacity_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_capacity_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for capacity memfuns.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_comparison.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_comparison.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_comparison.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for comparison functions.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_comparison.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_comparison.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_comparison.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for comparison functions.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_comparison_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_comparison_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_comparison_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for comparison functions.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_composite_key.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_composite_key.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_composite_key.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for composite_key.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_composite_key.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_composite_key.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_composite_key.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for composite_key.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_composite_key_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_composite_key_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_composite_key_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for composite_key.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_conv_iterators.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_conv_iterators.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_conv_iterators.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 /* Boost.MultiIndex test for interconvertibilty between const and
  * non-const iterators.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_conv_iterators.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_conv_iterators.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_conv_iterators.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 /* Boost.MultiIndex test for interconvertibilty between const and
  * non-const iterators.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_conv_iterators_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_conv_iterators_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_conv_iterators_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 /* Boost.MultiIndex test for interconvertibilty between const and
  * non-const iterators.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_copy_assignment.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_copy_assignment.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_copy_assignment.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for copying and assignment.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -107,7 +107,7 @@
   BOOST_CHECK(get<3>(es2)==get<3>(es3));
   BOOST_CHECK(get<5>(es2)==get<5>(es3));
 
- employee_set es4;
+ employee_set es4=employee_set(non_std_allocator<employee>());
   employee_set_by_name& i1=get<name>(es4);
   i1=get<1>(es2);
 

Modified: branches/proto/v4/libs/multi_index/test/test_copy_assignment.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_copy_assignment.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_copy_assignment.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for copying and assignment.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_copy_assignment_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_copy_assignment_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_copy_assignment_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for copying and assignment.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_hash_ops.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_hash_ops.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_hash_ops.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for standard hash operations.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_hash_ops.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_hash_ops.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_hash_ops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for standard hash operations.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_hash_ops_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_hash_ops_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_hash_ops_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for standard hash operations.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_iterators.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_iterators.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_iterators.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for iterators.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_iterators.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_iterators.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_iterators.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for iterators.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_iterators_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_iterators_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_iterators_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for iterators.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_key_extractors.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_key_extractors.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_key_extractors.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for key extractors.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_key_extractors.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_key_extractors.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_key_extractors.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for key extractors.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_key_extractors_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_key_extractors_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_key_extractors_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for key extractors.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_list_ops.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_list_ops.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_list_ops.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for standard list operations.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_list_ops.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_list_ops.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_list_ops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for standard list operations.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_list_ops_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_list_ops_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_list_ops_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for standard list operations.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_modifiers.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_modifiers.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_modifiers.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for modifier memfuns.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -31,7 +31,6 @@
   int n;
 };
 
-
 inline bool operator==(const always_one& x,const always_one& y)
 {
   return x.get()==y.get();

Modified: branches/proto/v4/libs/multi_index/test/test_modifiers.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_modifiers.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_modifiers.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for modifier memfuns.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_modifiers_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_modifiers_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_modifiers_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for modifier memfuns.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_mpl_ops.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_mpl_ops.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_mpl_ops.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for MPL operations.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_mpl_ops.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_mpl_ops.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_mpl_ops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for for MPL operations.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_mpl_ops_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_mpl_ops_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_mpl_ops_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for for MPL operations.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_observers.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_observers.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_observers.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for observer memfuns.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_observers.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_observers.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_observers.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for observer memfuns.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_observers_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_observers_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_observers_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for observer memfuns.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_projection.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_projection.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_projection.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for projection capabilities.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_projection.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_projection.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_projection.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for projection capabilities.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_projection_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_projection_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_projection_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for projection capabilities.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_range.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_range.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_range.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for range().
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_range.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_range.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_range.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for range().
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_range_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_range_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_range_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for range().
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_rearrange.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_rearrange.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_rearrange.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for rearrange operations.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_rearrange.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_rearrange.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_rearrange.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for rearrange operations.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_rearrange_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_rearrange_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_rearrange_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for rearrange operations.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_safe_mode.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_safe_mode.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_safe_mode.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for safe_mode.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_safe_mode.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_safe_mode.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_safe_mode.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for safe mode.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_safe_mode_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_safe_mode_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_safe_mode_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for safe mode.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_serialization.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_serialization.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_serialization.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for serialization.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_serialization.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_serialization.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_serialization.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for serialization.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_serialization1.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_serialization1.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_serialization1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for serialization, part 1.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_serialization1.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_serialization1.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_serialization1.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for serialization, part 1.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_serialization2.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_serialization2.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_serialization2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for serialization, part 2.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_serialization2.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_serialization2.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_serialization2.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for serialization, part 2.
  *
- * Copyright 2003-2006 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_serialization3.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_serialization3.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_serialization3.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for serialization, part 3.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_serialization3.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_serialization3.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_serialization3.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for serialization, part 3.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_serialization_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_serialization_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_serialization_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for serialization.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_serialization_template.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_serialization_template.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_serialization_template.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex serialization tests template.
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_set_ops.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_set_ops.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_set_ops.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for standard set operations.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_set_ops.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_set_ops.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_set_ops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for standard set operations.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_set_ops_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_set_ops_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_set_ops_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for standard set operations.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_special_set_ops.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_special_set_ops.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_special_set_ops.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for special set operations.
  *
- * Copyright 2003-2005 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_special_set_ops.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_special_set_ops.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_special_set_ops.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for special set operations.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_special_set_ops_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_special_set_ops_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_special_set_ops_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for special set operations.
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_update.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_update.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_update.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for replace(), modify() and modify_key().
  *
- * Copyright 2003-2007 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)
@@ -12,12 +12,51 @@
 
 #include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
 #include <algorithm>
+#include <cstddef>
 #include "pre_multi_index.hpp"
 #include "employee.hpp"
 #include "pair_of_ints.hpp"
 #include <boost/next_prior.hpp>
 #include <boost/test/test_tools.hpp>
 
+struct do_nothing
+{
+ template<typename T>
+ void operator()(const T&)const{}
+};
+
+struct null_hash
+{
+ template<typename T>
+ std::size_t operator()(const T&)const{return 0;}
+};
+
+template<class MultiIndexContainer>
+void test_stable_update(BOOST_EXPLICIT_TEMPLATE_TYPE(MultiIndexContainer))
+{
+ typedef typename MultiIndexContainer::iterator iterator;
+ typedef typename MultiIndexContainer::size_type size_type;
+
+ MultiIndexContainer c;
+ c.insert(0);c.insert(0);c.insert(0);c.insert(0);
+ c.insert(1);c.insert(1);c.insert(1);
+ c.insert(2);c.insert(2);
+ c.insert(3);
+
+ for(size_type n=c.size();n--;){
+ iterator it=boost::next(c.begin(),n);
+
+ c.replace(it,*it);
+ BOOST_CHECK((size_type)std::distance(c.begin(),it)==n);
+
+ c.modify(it,do_nothing());
+ BOOST_CHECK((size_type)std::distance(c.begin(),it)==n);
+
+ c.modify(it,do_nothing(),do_nothing());
+ BOOST_CHECK((size_type)std::distance(c.begin(),it)==n);
+ }
+}
+
 using namespace boost::multi_index;
 
 void test_update()
@@ -167,4 +206,56 @@
     BOOST_CHECK(!ii1.modify(boost::prior(ii1.end()),increment_second));
     BOOST_CHECK(ii1.size()==2);
   }
+ {
+ typedef multi_index_container<
+ int,
+ indexed_by<
+ ordered_non_unique<identity<int> >
+ >
+ > int_set;
+
+ /* MSVC++ 6.0 needs this out-of-template definition */
+ int_set dummy1;
+ test_stable_update<int_set>();
+
+ typedef multi_index_container<
+ int,
+ indexed_by<
+ hashed_unique<identity<int> >
+ >
+ > int_hashed_set;
+
+ int_hashed_set dummy2;
+ test_stable_update<int_hashed_set>();
+
+ typedef multi_index_container<
+ int,
+ indexed_by<
+ hashed_unique<identity<int> >
+ >
+ > int_hashed_multiset;
+
+ int_hashed_multiset dummy3;
+ test_stable_update<int_hashed_multiset>();
+
+ typedef multi_index_container<
+ int,
+ indexed_by<
+ hashed_unique<identity<int>,null_hash>
+ >
+ > degenerate_int_hashed_set;
+
+ degenerate_int_hashed_set dummy4;
+ test_stable_update<degenerate_int_hashed_set>();
+
+ typedef multi_index_container<
+ int,
+ indexed_by<
+ hashed_non_unique<identity<int>,null_hash>
+ >
+ > degenerate_int_hashed_multiset;
+
+ degenerate_int_hashed_multiset dummy5;
+ test_stable_update<degenerate_int_hashed_multiset>();
+ }
 }

Modified: branches/proto/v4/libs/multi_index/test/test_update.hpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_update.hpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_update.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for replace(), modify() and modify_key().
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/multi_index/test/test_update_main.cpp
==============================================================================
--- branches/proto/v4/libs/multi_index/test/test_update_main.cpp (original)
+++ branches/proto/v4/libs/multi_index/test/test_update_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 /* Boost.MultiIndex test for replace(), modify() and modify_key().
  *
- * Copyright 2003-2004 Joaquín M López Muñoz.
+ * Copyright 2003-2008 Joaquin M Lopez Munoz.
  * Distributed under the Boost Software License, Version 1.0.
  * (See accompanying file LICENSE_1_0.txt or copy at
  * http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/parameter/doc/html/index.html
==============================================================================
--- branches/proto/v4/libs/parameter/doc/html/index.html (original)
+++ branches/proto/v4/libs/parameter/doc/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.6: http://docutils.sourceforge.net/" />
 <title>The Boost Parameter Library</title>
 <link rel="stylesheet" href="rst.css" type="text/css" />
 </head>
@@ -11,7 +11,7 @@
 <div class="document" id="the-boost-parameter-library">
 <h1 class="title">The Boost Parameter Library</h1>
 
-<p><a class="reference" href="../../../../index.htm"><img alt="Boost" src="../../../../boost.png" /></a></p>
+<p><a class="reference external" href="../../../../index.htm"><img alt="Boost" src="../../../../boost.png" /></a></p>
 <hr class="docutils" />
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -78,100 +78,65 @@
 <tbody valign="top">
 <tr class="field"><th class="field-name">Authors:</th><td class="field-body">David Abrahams, Daniel Wallin</td>
 </tr>
-<tr class="field"><th class="field-name">Contact:</th><td class="field-body"><a class="reference" href="mailto:dave&#64;boost-consulting.com">dave&#64;boost-consulting.com</a>, <a class="reference" href="mailto:dalwan01&#64;student.umu.se">dalwan01&#64;student.umu.se</a></td>
+<tr class="field"><th class="field-name">Contact:</th><td class="field-body"><a class="reference external" href="mailto:dave&#64;boost-consulting.com">dave&#64;boost-consulting.com</a>, <a class="reference external" href="mailto:dalwan01&#64;student.umu.se">dalwan01&#64;student.umu.se</a></td>
 </tr>
-<tr class="field"><th class="field-name">Organization:</th><td class="field-body"><a class="reference" href="http://www.boost-consulting.com">Boost Consulting</a></td>
+<tr class="field"><th class="field-name">Organization:</th><td class="field-body"><a class="reference external" href="http://www.boost-consulting.com">Boost Consulting</a></td>
 </tr>
 <tr class="field"><th class="field-name">Date:</th><td class="field-body">$Date: 2005/07/18 20:34:31 $</td>
 </tr>
 <tr class="field"><th class="field-name">Copyright:</th><td class="field-body">Copyright David Abrahams, Daniel Wallin 2005.
 Distributed under the Boost Software License,
 Version 1.0. (See accompanying file LICENSE_1_0.txt
-or copy at <a class="reference" href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt>)</td>
+or copy at <a class="reference external" href="
http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt>)</td>
 </tr>
 </tbody>
 </table>
 <hr class="docutils" />
-<div class="contents topic">
-<p class="topic-title first"><a id="table-of-contents" name="table-of-contents"><strong>Table of Contents</strong></a></p>
+<p>[Note: this tutorial does not cover all details of the library. Please see also the <a class="reference external" href="reference.html">reference documentation</a>]</p>
+<div class="contents topic" id="table-of-contents">
+<p class="topic-title first"><strong>Table of Contents</strong></p>
 <ul class="auto-toc simple">
-<li><a class="reference" href="#motivation" id="id21" name="id21">1&nbsp;&nbsp;&nbsp;Motivation</a><ul class="auto-toc">
-<li><a class="reference" href="#named-function-parameters" id="id22" name="id22">1.1&nbsp;&nbsp;&nbsp;Named Function Parameters</a></li>
-<li><a class="reference" href="#deduced-function-parameters" id="id23" name="id23">1.2&nbsp;&nbsp;&nbsp;Deduced Function Parameters</a></li>
-<li><a class="reference" href="#class-template-parameter-support" id="id24" name="id24">1.3&nbsp;&nbsp;&nbsp;Class Template Parameter Support</a></li>
+<li><a class="reference internal" href="#motivation" id="id22">1&nbsp;&nbsp;&nbsp;Motivation</a><ul class="auto-toc">
+<li><a class="reference internal" href="#named-function-parameters" id="id23">1.1&nbsp;&nbsp;&nbsp;Named Function Parameters</a></li>
+<li><a class="reference internal" href="#deduced-function-parameters" id="id24">1.2&nbsp;&nbsp;&nbsp;Deduced Function Parameters</a></li>
+<li><a class="reference internal" href="#class-template-parameter-support" id="id25">1.3&nbsp;&nbsp;&nbsp;Class Template Parameter Support</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#tutorial" id="id25" name="id25">2&nbsp;&nbsp;&nbsp;Tutorial</a><ul class="auto-toc">
-<li><a class="reference" href="#parameter-enabled-functions" id="id26" name="id26">2.1&nbsp;&nbsp;&nbsp;Parameter-Enabled Functions</a><ul class="auto-toc">
-<li><a class="reference" href="#headers-and-namespaces" id="id27" name="id27">2.1.1&nbsp;&nbsp;&nbsp;Headers And Namespaces</a></li>
-<li><a class="reference" href="#the-abstract-interface-to-dfs" id="id28" name="id28">2.1.2&nbsp;&nbsp;&nbsp;The Abstract Interface to <tt class="docutils literal"><span class="pre">depth_first_search</span></tt></a></li>
-<li><a class="reference" href="#defining-the-keywords" id="id29" name="id29">2.1.3&nbsp;&nbsp;&nbsp;Defining the Keywords</a></li>
-<li><a class="reference" href="#writing-the-function" id="id30" name="id30">2.1.4&nbsp;&nbsp;&nbsp;Writing the Function</a></li>
-<li><a class="reference" href="#function-signatures" id="id31" name="id31">2.1.5&nbsp;&nbsp;&nbsp;Function Signatures</a><ul class="auto-toc">
-<li><a class="reference" href="#required-parameters" id="id32" name="id32">2.1.5.1&nbsp;&nbsp;&nbsp;Required Parameters</a></li>
-<li><a class="reference" href="#optional-parameters" id="id33" name="id33">2.1.5.2&nbsp;&nbsp;&nbsp;Optional Parameters</a></li>
-<li><a class="reference" href="#handling-out-parameters" id="id34" name="id34">2.1.5.3&nbsp;&nbsp;&nbsp;Handling “Out” Parameters</a></li>
-<li><a class="reference" href="#positional-arguments" id="id35" name="id35">2.1.5.4&nbsp;&nbsp;&nbsp;Positional Arguments</a></li>
-<li><a class="reference" href="#default-expression-evaluation" id="id36" name="id36">2.1.5.5&nbsp;&nbsp;&nbsp;Default Expression Evaluation</a></li>
-<li><a class="reference" href="#signature-matching-and-overloading" id="id37" name="id37">2.1.5.6&nbsp;&nbsp;&nbsp;Signature Matching and Overloading</a><ul class="auto-toc">
-<li><a class="reference" href="#adding-type-requirements" id="id38" name="id38">2.1.5.6.1&nbsp;&nbsp;&nbsp;Adding Type Requirements</a></li>
-<li><a class="reference" href="#predicate-requirements" id="id39" name="id39">2.1.5.6.2&nbsp;&nbsp;&nbsp;Predicate Requirements</a></li>
+<li><a class="reference internal" href="#tutorial" id="id26">2&nbsp;&nbsp;&nbsp;Tutorial</a><ul class="auto-toc">
+<li><a class="reference internal" href="#parameter-enabled-functions" id="id27">2.1&nbsp;&nbsp;&nbsp;Parameter-Enabled Functions</a></li>
+<li><a class="reference internal" href="#parameter-enabled-member-functions" id="id28">2.2&nbsp;&nbsp;&nbsp;Parameter-Enabled Member Functions</a></li>
+<li><a class="reference internal" href="#parameter-enabled-constructors" id="id29">2.3&nbsp;&nbsp;&nbsp;Parameter-Enabled Constructors</a></li>
+<li><a class="reference internal" href="#parameter-enabled-class-templates" id="id30">2.4&nbsp;&nbsp;&nbsp;Parameter-Enabled Class Templates</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#deduced-parameters" id="id40" name="id40">2.1.5.7&nbsp;&nbsp;&nbsp;Deduced Parameters</a></li>
+<li><a class="reference internal" href="#advanced-topics" id="id31">3&nbsp;&nbsp;&nbsp;Advanced Topics</a><ul class="auto-toc">
+<li><a class="reference internal" href="#fine-grained-name-control" id="id32">3.1&nbsp;&nbsp;&nbsp;Fine-Grained Name Control</a></li>
+<li><a class="reference internal" href="#more-argumentpacks" id="id33">3.2&nbsp;&nbsp;&nbsp;More <span class="concept">ArgumentPack</span>s</a></li>
 </ul>
 </li>
+<li><a class="reference internal" href="#best-practices" id="id34">4&nbsp;&nbsp;&nbsp;Best Practices</a><ul class="auto-toc">
+<li><a class="reference internal" href="#keyword-naming" id="id35">4.1&nbsp;&nbsp;&nbsp;Keyword Naming</a></li>
+<li><a class="reference internal" href="#namespaces" id="id36">4.2&nbsp;&nbsp;&nbsp;Namespaces</a></li>
+<li><a class="reference internal" href="#documentation" id="id37">4.3&nbsp;&nbsp;&nbsp;Documentation</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#parameter-enabled-member-functions" id="id41" name="id41">2.2&nbsp;&nbsp;&nbsp;Parameter-Enabled Member Functions</a></li>
-<li><a class="reference" href="#parameter-enabled-constructors" id="id42" name="id42">2.3&nbsp;&nbsp;&nbsp;Parameter-Enabled Constructors</a></li>
-<li><a class="reference" href="#parameter-enabled-class-templates" id="id43" name="id43">2.4&nbsp;&nbsp;&nbsp;Parameter-Enabled Class Templates</a><ul class="auto-toc">
-<li><a class="reference" href="#named-template-parameters" id="id44" name="id44">2.4.1&nbsp;&nbsp;&nbsp;Named Template Parameters</a><ul class="auto-toc">
-<li><a class="reference" href="#template-keywords" id="id45" name="id45">2.4.1.1&nbsp;&nbsp;&nbsp;Template Keywords</a></li>
-<li><a class="reference" href="#class-template-skeleton" id="id46" name="id46">2.4.1.2&nbsp;&nbsp;&nbsp;Class Template Skeleton</a></li>
-<li><a class="reference" href="#class-template-signatures" id="id47" name="id47">2.4.1.3&nbsp;&nbsp;&nbsp;Class Template Signatures</a></li>
-<li><a class="reference" href="#argument-packs-and-parameter-extraction" id="id48" name="id48">2.4.1.4&nbsp;&nbsp;&nbsp;Argument Packs and Parameter Extraction</a></li>
+<li><a class="reference internal" href="#portability-considerations" id="id38">5&nbsp;&nbsp;&nbsp;Portability Considerations</a><ul class="auto-toc">
+<li><a class="reference internal" href="#no-sfinae-support" id="id39">5.1&nbsp;&nbsp;&nbsp;No SFINAE Support</a></li>
+<li><a class="reference internal" href="#no-support-for-result-of" id="id40">5.2&nbsp;&nbsp;&nbsp;No Support for <tt class="docutils literal"><span class="pre">result_of</span></tt></a></li>
+<li><a class="reference internal" href="#compiler-can-t-see-references-in-unnamed-namespace" id="id41">5.3&nbsp;&nbsp;&nbsp;Compiler Can't See References In Unnamed Namespace</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#exercising-the-code-so-far" id="id49" name="id49">2.4.2&nbsp;&nbsp;&nbsp;Exercising the Code So Far</a></li>
-<li><a class="reference" href="#deduced-template-parameters" id="id50" name="id50">2.4.3&nbsp;&nbsp;&nbsp;Deduced Template Parameters</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a class="reference" href="#advanced-topics" id="id51" name="id51">3&nbsp;&nbsp;&nbsp;Advanced Topics</a><ul class="auto-toc">
-<li><a class="reference" href="#fine-grained-name-control" id="id52" name="id52">3.1&nbsp;&nbsp;&nbsp;Fine-Grained Name Control</a></li>
-<li><a class="reference" href="#more-argumentpacks" id="id53" name="id53">3.2&nbsp;&nbsp;&nbsp;More <span class="concept">ArgumentPack</span>s</a><ul class="auto-toc">
-<li><a class="reference" href="#building-argumentpacks" id="id54" name="id54">3.2.1&nbsp;&nbsp;&nbsp;Building <span class="concept">ArgumentPack</span>s</a></li>
-<li><a class="reference" href="#extracting-parameter-types" id="id55" name="id55">3.2.2&nbsp;&nbsp;&nbsp;Extracting Parameter Types</a></li>
-<li><a class="reference" href="#lazy-default-computation" id="id56" name="id56">3.2.3&nbsp;&nbsp;&nbsp;Lazy Default Computation</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a class="reference" href="#best-practices" id="id57" name="id57">4&nbsp;&nbsp;&nbsp;Best Practices</a><ul class="auto-toc">
-<li><a class="reference" href="#keyword-naming" id="id58" name="id58">4.1&nbsp;&nbsp;&nbsp;Keyword Naming</a></li>
-<li><a class="reference" href="#namespaces" id="id59" name="id59">4.2&nbsp;&nbsp;&nbsp;Namespaces</a></li>
-<li><a class="reference" href="#documentation" id="id60" name="id60">4.3&nbsp;&nbsp;&nbsp;Documentation</a></li>
-</ul>
-</li>
-<li><a class="reference" href="#portability-considerations" id="id61" name="id61">5&nbsp;&nbsp;&nbsp;Portability Considerations</a><ul class="auto-toc">
-<li><a class="reference" href="#no-sfinae-support" id="id62" name="id62">5.1&nbsp;&nbsp;&nbsp;No SFINAE Support</a></li>
-<li><a class="reference" href="#no-support-for-result-of" id="id63" name="id63">5.2&nbsp;&nbsp;&nbsp;No Support for <tt class="docutils literal"><span class="pre">result_of</span></tt></a></li>
-<li><a class="reference" href="#compiler-can-t-see-references-in-unnamed-namespace" id="id64" name="id64">5.3&nbsp;&nbsp;&nbsp;Compiler Can't See References In Unnamed Namespace</a></li>
-</ul>
-</li>
-<li><a class="reference" href="#python-binding" id="id65" name="id65">6&nbsp;&nbsp;&nbsp;Python Binding</a></li>
-<li><a class="reference" href="#reference" id="id66" name="id66">7&nbsp;&nbsp;&nbsp;Reference</a></li>
-<li><a class="reference" href="#glossary" id="id67" name="id67">8&nbsp;&nbsp;&nbsp;Glossary</a></li>
-<li><a class="reference" href="#acknowledgements" id="id68" name="id68">9&nbsp;&nbsp;&nbsp;Acknowledgements</a></li>
+<li><a class="reference internal" href="#python-binding" id="id42">6&nbsp;&nbsp;&nbsp;Python Binding</a></li>
+<li><a class="reference internal" href="#reference" id="id43">7&nbsp;&nbsp;&nbsp;Reference</a></li>
+<li><a class="reference internal" href="#glossary" id="id44">8&nbsp;&nbsp;&nbsp;Glossary</a></li>
+<li><a class="reference internal" href="#acknowledgements" id="id45">9&nbsp;&nbsp;&nbsp;Acknowledgements</a></li>
 </ul>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id21" id="motivation" name="motivation">1&nbsp;&nbsp;&nbsp;Motivation</a></h1>
-<p>In C++, <a class="reference" href="#arguments">arguments</a> are normally given meaning by their positions
-with respect to a <a class="reference" href="#parameter">parameter</a> list: the first argument passed maps
+<div class="section" id="motivation">
+<h1><a class="toc-backref" href="#id22">1&nbsp;&nbsp;&nbsp;Motivation</a></h1>
+<p>In C++, <a class="reference internal" href="#arguments">arguments</a> are normally given meaning by their positions
+with respect to a <a class="reference internal" href="#parameter">parameter</a> list: the first argument passed maps
 onto the first parameter in a function's definition, and so on.
 That protocol is fine when there is at most one parameter with a
 default value, but when there are even a few useful defaults, the
@@ -218,8 +183,8 @@
 </li>
 </ul>
 <!-- @ignore(3) -->
-<div class="section">
-<h2><a class="toc-backref" href="#id22" id="named-function-parameters" name="named-function-parameters">1.1&nbsp;&nbsp;&nbsp;Named Function Parameters</a></h2>
+<div class="section" id="named-function-parameters">
+<h2><a class="toc-backref" href="#id23">1.1&nbsp;&nbsp;&nbsp;Named Function Parameters</a></h2>
 <div class="compound">
 <p class="compound-first">This library addresses the problems outlined above by associating
 each parameter name with a keyword object. Now users can identify
@@ -230,8 +195,8 @@
 </div>
 <!-- @ignore() -->
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id23" id="deduced-function-parameters" name="deduced-function-parameters">1.2&nbsp;&nbsp;&nbsp;Deduced Function Parameters</a></h2>
+<div class="section" id="deduced-function-parameters">
+<h2><a class="toc-backref" href="#id24">1.2&nbsp;&nbsp;&nbsp;Deduced Function Parameters</a></h2>
 <div class="compound">
 <p class="compound-first">A <strong>deduced parameter</strong> can be passed in any position <em>without</em>
 supplying an explicit parameter name. It's not uncommon for a
@@ -251,8 +216,8 @@
 </div>
 <!-- @ignore() -->
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id24" id="class-template-parameter-support" name="class-template-parameter-support">1.3&nbsp;&nbsp;&nbsp;Class Template Parameter Support</a></h2>
+<div class="section" id="class-template-parameter-support">
+<h2><a class="toc-backref" href="#id25">1.3&nbsp;&nbsp;&nbsp;Class Template Parameter Support</a></h2>
 <div class="compound">
 <p class="compound-first">The reasoning we've given for named and deduced parameter
 interfaces applies equally well to class templates as it does to
@@ -277,16 +242,16 @@
 <!-- @ignore(2) -->
 </div>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id25" id="tutorial" name="tutorial">2&nbsp;&nbsp;&nbsp;Tutorial</a></h1>
+<div class="section" id="tutorial">
+<h1><a class="toc-backref" href="#id26">2&nbsp;&nbsp;&nbsp;Tutorial</a></h1>
 <p>This tutorial shows all the basics—how to build both named- and deduced-parameter
 interfaces to function templates and class templates—and several
 more advanced idioms as well.</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id26" id="parameter-enabled-functions" name="parameter-enabled-functions">2.1&nbsp;&nbsp;&nbsp;Parameter-Enabled Functions</a></h2>
+<div class="section" id="parameter-enabled-functions">
+<h2><a class="toc-backref" href="#id27">2.1&nbsp;&nbsp;&nbsp;Parameter-Enabled Functions</a></h2>
 <p>In this section we'll show how the Parameter library can be used to
-build an expressive interface to the <a class="reference" href="../../../graph/index.html">Boost Graph library</a>'s
-<a class="reference" href="../../../graph/doc/depth_first_search.html"><tt class="docutils literal"><span class="pre">depth_first_search</span></tt></a> algorithm.<a class="footnote-reference" href="#old-interface" id="id2" name="id2"><sup>1</sup></a></p>
+build an expressive interface to the <a class="reference external" href="../../../graph/index.html">Boost Graph library</a>'s
+<a class="reference external" href="../../../graph/doc/depth_first_search.html"><tt class="docutils literal"><span class="pre">depth_first_search</span></tt></a> algorithm.<a class="footnote-reference" href="#old-interface" id="id3"><sup>1</sup></a></p>
 <!-- Revisit this
 
 After laying some groundwork
@@ -297,8 +262,8 @@
 streamline the implementation of named parameter interfaces,
 improve their participation in overload resolution, and optimize
 their runtime efficiency. -->
-<div class="section">
-<h3><a class="toc-backref" href="#id27" id="headers-and-namespaces" name="headers-and-namespaces">2.1.1&nbsp;&nbsp;&nbsp;Headers And Namespaces</a></h3>
+<div class="section" id="headers-and-namespaces">
+<h3>2.1.1&nbsp;&nbsp;&nbsp;Headers And Namespaces</h3>
 <p>Most components of the Parameter library are declared in a
 header named for the component. For example,</p>
 <pre class="literal-block">
@@ -323,8 +288,8 @@
 <p>has been declared: we'll write <tt class="docutils literal"><span class="pre">parameter::xxx</span></tt> instead of
 <tt class="docutils literal"><span class="pre">boost::parameter::xxx</span></tt>.</p>
 </div>
-<div class="section">
-<h3><a class="toc-backref" href="#id28" id="the-abstract-interface-to-dfs" name="the-abstract-interface-to-dfs">2.1.2&nbsp;&nbsp;&nbsp;The Abstract Interface to <tt class="docutils literal"><span class="pre">depth_first_search</span></tt></a></h3>
+<div class="section" id="the-abstract-interface-to-dfs">
+<h3>2.1.2&nbsp;&nbsp;&nbsp;The Abstract Interface to <tt class="docutils literal"><span class="pre">depth_first_search</span></tt></h3>
 <p>The Graph library's <tt class="docutils literal"><span class="pre">depth_first_search</span></tt> algorithm is a generic function accepting
 from one to four arguments by reference. If all arguments were
 required, its signature might be as follows:</p>
@@ -343,7 +308,7 @@
 <p>However, most of the parameters have a useful default value, as
 shown in the table below.</p>
 <table border="1" class="docutils" id="default-expressions">
-<span id="parameter-table"></span><caption><a id="default-expressions" name="default-expressions"><span id="parameter-table"></span><tt class="docutils literal"><span class="pre">depth_first_search</span></tt> Parameters</a></caption>
+<span id="parameter-table"></span><caption><tt class="docutils literal"><span class="pre">depth_first_search</span></tt> Parameters</caption>
 <colgroup>
 <col width="17%" />
 <col width="11%" />
@@ -360,13 +325,13 @@
 <tbody valign="top">
 <tr><td><tt class="docutils literal"><span class="pre">graph</span></tt></td>
 <td>in</td>
-<td>Model of <a class="reference" href="../../../graph/doc/IncidenceGraph.html"><span class="concept">Incidence Graph</span></a> and
-<a class="reference" href="../../../graph/doc/VertexListGraph.html"><span class="concept">Vertex List Graph</span></a></td>
+<td>Model of <a class="reference external" href="../../../graph/doc/IncidenceGraph.html"><span class="concept">Incidence Graph</span></a> and
+<a class="reference external" href="../../../graph/doc/VertexListGraph.html"><span class="concept">Vertex List Graph</span></a></td>
 <td>none - this argument is required.</td>
 </tr>
 <tr><td><tt class="docutils literal"><span class="pre">visitor</span></tt></td>
 <td>in</td>
-<td>Model of <a class="reference" href="../../../graph/doc/DFSVisitor.html"><span class="concept">DFS Visitor</span></a></td>
+<td>Model of <a class="reference external" href="../../../graph/doc/DFSVisitor.html"><span class="concept">DFS Visitor</span></a></td>
 <td><tt class="docutils literal"><span class="pre">boost::dfs_visitor&lt;&gt;()</span></tt></td>
 </tr>
 <tr><td><tt class="docutils literal"><span class="pre">root_vertex</span></tt></td>
@@ -377,7 +342,7 @@
 </tr>
 <tr><td><tt class="docutils literal"><span class="pre">index_map</span></tt></td>
 <td>in</td>
-<td>Model of <a class="reference" href="../../../property_map/ReadablePropertyMap.html"><span class="concept">Readable Property Map</span></a>
+<td>Model of <a class="reference external" href="../../../property_map/ReadablePropertyMap.html"><span class="concept">Readable Property Map</span></a>
 with key type := <tt class="docutils literal"><span class="pre">graph</span></tt>'s
 vertex descriptor and value type
 an integer type.</td>
@@ -385,7 +350,7 @@
 </tr>
 <tr><td><tt class="docutils literal"><span class="pre">color_map</span></tt></td>
 <td>in/out</td>
-<td>Model of <a class="reference" href="../../../property_map/ReadWritePropertyMap.html"><span class="concept">Read/Write Property Map</span></a>
+<td>Model of <a class="reference external" href="../../../property_map/ReadWritePropertyMap.html"><span class="concept">Read/Write Property Map</span></a>
 with key type := <tt class="docutils literal"><span class="pre">graph</span></tt>'s
 vertex descriptor type.</td>
 <td>an <tt class="docutils literal"><span class="pre">iterator_property_map</span></tt>
@@ -400,8 +365,8 @@
 columns above. For the purposes of this exercise, you don't need
 to understand them in detail.</p>
 </div>
-<div class="section">
-<h3><a class="toc-backref" href="#id29" id="defining-the-keywords" name="defining-the-keywords">2.1.3&nbsp;&nbsp;&nbsp;Defining the Keywords</a></h3>
+<div class="section" id="defining-the-keywords">
+<h3>2.1.3&nbsp;&nbsp;&nbsp;Defining the Keywords</h3>
 <p>The point of this exercise is to make it possible to call
 <tt class="docutils literal"><span class="pre">depth_first_search</span></tt> with named arguments, leaving out any
 arguments for which the default is appropriate:</p>
@@ -457,12 +422,12 @@
 <p>It defines a <em>keyword tag type</em> named <tt class="docutils literal"><span class="pre">tag::graph</span></tt> and a <em>keyword
 object</em> reference named <tt class="docutils literal"><span class="pre">_graph</span></tt>.</p>
 <p>This “fancy dance” involving an unnamed namespace and references
-is all done to avoid violating the One Definition Rule (ODR)<a class="footnote-reference" href="#odr" id="id4" name="id4"><sup>2</sup></a> when the named parameter interface is used by function
+is all done to avoid violating the One Definition Rule (ODR)<a class="footnote-reference" href="#odr" id="id5"><sup>2</sup></a> when the named parameter interface is used by function
 templates that are instantiated in multiple translation
-units (MSVC6.x users see <a class="reference" href="#compiler-can-t-see-references-in-unnamed-namespace">this note</a>).</p>
+units (MSVC6.x users see <a class="reference internal" href="#compiler-can-t-see-references-in-unnamed-namespace">this note</a>).</p>
 </div>
-<div class="section">
-<h3><a class="toc-backref" href="#id30" id="writing-the-function" name="writing-the-function">2.1.4&nbsp;&nbsp;&nbsp;Writing the Function</a></h3>
+<div class="section" id="writing-the-function">
+<h3>2.1.4&nbsp;&nbsp;&nbsp;Writing the Function</h3>
 <p>Now that we have our keywords defined, the function template
 definition follows a simple pattern using the
 <tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUNCTION</span></tt> macro:</p>
@@ -523,16 +488,16 @@
 <li>The function signature.</li>
 </ol>
 </div>
-<div class="section">
-<h3><a class="toc-backref" href="#id31" id="function-signatures" name="function-signatures">2.1.5&nbsp;&nbsp;&nbsp;Function Signatures</a></h3>
+<div class="section" id="function-signatures">
+<h3>2.1.5&nbsp;&nbsp;&nbsp;Function Signatures</h3>
 <p>Function signatures are described as one or two adjacent
-parenthesized terms (a <a class="reference" href="../../../preprocessor/index.html">Boost.Preprocessor</a> <a class="reference" href="
http://boost-consulting.com/mplbook/preprocessor.html#sequences">sequence</a>) describing
+parenthesized terms (a <a class="reference external" href="../../../preprocessor/index.html">Boost.Preprocessor</a> <a class="reference external" href="http://boost-consulting.com/mplbook/preprocessor.html#sequences">sequence</a>) describing
 the function's parameters in the order in which they'd be expected
 if passed positionally. Any required parameters must come first,
 but the <tt class="docutils literal"><span class="pre">(required</span> <span class="pre">…</span> <span class="pre">)</span></tt> clause can be omitted when all the
 parameters are optional.</p>
-<div class="section">
-<h4><a class="toc-backref" href="#id32" id="required-parameters" name="required-parameters">2.1.5.1&nbsp;&nbsp;&nbsp;Required Parameters</a></h4>
+<div class="section" id="required-parameters">
+<h4>2.1.5.1&nbsp;&nbsp;&nbsp;Required Parameters</h4>
 <div class="compound">
 <p class="compound-first">Required parameters are given first—nested in a <tt class="docutils literal"><span class="pre">(required</span> <span class="pre">…</span> <span class="pre">)</span></tt>
 clause—as a series of two-element tuples describing each parameter
@@ -559,16 +524,15 @@
 <!-- @example.append(') {}') -->
 <!-- @test('compile') -->
 </div>
-<div class="section">
-<h4><a class="toc-backref" href="#id33" id="optional-parameters" name="optional-parameters">2.1.5.2&nbsp;&nbsp;&nbsp;Optional Parameters</a></h4>
+<div class="section" id="optional-parameters">
+<h4>2.1.5.2&nbsp;&nbsp;&nbsp;Optional Parameters</h4>
 <div class="compound">
 <p class="compound-first">Optional parameters—nested in an <tt class="docutils literal"><span class="pre">(optional</span> <span class="pre">…</span> <span class="pre">)</span></tt> clause—are given
 as a series of adjacent <em>three</em>-element tuples describing the
 parameter name, any requirements on the argument type, <em>and</em> and an
 expression representing the parameter's default value:</p>
 <pre class="compound-last literal-block">
-(optional
- <strong>(visitor, *, boost::dfs_visitor&lt;&gt;())
+(optional <strong> (visitor, *, boost::dfs_visitor&lt;&gt;())
     (root_vertex, *, *vertices(graph).first)
     (index_map, *, get(boost::vertex_index,graph))
     (in_out(color_map), *,
@@ -600,8 +564,8 @@
 <!-- @example.append(') {}') -->
 <!-- @test('compile') -->
 </div>
-<div class="section">
-<h4><a class="toc-backref" href="#id34" id="handling-out-parameters" name="handling-out-parameters">2.1.5.3&nbsp;&nbsp;&nbsp;Handling “Out” Parameters</a></h4>
+<div class="section" id="handling-out-parameters">
+<h4>2.1.5.3&nbsp;&nbsp;&nbsp;Handling “Out” Parameters</h4>
 <div class="compound">
 <p class="compound-first">Within the function body, a parameter name such as <tt class="docutils literal"><span class="pre">visitor</span></tt> is
 a <em>C++ reference</em>, bound either to an actual argument passed by
@@ -613,9 +577,9 @@
 its name in <tt class="docutils literal"><span class="pre">in_out(…)</span></tt>:</p>
 <pre class="compound-last literal-block">
 (optional
- (visitor, *, boost::dfs_visitor&lt;&gt;())
- (root_vertex, *, *vertices(graph).first)
- (index_map, *, get(boost::vertex_index,graph))
+ (visitor, *, boost::dfs_visitor&lt;&gt;())
+ (root_vertex, *, *vertices(graph).first)
+ (index_map, *, get(boost::vertex_index,graph))
     (<strong>in_out(color_map)</strong>, *,
       default_color_map(num_vertices(graph), index_map) )
 )
@@ -650,8 +614,8 @@
 difference between <tt class="docutils literal"><span class="pre">out</span></tt> and <tt class="docutils literal"><span class="pre">in_out</span></tt>; the library provides
 both so you can make your interfaces more self-documenting.</p>
 </div>
-<div class="section">
-<h4><a class="toc-backref" href="#id35" id="positional-arguments" name="positional-arguments">2.1.5.4&nbsp;&nbsp;&nbsp;Positional Arguments</a></h4>
+<div class="section" id="positional-arguments">
+<h4>2.1.5.4&nbsp;&nbsp;&nbsp;Positional Arguments</h4>
 <p>When arguments are passed positionally (without the use of
 keywords), they will be mapped onto parameters in the order the
 parameters are given in the signature, so for example in this
@@ -663,8 +627,8 @@
 <p><tt class="docutils literal"><span class="pre">x</span></tt> will always be interpreted as a graph and <tt class="docutils literal"><span class="pre">y</span></tt> will always
 be interpreted as a visitor.</p>
 </div>
-<div class="section">
-<h4><a class="toc-backref" href="#id36" id="default-expression-evaluation" name="default-expression-evaluation">2.1.5.5&nbsp;&nbsp;&nbsp;Default Expression Evaluation</a></h4>
+<div class="section" id="default-expression-evaluation">
+<h4>2.1.5.5&nbsp;&nbsp;&nbsp;Default Expression Evaluation</h4>
 <div class="compound">
 <p class="compound-first">Note that in our example, the value of the graph parameter is
 used in the default expressions for <tt class="docutils literal"><span class="pre">root_vertex</span></tt>,
@@ -737,8 +701,8 @@
 ''') -->
 <!-- @test('compile') -->
 </div>
-<div class="section">
-<h4><a class="toc-backref" href="#id37" id="signature-matching-and-overloading" name="signature-matching-and-overloading">2.1.5.6&nbsp;&nbsp;&nbsp;Signature Matching and Overloading</a></h4>
+<div class="section" id="signature-matching-and-overloading">
+<h4>2.1.5.6&nbsp;&nbsp;&nbsp;Signature Matching and Overloading</h4>
 <p>In fact, the function signature is so general that any call to
 <tt class="docutils literal"><span class="pre">depth_first_search</span></tt> with fewer than five arguments will match
 our function, provided we pass <em>something</em> for the required
@@ -760,13 +724,13 @@
 to names generated by <tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUNCTION</span></tt> such as
 <tt class="docutils literal"><span class="pre">graphs::detail::depth_first_search_with_named_params</span></tt> (or
 worse—think of the kinds of errors you get from your STL
-implementation when you make a mistake).<a class="footnote-reference" href="#conceptcpp" id="id6" name="id6"><sup>4</sup></a></li>
+implementation when you make a mistake).<a class="footnote-reference" href="#conceptcpp" id="id7"><sup>4</sup></a></li>
 <li>The problems with exposing such permissive function template
 signatures have been the subject of much discussion, especially
-in the presence of <a class="reference" href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#225">unqualified calls</a>. If all we want is to
+in the presence of <a class="reference external" href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#225">unqualified calls</a>. If all we want is to
 avoid unintentional argument-dependent lookup (ADL), we can
 isolate <tt class="docutils literal"><span class="pre">depth_first_search</span></tt> in a namespace containing no
-types<a class="footnote-reference" href="#using" id="id7" name="id7"><sup>6</sup></a>, but suppose we <em>want</em> it to found via ADL?</li>
+types<a class="footnote-reference" href="#using" id="id8"><sup>6</sup></a>, but suppose we <em>want</em> it to found via ADL?</li>
 </ol>
 <p>It's usually a good idea to prevent functions from being considered
 for overload resolution when the passed argument types aren't
@@ -775,7 +739,7 @@
 depth first search that doesn't take a graph to operate on.
 Suppose, instead, that we found a different depth first search
 algorithm that could work on graphs that don't model
-<a class="reference" href="../../../graph/doc/IncidenceGraph.html"><span class="concept">Incidence Graph</span></a>? If we just added a simple overload,
+<a class="reference external" href="../../../graph/doc/IncidenceGraph.html"><span class="concept">Incidence Graph</span></a>? If we just added a simple overload,
 it would be ambiguous:</p>
 <pre class="literal-block">
 // new overload
@@ -791,11 +755,11 @@
 depth_first_search(boost::adjacency_list&lt;&gt;(), 2, &quot;hello&quot;);
 </pre>
 <!-- @ignore() -->
-<div class="section">
-<h5><a class="toc-backref" href="#id38" id="adding-type-requirements" name="adding-type-requirements">2.1.5.6.1&nbsp;&nbsp;&nbsp;Adding Type Requirements</a></h5>
+<div class="section" id="adding-type-requirements">
+<h5>2.1.5.6.1&nbsp;&nbsp;&nbsp;Adding Type Requirements</h5>
 <p>We really don't want the compiler to consider the original version
 of <tt class="docutils literal"><span class="pre">depth_first_search</span></tt> because the <tt class="docutils literal"><span class="pre">root_vertex</span></tt> argument,
-<tt class="docutils literal"><span class="pre">&quot;hello&quot;</span></tt>, doesn't meet the <a class="reference" href="#parameter-table">requirement</a> that it match the
+<tt class="docutils literal"><span class="pre">&quot;hello&quot;</span></tt>, doesn't meet the <a class="reference internal" href="#parameter-table">requirement</a> that it match the
 <tt class="docutils literal"><span class="pre">graph</span></tt> parameter's vertex descriptor type. Instead, this call
 should just invoke our new overload. To take the original
 <tt class="docutils literal"><span class="pre">depth_first_search</span></tt> overload out of contention, we need to tell
@@ -818,11 +782,11 @@
 general, to access the type of any parameter <em>foo</em>, write <em>foo</em><tt class="docutils literal"><span class="pre">_type</span></tt>.</p>
 </div>
 </div>
-<div class="section">
-<h5><a class="toc-backref" href="#id39" id="predicate-requirements" name="predicate-requirements">2.1.5.6.2&nbsp;&nbsp;&nbsp;Predicate Requirements</a></h5>
+<div class="section" id="predicate-requirements">
+<h5>2.1.5.6.2&nbsp;&nbsp;&nbsp;Predicate Requirements</h5>
 <p>The requirements on other arguments are a bit more interesting than
 those on <tt class="docutils literal"><span class="pre">root_vertex</span></tt>; they can't be described in terms of simple
-type matching. Instead, they must be described in terms of <a class="reference" href="../../../mpl/doc/refmanual/metafunction.html">MPL
+type matching. Instead, they must be described in terms of <a class="reference external" href="../../../mpl/doc/refmanual/metafunction.html">MPL
 Metafunctions</a>. There's no space to give a complete description
 of metafunctions or of graph library details here, but we'll show
 you the complete signature with maximal checking, just to give you
@@ -918,14 +882,14 @@
 is usally worth the effort to do so: your code will be more
 self-documenting and will often provide a better user experience.
 You'll also have an easier transition to an upcoming C++ standard
-with <a class="reference" href="http://www.generic-programming.org/software/ConceptGCC/">language support for concepts</a>.</p>
+with <a class="reference external" href="http://www.generic-programming.org/software/ConceptGCC/">language support for concepts</a>.</p>
 </div>
 </div>
-<div class="section">
-<h4><a class="toc-backref" href="#id40" id="deduced-parameters" name="deduced-parameters">2.1.5.7&nbsp;&nbsp;&nbsp;Deduced Parameters</a></h4>
+<div class="section" id="deduced-parameters">
+<h4>2.1.5.7&nbsp;&nbsp;&nbsp;Deduced Parameters</h4>
 <p>To illustrate deduced parameter support we'll have to leave behind
 our example from the Graph library. Instead, consider the example
-of the <a class="reference" href="../../../python/doc/v2/def.html"><tt class="docutils literal"><span class="pre">def</span></tt></a> function from <a class="reference" href="../../../python/doc/index.html">Boost.Python</a>. Its signature is
+of the <a class="reference external" href="../../../python/doc/v2/def.html"><tt class="docutils literal"><span class="pre">def</span></tt></a> function from <a class="reference external" href="../../../python/doc/index.html">Boost.Python</a>. Its signature is
 roughly as follows:</p>
 <pre class="literal-block">
 template &lt;
@@ -967,14 +931,14 @@
         (docstring, (char const*), &quot;&quot;)
 
         (keywords
- , *(is_keyword_expression&lt;mpl::_&gt;) // see<a class="footnote-reference" href="#is-keyword-expression" id="id12" name="id12"><sup>5</sup></a>
+ , *(is_keyword_expression&lt;mpl::_&gt;) // see<a class="footnote-reference" href="#is-keyword-expression" id="id13"><sup>5</sup></a>
            , no_keywords())
 
         (policies
            , *(mpl::not_&lt;
                  mpl::or_&lt;
                      boost::is_convertible&lt;mpl::_, char const*&gt;
- , is_keyword_expression&lt;mpl::_&gt; // see<a class="footnote-reference" href="#is-keyword-expression" id="id13" name="id13"><sup>5</sup></a>
+ , is_keyword_expression&lt;mpl::_&gt; // see<a class="footnote-reference" href="#is-keyword-expression" id="id14"><sup>5</sup></a>
                  &gt;
              &gt;)
            , default_call_policies()
@@ -1023,9 +987,9 @@
 ''') -->
 <div class="admonition-syntax-note admonition">
 <p class="first admonition-title">Syntax Note</p>
-<p class="last">A <tt class="docutils literal"><span class="pre">(deduced&nbsp;…)</span></tt> clause always contains a&nbsp;``(required&nbsp;…)``
-and/or an&nbsp;``(optional&nbsp;…)`` subclause, and must follow any
-<tt class="docutils literal"><span class="pre">(required&nbsp;…)</span></tt> or&nbsp;``(optional&nbsp;…)`` clauses indicating
+<p class="last">A <tt class="docutils literal"><span class="pre">(deduced</span> <span class="pre">…)</span></tt> clause always contains a <tt class="docutils literal"><span class="pre">(required</span> <span class="pre">…)</span></tt>
+and/or an <tt class="docutils literal"><span class="pre">(optional</span> <span class="pre">…)</span></tt> subclause, and must follow any
+<tt class="docutils literal"><span class="pre">(required</span> <span class="pre">…)</span></tt> or <tt class="docutils literal"><span class="pre">(optional</span> <span class="pre">…)</span></tt> clauses indicating
 nondeduced parameters at the outer level.</p>
 </div>
 <p>With the declaration above, the following two calls are equivalent:</p>
@@ -1049,8 +1013,8 @@
 </div>
 </div>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id41" id="parameter-enabled-member-functions" name="parameter-enabled-member-functions">2.2&nbsp;&nbsp;&nbsp;Parameter-Enabled Member Functions</a></h2>
+<div class="section" id="parameter-enabled-member-functions">
+<h2><a class="toc-backref" href="#id28">2.2&nbsp;&nbsp;&nbsp;Parameter-Enabled Member Functions</a></h2>
 <p>The <tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MEMBER_FUNCTION</span></tt> and
 <tt class="docutils literal"><span class="pre">BOOST_PARAMETER_CONST_MEMBER_FUNCTION</span></tt> macros accept exactly the
 same arguments as <tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUNCTION</span></tt>, but are designed to
@@ -1094,18 +1058,18 @@
 BOOST_PARAMETER_NAME(arg2)''') -->
 <!-- @test('compile') -->
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id42" id="parameter-enabled-constructors" name="parameter-enabled-constructors">2.3&nbsp;&nbsp;&nbsp;Parameter-Enabled Constructors</a></h2>
+<div class="section" id="parameter-enabled-constructors">
+<h2><a class="toc-backref" href="#id29">2.3&nbsp;&nbsp;&nbsp;Parameter-Enabled Constructors</a></h2>
 <p>The lack of a “delegating constructor”
 feature in C++
-(<a class="reference" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf">http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf>)
+(<a class="reference external" href="
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf">http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf>)
 limits somewhat the quality of interface this library can provide
 for defining parameter-enabled constructors. The usual workaround
 for a lack of constructor delegation applies: one must factor the
 common logic into a base class.</p>
 <p>Let's build a parameter-enabled constructor that simply prints its
 arguments. The first step is to write a base class whose
-constructor accepts a single argument known as an <a class="reference" href="reference.html#argumentpack"><span class="concept">ArgumentPack</span></a>:
+constructor accepts a single argument known as an <a class="reference external" href="reference.html#argumentpack"><span class="concept">ArgumentPack</span></a>:
 a bundle of references to the actual arguments, tagged with their
 keywords. The values of the actual arguments are extracted from
 the <span class="concept">ArgumentPack</span> by <em>indexing</em> it with keyword objects:</p>
@@ -1152,12 +1116,12 @@
 </pre>
 <!-- @example.wrap('int main() {', '}') -->
 <!-- @test('run', howmany='all') -->
-<p>For more on <span class="concept">ArgumentPack</span> manipulation, see the <a class="reference" href="#advanced-topics">Advanced Topics</a>
+<p>For more on <span class="concept">ArgumentPack</span> manipulation, see the <a class="reference internal" href="#advanced-topics">Advanced Topics</a>
 section.</p>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id43" id="parameter-enabled-class-templates" name="parameter-enabled-class-templates">2.4&nbsp;&nbsp;&nbsp;Parameter-Enabled Class Templates</a></h2>
-<p>In this section we'll use Boost.Parameter to build <a class="reference" href="../../../python/doc/index.html">Boost.Python</a>'s <a class="reference" href="
http://www.boost.org/libs/python/doc/v2/class.html#class_-spec">class_</a> template, whose “signature” is:</p>
+<div class="section" id="parameter-enabled-class-templates">
+<h2><a class="toc-backref" href="#id30">2.4&nbsp;&nbsp;&nbsp;Parameter-Enabled Class Templates</a></h2>
+<p>In this section we'll use Boost.Parameter to build <a class="reference external" href="../../../python/doc/index.html">Boost.Python</a>'s <a class="reference external" href="http://www.boost.org/libs/python/doc/v2/class.html#class_-spec">class_</a> template, whose “signature” is:</p>
 <pre class="literal-block">
 template class&lt;
     ValueType, BaseList = bases&lt;&gt;
@@ -1167,8 +1131,8 @@
 </pre>
 <!-- @ignore() -->
 <p>Only the first argument, <tt class="docutils literal"><span class="pre">ValueType</span></tt>, is required.</p>
-<div class="section">
-<h3><a class="toc-backref" href="#id44" id="named-template-parameters" name="named-template-parameters">2.4.1&nbsp;&nbsp;&nbsp;Named Template Parameters</a></h3>
+<div class="section" id="named-template-parameters">
+<h3>2.4.1&nbsp;&nbsp;&nbsp;Named Template Parameters</h3>
 <p>First, we'll build an interface that allows users to pass arguments
 positionally or by name:</p>
 <pre class="literal-block">
@@ -1184,8 +1148,8 @@
 &gt; …;
 </pre>
 <!-- @ignore() -->
-<div class="section">
-<h4><a class="toc-backref" href="#id45" id="template-keywords" name="template-keywords">2.4.1.1&nbsp;&nbsp;&nbsp;Template Keywords</a></h4>
+<div class="section" id="template-keywords">
+<h4>2.4.1.1&nbsp;&nbsp;&nbsp;Template Keywords</h4>
 <p>The first step is to define keywords for each template parameter:</p>
 <pre class="literal-block">
 namespace boost { namespace python {
@@ -1217,8 +1181,8 @@
 <p>It defines a keyword tag type named <tt class="docutils literal"><span class="pre">tag::class_type</span></tt> and a
 <em>parameter passing template</em> named <tt class="docutils literal"><span class="pre">class_type</span></tt>.</p>
 </div>
-<div class="section">
-<h4><a class="toc-backref" href="#id46" id="class-template-skeleton" name="class-template-skeleton">2.4.1.2&nbsp;&nbsp;&nbsp;Class Template Skeleton</a></h4>
+<div class="section" id="class-template-skeleton">
+<h4>2.4.1.2&nbsp;&nbsp;&nbsp;Class Template Skeleton</h4>
 <p>The next step is to define the skeleton of our class template,
 which has three optional parameters. Because the user may pass
 arguments in any order, we don't know the actual identities of
@@ -1246,11 +1210,11 @@
 <!-- @example.replace_emphasis('') -->
 <!-- @test('compile') -->
 </div>
-<div class="section">
-<h4><a class="toc-backref" href="#id47" id="class-template-signatures" name="class-template-signatures">2.4.1.3&nbsp;&nbsp;&nbsp;Class Template Signatures</a></h4>
-<p>Next, we need to build a type, known as a <a class="reference" href="reference.html#parameterspec"><span class="concept">ParameterSpec</span></a>,
+<div class="section" id="class-template-signatures">
+<h4>2.4.1.3&nbsp;&nbsp;&nbsp;Class Template Signatures</h4>
+<p>Next, we need to build a type, known as a <a class="reference external" href="reference.html#parameterspec"><span class="concept">ParameterSpec</span></a>,
 describing the “signature” of <tt class="docutils literal"><span class="pre">boost::python::class_</span></tt>. A
-<a class="reference" href="reference.html#parameterspec"><span class="concept">ParameterSpec</span></a> enumerates the required and optional parameters in
+<a class="reference external" href="reference.html#parameterspec"><span class="concept">ParameterSpec</span></a> enumerates the required and optional parameters in
 their positional order, along with any type requirements (note that
 it does <em>not</em> specify defaults -- those will be dealt with
 separately):</p>
@@ -1289,10 +1253,10 @@
 
 }}''') -->
 </div>
-<div class="section">
-<h4><a class="toc-backref" href="#id48" id="argument-packs-and-parameter-extraction" name="argument-packs-and-parameter-extraction"><span id="binding-intro"></span>2.4.1.4&nbsp;&nbsp;&nbsp;Argument Packs and Parameter Extraction</a></h4>
+<div class="section" id="argument-packs-and-parameter-extraction">
+<span id="binding-intro"></span><h4>2.4.1.4&nbsp;&nbsp;&nbsp;Argument Packs and Parameter Extraction</h4>
 <p>Next, within the body of <tt class="docutils literal"><span class="pre">class_</span></tt> , we use the <span class="concept">ParameterSpec</span>'s nested <tt class="docutils literal"><span class="pre">::bind&lt;</span> <span class="pre">…</span> <span class="pre">&gt;</span></tt> template to bundle the actual arguments
-into an <a class="reference" href="reference.html#argumentpack"><span class="concept">ArgumentPack</span></a> type, and then use the library's <tt class="docutils literal"><span class="pre">binding&lt;</span>
+into an <a class="reference external" href="reference.html#argumentpack"><span class="concept">ArgumentPack</span></a> type, and then use the library's <tt class="docutils literal"><span class="pre">binding&lt;</span>
 <span class="pre">…</span> <span class="pre">&gt;</span></tt> metafunction to extract “logical parameters”. Note that
 defaults are specified by supplying an optional third argument to
 <tt class="docutils literal"><span class="pre">binding&lt;</span> <span class="pre">…</span> <span class="pre">&gt;</span></tt>:</p>
@@ -1330,8 +1294,8 @@
 </pre>
 </div>
 </div>
-<div class="section">
-<h3><a class="toc-backref" href="#id49" id="exercising-the-code-so-far" name="exercising-the-code-so-far">2.4.2&nbsp;&nbsp;&nbsp;Exercising the Code So Far</a></h3>
+<div class="section" id="exercising-the-code-so-far">
+<h3>2.4.2&nbsp;&nbsp;&nbsp;Exercising the Code So Far</h3>
 <div class="compound">
 <p class="compound-first">Revisiting our original examples,</p>
 <pre class="compound-middle literal-block">
@@ -1371,12 +1335,12 @@
 </div>
 <!-- @test('compile', howmany='all') -->
 </div>
-<div class="section">
-<h3><a class="toc-backref" href="#id50" id="deduced-template-parameters" name="deduced-template-parameters">2.4.3&nbsp;&nbsp;&nbsp;Deduced Template Parameters</a></h3>
+<div class="section" id="deduced-template-parameters">
+<h3>2.4.3&nbsp;&nbsp;&nbsp;Deduced Template Parameters</h3>
 <p>To apply a deduced parameter interface here, we need only make the
 type requirements a bit tighter so the <tt class="docutils literal"><span class="pre">held_type</span></tt> and
 <tt class="docutils literal"><span class="pre">copyable</span></tt> parameters can be crisply distinguished from the
-others. <a class="reference" href="../../../python/doc/index.html">Boost.Python</a> does this by requiring that <tt class="docutils literal"><span class="pre">base_list</span></tt> be
+others. <a class="reference external" href="../../../python/doc/index.html">Boost.Python</a> does this by requiring that <tt class="docutils literal"><span class="pre">base_list</span></tt> be
 a specialization of its <tt class="docutils literal"><span class="pre">bases&lt;</span> <span class="pre">…</span> <span class="pre">&gt;</span></tt> template (as opposed to
 being any old MPL sequence) and by requiring that <tt class="docutils literal"><span class="pre">copyable</span></tt>, if
 explicitly supplied, be <tt class="docutils literal"><span class="pre">boost::noncopyable</span></tt>. One easy way of
@@ -1498,12 +1462,12 @@
 </div>
 </div>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id51" id="advanced-topics" name="advanced-topics">3&nbsp;&nbsp;&nbsp;Advanced Topics</a></h1>
+<div class="section" id="advanced-topics">
+<h1><a class="toc-backref" href="#id31">3&nbsp;&nbsp;&nbsp;Advanced Topics</a></h1>
 <p>At this point, you should have a good grasp of the basics. In this
 section we'll cover some more esoteric uses of the library.</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id52" id="fine-grained-name-control" name="fine-grained-name-control">3.1&nbsp;&nbsp;&nbsp;Fine-Grained Name Control</a></h2>
+<div class="section" id="fine-grained-name-control">
+<h2><a class="toc-backref" href="#id32">3.1&nbsp;&nbsp;&nbsp;Fine-Grained Name Control</a></h2>
 <p>If you don't like the leading-underscore naming convention used
 to refer to keyword objects, or you need the name <tt class="docutils literal"><span class="pre">tag</span></tt> for
 something other than the keyword type namespace, there's another
@@ -1531,17 +1495,17 @@
 {}''') -->
 <!-- @test('run') -->
 <p>Before you use this more verbose form, however, please read the
-section on <a class="reference" href="#keyword-naming">best practices for keyword object naming</a>.</p>
+section on <a class="reference internal" href="#keyword-naming">best practices for keyword object naming</a>.</p>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id53" id="more-argumentpacks" name="more-argumentpacks">3.2&nbsp;&nbsp;&nbsp;More <span class="concept">ArgumentPack</span>s</a></h2>
+<div class="section" id="more-argumentpacks">
+<h2><a class="toc-backref" href="#id33">3.2&nbsp;&nbsp;&nbsp;More <span class="concept">ArgumentPack</span>s</a></h2>
 <p>We've already seen <span class="concept">ArgumentPack</span>s when we looked at
-<a class="reference" href="#parameter-enabled-constructors">parameter-enabled constructors</a> and <a class="reference" href="#binding-intro">class templates</a>. As you
+<a class="reference internal" href="#parameter-enabled-constructors">parameter-enabled constructors</a> and <a class="reference internal" href="#binding-intro">class templates</a>. As you
 might have guessed, <span class="concept">ArgumentPack</span>s actually lie at the heart of
 everything this library does; in this section we'll examine ways to
 build and manipulate them more effectively.</p>
-<div class="section">
-<h3><a class="toc-backref" href="#id54" id="building-argumentpacks" name="building-argumentpacks">3.2.1&nbsp;&nbsp;&nbsp;Building <span class="concept">ArgumentPack</span>s</a></h3>
+<div class="section" id="building-argumentpacks">
+<h3>3.2.1&nbsp;&nbsp;&nbsp;Building <span class="concept">ArgumentPack</span>s</h3>
 <p>The simplest <span class="concept">ArgumentPack</span> is the result of assigning into a
 keyword object:</p>
 <pre class="literal-block">
@@ -1575,7 +1539,7 @@
 int y = print_name_and_index((_index = 3, _name = &quot;jones&quot;));
 </pre>
 <p>To build an <span class="concept">ArgumentPack</span> with positional arguments, we can use a
-<a class="reference" href="reference.html#parameterspec"><span class="concept">ParameterSpec</span></a>. As introduced described in the section on <a class="reference" href="#class-template-signatures">Class
+<a class="reference external" href="reference.html#parameterspec"><span class="concept">ParameterSpec</span></a>. As introduced described in the section on <a class="reference internal" href="#class-template-signatures">Class
 Template Signatures</a>, a <span class="concept">ParameterSpec</span> describes the positional
 order of parameters and any associated type requirements. Just as
 we can build an <span class="concept">ArgumentPack</span> <em>type</em> with its nested <tt class="docutils literal"><span class="pre">::bind&lt;</span> <span class="pre">…</span>
@@ -1606,11 +1570,11 @@
 int main()
 {}''') -->
 <!-- @test('run', howmany='all') -->
-<p>Note that because of the <a class="reference" href="http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1385.htm">forwarding problem</a>, <tt class="docutils literal"><span class="pre">parameter::parameters::operator()</span></tt>
+<p>Note that because of the <a class="reference external" href="http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1385.htm">forwarding problem</a>, <tt class="docutils literal"><span class="pre">parameter::parameters::operator()</span></tt>
 can't accept non-const rvalues.</p>
 </div>
-<div class="section">
-<h3><a class="toc-backref" href="#id55" id="extracting-parameter-types" name="extracting-parameter-types">3.2.2&nbsp;&nbsp;&nbsp;Extracting Parameter Types</a></h3>
+<div class="section" id="extracting-parameter-types">
+<h3>3.2.2&nbsp;&nbsp;&nbsp;Extracting Parameter Types</h3>
 <p>If we want to know the types of the arguments passed to
 <tt class="docutils literal"><span class="pre">print_name_and_index</span></tt>, we have a couple of options. The
 simplest and least error-prone approach is to forward them to a
@@ -1650,7 +1614,7 @@
 layer of function call. For example, suppose we wanted to return
 twice the value of the <tt class="docutils literal"><span class="pre">index</span></tt> parameter? In that
 case we can use the <tt class="docutils literal"><span class="pre">binding&lt;</span> <span class="pre">…</span> <span class="pre">&gt;</span></tt> metafunction introduced
-<a class="reference" href="#binding-intro">earlier</a>:</p>
+<a class="reference internal" href="#binding-intro">earlier</a>:</p>
 <pre class="literal-block">
 BOOST_PARAMETER_NAME(index)
 
@@ -1675,7 +1639,7 @@
 <p>Note that the <tt class="docutils literal"><span class="pre">remove_reference&lt;</span> <span class="pre">…</span> <span class="pre">&gt;</span></tt> dance is necessary because
 <tt class="docutils literal"><span class="pre">binding&lt;</span> <span class="pre">…</span> <span class="pre">&gt;</span></tt> will return a reference type when the argument
 is bound in the argument pack. If we don't strip the reference we
-end up returning a reference to the temporary created in the <tt class="docutils literal"><span class="pre">2*…</span></tt>
+end up returning a reference to the temporary created in the <tt class="docutils literal"><span class="pre">2</span> <span class="pre">*</span> <span class="pre">…</span></tt>
 expression. A convenient shortcut would be to use the <tt class="docutils literal"><span class="pre">value_type&lt;</span> <span class="pre">…</span> <span class="pre">&gt;</span></tt>
 metafunction:</p>
 <pre class="literal-block">
@@ -1689,6 +1653,7 @@
 <!-- @example.wrap('namespace with_value_type {', '''
 int six = twice_index(_index = 3);
 }''') -->
+<!-- TODO: binding<> returns a reference. We should use value_type<> here. -->
 <!-- @example.append('''
 int main()
 {
@@ -1697,8 +1662,8 @@
 }''') -->
 <!-- @test('run', howmany='all') -->
 </div>
-<div class="section">
-<h3><a class="toc-backref" href="#id56" id="lazy-default-computation" name="lazy-default-computation">3.2.3&nbsp;&nbsp;&nbsp;Lazy Default Computation</a></h3>
+<div class="section" id="lazy-default-computation">
+<h3>3.2.3&nbsp;&nbsp;&nbsp;Lazy Default Computation</h3>
 <p>When a default value is expensive to compute, it would be
 preferable to avoid it until we're sure it's absolutely necessary.
 <tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUNCTION</span></tt> takes care of that problem for us, but
@@ -1796,13 +1761,13 @@
 </div>
 </div>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id57" id="best-practices" name="best-practices">4&nbsp;&nbsp;&nbsp;Best Practices</a></h1>
+<div class="section" id="best-practices">
+<h1><a class="toc-backref" href="#id34">4&nbsp;&nbsp;&nbsp;Best Practices</a></h1>
 <p>By now you should have a fairly good idea of how to use the
 Parameter library. This section points out a few more-marginal
 issues that will help you use the library more effectively.</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id58" id="keyword-naming" name="keyword-naming">4.1&nbsp;&nbsp;&nbsp;Keyword Naming</a></h2>
+<div class="section" id="keyword-naming">
+<h2><a class="toc-backref" href="#id35">4.1&nbsp;&nbsp;&nbsp;Keyword Naming</a></h2>
 <p><tt class="docutils literal"><span class="pre">BOOST_PARAMETER_NAME</span></tt> prepends a leading underscore to the names
 of all our keyword objects in order to avoid the following
 usually-silent bug:</p>
@@ -1854,8 +1819,8 @@
 compiler—might become irretrievably ambiguous with those in our
 unnamed namespace.</p>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id59" id="namespaces" name="namespaces">4.2&nbsp;&nbsp;&nbsp;Namespaces</a></h2>
+<div class="section" id="namespaces">
+<h2><a class="toc-backref" href="#id36">4.2&nbsp;&nbsp;&nbsp;Namespaces</a></h2>
 <p>In our examples we've always declared keyword objects in (an
 unnamed namespace within) the same namespace as the
 Boost.Parameter-enabled functions using those keywords:</p>
@@ -1958,8 +1923,8 @@
 <!-- @example.append('int main() {}') -->
 <!-- @test('run', howmany='all') -->
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id60" id="documentation" name="documentation">4.3&nbsp;&nbsp;&nbsp;Documentation</a></h2>
+<div class="section" id="documentation">
+<h2><a class="toc-backref" href="#id37">4.3&nbsp;&nbsp;&nbsp;Documentation</a></h2>
 <p>The interface idioms enabled by Boost.Parameter are completely new
 (to C++), and as such are not served by pre-existing documentation
 conventions.</p>
@@ -1972,22 +1937,22 @@
 </div>
 </div>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id61" id="portability-considerations" name="portability-considerations">5&nbsp;&nbsp;&nbsp;Portability Considerations</a></h1>
-<p>Use the <a class="reference" href="http://www.boost.org/regression/release/user/parameter.html">regression test results</a> for the latest Boost release of
+<div class="section" id="portability-considerations">
+<h1><a class="toc-backref" href="#id38">5&nbsp;&nbsp;&nbsp;Portability Considerations</a></h1>
+<p>Use the <a class="reference external" href="http://www.boost.org/regression/release/user/parameter.html">regression test results</a> for the latest Boost release of
 the Parameter library to see how it fares on your favorite
 compiler. Additionally, you may need to be aware of the following
 issues and workarounds for particular compilers.</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id62" id="no-sfinae-support" name="no-sfinae-support">5.1&nbsp;&nbsp;&nbsp;No SFINAE Support</a></h2>
+<div class="section" id="no-sfinae-support">
+<h2><a class="toc-backref" href="#id39">5.1&nbsp;&nbsp;&nbsp;No SFINAE Support</a></h2>
 <p>Some older compilers don't support SFINAE. If your compiler meets
 that criterion, then Boost headers will <tt class="docutils literal"><span class="pre">#define</span></tt> the preprocessor
 symbol <tt class="docutils literal"><span class="pre">BOOST_NO_SFINAE</span></tt>, and parameter-enabled functions won't be
 removed from the overload set based on their signatures.</p>
 </div>
-<div class="section">
-<h2><a id="no-support-for-result-of" name="no-support-for-result-of">5.2&nbsp;&nbsp;&nbsp;No Support for <a class="reference" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a></a></h2>
-<p><a class="reference" href="#lazy-default-computation">Lazy default computation</a> relies on the <tt class="docutils literal"><span class="pre">result_of</span></tt> class
+<div class="section" id="no-support-for-result-of">
+<h2>5.2&nbsp;&nbsp;&nbsp;No Support for <a class="reference external" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a></h2>
+<p><a class="reference internal" href="#lazy-default-computation">Lazy default computation</a> relies on the <tt class="docutils literal"><span class="pre">result_of</span></tt> class
 template to compute the types of default arguments given the type
 of the function object that constructs them. On compilers that
 don't support <tt class="docutils literal"><span class="pre">result_of</span></tt>, <tt class="docutils literal"><span class="pre">BOOST_NO_RESULT_OF</span></tt> will be
@@ -2026,8 +1991,8 @@
 
 .. |BOOST_PARAMETER_MATCH| replace:: ``BOOST_PARAMETER_MATCH`` -->
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id64" id="compiler-can-t-see-references-in-unnamed-namespace" name="compiler-can-t-see-references-in-unnamed-namespace">5.3&nbsp;&nbsp;&nbsp;Compiler Can't See References In Unnamed Namespace</a></h2>
+<div class="section" id="compiler-can-t-see-references-in-unnamed-namespace">
+<h2><a class="toc-backref" href="#id41">5.3&nbsp;&nbsp;&nbsp;Compiler Can't See References In Unnamed Namespace</a></h2>
 <p>If you use Microsoft Visual C++ 6.x, you may find that the compiler
 has trouble finding your keyword objects. This problem has been
 observed, but only on this one compiler, and it disappeared as the
@@ -2047,18 +2012,18 @@
 </pre>
 </div>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id65" id="python-binding" name="python-binding">6&nbsp;&nbsp;&nbsp;Python Binding</a></h1>
-<p>Follow <a class="reference" href="python.html">this link</a> for documentation on how to expose
-Boost.Parameter-enabled functions to Python with <a class="reference" href="../../../python/doc/index.html">Boost.Python</a>.</p>
-</div>
-<div class="section">
-<h1><a class="toc-backref" href="#id66" id="reference" name="reference">7&nbsp;&nbsp;&nbsp;Reference</a></h1>
-<p>Follow <a class="reference" href="reference.html">this link</a> to the Boost.Parameter reference
+<div class="section" id="python-binding">
+<h1><a class="toc-backref" href="#id42">6&nbsp;&nbsp;&nbsp;Python Binding</a></h1>
+<p>Follow <a class="reference external" href="python.html">this link</a> for documentation on how to expose
+Boost.Parameter-enabled functions to Python with <a class="reference external" href="../../../python/doc/index.html">Boost.Python</a>.</p>
+</div>
+<div class="section" id="reference">
+<h1><a class="toc-backref" href="#id43">7&nbsp;&nbsp;&nbsp;Reference</a></h1>
+<p>Follow <a class="reference external" href="reference.html">this link</a> to the Boost.Parameter reference
 documentation.</p>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id67" id="glossary" name="glossary">8&nbsp;&nbsp;&nbsp;Glossary</a></h1>
+<div class="section" id="glossary">
+<h1><a class="toc-backref" href="#id44">8&nbsp;&nbsp;&nbsp;Glossary</a></h1>
 <table class="docutils field-list" frame="void" id="arguments" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -2087,8 +2052,8 @@
 </tbody>
 </table>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id68" id="acknowledgements" name="acknowledgements">9&nbsp;&nbsp;&nbsp;Acknowledgements</a></h1>
+<div class="section" id="acknowledgements">
+<h1><a class="toc-backref" href="#id45">9&nbsp;&nbsp;&nbsp;Acknowledgements</a></h1>
 <p>The authors would like to thank all the Boosters who participated
 in the review of this library and its documentation, most
 especially our review manager, Doug Gregor.</p>
@@ -2096,8 +2061,8 @@
 <table class="docutils footnote" frame="void" id="old-interface" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id2" name="old-interface">[1]</a></td><td>As of Boost 1.33.0 the Graph library was still
-using an <a class="reference" href="../../../graph/doc/bgl_named_params.html">older named parameter mechanism</a>, but there are
+<tr><td class="label"><a class="fn-backref" href="#id3">[1]</a></td><td>As of Boost 1.33.0 the Graph library was still
+using an <a class="reference external" href="../../../graph/doc/bgl_named_params.html">older named parameter mechanism</a>, but there are
 plans to change it to use Boost.Parameter (this library) in an
 upcoming release, while keeping the old interface available for
 backward-compatibility.</td></tr>
@@ -2106,7 +2071,7 @@
 <table class="docutils footnote" frame="void" id="odr" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id4" name="odr">[2]</a></td><td>The <strong>One Definition Rule</strong> says that any given entity in
+<tr><td class="label"><a class="fn-backref" href="#id5">[2]</a></td><td>The <strong>One Definition Rule</strong> says that any given entity in
 a C++ program must have the same definition in all translation
 units (object files) that make up a program.</td></tr>
 </tbody>
@@ -2114,7 +2079,7 @@
 <table class="docutils footnote" frame="void" id="vertex-descriptor" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a name="vertex-descriptor">[3]</a></td><td>If you're not familiar with the Boost Graph
+<tr><td class="label">[3]</td><td>If you're not familiar with the Boost Graph
 Library, don't worry about the meaning of any
 Graph-library-specific details you encounter. In this case you
 could replace all mentions of vertex descriptor types with
@@ -2125,7 +2090,7 @@
 <table class="docutils footnote" frame="void" id="conceptcpp" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id6" name="conceptcpp">[4]</a></td><td>This is a major motivation behind <a class="reference" href="http://www.generic-programming.org/software/ConceptGCC/">ConceptC++</a>.</td></tr>
+<tr><td class="label"><a class="fn-backref" href="#id7">[4]</a></td><td>This is a major motivation behind <a class="reference external" href="http://www.generic-programming.org/software/ConceptGCC/">ConceptC++</a>.</td></tr>
 </tbody>
 </table>
 <!-- .. [#bind] The Lambda library is known not to work on `some -->
@@ -2135,7 +2100,7 @@
 <table class="docutils footnote" frame="void" id="is-keyword-expression" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a name="is-keyword-expression">[5]</a></td><td><em>(<a class="fn-backref" href="#id12">1</a>, <a class="fn-backref" href="#id13">2</a>)</em> Here we're assuming there's a predicate
+<tr><td class="label">[5]</td><td><em>(<a class="fn-backref" href="#id13">1</a>, <a class="fn-backref" href="#id14">2</a>)</em> Here we're assuming there's a predicate
 metafunction <tt class="docutils literal"><span class="pre">is_keyword_expression</span></tt> that can be used to
 identify models of Boost.Python's KeywordExpression concept.</td></tr>
 </tbody>
@@ -2144,7 +2109,7 @@
 <table class="docutils footnote" frame="void" id="using" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id7" name="using">[6]</a></td><td><p class="first">You can always give the illusion that the function
+<tr><td class="label"><a class="fn-backref" href="#id8">[6]</a></td><td><p class="first">You can always give the illusion that the function
 lives in an outer namespace by applying a <em>using-declaration</em>:</p>
 <pre class="last literal-block">
   namespace foo_overloads
@@ -2164,20 +2129,20 @@
 <table class="docutils footnote" frame="void" id="sfinae" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a name="sfinae">[7]</a></td><td>This capability depends on your compiler's support for SFINAE.
+<tr><td class="label">[7]</td><td>This capability depends on your compiler's support for SFINAE.
 <strong>SFINAE</strong>: <strong>S</strong>ubstitution <strong>F</strong>ailure <strong>I</strong>s
-<strong>N</strong>ot <strong>A</strong>n <strong>E</strong>rror. If type substitution during the
+<strong>N</strong>ot <strong>A</strong>n <strong>E</strong> rror. If type substitution during the
 instantiation of a function template results in an invalid type,
 no compilation error is emitted; instead the overload is removed
 from the overload set. By producing an invalid type in the
 function signature depending on the result of some condition,
 we can decide whether or not an overload is considered during overload
 resolution. The technique is formalized in
-the <a class="reference" href="../../../utility/enable_if.html"><tt class="docutils literal"><span class="pre">enable_if</span></tt></a> utility. Most recent compilers support SFINAE;
+the <a class="reference external" href="../../../utility/enable_if.html"><tt class="docutils literal"><span class="pre">enable_if</span></tt></a> utility. Most recent compilers support SFINAE;
 on compilers that don't support it, the Boost config library
 will <tt class="docutils literal"><span class="pre">#define</span></tt> the symbol <tt class="docutils literal"><span class="pre">BOOST_NO_SFINAE</span></tt>.
 See
-<a class="reference" href="http://www.semantics.org/once_weakly/w02_SFINAE.pdf">http://www.semantics.org/once_weakly/w02_SFINAE.pdf> for more
+<a class="reference external" href="
http://www.semantics.org/once_weakly/w02_SFINAE.pdf">http://www.semantics.org/once_weakly/w02_SFINAE.pdf> for more
 information on SFINAE.</td></tr>
 </tbody>
 </table>
@@ -2185,8 +2150,8 @@
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2007-05-03 14:12 UTC.
-Generated by <a class="reference" href="
http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
+Generated on: 2008-06-26 21:58 UTC.
+Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
 </body>

Modified: branches/proto/v4/libs/parameter/doc/html/python.html
==============================================================================
--- branches/proto/v4/libs/parameter/doc/html/python.html (original)
+++ branches/proto/v4/libs/parameter/doc/html/python.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,11 +3,11 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.6: http://docutils.sourceforge.net/" />
 <title>The Boost Parameter Library Python Binding Documentation</title>
 <meta name="authors" content="Daniel Wallin" />
 <meta name="organization" content="Boost Consulting" />
-<meta name="date" content="2006-12-14" />
+<meta name="date" content="2008-03-22" />
 <meta name="copyright" content="Copyright David Abrahams, Daniel Wallin 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)" />
 <link rel="stylesheet" href="rst.css" type="text/css" />
 </head>
@@ -21,16 +21,16 @@
 <tr><th class="docinfo-name">Authors:</th>
 <td>Daniel Wallin</td></tr>
 <tr><th class="docinfo-name">Contact:</th>
-<td><a class="first last reference" href="mailto:dalwan01&#64;student.umu.se">dalwan01&#64;student.umu.se</a></td></tr>
+<td><a class="first last reference external" href="mailto:dalwan01&#64;student.umu.se">dalwan01&#64;student.umu.se</a></td></tr>
 <tr><th class="docinfo-name">Organization:</th>
-<td><a class="first last reference" href="http://www.boost-consulting.com">Boost Consulting</a></td></tr>
+<td><a class="first last reference external" href="http://www.boost-consulting.com">Boost Consulting</a></td></tr>
 <tr><th class="docinfo-name">Date:</th>
-<td>2006-12-14</td></tr>
+<td>2008-03-22</td></tr>
 <tr><th class="docinfo-name">Copyright:</th>
 <td>Copyright David Abrahams, Daniel Wallin
 2005. Distributed under the Boost Software License,
 Version 1.0. (See accompanying file LICENSE_1_0.txt
-or copy at <a class="reference" href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt>)</td></tr>
+or copy at <a class="reference external" href="
http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt>)</td></tr>
 </tbody>
 </table>
 <div class="abstract topic">
@@ -38,24 +38,24 @@
 <p>Makes it possible to bind Boost.Parameter-enabled
 functions, operators and constructors to Python.</p>
 </div>
-<p><a class="reference" href="../../../../index.htm"><img alt="Boost" src="../../../../boost.png" /></a></p>
-<div class="contents topic">
-<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
+<p><a class="reference external" href="../../../../index.htm"><img alt="Boost" src="../../../../boost.png" /></a></p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
 <ul class="simple">
-<li><a class="reference" href="#introduction" id="id7" name="id7">Introduction</a></li>
-<li><a class="reference" href="#tutorial" id="id8" name="id8">Tutorial</a></li>
-<li><a class="reference" href="#concept-parameterspec" id="id9" name="id9">concept <span class="concept">ParameterSpec</span></a></li>
-<li><a class="reference" href="#special-keywords" id="id10" name="id10"><em>special</em> keywords</a></li>
-<li><a class="reference" href="#class-template-init" id="id11" name="id11">class template <tt class="docutils literal"><span class="pre">init</span></tt></a></li>
-<li><a class="reference" href="#class-template-call" id="id12" name="id12">class template <tt class="docutils literal"><span class="pre">call</span></tt></a></li>
-<li><a class="reference" href="#class-template-function" id="id13" name="id13">class template <tt class="docutils literal"><span class="pre">function</span></tt></a></li>
-<li><a class="reference" href="#function-template-def" id="id14" name="id14">function template <tt class="docutils literal"><span class="pre">def</span></tt></a></li>
-<li><a class="reference" href="#portability" id="id15" name="id15">Portability</a></li>
+<li><a class="reference internal" href="#introduction" id="id7">Introduction</a></li>
+<li><a class="reference internal" href="#tutorial" id="id8">Tutorial</a></li>
+<li><a class="reference internal" href="#concept-parameterspec" id="id9">concept <span class="concept">ParameterSpec</span></a></li>
+<li><a class="reference internal" href="#special-keywords" id="id10"><em>special</em> keywords</a></li>
+<li><a class="reference internal" href="#class-template-init" id="id11">class template <tt class="docutils literal"><span class="pre">init</span></tt></a></li>
+<li><a class="reference internal" href="#class-template-call" id="id12">class template <tt class="docutils literal"><span class="pre">call</span></tt></a></li>
+<li><a class="reference internal" href="#class-template-function" id="id13">class template <tt class="docutils literal"><span class="pre">function</span></tt></a></li>
+<li><a class="reference internal" href="#function-template-def" id="id14">function template <tt class="docutils literal"><span class="pre">def</span></tt></a></li>
+<li><a class="reference internal" href="#portability" id="id15">Portability</a></li>
 </ul>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id7" id="introduction" name="introduction">Introduction</a></h1>
-<p><tt class="docutils literal"><span class="pre">boost/parameter/python.hpp</span></tt> introduces a group of <a class="reference" href="../../../python/doc/v2/def_visitor.html"><tt class="docutils literal"><span class="pre">def_visitors</span></tt></a> that can
+<div class="section" id="introduction">
+<h1><a class="toc-backref" href="#id7">Introduction</a></h1>
+<p><tt class="docutils literal"><span class="pre">boost/parameter/python.hpp</span></tt> introduces a group of <a class="reference external" href="../../../python/doc/v2/def_visitor.html"><tt class="docutils literal"><span class="pre">def_visitors</span></tt></a> that can
 be used to easily expose Boost.Parameter-enabled member functions to Python with
 Boost.Python. It also provides a function template <tt class="docutils literal"><span class="pre">def()</span></tt> that can be used
 to expose Boost.Parameter-enabled free functions.</p>
@@ -70,8 +70,8 @@
 ``boost::parameter::python::def`` requires a class with forwarding
 overloads. We will take a closer look at how this is done in the
 tutorial section below. -->
-<p>The keyword tags and associated argument types are specified as an <a class="reference" href="../../../mpl/doc/refmanual/sequences.html">MPL
-Sequence</a>, using the function type syntax described in <a class="reference" href="#concept-parameterspec"><span class="concept">ParameterSpec</span></a>
+<p>The keyword tags and associated argument types are specified as an <a class="reference external" href="../../../mpl/doc/refmanual/sequences.html">MPL
+Sequence</a>, using the function type syntax described in <a class="reference internal" href="#concept-parameterspec"><span class="concept">ParameterSpec</span></a>
 below. Additionally, <tt class="docutils literal"><span class="pre">boost::parameter::python::function</span></tt> and
 <tt class="docutils literal"><span class="pre">boost::parameter::python::def</span></tt> requires a class with forwarding overloads.
 We will take a closer look at how this is done in the tutorial section below.</p>
@@ -80,11 +80,11 @@
 <!-- else are we going to do other than pass these sequences to -->
 <!-- function? -->
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id8" id="tutorial" name="tutorial">Tutorial</a></h1>
+<div class="section" id="tutorial">
+<h1><a class="toc-backref" href="#id8">Tutorial</a></h1>
 <p>In this section we will outline the steps needed to bind a simple
 Boost.Parameter-enabled member function to Python. Knowledge of the
-Boost.Parameter <a class="reference" href="index.html">macros</a> are required to understand this section.</p>
+Boost.Parameter <a class="reference external" href="index.html">macros</a> are required to understand this section.</p>
 <p>The class and member function we are interested in binding looks
 like this:</p>
 <pre class="literal-block">
@@ -121,7 +121,7 @@
 <p>It defines a set of overloaded member functions called <tt class="docutils literal"><span class="pre">open</span></tt> with one
 required parameter and two optional ones. To bind this member function to
 Python we use the binding utility <tt class="docutils literal"><span class="pre">boost::parameter::python::function</span></tt>.
-<tt class="docutils literal"><span class="pre">boost::parameter::python::function</span></tt> is a <a class="reference" href="../../../python/doc/v2/def_visitor.html"><tt class="docutils literal"><span class="pre">def_visitor</span></tt></a> that we'll instantiate
+<tt class="docutils literal"><span class="pre">boost::parameter::python::function</span></tt> is a <a class="reference external" href="../../../python/doc/v2/def_visitor.html"><tt class="docutils literal"><span class="pre">def_visitor</span></tt></a> that we'll instantiate
 and pass to <tt class="docutils literal"><span class="pre">boost::python::class_::def()</span></tt>.</p>
 <p>To use <tt class="docutils literal"><span class="pre">boost::parameter::python::function</span></tt> we first need to define
 a class with forwarding overloads. This is needed because <tt class="docutils literal"><span class="pre">window::open()</span></tt>
@@ -151,7 +151,7 @@
 <p class="last">We only need one overload in the forwarding class, despite the
 fact that there are two optional parameters. There are special
 circumstances when several overload are needed; see
-<a class="reference" href="#special-keywords">special keywords</a>.</p>
+<a class="reference internal" href="#special-keywords">special keywords</a>.</p>
 </div>
 <p>Next we'll define the module and export the class:</p>
 <pre class="literal-block">
@@ -185,11 +185,11 @@
 ) -->
 <!-- @del jam_prefix[:] -->
 <p><tt class="docutils literal"><span class="pre">py::function</span></tt> is passed two parameters. The first one is the class with
-forwarding overloads that we defined earlier. The second one is an <a class="reference" href="../../../mpl/doc/refmanual/sequences.html">MPL
+forwarding overloads that we defined earlier. The second one is an <a class="reference external" href="../../../mpl/doc/refmanual/sequences.html">MPL
 Sequence</a> with the keyword tag types and argument types for the function
 specified as function types. The pointer syntax used in <tt class="docutils literal"><span class="pre">tag::width*</span></tt> and
 <tt class="docutils literal"><span class="pre">tag::height*</span></tt> means that the parameter is optional. The first element of
-the <a class="reference" href="../../../mpl/doc/refmanual/sequences.html">MPL Sequence</a> is the return type of the function, in this case <tt class="docutils literal"><span class="pre">void</span></tt>,
+the <a class="reference external" href="../../../mpl/doc/refmanual/sequences.html">MPL Sequence</a> is the return type of the function, in this case <tt class="docutils literal"><span class="pre">void</span></tt>,
 which is passed as the first argument to <tt class="docutils literal"><span class="pre">operator()</span></tt> in the forwarding
 class.</p>
 <!-- The
@@ -242,8 +242,8 @@
 types instead). -->
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id9" id="concept-parameterspec" name="concept-parameterspec">concept <span class="concept">ParameterSpec</span></a></h1>
+<div class="section" id="concept-parameterspec">
+<h1><a class="toc-backref" href="#id9">concept <span class="concept">ParameterSpec</span></a></h1>
 <p>A <span class="concept">ParameterSpec</span> is a function type <tt class="docutils literal"><span class="pre">K(T)</span></tt> that describes both the keyword tag,
 <tt class="docutils literal"><span class="pre">K</span></tt>, and the argument type, <tt class="docutils literal"><span class="pre">T</span></tt>, for a parameter.</p>
 <p><tt class="docutils literal"><span class="pre">K</span></tt> is either:</p>
@@ -253,8 +253,8 @@
 <li><strong>or</strong>, a <em>special</em> keyword of the form <tt class="docutils literal"><span class="pre">Tag**</span></tt></li>
 </ul>
 <p>where <tt class="docutils literal"><span class="pre">Tag</span></tt> is a keyword tag type, as used in a specialization
-of <a class="reference" href="../../../parameter/doc/html/reference.html#keyword"><tt class="docutils literal"><span class="pre">boost::parameter::keyword</span></tt></a>.</p>
-<p>The <strong>arity range</strong> for an <a class="reference" href="../../../mpl/doc/refmanual/sequences.html">MPL Sequence</a> of <span class="concept">ParameterSpec</span>'s is
+of <a class="reference external" href="../../../parameter/doc/html/reference.html#keyword"><tt class="docutils literal"><span class="pre">boost::parameter::keyword</span></tt></a>.</p>
+<p>The <strong>arity range</strong> for an <a class="reference external" href="../../../mpl/doc/refmanual/sequences.html">MPL Sequence</a> of <span class="concept">ParameterSpec</span>'s is
 defined as the closed range:</p>
 <pre class="literal-block">
 [ mpl::size&lt;S&gt; - number of <em>special</em> keyword tags in <tt class="docutils literal"><span class="pre">S</span></tt>, mpl::size&lt;S&gt; ]
@@ -263,8 +263,8 @@
 the <strong>arity range</strong> of <tt class="docutils literal"><span class="pre">mpl::vector2&lt;x(int),y*(int)&gt;</span></tt> is <tt class="docutils literal"><span class="pre">[2,2]</span></tt> and the
 <strong>arity range</strong> of <tt class="docutils literal"><span class="pre">mpl::vector2&lt;x(int),y**(int)&gt;</span></tt> is <tt class="docutils literal"><span class="pre">[1,2]</span></tt>.</p>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id10" id="special-keywords" name="special-keywords"><em>special</em> keywords</a></h1>
+<div class="section" id="special-keywords">
+<h1><a class="toc-backref" href="#id10"><em>special</em> keywords</a></h1>
 <p>Sometimes it is desirable to have a default value for a parameter that differ
 in type from the parameter. This technique is useful for doing simple tag-dispatching
 based on the presence of a parameter. For example:</p>
@@ -323,15 +323,15 @@
 <p>When binding the case outlined above, the default type for <tt class="docutils literal"><span class="pre">color</span></tt> will not
 be convertible to the parameter type. Therefore we need to tag the <tt class="docutils literal"><span class="pre">color</span></tt>
 keyword as a <em>special</em> keyword. This is done by specifying the tag as
-<tt class="docutils literal"><span class="pre">tag::color**</span></tt> when binding the function (see <a class="reference" href="#concept-parameterspec">concept ParameterSpec</a> for
+<tt class="docutils literal"><span class="pre">tag::color**</span></tt> when binding the function (see <a class="reference internal" href="#concept-parameterspec">concept ParameterSpec</a> for
 more details on the tagging). By doing this we tell the binding functions that
 it needs to generate two overloads, one with the <tt class="docutils literal"><span class="pre">color</span></tt> parameter present
 and one without. Had there been two <em>special</em> keywords, four overloads would
 need to be generated. The number of generated overloads is equal to 2<sup>N</sup>, where <tt class="docutils literal"><span class="pre">N</span></tt> is the number of <em>special</em> keywords.</p>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id11" id="class-template-init" name="class-template-init">class template <tt class="docutils literal"><span class="pre">init</span></tt></a></h1>
+<div class="section" id="class-template-init">
+<h1><a class="toc-backref" href="#id11">class template <tt class="docutils literal"><span class="pre">init</span></tt></a></h1>
 <p>Defines a named parameter enabled constructor.</p>
 <pre class="literal-block">
 template &lt;class ParameterSpecs&gt;
@@ -345,10 +345,10 @@
 };
 </pre>
 <!-- @ignore() -->
-<div class="section">
-<h2><a id="init-requirements" name="init-requirements"><tt class="docutils literal"><span class="pre">init</span></tt> requirements</a></h2>
+<div class="section" id="init-requirements">
+<h2><tt class="docutils literal"><span class="pre">init</span></tt> requirements</h2>
 <ul>
-<li><p class="first"><tt class="docutils literal"><span class="pre">ParameterSpecs</span></tt> is an <a class="reference" href="../../../mpl/doc/refmanual/sequences.html">MPL sequence</a> where each element is a
+<li><p class="first"><tt class="docutils literal"><span class="pre">ParameterSpecs</span></tt> is an <a class="reference external" href="../../../mpl/doc/refmanual/sequences.html">MPL sequence</a> where each element is a
 model of <span class="concept">ParameterSpec</span>.</p>
 </li>
 <li><p class="first">For every <tt class="docutils literal"><span class="pre">N</span></tt> in <tt class="docutils literal"><span class="pre">[U,V]</span></tt>, where <tt class="docutils literal"><span class="pre">[U,V]</span></tt> is the <strong>arity
@@ -382,13 +382,13 @@
 </li>
 </ul>
 </div>
-<div class="section">
-<h2><a id="template-class-callpolicies-operator-callpolicies-const" name="template-class-callpolicies-operator-callpolicies-const"><tt class="docutils literal"><span class="pre">template</span> <span class="pre">&lt;class</span> <span class="pre">CallPolicies&gt;</span> <span class="pre">operator[](CallPolicies</span> <span class="pre">const&amp;)</span></tt></a></h2>
+<div class="section" id="template-class-callpolicies-operator-callpolicies-const">
+<h2><tt class="docutils literal"><span class="pre">template</span> <span class="pre">&lt;class</span> <span class="pre">CallPolicies&gt;</span> <span class="pre">operator[](CallPolicies</span> <span class="pre">const&amp;)</span></tt></h2>
 <p>Returns a <tt class="docutils literal"><span class="pre">def_visitor</span></tt> equivalent to <tt class="docutils literal"><span class="pre">*this</span></tt>, except that it
 uses CallPolicies when creating the binding.</p>
 </div>
-<div class="section">
-<h2><a id="example" name="example">Example</a></h2>
+<div class="section" id="example">
+<h2>Example</h2>
 <pre class="literal-block">
 #include &lt;boost/parameter/keyword.hpp&gt;
 #include &lt;boost/parameter/preprocessor.hpp&gt;
@@ -446,8 +446,8 @@
 </div>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id12" id="class-template-call" name="class-template-call">class template <tt class="docutils literal"><span class="pre">call</span></tt></a></h1>
+<div class="section" id="class-template-call">
+<h1><a class="toc-backref" href="#id12">class template <tt class="docutils literal"><span class="pre">call</span></tt></a></h1>
 <p>Defines a <tt class="docutils literal"><span class="pre">__call__</span></tt> operator, mapped to <tt class="docutils literal"><span class="pre">operator()</span></tt> in C++.</p>
 <pre class="literal-block">
 template &lt;class ParameterSpecs&gt;
@@ -461,10 +461,10 @@
 };
 </pre>
 <!-- @ignore() -->
-<div class="section">
-<h2><a id="call-requirements" name="call-requirements"><tt class="docutils literal"><span class="pre">call</span></tt> requirements</a></h2>
+<div class="section" id="call-requirements">
+<h2><tt class="docutils literal"><span class="pre">call</span></tt> requirements</h2>
 <ul>
-<li><p class="first"><tt class="docutils literal"><span class="pre">ParameterSpecs</span></tt> is an <a class="reference" href="../../../mpl/doc/refmanual/sequences.html">MPL sequence</a> where each element
+<li><p class="first"><tt class="docutils literal"><span class="pre">ParameterSpecs</span></tt> is an <a class="reference external" href="../../../mpl/doc/refmanual/sequences.html">MPL sequence</a> where each element
 except the first models <span class="concept">ParameterSpec</span>. The first element
 is the result type of <tt class="docutils literal"><span class="pre">c(…)</span></tt>.</p>
 </li>
@@ -499,13 +499,13 @@
 </li>
 </ul>
 </div>
-<div class="section">
-<h2><a id="id3" name="id3"><tt class="docutils literal"><span class="pre">template</span> <span class="pre">&lt;class</span> <span class="pre">CallPolicies&gt;</span> <span class="pre">operator[](CallPolicies</span> <span class="pre">const&amp;)</span></tt></a></h2>
+<div class="section" id="id3">
+<h2><tt class="docutils literal"><span class="pre">template</span> <span class="pre">&lt;class</span> <span class="pre">CallPolicies&gt;</span> <span class="pre">operator[](CallPolicies</span> <span class="pre">const&amp;)</span></tt></h2>
 <p>Returns a <tt class="docutils literal"><span class="pre">def_visitor</span></tt> equivalent to <tt class="docutils literal"><span class="pre">*this</span></tt>, except that it
 uses CallPolicies when creating the binding.</p>
 </div>
-<div class="section">
-<h2><a id="id4" name="id4">Example</a></h2>
+<div class="section" id="id4">
+<h2>Example</h2>
 <pre class="literal-block">
 #include &lt;boost/parameter/keyword.hpp&gt;
 #include &lt;boost/parameter/preprocessor.hpp&gt;
@@ -573,8 +573,8 @@
 </div>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id13" id="class-template-function" name="class-template-function">class template <tt class="docutils literal"><span class="pre">function</span></tt></a></h1>
+<div class="section" id="class-template-function">
+<h1><a class="toc-backref" href="#id13">class template <tt class="docutils literal"><span class="pre">function</span></tt></a></h1>
 <p>Defines a named parameter enabled member function.</p>
 <pre class="literal-block">
 template &lt;class Fwd, class ParameterSpecs&gt;
@@ -585,10 +585,10 @@
 };
 </pre>
 <!-- @ignore() -->
-<div class="section">
-<h2><a id="function-requirements" name="function-requirements"><tt class="docutils literal"><span class="pre">function</span></tt> requirements</a></h2>
+<div class="section" id="function-requirements">
+<h2><tt class="docutils literal"><span class="pre">function</span></tt> requirements</h2>
 <ul>
-<li><p class="first"><tt class="docutils literal"><span class="pre">ParameterSpecs</span></tt> is an <a class="reference" href="../../../mpl/doc/refmanual/sequences.html">MPL sequence</a> where each element
+<li><p class="first"><tt class="docutils literal"><span class="pre">ParameterSpecs</span></tt> is an <a class="reference external" href="../../../mpl/doc/refmanual/sequences.html">MPL sequence</a> where each element
 except the first models <span class="concept">ParameterSpec</span>. The first element
 is the result type of <tt class="docutils literal"><span class="pre">c.f(…)</span></tt>, where <tt class="docutils literal"><span class="pre">f</span></tt> is the member
 function.</p>
@@ -625,8 +625,8 @@
 </li>
 </ul>
 </div>
-<div class="section">
-<h2><a id="id5" name="id5">Example</a></h2>
+<div class="section" id="id5">
+<h2>Example</h2>
 <p>This example exports a member function <tt class="docutils literal"><span class="pre">f(int</span> <span class="pre">x,</span> <span class="pre">int</span> <span class="pre">y</span> <span class="pre">=</span> <span class="pre">…)</span></tt> to Python. The
 sequence of <span class="concept">ParameterSpec</span>'s <tt class="docutils literal"><span class="pre">mpl::vector2&lt;tag::x(int),</span> <span class="pre">tag::y*(int)&gt;</span></tt> has
 an <strong>arity range</strong> of [2,2], so we only need one forwarding overload.</p>
@@ -689,18 +689,18 @@
 </div>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id14" id="function-template-def" name="function-template-def">function template <tt class="docutils literal"><span class="pre">def</span></tt></a></h1>
+<div class="section" id="function-template-def">
+<h1><a class="toc-backref" href="#id14">function template <tt class="docutils literal"><span class="pre">def</span></tt></a></h1>
 <p>Defines a named parameter enabled free function in the current Python scope.</p>
 <pre class="literal-block">
 template &lt;class Fwd, class ParameterSpecs&gt;
 void def(char const* name);
 </pre>
 <!-- @ignore() -->
-<div class="section">
-<h2><a id="def-requirements" name="def-requirements"><tt class="docutils literal"><span class="pre">def</span></tt> requirements</a></h2>
+<div class="section" id="def-requirements">
+<h2><tt class="docutils literal"><span class="pre">def</span></tt> requirements</h2>
 <ul>
-<li><p class="first"><tt class="docutils literal"><span class="pre">ParameterSpecs</span></tt> is an <a class="reference" href="../../../mpl/doc/refmanual/sequences.html">MPL sequence</a> where each element
+<li><p class="first"><tt class="docutils literal"><span class="pre">ParameterSpecs</span></tt> is an <a class="reference external" href="../../../mpl/doc/refmanual/sequences.html">MPL sequence</a> where each element
 except the first models <span class="concept">ParameterSpec</span>. The first element
 is the result type of <tt class="docutils literal"><span class="pre">f(…)</span></tt>, where <tt class="docutils literal"><span class="pre">f</span></tt> is the function.</p>
 </li>
@@ -734,8 +734,8 @@
 </li>
 </ul>
 </div>
-<div class="section">
-<h2><a id="id6" name="id6">Example</a></h2>
+<div class="section" id="id6">
+<h2>Example</h2>
 <p>This example exports a function <tt class="docutils literal"><span class="pre">f(int</span> <span class="pre">x,</span> <span class="pre">int</span> <span class="pre">y</span> <span class="pre">=</span> <span class="pre">…)</span></tt> to Python. The
 sequence of <span class="concept">ParameterSpec</span>'s <tt class="docutils literal"><span class="pre">mpl::vector2&lt;tag::x(int),</span> <span class="pre">tag::y*(int)&gt;</span></tt> has
 an <strong>arity range</strong> of [2,2], so we only need one forwarding overload.</p>
@@ -771,16 +771,16 @@
 <!-- again, the undefined ``fwd`` identifier. -->
 </div>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id15" id="portability" name="portability">Portability</a></h1>
+<div class="section" id="portability">
+<h1><a class="toc-backref" href="#id15">Portability</a></h1>
 <p>The Boost.Parameter Python binding library requires <em>partial template
 specialization</em>.</p>
 </div>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2007-01-03 16:40 UTC.
-Generated by <a class="reference" href="
http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
+Generated on: 2008-06-26 21:51 UTC.
+Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
 </body>

Modified: branches/proto/v4/libs/parameter/doc/html/reference.html
==============================================================================
--- branches/proto/v4/libs/parameter/doc/html/reference.html (original)
+++ branches/proto/v4/libs/parameter/doc/html/reference.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.6: http://docutils.sourceforge.net/" />
 <title>The Boost Parameter Library Reference Documentation</title>
 <meta name="authors" content="David Abrahams Daniel Wallin" />
 <meta name="organization" content="Boost Consulting" />
@@ -22,103 +22,103 @@
 <td>David Abrahams
 <br />Daniel Wallin</td></tr>
 <tr><th class="docinfo-name">Contact:</th>
-<td><a class="first reference" href="mailto:dave&#64;boost-consulting.com">dave&#64;boost-consulting.com</a>, <a class="last reference" href="mailto:dalwan01&#64;student.umu.se">dalwan01&#64;student.umu.se</a></td></tr>
+<td><a class="first reference external" href="mailto:dave&#64;boost-consulting.com">dave&#64;boost-consulting.com</a>, <a class="last reference external" href="mailto:dalwan01&#64;student.umu.se">dalwan01&#64;student.umu.se</a></td></tr>
 <tr><th class="docinfo-name">Organization:</th>
-<td><a class="first last reference" href="http://www.boost-consulting.com">Boost Consulting</a></td></tr>
+<td><a class="first last reference external" href="http://www.boost-consulting.com">Boost Consulting</a></td></tr>
 <tr><th class="docinfo-name">Date:</th>
 <td>2005-07-17</td></tr>
 <tr><th class="docinfo-name">Copyright:</th>
 <td>Copyright David Abrahams, Daniel Wallin
 2005. Distributed under the Boost Software License,
 Version 1.0. (See accompanying file LICENSE_1_0.txt
-or copy at <a class="reference" href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt>)</td></tr>
+or copy at <a class="reference external" href="
http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt>)</td></tr>
 </tbody>
 </table>
-<p><a class="reference" href="../../../../index.htm"><img alt="Boost" src="../../../../boost.png" /></a></p>
+<p><a class="reference external" href="../../../../index.htm"><img alt="Boost" src="../../../../boost.png" /></a></p>
 <hr class="docutils" />
-<div class="contents topic">
-<p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
 <ul class="auto-toc simple">
-<li><a class="reference" href="#preliminaries" id="id30" name="id30">1&nbsp;&nbsp;&nbsp;Preliminaries</a><ul class="auto-toc">
-<li><a class="reference" href="#namespaces" id="id31" name="id31">1.1&nbsp;&nbsp;&nbsp;Namespaces</a></li>
-<li><a class="reference" href="#exceptions" id="id32" name="id32">1.2&nbsp;&nbsp;&nbsp;Exceptions</a></li>
-<li><a class="reference" href="#thread-safety" id="id33" name="id33">1.3&nbsp;&nbsp;&nbsp;Thread Safety</a></li>
-<li><a class="reference" href="#typography" id="id34" name="id34">1.4&nbsp;&nbsp;&nbsp;Typography</a></li>
+<li><a class="reference internal" href="#preliminaries" id="id30">1&nbsp;&nbsp;&nbsp;Preliminaries</a><ul class="auto-toc">
+<li><a class="reference internal" href="#namespaces" id="id31">1.1&nbsp;&nbsp;&nbsp;Namespaces</a></li>
+<li><a class="reference internal" href="#exceptions" id="id32">1.2&nbsp;&nbsp;&nbsp;Exceptions</a></li>
+<li><a class="reference internal" href="#thread-safety" id="id33">1.3&nbsp;&nbsp;&nbsp;Thread Safety</a></li>
+<li><a class="reference internal" href="#typography" id="id34">1.4&nbsp;&nbsp;&nbsp;Typography</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#terminology" id="id35" name="id35">2&nbsp;&nbsp;&nbsp;Terminology</a></li>
-<li><a class="reference" href="#concepts" id="id36" name="id36">3&nbsp;&nbsp;&nbsp;Concepts</a><ul class="auto-toc">
-<li><a class="reference" href="#argumentpack" id="id37" name="id37">3.1&nbsp;&nbsp;&nbsp;<span class="concept">ArgumentPack</span></a></li>
-<li><a class="reference" href="#id5" id="id38" name="id38">3.2&nbsp;&nbsp;&nbsp;<span class="concept">ParameterSpec</span></a></li>
+<li><a class="reference internal" href="#terminology" id="id35">2&nbsp;&nbsp;&nbsp;Terminology</a></li>
+<li><a class="reference internal" href="#concepts" id="id36">3&nbsp;&nbsp;&nbsp;Concepts</a><ul class="auto-toc">
+<li><a class="reference internal" href="#argumentpack" id="id37">3.1&nbsp;&nbsp;&nbsp;<span class="concept">ArgumentPack</span></a></li>
+<li><a class="reference internal" href="#id5" id="id38">3.2&nbsp;&nbsp;&nbsp;<span class="concept">ParameterSpec</span></a></li>
 </ul>
 </li>
-<li><a class="reference" href="#class-templates" id="id39" name="id39">4&nbsp;&nbsp;&nbsp;Class Templates</a><ul class="auto-toc">
-<li><a class="reference" href="#id7" id="id40" name="id40">4.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">keyword</span></tt></a></li>
-<li><a class="reference" href="#parameters" id="id41" name="id41">4.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">parameters</span></tt></a></li>
-<li><a class="reference" href="#optional-required" id="id42" name="id42">4.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">optional</span></tt>, <tt class="docutils literal"><span class="pre">required</span></tt></a></li>
-<li><a class="reference" href="#deduced" id="id43" name="id43">4.4&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">deduced</span></tt></a></li>
+<li><a class="reference internal" href="#class-templates" id="id39">4&nbsp;&nbsp;&nbsp;Class Templates</a><ul class="auto-toc">
+<li><a class="reference internal" href="#id7" id="id40">4.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">keyword</span></tt></a></li>
+<li><a class="reference internal" href="#parameters" id="id41">4.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">parameters</span></tt></a></li>
+<li><a class="reference internal" href="#optional-required" id="id42">4.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">optional</span></tt>, <tt class="docutils literal"><span class="pre">required</span></tt></a></li>
+<li><a class="reference internal" href="#deduced" id="id43">4.4&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">deduced</span></tt></a></li>
 </ul>
 </li>
-<li><a class="reference" href="#metafunctions" id="id44" name="id44">5&nbsp;&nbsp;&nbsp;Metafunctions</a><ul class="auto-toc">
-<li><a class="reference" href="#binding" id="id45" name="id45">5.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">binding</span></tt></a></li>
-<li><a class="reference" href="#lazy-binding" id="id46" name="id46">5.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">lazy_binding</span></tt></a></li>
-<li><a class="reference" href="#value-type" id="id47" name="id47">5.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">value_type</span></tt></a></li>
+<li><a class="reference internal" href="#metafunctions" id="id44">5&nbsp;&nbsp;&nbsp;Metafunctions</a><ul class="auto-toc">
+<li><a class="reference internal" href="#binding" id="id45">5.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">binding</span></tt></a></li>
+<li><a class="reference internal" href="#lazy-binding" id="id46">5.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">lazy_binding</span></tt></a></li>
+<li><a class="reference internal" href="#value-type" id="id47">5.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">value_type</span></tt></a></li>
 </ul>
 </li>
-<li><a class="reference" href="#code-generation-macros" id="id48" name="id48">6&nbsp;&nbsp;&nbsp;Code Generation Macros</a><ul class="auto-toc">
-<li><a class="reference" href="#boost-parameter-function-result-name-tag-namespace-arguments" id="id49" name="id49">6.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUNCTION(result,name,tag_namespace,arguments)</span></tt></a></li>
-<li><a class="reference" href="#boost-parameter-member-function-result-name-tag-namespace-arguments" id="id50" name="id50">6.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MEMBER_FUNCTION(result,name,tag_namespace,arguments)</span></tt></a></li>
-<li><a class="reference" href="#boost-parameter-constructor-cls-impl-tag-namespace-arguments" id="id51" name="id51">6.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_CONSTRUCTOR(cls,</span> <span class="pre">impl,</span> <span class="pre">tag_namespace,</span> <span class="pre">arguments)</span></tt></a></li>
-<li><a class="reference" href="#boost-parameter-name-name" id="id52" name="id52">6.4&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_NAME(name)</span></tt></a></li>
-<li><a class="reference" href="#boost-parameter-template-keyword-name" id="id53" name="id53">6.5&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_TEMPLATE_KEYWORD(name)</span></tt></a></li>
-<li><a class="reference" href="#boost-parameter-fun-r-n-l-h-p" id="id54" name="id54">6.6&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUN(r,n,l,h,p)</span></tt></a></li>
-<li><a class="reference" href="#boost-parameter-keyword-n-k" id="id55" name="id55">6.7&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_KEYWORD(n,k)</span></tt></a></li>
-<li><a class="reference" href="#boost-parameter-match-p-a-x" id="id56" name="id56">6.8&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MATCH(p,a,x)</span></tt></a></li>
+<li><a class="reference internal" href="#code-generation-macros" id="id48">6&nbsp;&nbsp;&nbsp;Code Generation Macros</a><ul class="auto-toc">
+<li><a class="reference internal" href="#boost-parameter-function-result-name-tag-namespace-arguments" id="id49">6.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUNCTION(result,name,tag_namespace,arguments)</span></tt></a></li>
+<li><a class="reference internal" href="#boost-parameter-member-function-result-name-tag-namespace-arguments" id="id50">6.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MEMBER_FUNCTION(result,name,tag_namespace,arguments)</span></tt></a></li>
+<li><a class="reference internal" href="#boost-parameter-constructor-cls-impl-tag-namespace-arguments" id="id51">6.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_CONSTRUCTOR(cls,</span> <span class="pre">impl,</span> <span class="pre">tag_namespace,</span> <span class="pre">arguments)</span></tt></a></li>
+<li><a class="reference internal" href="#boost-parameter-name-name" id="id52">6.4&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_NAME(name)</span></tt></a></li>
+<li><a class="reference internal" href="#boost-parameter-template-keyword-name" id="id53">6.5&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_TEMPLATE_KEYWORD(name)</span></tt></a></li>
+<li><a class="reference internal" href="#boost-parameter-fun-r-n-l-h-p" id="id54">6.6&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUN(r,n,l,h,p)</span></tt></a></li>
+<li><a class="reference internal" href="#boost-parameter-keyword-n-k" id="id55">6.7&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_KEYWORD(n,k)</span></tt></a></li>
+<li><a class="reference internal" href="#boost-parameter-match-p-a-x" id="id56">6.8&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MATCH(p,a,x)</span></tt></a></li>
 </ul>
 </li>
-<li><a class="reference" href="#configuration-macros" id="id57" name="id57">7&nbsp;&nbsp;&nbsp;Configuration Macros</a><ul class="auto-toc">
-<li><a class="reference" href="#boost-parameter-max-arity" id="id58" name="id58">7.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MAX_ARITY</span></tt></a></li>
+<li><a class="reference internal" href="#configuration-macros" id="id57">7&nbsp;&nbsp;&nbsp;Configuration Macros</a><ul class="auto-toc">
+<li><a class="reference internal" href="#boost-parameter-max-arity" id="id58">7.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MAX_ARITY</span></tt></a></li>
 </ul>
 </li>
-<li><a class="reference" href="#tutorial" id="id59" name="id59">8&nbsp;&nbsp;&nbsp;Tutorial</a></li>
+<li><a class="reference internal" href="#tutorial" id="id59">8&nbsp;&nbsp;&nbsp;Tutorial</a></li>
 </ul>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id30" id="preliminaries" name="preliminaries">1&nbsp;&nbsp;&nbsp;Preliminaries</a></h1>
+<div class="section" id="preliminaries">
+<h1><a class="toc-backref" href="#id30">1&nbsp;&nbsp;&nbsp;Preliminaries</a></h1>
 <p>This section covers some basic information you'll need to know in
 order to understand this reference</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id31" id="namespaces" name="namespaces">1.1&nbsp;&nbsp;&nbsp;Namespaces</a></h2>
+<div class="section" id="namespaces">
+<h2><a class="toc-backref" href="#id31">1.1&nbsp;&nbsp;&nbsp;Namespaces</a></h2>
 <p>In this document, all unqualified identifiers should be assumed to
 be defined in namespace <tt class="docutils literal"><span class="pre">boost::parameter</span></tt> unless otherwise
 specified.</p>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id32" id="exceptions" name="exceptions">1.2&nbsp;&nbsp;&nbsp;Exceptions</a></h2>
+<div class="section" id="exceptions">
+<h2><a class="toc-backref" href="#id32">1.2&nbsp;&nbsp;&nbsp;Exceptions</a></h2>
 <p>No operation described in this document
 throws an exception unless otherwise specified.</p>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id33" id="thread-safety" name="thread-safety">1.3&nbsp;&nbsp;&nbsp;Thread Safety</a></h2>
+<div class="section" id="thread-safety">
+<h2><a class="toc-backref" href="#id33">1.3&nbsp;&nbsp;&nbsp;Thread Safety</a></h2>
 <p>All components of this library can be used safely from multiple
-threads without synchronization.<a class="footnote-reference" href="#thread" id="id2" name="id2"><sup>1</sup></a></p>
+threads without synchronization.<a class="footnote-reference" href="#thread" id="id2"><sup>1</sup></a></p>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id34" id="typography" name="typography">1.4&nbsp;&nbsp;&nbsp;Typography</a></h2>
-<p>Names written in <span class="concept">sans serif type</span> represent <a class="reference" href="../../../../more/generic_programming.html#concept">concepts</a>.</p>
+<div class="section" id="typography">
+<h2><a class="toc-backref" href="#id34">1.4&nbsp;&nbsp;&nbsp;Typography</a></h2>
+<p>Names written in <span class="concept">sans serif type</span> represent <a class="reference external" href="
http://www.boost.org/more/generic_programming.html#concept">concepts</a>.</p>
 <p>In code blocks, <em>italic type</em> represents unspecified text that
 satisfies the requirements given in the detailed description that
 follows the code block.</p>
 <p>In a specification of the tokens generated by a macro, <strong>bold
 type</strong> is used to highlight the position of the expanded macro
 argument in the result.</p>
-<p>The special character β represents the value of <a class="reference" href="#boost-parameter-max-arity"><tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MAX_ARITY</span></tt></a>.</p>
+<p>The special character β represents the value of <a class="reference internal" href="#boost-parameter-max-arity"><tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MAX_ARITY</span></tt></a>.</p>
 </div>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id35" id="terminology" name="terminology">2&nbsp;&nbsp;&nbsp;Terminology</a></h1>
+<div class="section" id="terminology">
+<h1><a class="toc-backref" href="#id35">2&nbsp;&nbsp;&nbsp;Terminology</a></h1>
 <dl class="docutils" id="kw">
 <dt>keyword</dt>
 <dd>The name of a function parameter.</dd>
@@ -136,15 +136,15 @@
 </dl>
 <span class="target" id="tag-type"></span><dl class="docutils">
 <dt>tag type</dt>
-<dd>Shorthand for “<a class="reference" href="#keyword-tag-type">keyword tag type</a>.”</dd>
+<dd>Shorthand for “<a class="reference internal" href="#keyword-tag-type">keyword tag type</a>.”</dd>
 </dl>
 <span class="target" id="keyword-object"></span><dl class="docutils">
 <dt>keyword object</dt>
-<dd>An instance of <a class="reference" href="#keyword"><tt class="docutils literal"><span class="pre">keyword</span></tt></a> <tt class="docutils literal"><span class="pre">&lt;T&gt;</span></tt> for some <a class="reference" href="#tag-type">tag type</a> <tt class="docutils literal"><span class="pre">T</span></tt>.</dd>
+<dd>An instance of <a class="reference internal" href="#keyword"><tt class="docutils literal"><span class="pre">keyword</span></tt></a> <tt class="docutils literal"><span class="pre">&lt;T&gt;</span></tt> for some <a class="reference internal" href="#tag-type">tag type</a> <tt class="docutils literal"><span class="pre">T</span></tt>.</dd>
 </dl>
 <span class="target" id="tagged-reference"></span><dl class="docutils">
 <dt>tagged reference</dt>
-<dd><p class="first">An object whose type is associated with a <a class="reference" href="#keyword-tag-type">keyword tag type</a> (the
+<dd><p class="first">An object whose type is associated with a <a class="reference internal" href="#keyword-tag-type">keyword tag type</a> (the
 object's <em>keyword</em>), and that holds a reference (to the object's
 <em>value</em>).</p>
 <p class="last">As a shorthand, a “tagged reference to <tt class="docutils literal"><span class="pre">x</span></tt>” means a tagged
@@ -153,17 +153,17 @@
 </dl>
 <span class="target" id="tagged-default"></span><dl class="docutils">
 <dt>tagged default</dt>
-<dd>A <a class="reference" href="#tagged-reference">tagged reference</a> whose <em>value</em> represents the value of a
+<dd>A <a class="reference internal" href="#tagged-reference">tagged reference</a> whose <em>value</em> represents the value of a
 default argument.</dd>
 </dl>
 <span class="target" id="tagged-lazy-default"></span><dl class="docutils">
 <dt>tagged lazy default</dt>
-<dd>A <a class="reference" href="#tagged-reference">tagged reference</a> whose <em>value</em>, when invoked with no
+<dd>A <a class="reference internal" href="#tagged-reference">tagged reference</a> whose <em>value</em>, when invoked with no
 arguments, computes a default argument value.</dd>
 </dl>
 <span class="target" id="intended-argument-type"></span><dl class="docutils">
 <dt>intended argument type</dt>
-<dd>The <em>intended argument type</em> of a single-element <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> is the
+<dd>The <em>intended argument type</em> of a single-element <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> is the
 type of its element's <em>value</em>. The intended argument type of any other
 type <tt class="docutils literal"><span class="pre">X</span></tt> is <tt class="docutils literal"><span class="pre">X</span></tt> itself.</dd>
 </dl>
@@ -171,29 +171,29 @@
 <p class="first admonition-title">Note</p>
 <p class="last">In this reference, we will use concept names (and other names)
 to describe both types and objects, depending on context. So
-for example, “an <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a>” can refer to a type that
-models <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <em>or</em> an object of such a type.</p>
+for example, “an <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a>” can refer to a type that
+models <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <em>or</em> an object of such a type.</p>
 </div>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id36" id="concepts" name="concepts">3&nbsp;&nbsp;&nbsp;Concepts</a></h1>
-<p>This section describes the generic type <a class="reference" href="../../../../more/generic_programming.html#concept">concepts</a> used by the Parameter library.</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id37" id="argumentpack" name="argumentpack">3.1&nbsp;&nbsp;&nbsp;<span class="concept">ArgumentPack</span></a></h2>
-<p>An <span class="concept">ArgumentPack</span> is a collection of <a class="reference" href="#tagged-reference">tagged reference</a>s to the
+<div class="section" id="concepts">
+<h1><a class="toc-backref" href="#id36">3&nbsp;&nbsp;&nbsp;Concepts</a></h1>
+<p>This section describes the generic type <a class="reference external" href="http://www.boost.org/more/generic_programming.html#concept">concepts</a> used by the Parameter library.</p>
+<div class="section" id="argumentpack">
+<h2><a class="toc-backref" href="#id37">3.1&nbsp;&nbsp;&nbsp;<span class="concept">ArgumentPack</span></a></h2>
+<p>An <span class="concept">ArgumentPack</span> is a collection of <a class="reference internal" href="#tagged-reference">tagged reference</a>s to the
 actual arguments passed to a function. Every <span class="concept">ArgumentPack</span> is
-also a valid MPL <a class="reference" href="../../../mpl/doc/refmanual/forward-sequence.html"><span class="concept">Forward Sequence</span></a> consisting of the <a class="reference" href="#keyword-tag-type">keyword tag type</a>s in its <a class="reference" href="#tagged-reference">tagged reference</a>s.</p>
-<div class="section">
-<h3><a id="requirements" name="requirements">Requirements</a></h3>
+also a valid MPL <a class="reference external" href="../../../mpl/doc/refmanual/forward-sequence.html"><span class="concept">Forward Sequence</span></a> consisting of the <a class="reference internal" href="#keyword-tag-type">keyword tag type</a>s in its <a class="reference internal" href="#tagged-reference">tagged reference</a>s.</p>
+<div class="section" id="requirements">
+<h3>Requirements</h3>
 <p>In the table below,</p>
 <ul class="simple">
 <li><tt class="docutils literal"><span class="pre">A</span></tt> is a model of <span class="concept">ArgumentPack</span></li>
 <li><tt class="docutils literal"><span class="pre">x</span></tt> is an instance of <tt class="docutils literal"><span class="pre">A</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">u</span></tt> is a <a class="reference" href="#keyword-object">keyword object</a> of type <tt class="docutils literal"><span class="pre">K</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">v</span></tt> is a <a class="reference" href="#tagged-default">tagged default</a> with <a class="reference" href="#tag-type">tag type</a> <tt class="docutils literal"><span class="pre">L</span></tt> and <em>value</em> of type <tt class="docutils literal"><span class="pre">D</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">w</span></tt> is a <a class="reference" href="#tagged-lazy-default">tagged lazy default</a> with <a class="reference" href="#tag-type">tag type</a> <tt class="docutils literal"><span class="pre">M</span></tt> and <em>value</em> of type <tt class="docutils literal"><span class="pre">E</span> <span class="pre">const</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">z</span></tt> is an <span class="concept">ArgumentPack</span> containing a single element (as created by <a class="reference" href="#keyword"><tt class="docutils literal"><span class="pre">keyword</span></tt></a><tt class="docutils literal"><span class="pre">&lt;…&gt;::operator=</span></tt>)</li>
+<li><tt class="docutils literal"><span class="pre">u</span></tt> is a <a class="reference internal" href="#keyword-object">keyword object</a> of type <tt class="docutils literal"><span class="pre">K</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">v</span></tt> is a <a class="reference internal" href="#tagged-default">tagged default</a> with <a class="reference internal" href="#tag-type">tag type</a> <tt class="docutils literal"><span class="pre">L</span></tt> and <em>value</em> of type <tt class="docutils literal"><span class="pre">D</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">w</span></tt> is a <a class="reference internal" href="#tagged-lazy-default">tagged lazy default</a> with <a class="reference internal" href="#tag-type">tag type</a> <tt class="docutils literal"><span class="pre">M</span></tt> and <em>value</em> of type <tt class="docutils literal"><span class="pre">E</span> <span class="pre">const</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">z</span></tt> is an <span class="concept">ArgumentPack</span> containing a single element (as created by <a class="reference internal" href="#keyword"><tt class="docutils literal"><span class="pre">keyword</span></tt></a><tt class="docutils literal"><span class="pre">&lt;…&gt;::operator=</span></tt>)</li>
 </ul>
 <p>Any exceptions are thrown from the invocation of <tt class="docutils literal"><span class="pre">w</span></tt>'s <em>value</em>
 will be propagated to the caller.</p>
@@ -217,7 +217,7 @@
 <td><tt class="docutils literal"><span class="pre">binding&lt;A,K&gt;::type</span></tt></td>
 <td><tt class="docutils literal"><span class="pre">x</span></tt> contains an
 element <em>b</em> whose
-<a class="reference" href="#kw">keyword</a> is <tt class="docutils literal"><span class="pre">K</span></tt></td>
+<a class="reference internal" href="#kw">keyword</a> is <tt class="docutils literal"><span class="pre">K</span></tt></td>
 <td>Returns <em>b</em>'s <em>value</em> (by
 reference).</td>
 </tr>
@@ -225,7 +225,7 @@
 <td><tt class="docutils literal"><span class="pre">binding&lt;A,L,D&gt;::type</span></tt></td>
 <td><em>none</em></td>
 <td>If <tt class="docutils literal"><span class="pre">x</span></tt> contains an element <em>b</em> whose
-<a class="reference" href="#kw">keyword</a> is the same as <tt class="docutils literal"><span class="pre">u</span></tt>'s,
+<a class="reference internal" href="#kw">keyword</a> is the same as <tt class="docutils literal"><span class="pre">u</span></tt>'s,
 returns <em>b</em>'s <em>value</em> (by
 reference). Otherwise, returns <tt class="docutils literal"><span class="pre">u</span></tt>'s <em>value</em>.</td>
 </tr>
@@ -233,14 +233,14 @@
 <td><tt class="docutils literal"><span class="pre">lazy_binding&lt;A,M,E&gt;::type</span></tt></td>
 <td><em>none</em></td>
 <td>If <tt class="docutils literal"><span class="pre">x</span></tt> contains an element <em>b</em> whose
-<a class="reference" href="#kw">keyword</a> is the same as <tt class="docutils literal"><span class="pre">w</span></tt>'s,
+<a class="reference internal" href="#kw">keyword</a> is the same as <tt class="docutils literal"><span class="pre">w</span></tt>'s,
 returns <em>b</em>'s <em>value</em> (by
 reference). Otherwise, invokes <tt class="docutils literal"><span class="pre">w</span></tt>'s <em>value</em> and returns the result.</td>
 </tr>
 <tr><td><tt class="docutils literal"><span class="pre">x,</span> <span class="pre">z</span></tt></td>
 <td>Model of <span class="concept">ArgumentPack</span></td>
 <td><em>none</em></td>
-<td>Returns an <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing
+<td>Returns an <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing
 all the elements of both <tt class="docutils literal"><span class="pre">x</span></tt> and
 <tt class="docutils literal"><span class="pre">z</span></tt>.</td>
 </tr>
@@ -248,17 +248,17 @@
 </table>
 </div>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id38" id="id5" name="id5"><span id="parameterspec"></span>3.2&nbsp;&nbsp;&nbsp;<span class="concept">ParameterSpec</span></a></h2>
+<div class="section" id="id5">
+<span id="parameterspec"></span><h2><a class="toc-backref" href="#id38">3.2&nbsp;&nbsp;&nbsp;<span class="concept">ParameterSpec</span></a></h2>
 <p>A <span class="concept">ParameterSpec</span> describes the type requirements for arguments
-corresponding to a given <a class="reference" href="#kw">keyword</a> and indicates whether the argument
+corresponding to a given <a class="reference internal" href="#kw">keyword</a> and indicates whether the argument
 is optional or required. The table below details the allowed forms
 and describes their condition for satisfaction by an actual
 argument type. In each row,</p>
 <ul class="simple" id="conditions">
-<li><tt class="docutils literal"><span class="pre">K</span></tt> is the <span class="concept">ParameterSpec</span>'s <a class="reference" href="#keyword-tag-type">keyword tag type</a></li>
-<li><tt class="docutils literal"><span class="pre">A</span></tt> is an <a class="reference" href="#intended-argument-type">intended argument type</a> associated with <tt class="docutils literal"><span class="pre">K</span></tt>, if any</li>
-<li><tt class="docutils literal"><span class="pre">F</span></tt> is a unary <a class="reference" href="../../../mpl/doc/refmanual/lambda-expression.html">MPL lambda expression</a></li>
+<li><tt class="docutils literal"><span class="pre">K</span></tt> is the <span class="concept">ParameterSpec</span>'s <a class="reference internal" href="#keyword-tag-type">keyword tag type</a></li>
+<li><tt class="docutils literal"><span class="pre">A</span></tt> is an <a class="reference internal" href="#intended-argument-type">intended argument type</a> associated with <tt class="docutils literal"><span class="pre">K</span></tt>, if any</li>
+<li><tt class="docutils literal"><span class="pre">F</span></tt> is a unary <a class="reference external" href="../../../mpl/doc/refmanual/lambda-expression.html">MPL lambda expression</a></li>
 </ul>
 <table border="1" class="docutils">
 <caption><span class="concept">ParameterSpec</span> allowed forms and conditions of satisfaction</caption>
@@ -278,33 +278,33 @@
 <td>no</td>
 <td><em>n/a</em></td>
 </tr>
-<tr><td><a class="reference" href="#optional"><tt class="docutils literal"><span class="pre">optional</span></tt></a><tt class="docutils literal"><span class="pre">&lt;K,F&gt;</span></tt></td>
+<tr><td><a class="reference internal" href="#optional"><tt class="docutils literal"><span class="pre">optional</span></tt></a><tt class="docutils literal"><span class="pre">&lt;K,F&gt;</span></tt></td>
 <td>no</td>
 <td><tt class="docutils literal"><span class="pre">mpl::apply&lt;F,A&gt;::type::value</span></tt>
 is <tt class="docutils literal"><span class="pre">true</span></tt>.</td>
 </tr>
-<tr><td><a class="reference" href="#required"><tt class="docutils literal"><span class="pre">required</span></tt></a><tt class="docutils literal"><span class="pre">&lt;K,F&gt;</span></tt></td>
+<tr><td><a class="reference internal" href="#required"><tt class="docutils literal"><span class="pre">required</span></tt></a><tt class="docutils literal"><span class="pre">&lt;K,F&gt;</span></tt></td>
 <td>yes</td>
 <td><tt class="docutils literal"><span class="pre">mpl::apply&lt;F,A&gt;::type::value</span></tt>
 is <tt class="docutils literal"><span class="pre">true</span></tt>.</td>
 </tr>
 </tbody>
 </table>
-<p>The information in a <span class="concept">ParameterSpec</span> is used to <a class="reference" href="index.html#controlling-overload-resolution">limit</a> the
-arguments that will be matched by <a class="reference" href="index.html#forwarding-functions">forwarding functions</a>.</p>
+<p>The information in a <span class="concept">ParameterSpec</span> is used to <a class="reference external" href="index.html#controlling-overload-resolution">limit</a> the
+arguments that will be matched by <a class="reference external" href="index.html#forwarding-functions">forwarding functions</a>.</p>
 </div>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id39" id="class-templates" name="class-templates">4&nbsp;&nbsp;&nbsp;Class Templates</a></h1>
-<div class="section">
-<h2><a class="toc-backref" href="#id40" id="id7" name="id7"><span id="keyword"></span>4.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">keyword</span></tt></a></h2>
-<p>The type of every <a class="reference" href="#keyword-object">keyword object</a> is a specialization of <tt class="docutils literal"><span class="pre">keyword</span></tt>.</p>
+<div class="section" id="class-templates">
+<h1><a class="toc-backref" href="#id39">4&nbsp;&nbsp;&nbsp;Class Templates</a></h1>
+<div class="section" id="id7">
+<span id="keyword"></span><h2><a class="toc-backref" href="#id40">4.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">keyword</span></tt></a></h2>
+<p>The type of every <a class="reference internal" href="#keyword-object">keyword object</a> is a specialization of <tt class="docutils literal"><span class="pre">keyword</span></tt>.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/keyword.hpp">boost/parameter/keyword.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/keyword.hpp">boost/parameter/keyword.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -312,22 +312,22 @@
 template &lt;class Tag&gt;
 struct keyword
 {
- template &lt;class T&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#operator">operator=</a>(T&amp; value) const;
- template &lt;class T&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#operator">operator=</a>(T const&amp; value) const;
+ template &lt;class T&gt; <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#operator">operator=</a>(T&amp; value) const;
+ template &lt;class T&gt; <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#operator">operator=</a>(T const&amp; value) const;
 
- template &lt;class T&gt; <em>tagged default</em> <a class="reference" href="#id9">operator|</a>(T&amp; x) const;
- template &lt;class T&gt; <em>tagged default</em> <a class="reference" href="#id9">operator|</a>(T const&amp; x) const;
+ template &lt;class T&gt; <em>tagged default</em> <a class="reference internal" href="#id9">operator|</a>(T&amp; x) const;
+ template &lt;class T&gt; <em>tagged default</em> <a class="reference internal" href="#id9">operator|</a>(T const&amp; x) const;
 
- template &lt;class F&gt; <em>tagged lazy default</em> <a class="reference" href="#id10">operator||</a>(F const&amp;) const;
+ template &lt;class F&gt; <em>tagged lazy default</em> <a class="reference internal" href="#id10">operator||</a>(F const&amp;) const;
 
- static keyword&lt;Tag&gt;&amp; <a class="reference" href="#get">get</a>();
+ static keyword&lt;Tag&gt;&amp; <a class="reference internal" href="#get">get</a>();
 };
 </pre>
 <dl class="docutils" id="operator">
 <dt><tt class="docutils literal"><span class="pre">operator=</span></tt></dt>
 <dd><pre class="first literal-block">
-template &lt;class T&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator=(T&amp; value) const;
-template &lt;class T&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator=(T const&amp; value) const;
+template &lt;class T&gt; <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator=(T&amp; value) const;
+template &lt;class T&gt; <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator=(T const&amp; value) const;
 </pre>
 <table class="last docutils field-list" frame="void" rules="none">
 <col class="field-name" />
@@ -335,8 +335,8 @@
 <tbody valign="top">
 <tr class="field"><th class="field-name">Requires:</th><td class="field-body">nothing</td>
 </tr>
-<tr class="field"><th class="field-name">Returns:</th><td class="field-body">an <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing a single <a class="reference" href="#tagged-reference">tagged reference</a> to
-<tt class="docutils literal"><span class="pre">value</span></tt> with <a class="reference" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">Tag</span></tt></td>
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">an <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing a single <a class="reference internal" href="#tagged-reference">tagged reference</a> to
+<tt class="docutils literal"><span class="pre">value</span></tt> with <a class="reference internal" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">Tag</span></tt></td>
 </tr>
 </tbody>
 </table>
@@ -352,7 +352,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a <a class="reference" href="#tagged-default">tagged default</a> with <em>value</em> <tt class="docutils literal"><span class="pre">x</span></tt> and <a class="reference" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">Tag</span></tt>.</td>
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a <a class="reference internal" href="#tagged-default">tagged default</a> with <em>value</em> <tt class="docutils literal"><span class="pre">x</span></tt> and <a class="reference internal" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">Tag</span></tt>.</td>
 </tr>
 </tbody>
 </table>
@@ -367,9 +367,9 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">g()</span></tt> is valid, with type <tt class="docutils literal"><span class="pre">boost::</span></tt><a class="reference" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a><tt class="docutils literal"><span class="pre">&lt;F()&gt;::type</span></tt>.<a class="footnote-reference" href="#no-result-of" id="id11" name="id11"><sup>2</sup></a></td>
+<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">g()</span></tt> is valid, with type <tt class="docutils literal"><span class="pre">boost::</span></tt><a class="reference external" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a><tt class="docutils literal"><span class="pre">&lt;F()&gt;::type</span></tt>.<a class="footnote-reference" href="#no-result-of" id="id11"><sup>2</sup></a></td>
 </tr>
-<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a <a class="reference" href="#tagged-lazy-default">tagged lazy default</a> with <em>value</em> <tt class="docutils literal"><span class="pre">g</span></tt> and <a class="reference" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">Tag</span></tt>.</td>
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a <a class="reference internal" href="#tagged-lazy-default">tagged lazy default</a> with <em>value</em> <tt class="docutils literal"><span class="pre">g</span></tt> and <a class="reference internal" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">Tag</span></tt>.</td>
 </tr>
 </tbody>
 </table>
@@ -395,17 +395,17 @@
 </dd>
 </dl>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id41" id="parameters" name="parameters">4.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">parameters</span></tt></a></h2>
+<div class="section" id="parameters">
+<h2><a class="toc-backref" href="#id41">4.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">parameters</span></tt></a></h2>
 <p>Provides an interface for assembling the actual arguments to a
 <cite>forwarding function</cite> into an <span class="concept">ArgumentPack</span>, in which any
-<a class="reference" href="#positional">positional</a> arguments will be tagged according to the
+<a class="reference internal" href="#positional">positional</a> arguments will be tagged according to the
 corresponding template argument to <tt class="docutils literal"><span class="pre">parameters</span></tt>.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -414,28 +414,28 @@
 struct parameters
 {
     template &lt;class A0, class A1 = <em>unspecified</em>, …class Aβ = <em>unspecified</em>&gt;
- struct <a class="reference" href="#match">match</a>
+ struct <a class="reference internal" href="#match">match</a>
     {
         typedef … type;
     };
 
     template &lt;class A0&gt;
- <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#id13">operator()</a>(A0&amp; a0) const;
+ <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#id13">operator()</a>(A0&amp; a0) const;
 
     template &lt;class A0, class A1&gt;
- <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#id13">operator()</a>(A0&amp; a0, A1&amp; a1) const;
+ <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#id13">operator()</a>(A0&amp; a0, A1&amp; a1) const;
 
     <span class="vellipsis">â‹®</span>
 
     template &lt;class A0, class A1, …class Aβ&gt;
- <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#id13">operator()</a>(A0&amp; a0, A1&amp; a1, …Aβ&amp; aβ) const;
+ <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#id13">operator()</a>(A0&amp; a0, A1&amp; a1, …Aβ&amp; aβ) const;
 };
 </pre>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">P0</span></tt>, <tt class="docutils literal"><span class="pre">P1</span></tt>, … <tt class="docutils literal"><span class="pre">P</span></tt>β are models of <a class="reference" href="#parameterspec"><span class="concept">ParameterSpec</span></a>.</td>
+<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">P0</span></tt>, <tt class="docutils literal"><span class="pre">P1</span></tt>, … <tt class="docutils literal"><span class="pre">P</span></tt>β are models of <a class="reference internal" href="#parameterspec"><span class="concept">ParameterSpec</span></a>.</td>
 </tr>
 </tbody>
 </table>
@@ -446,29 +446,29 @@
 <blockquote class="last">
 <div class="line-block">
 <div class="line">let <tt class="docutils literal"><span class="pre">D0</span></tt> the set [d0, …, d<em>j</em>] of all <strong>deduced</strong> <em>parameter specs</em> in [<tt class="docutils literal"><span class="pre">P0</span></tt>, …, <tt class="docutils literal"><span class="pre">P</span></tt>β]</div>
-<div class="line"><tt class="docutils literal"><span class="pre">R</span></tt><em>i</em> is <tt class="docutils literal"><span class="pre">A</span></tt><em>i</em>'s <a class="reference" href="#intended-argument-type">intended argument type</a></div>
+<div class="line"><tt class="docutils literal"><span class="pre">R</span></tt><em>i</em> is <tt class="docutils literal"><span class="pre">A</span></tt><em>i</em>'s <a class="reference internal" href="#intended-argument-type">intended argument type</a></div>
 <div class="line"><br /></div>
-<div class="line">if <tt class="docutils literal"><span class="pre">A</span></tt><em>i</em> is a result type of <tt class="docutils literal"><span class="pre">keyword&lt;T&gt;::</span></tt><a class="reference" href="#operator"><tt class="docutils literal"><span class="pre">operator=</span></tt></a></div>
+<div class="line">if <tt class="docutils literal"><span class="pre">A</span></tt><em>i</em> is a result type of <tt class="docutils literal"><span class="pre">keyword&lt;T&gt;::</span></tt><a class="reference internal" href="#operator"><tt class="docutils literal"><span class="pre">operator=</span></tt></a></div>
 <div class="line">then</div>
 <div class="line-block">
 <div class="line"><tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> is <tt class="docutils literal"><span class="pre">T</span></tt></div>
 </div>
 <div class="line">else</div>
 <div class="line-block">
-<div class="line">if some <tt class="docutils literal"><span class="pre">A</span></tt><em>j</em> where <em>j</em>≤<em>i</em> is a result type of <tt class="docutils literal"><span class="pre">keyword&lt;T&gt;::</span></tt><a class="reference" href="#operator"><tt class="docutils literal"><span class="pre">operator=</span></tt></a></div>
+<div class="line">if some <tt class="docutils literal"><span class="pre">A</span></tt><em>j</em> where <em>j</em>≤<em>i</em> is a result type of <tt class="docutils literal"><span class="pre">keyword&lt;T&gt;::</span></tt><a class="reference internal" href="#operator"><tt class="docutils literal"><span class="pre">operator=</span></tt></a></div>
 <div class="line"><em>or</em> some <tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> in <em>j</em>≤<em>i</em> is <strong>deduced</strong></div>
 <div class="line">then</div>
 <div class="line-block">
 <div class="line">if some <em>parameter spec</em> <tt class="docutils literal"><span class="pre">d</span></tt><em>j</em> in <tt class="docutils literal"><span class="pre">D</span></tt><em>i</em> matches <tt class="docutils literal"><span class="pre">A</span></tt><em>i</em></div>
 <div class="line">then</div>
 <div class="line-block">
-<div class="line"><tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> is <tt class="docutils literal"><span class="pre">d</span></tt><em>j</em>'s <a class="reference" href="#keyword-tag-type">keyword tag type</a>.</div>
+<div class="line"><tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> is <tt class="docutils literal"><span class="pre">d</span></tt><em>j</em>'s <a class="reference internal" href="#keyword-tag-type">keyword tag type</a>.</div>
 <div class="line"><tt class="docutils literal"><span class="pre">D</span></tt><sub>i+1</sub> is <tt class="docutils literal"><span class="pre">D</span></tt><em>i</em> - [<tt class="docutils literal"><span class="pre">d</span></tt><em>j</em>]</div>
 </div>
 </div>
 <div class="line">else</div>
 <div class="line-block">
-<div class="line"><tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> is <tt class="docutils literal"><span class="pre">P</span></tt><em>i</em>'s <a class="reference" href="#keyword-tag-type">keyword tag type</a>.</div>
+<div class="line"><tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> is <tt class="docutils literal"><span class="pre">P</span></tt><em>i</em>'s <a class="reference internal" href="#keyword-tag-type">keyword tag type</a>.</div>
 </div>
 </div>
 </div>
@@ -476,7 +476,7 @@
 </div>
 <dl class="docutils" id="match">
 <dt><tt class="docutils literal"><span class="pre">match</span></tt></dt>
-<dd><p class="first">A <a class="reference" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> used to remove a <a class="reference" href="index.html#forwarding-functions">forwarding function</a> from overload resolution.</p>
+<dd><p class="first">A <a class="reference external" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> used to remove a <a class="reference external" href="index.html#forwarding-functions">forwarding function</a> from overload resolution.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
@@ -492,12 +492,12 @@
 <ul class="last simple">
 <li><tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> is the <em>unspecified</em> default</li>
 <li><strong>or</strong>, <tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> is a <em>keyword tag type</em></li>
-<li><strong>or</strong>, <tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> is <a class="reference" href="#optional"><tt class="docutils literal"><span class="pre">optional</span></tt></a> <tt class="docutils literal"><span class="pre">&lt;X,F&gt;</span></tt> and either<ul>
+<li><strong>or</strong>, <tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> is <a class="reference internal" href="#optional"><tt class="docutils literal"><span class="pre">optional</span></tt></a> <tt class="docutils literal"><span class="pre">&lt;X,F&gt;</span></tt> and either<ul>
 <li><tt class="docutils literal"><span class="pre">X</span></tt> is not <tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> for any <em>i</em>,</li>
 <li><strong>or</strong> <tt class="docutils literal"><span class="pre">X</span></tt> is some <tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> and <tt class="docutils literal"><span class="pre">mpl::apply&lt;F,R</span></tt><em>i</em><tt class="docutils literal"><span class="pre">&gt;::type::value</span></tt> is <tt class="docutils literal"><span class="pre">true</span></tt></li>
 </ul>
 </li>
-<li><strong>or</strong>, <tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> is <a class="reference" href="#required"><tt class="docutils literal"><span class="pre">required</span></tt></a> <tt class="docutils literal"><span class="pre">&lt;X,F&gt;</span></tt>, and<ul>
+<li><strong>or</strong>, <tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> is <a class="reference internal" href="#required"><tt class="docutils literal"><span class="pre">required</span></tt></a> <tt class="docutils literal"><span class="pre">&lt;X,F&gt;</span></tt>, and<ul>
 <li><tt class="docutils literal"><span class="pre">X</span></tt> is some <tt class="docutils literal"><span class="pre">K</span></tt><em>i</em>, <strong>and</strong></li>
 <li><tt class="docutils literal"><span class="pre">mpl::apply&lt;F,R</span></tt><em>i</em><tt class="docutils literal"><span class="pre">&gt;::type::value</span></tt> is <tt class="docutils literal"><span class="pre">true</span></tt></li>
 </ul>
@@ -508,20 +508,20 @@
 <dl class="docutils" id="id13">
 <dt><tt class="docutils literal"><span class="pre">operator()</span></tt></dt>
 <dd><pre class="first literal-block">
-template &lt;class A0&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator()(A0 const&amp; a0) const;
+template &lt;class A0&gt; <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator()(A0 const&amp; a0) const;
 
 <span class="vellipsis">â‹®</span>
 
-template &lt;class A0, …class Aβ&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#id13">operator()</a>(A0 const&amp; a0, …Aβ const&amp; aβ) const;
+template &lt;class A0, …class Aβ&gt; <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#id13">operator()</a>(A0 const&amp; a0, …Aβ const&amp; aβ) const;
 </pre>
 <table class="last docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">An <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing, for each <tt class="docutils literal"><span class="pre">a</span></tt><em>i</em>,</p>
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">An <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing, for each <tt class="docutils literal"><span class="pre">a</span></tt><em>i</em>,</p>
 <ul class="last simple">
 <li>if <tt class="docutils literal"><span class="pre">a</span></tt><em>i</em>, is a single-element <span class="concept">ArgumentPack</span>, its element</li>
-<li>Otherwise, a <a class="reference" href="#tagged-reference">tagged reference</a> with <a class="reference" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> and <em>value</em> <tt class="docutils literal"><span class="pre">a</span></tt><em>i</em></li>
+<li>Otherwise, a <a class="reference internal" href="#tagged-reference">tagged reference</a> with <a class="reference internal" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> and <em>value</em> <tt class="docutils literal"><span class="pre">a</span></tt><em>i</em></li>
 </ul>
 </td>
 </tr>
@@ -530,14 +530,14 @@
 </dd>
 </dl>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id42" id="optional-required" name="optional-required"><span id="required"></span><span id="optional"></span>4.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">optional</span></tt>, <tt class="docutils literal"><span class="pre">required</span></tt></a></h2>
+<div class="section" id="optional-required">
+<span id="required"></span><span id="optional"></span><h2><a class="toc-backref" href="#id42">4.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">optional</span></tt>, <tt class="docutils literal"><span class="pre">required</span></tt></a></h2>
 <p>These templates describe the requirements on a function parameter.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -546,7 +546,7 @@
 <col class="field-body" />
 <tbody valign="top">
 <tr class="field"><th class="field-name" colspan="2">Specializations model:</th></tr>
-<tr><td>&nbsp;</td><td class="field-body"><a class="reference" href="#parameterspec"><span class="concept">ParameterSpec</span></a></td>
+<tr><td>&nbsp;</td><td class="field-body"><a class="reference internal" href="#parameterspec"><span class="concept">ParameterSpec</span></a></td>
 </tr>
 </tbody>
 </table>
@@ -557,18 +557,18 @@
 template &lt;class Tag, class Predicate = <em>unspecified</em>&gt;
 struct required;
 </pre>
-<p>The default value of <tt class="docutils literal"><span class="pre">Predicate</span></tt> is an unspecified <a class="reference" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> that returns
+<p>The default value of <tt class="docutils literal"><span class="pre">Predicate</span></tt> is an unspecified <a class="reference external" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> that returns
 <tt class="docutils literal"><span class="pre">mpl::true_</span></tt> for any argument.</p>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id43" id="deduced" name="deduced">4.4&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">deduced</span></tt></a></h2>
+<div class="section" id="deduced">
+<h2><a class="toc-backref" href="#id43">4.4&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">deduced</span></tt></a></h2>
 <p>This template is used to wrap the <em>keyword tag</em> argument to
 <tt class="docutils literal"><span class="pre">optional</span></tt> or <tt class="docutils literal"><span class="pre">required</span></tt>.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -579,19 +579,19 @@
 </div>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id44" id="metafunctions" name="metafunctions">5&nbsp;&nbsp;&nbsp;Metafunctions</a></h1>
-<p>A <a class="reference" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> is conceptually a function that operates on, and
+<div class="section" id="metafunctions">
+<h1><a class="toc-backref" href="#id44">5&nbsp;&nbsp;&nbsp;Metafunctions</a></h1>
+<p>A <a class="reference external" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> is conceptually a function that operates on, and
 returns, C++ types.</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id45" id="binding" name="binding">5.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">binding</span></tt></a></h2>
+<div class="section" id="binding">
+<h2><a class="toc-backref" href="#id45">5.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">binding</span></tt></a></h2>
 <p>Returns the result type of indexing an argument pack with a
-<a class="reference" href="#keyword-tag-type">keyword tag type</a> or with a <a class="reference" href="#tagged-default">tagged default</a>.</p>
+<a class="reference internal" href="#keyword-tag-type">keyword tag type</a> or with a <a class="reference internal" href="#tagged-default">tagged default</a>.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined n:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/binding.hpp">boost/parameter/binding.hpp</a></td>
+<tr class="field"><th class="field-name">Defined n:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/binding.hpp">boost/parameter/binding.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -606,22 +606,22 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">A</span></tt> is a model of <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</td>
+<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">A</span></tt> is a model of <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</td>
 </tr>
-<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the reference type of the <a class="reference" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal"><span class="pre">A</span></tt>
-having <a class="reference" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal"><span class="pre">K</span></tt>, if any. If no such <a class="reference" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal"><span class="pre">D</span></tt>.</td>
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the reference type of the <a class="reference internal" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal"><span class="pre">A</span></tt>
+having <a class="reference internal" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal"><span class="pre">K</span></tt>, if any. If no such <a class="reference internal" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal"><span class="pre">D</span></tt>.</td>
 </tr>
 </tbody>
 </table>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id46" id="lazy-binding" name="lazy-binding">5.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">lazy_binding</span></tt></a></h2>
-<p>Returns the result type of indexing an argument pack with a <a class="reference" href="#tagged-lazy-default">tagged lazy default</a>.</p>
+<div class="section" id="lazy-binding">
+<h2><a class="toc-backref" href="#id46">5.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">lazy_binding</span></tt></a></h2>
+<p>Returns the result type of indexing an argument pack with a <a class="reference internal" href="#tagged-lazy-default">tagged lazy default</a>.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/binding.hpp">boost/parameter/binding.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/binding.hpp">boost/parameter/binding.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -636,23 +636,23 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">A</span></tt> is a model of <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</td>
+<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">A</span></tt> is a model of <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</td>
 </tr>
-<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the reference type of the <a class="reference" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal"><span class="pre">A</span></tt>
-having <a class="reference" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal"><span class="pre">K</span></tt>, if any. If no such <a class="reference" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal"><span class="pre">boost::</span></tt><a class="reference" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a><tt class="docutils literal"><span class="pre">&lt;F()&gt;::type</span></tt>.<a class="footnote-reference" href="#no-result-of" id="id18" name="id18"><sup>2</sup></a></td>
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the reference type of the <a class="reference internal" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal"><span class="pre">A</span></tt>
+having <a class="reference internal" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal"><span class="pre">K</span></tt>, if any. If no such <a class="reference internal" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal"><span class="pre">boost::</span></tt><a class="reference external" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a><tt class="docutils literal"><span class="pre">&lt;F()&gt;::type</span></tt>.<a class="footnote-reference" href="#no-result-of" id="id18"><sup>2</sup></a></td>
 </tr>
 </tbody>
 </table>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id47" id="value-type" name="value-type">5.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">value_type</span></tt></a></h2>
+<div class="section" id="value-type">
+<h2><a class="toc-backref" href="#id47">5.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">value_type</span></tt></a></h2>
 <p>Returns the result type of indexing an argument pack with a
-<a class="reference" href="#keyword-tag-type">keyword tag type</a> or with a <a class="reference" href="#tagged-default">tagged default</a>.</p>
+<a class="reference internal" href="#keyword-tag-type">keyword tag type</a> or with a <a class="reference internal" href="#tagged-default">tagged default</a>.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined n:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/value_type.hpp">boost/parameter/value_type.hpp</a></td>
+<tr class="field"><th class="field-name">Defined n:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/value_type.hpp">boost/parameter/value_type.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -667,11 +667,11 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><p class="first"><tt class="docutils literal"><span class="pre">A</span></tt> is a model of <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</p>
+<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><p class="first"><tt class="docutils literal"><span class="pre">A</span></tt> is a model of <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</p>
 </td>
 </tr>
-<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">the type of the <a class="reference" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal"><span class="pre">A</span></tt>
-having <a class="reference" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal"><span class="pre">K</span></tt>, if any. If no such <a class="reference" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal"><span class="pre">D</span></tt>. Equivalent to:</p>
+<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">the type of the <a class="reference internal" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal"><span class="pre">A</span></tt>
+having <a class="reference internal" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal"><span class="pre">K</span></tt>, if any. If no such <a class="reference internal" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal"><span class="pre">D</span></tt>. Equivalent to:</p>
 <pre class="literal-block">
 typename remove_reference&lt;
   typename binding&lt;A, K, D&gt;::type
@@ -685,17 +685,17 @@
 </div>
 </div>
 <hr class="docutils" />
-<div class="section">
-<h1><a class="toc-backref" href="#id48" id="code-generation-macros" name="code-generation-macros">6&nbsp;&nbsp;&nbsp;Code Generation Macros</a></h1>
+<div class="section" id="code-generation-macros">
+<h1><a class="toc-backref" href="#id48">6&nbsp;&nbsp;&nbsp;Code Generation Macros</a></h1>
 <p>Macros in this section can be used to ease the writing of code
 using the Parameter libray by eliminating repetitive boilerplate.</p>
-<div class="section">
-<h2><a class="toc-backref" href="#id49" id="boost-parameter-function-result-name-tag-namespace-arguments" name="boost-parameter-function-result-name-tag-namespace-arguments">6.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUNCTION(result,name,tag_namespace,arguments)</span></tt></a></h2>
+<div class="section" id="boost-parameter-function-result-name-tag-namespace-arguments">
+<h2><a class="toc-backref" href="#id49">6.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUNCTION(result,name,tag_namespace,arguments)</span></tt></a></h2>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/preprocessor.hpp">boost/parameter/preprocessor.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/preprocessor.hpp">boost/parameter/preprocessor.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -729,7 +729,7 @@
 </pre>
 <p class="last"><tt class="docutils literal"><span class="pre">name</span></tt> is any valid C++ identifier. <tt class="docutils literal"><span class="pre">default-value</span></tt> is any valid
 C++ expression. <tt class="docutils literal"><span class="pre">typename</span></tt> is the name of a type.
-<tt class="docutils literal"><span class="pre">lambda-expression</span></tt> is an <a class="reference" href="../../../mpl/doc/refmanual/lambda-expression.html">MPL lambda expression</a>.</p>
+<tt class="docutils literal"><span class="pre">lambda-expression</span></tt> is an <a class="reference external" href="../../../mpl/doc/refmanual/lambda-expression.html">MPL lambda expression</a>.</p>
 </td>
 </tr>
 </tbody>
@@ -813,25 +813,25 @@
 </dd>
 </dl>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id50" id="boost-parameter-member-function-result-name-tag-namespace-arguments" name="boost-parameter-member-function-result-name-tag-namespace-arguments">6.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MEMBER_FUNCTION(result,name,tag_namespace,arguments)</span></tt></a></h2>
+<div class="section" id="boost-parameter-member-function-result-name-tag-namespace-arguments">
+<h2><a class="toc-backref" href="#id50">6.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MEMBER_FUNCTION(result,name,tag_namespace,arguments)</span></tt></a></h2>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/preprocessor.hpp">boost/parameter/preprocessor.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/preprocessor.hpp">boost/parameter/preprocessor.hpp</a></td>
 </tr>
 </tbody>
 </table>
 <p>See <tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUNCTION(result,name,tag_namespace,arguments)</span></tt></p>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id51" id="boost-parameter-constructor-cls-impl-tag-namespace-arguments" name="boost-parameter-constructor-cls-impl-tag-namespace-arguments">6.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_CONSTRUCTOR(cls,</span> <span class="pre">impl,</span> <span class="pre">tag_namespace,</span> <span class="pre">arguments)</span></tt></a></h2>
+<div class="section" id="boost-parameter-constructor-cls-impl-tag-namespace-arguments">
+<h2><a class="toc-backref" href="#id51">6.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_CONSTRUCTOR(cls,</span> <span class="pre">impl,</span> <span class="pre">tag_namespace,</span> <span class="pre">arguments)</span></tt></a></h2>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/preprocessor.hpp">boost/parameter/preprocessor.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/preprocessor.hpp">boost/parameter/preprocessor.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -888,8 +888,8 @@
 </dd>
 </dl>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id52" id="boost-parameter-name-name" name="boost-parameter-name-name">6.4&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_NAME(name)</span></tt></a></h2>
+<div class="section" id="boost-parameter-name-name">
+<h2><a class="toc-backref" href="#id52">6.4&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_NAME(name)</span></tt></a></h2>
 <p>Declares a tag-type and keyword object.</p>
 <p>Expands to:</p>
 <p><strong>If</strong> <em>name</em> is of the form:</p>
@@ -935,8 +935,8 @@
     = ::boost::parameter::keyword&lt;tag::<em>name</em>&gt;::instance;
 </pre>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id53" id="boost-parameter-template-keyword-name" name="boost-parameter-template-keyword-name">6.5&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_TEMPLATE_KEYWORD(name)</span></tt></a></h2>
+<div class="section" id="boost-parameter-template-keyword-name">
+<h2><a class="toc-backref" href="#id53">6.5&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_TEMPLATE_KEYWORD(name)</span></tt></a></h2>
 <p>Expands to:</p>
 <pre class="literal-block">
 namespace tag
@@ -950,14 +950,14 @@
 {};
 </pre>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id54" id="boost-parameter-fun-r-n-l-h-p" name="boost-parameter-fun-r-n-l-h-p">6.6&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUN(r,n,l,h,p)</span></tt></a></h2>
+<div class="section" id="boost-parameter-fun-r-n-l-h-p">
+<h2><a class="toc-backref" href="#id54">6.6&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUN(r,n,l,h,p)</span></tt></a></h2>
 <div class="admonition-deprecated admonition">
 <p class="first admonition-title">Deprecated</p>
 <p class="last">This macro has been deprecated in favor of
 <tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUNCTION</span></tt>.</p>
 </div>
-<p>Generates a sequence of <a class="reference" href="index.html#forwarding-functions">forwarding function</a> templates named
+<p>Generates a sequence of <a class="reference external" href="index.html#forwarding-functions">forwarding function</a> templates named
 <tt class="docutils literal"><span class="pre">n</span></tt>, with arities ranging from <tt class="docutils literal"><span class="pre">l</span></tt> to <tt class="docutils literal"><span class="pre">h</span></tt> , returning <tt class="docutils literal"><span class="pre">r</span></tt>,
 and using <tt class="docutils literal"><span class="pre">p</span></tt> to control overload resolution and assign tags to
 positional arguments.</p>
@@ -965,7 +965,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/macros.hpp">boost/parameter/macros.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/macros.hpp">boost/parameter/macros.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -989,13 +989,13 @@
    return <strong>name</strong>_with_named_params(<strong>p</strong>(x1,x2,…x<strong>l</strong>));
 }
 
-template &lt;class A1, class A2, …class A<strong>l</strong>, class A##<a class="reference" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)&gt;
+template &lt;class A1, class A2, …class A<strong>l</strong>, class A##<a class="reference external" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)&gt;
 r name(
     A1 const&amp; a1, A2 const&amp; a2, …A<strong>l</strong> const&amp; x<strong>l</strong>
- , A##<a class="reference" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>) const&amp; x##<a class="reference" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)
- , typename <strong>p</strong>::match&lt;A1,A2,…A<strong>l</strong>,A##<a class="reference" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)&gt;::type p = <strong>p</strong>())
+ , A##<a class="reference external" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>) const&amp; x##<a class="reference external" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)
+ , typename <strong>p</strong>::match&lt;A1,A2,…A<strong>l</strong>,A##<a class="reference external" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)&gt;::type p = <strong>p</strong>())
 {
- return <strong>name</strong>_with_named_params(<strong>p</strong>(x1,x2,…x<strong>l</strong>,x##<a class="reference" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)));
+ return <strong>name</strong>_with_named_params(<strong>p</strong>(x1,x2,…x<strong>l</strong>,x##<a class="reference external" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)));
 }
 
 <span class="vellipsis">â‹®</span>
@@ -1011,21 +1011,21 @@
 </dd>
 </dl>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id55" id="boost-parameter-keyword-n-k" name="boost-parameter-keyword-n-k">6.7&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_KEYWORD(n,k)</span></tt></a></h2>
+<div class="section" id="boost-parameter-keyword-n-k">
+<h2><a class="toc-backref" href="#id55">6.7&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_KEYWORD(n,k)</span></tt></a></h2>
 <div class="admonition-deprecated admonition">
 <p class="first admonition-title">Deprecated</p>
 <p class="last">This macro has been deprecated in favor of
 <tt class="docutils literal"><span class="pre">BOOST_PARAMETER_NAME</span></tt>.</p>
 </div>
-<p>Generates the declaration of a <a class="reference" href="#keyword-tag-type">keyword tag type</a> named <tt class="docutils literal"><span class="pre">k</span></tt> in
-namespace <tt class="docutils literal"><span class="pre">n</span></tt>, and a corresponding <a class="reference" href="#keyword-object">keyword object</a> definition in
+<p>Generates the declaration of a <a class="reference internal" href="#keyword-tag-type">keyword tag type</a> named <tt class="docutils literal"><span class="pre">k</span></tt> in
+namespace <tt class="docutils literal"><span class="pre">n</span></tt>, and a corresponding <a class="reference internal" href="#keyword-object">keyword object</a> definition in
 the enclosing namespace.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/keyword.hpp">boost/parameter/keyword.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/keyword.hpp">boost/parameter/keyword.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -1041,15 +1041,15 @@
 </dd>
 </dl>
 </div>
-<div class="section">
-<h2><a class="toc-backref" href="#id56" id="boost-parameter-match-p-a-x" name="boost-parameter-match-p-a-x">6.8&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MATCH(p,a,x)</span></tt></a></h2>
-<p>Generates a defaulted parameter declaration for a <a class="reference" href="index.html#forwarding-functions">forwarding
+<div class="section" id="boost-parameter-match-p-a-x">
+<h2><a class="toc-backref" href="#id56">6.8&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MATCH(p,a,x)</span></tt></a></h2>
+<p>Generates a defaulted parameter declaration for a <a class="reference external" href="index.html#forwarding-functions">forwarding
 function</a>.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/match.hpp">boost/parameter/match.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/match.hpp">boost/parameter/match.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -1057,7 +1057,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><p class="first"><tt class="docutils literal"><span class="pre">a</span></tt> is a <a class="reference" href="http://www.boost.org/libs/preprocessor/doc/data.html">Boost.Preprocessor sequence</a>
+<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><p class="first"><tt class="docutils literal"><span class="pre">a</span></tt> is a <a class="reference external" href="http://www.boost.org/libs/preprocessor/doc/data.html">Boost.Preprocessor sequence</a>
 of the form</p>
 <pre class="last literal-block">
 (A0)(A1)…(A<em>n</em>)
@@ -1075,10 +1075,10 @@
 </dl>
 </div>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id57" id="configuration-macros" name="configuration-macros">7&nbsp;&nbsp;&nbsp;Configuration Macros</a></h1>
-<div class="section">
-<h2><a class="toc-backref" href="#id58" id="boost-parameter-max-arity" name="boost-parameter-max-arity">7.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MAX_ARITY</span></tt></a></h2>
+<div class="section" id="configuration-macros">
+<h1><a class="toc-backref" href="#id57">7&nbsp;&nbsp;&nbsp;Configuration Macros</a></h1>
+<div class="section" id="boost-parameter-max-arity">
+<h2><a class="toc-backref" href="#id58">7.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MAX_ARITY</span></tt></a></h2>
 <p>Determines the maximum number of arguments supported by the
 library. Will only be <tt class="docutils literal"><span class="pre">#defined</span></tt> by the library if it is not
 already <tt class="docutils literal"><span class="pre">#defined</span></tt>.</p>
@@ -1086,7 +1086,7 @@
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/config.hpp">boost/parameter/config.hpp</a></td>
+<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/config.hpp">boost/parameter/config.hpp</a></td>
 </tr>
 </tbody>
 </table>
@@ -1100,15 +1100,15 @@
 </table>
 </div>
 </div>
-<div class="section">
-<h1><a class="toc-backref" href="#id59" id="tutorial" name="tutorial">8&nbsp;&nbsp;&nbsp;Tutorial</a></h1>
-<p>Follow <a class="reference" href="index.html#tutorial">this link</a> to the Boost.Parameter tutorial
+<div class="section" id="tutorial">
+<h1><a class="toc-backref" href="#id59">8&nbsp;&nbsp;&nbsp;Tutorial</a></h1>
+<p>Follow <a class="reference external" href="index.html#tutorial">this link</a> to the Boost.Parameter tutorial
 documentation.</p>
 <hr class="docutils" />
 <table class="docutils footnote" frame="void" id="thread" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a class="fn-backref" href="#id2" name="thread">[1]</a></td><td>References to tag objects may be initialized multiple
+<tr><td class="label"><a class="fn-backref" href="#id2">[1]</a></td><td>References to tag objects may be initialized multiple
 times. This scenario can only occur in the presence of
 threading. Because the C++ standard doesn't consider threading,
 it doesn't explicitly allow or forbid multiple initialization of
@@ -1119,8 +1119,8 @@
 <table class="docutils footnote" frame="void" id="no-result-of" rules="none">
 <colgroup><col class="label" /><col /></colgroup>
 <tbody valign="top">
-<tr><td class="label"><a name="no-result-of">[2]</a></td><td><em>(<a class="fn-backref" href="#id11">1</a>, <a class="fn-backref" href="#id18">2</a>)</em> Where <a class="reference" href="../../../utility/utility.htm#BOOST_NO_RESULT_OF"><tt class="docutils literal"><span class="pre">BOOST_NO_RESULT_OF</span></tt></a> is <tt class="docutils literal"><span class="pre">#defined</span></tt>,
-<tt class="docutils literal"><span class="pre">boost::</span></tt><a class="reference" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a><tt class="docutils literal"><span class="pre">&lt;F()&gt;::type</span></tt> is replaced by
+<tr><td class="label">[2]</td><td><em>(<a class="fn-backref" href="#id11">1</a>, <a class="fn-backref" href="#id18">2</a>)</em> Where <a class="reference external" href="../../../utility/utility.htm#BOOST_NO_RESULT_OF"><tt class="docutils literal"><span class="pre">BOOST_NO_RESULT_OF</span></tt></a> is <tt class="docutils literal"><span class="pre">#defined</span></tt>,
+<tt class="docutils literal"><span class="pre">boost::</span></tt><a class="reference external" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a><tt class="docutils literal"><span class="pre">&lt;F()&gt;::type</span></tt> is replaced by
 <tt class="docutils literal"><span class="pre">F::result_type</span></tt>.</td></tr>
 </tbody>
 </table>
@@ -1128,8 +1128,8 @@
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2007-05-03 14:17 UTC.
-Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
+Generated on: 2008-06-26 21:51 UTC.
+Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
 </body>

Modified: branches/proto/v4/libs/parameter/doc/index.rst
==============================================================================
--- branches/proto/v4/libs/parameter/doc/index.rst (original)
+++ branches/proto/v4/libs/parameter/doc/index.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -86,7 +86,12 @@
 
 -------------------------------------
 
+[Note: this tutorial does not cover all details of the library. Please see also the `reference documentation`__\ ]
+
+__ reference.html
+
 .. contents:: **Table of Contents**
+ :depth: 2
 
 .. role:: concept
    :class: concept

Modified: branches/proto/v4/libs/parameter/doc/reference.rst
==============================================================================
--- branches/proto/v4/libs/parameter/doc/reference.rst (original)
+++ branches/proto/v4/libs/parameter/doc/reference.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -803,8 +803,8 @@
             return ##\ *tag-name*;
         }
 
- typedef *implementation defined* _;
- typedef *implementation defined* _1;
+ typedef *unspecified* _;
+ typedef *unspecified* _1;
     };
   }
 
@@ -824,8 +824,8 @@
             return ##\ *name*;
         }
 
- typedef *implementation defined* _;
- typedef *implementation defined* _1;
+ typedef *unspecified* _;
+ typedef *unspecified* _1;
     };
   }
 

Modified: branches/proto/v4/libs/ptr_container/doc/examples.html
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/examples.html (original)
+++ branches/proto/v4/libs/ptr_container/doc/examples.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -423,8 +423,9 @@
 </div>
 <div class="section">
 <h1><a class="toc-backref" href="#id10" id="a-large-example" name="a-large-example">9. A large example</a></h1>
-<p>This examples shows many of the most common
-features at work. The example provide lots of comments.</p>
+<p>This example shows many of the most common
+features at work. The example provide lots of comments.
+The source code can also be found <a class="reference" href="../test/tut1.cpp">here</a>.</p>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

Modified: branches/proto/v4/libs/ptr_container/doc/examples.rst
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/examples.rst (original)
+++ branches/proto/v4/libs/ptr_container/doc/examples.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -160,8 +160,9 @@
 9. A large example
 ++++++++++++++++++
 
-This examples shows many of the most common
+This example shows many of the most common
 features at work. The example provide lots of comments.
+The source code can also be found `here <../test/tut1.cpp>`_.
 
 .. raw:: html
         :file: tutorial_example.html

Modified: branches/proto/v4/libs/ptr_container/doc/guidelines.html
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/guidelines.html (original)
+++ branches/proto/v4/libs/ptr_container/doc/guidelines.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -304,7 +304,7 @@
 </div>
 <div class="section">
 <h1><a class="toc-backref" href="#id8" id="choosing-the-right-container" name="choosing-the-right-container">Choosing the right container</a></h1>
-<p>The recommended usage pattern of the container classes are the same as the
+<p>The recommended usage pattern of the container classes is the same as
 for normal standard containers.</p>
 <p><tt class="docutils literal"><span class="pre">ptr_vector</span></tt>, <tt class="docutils literal"><span class="pre">ptr_list</span></tt> and <tt class="docutils literal"><span class="pre">ptr_deque</span></tt> offer the programmer different
 complexity tradeoffs and should be used accordingly. <tt class="docutils literal"><span class="pre">ptr_vector</span></tt> is the

Modified: branches/proto/v4/libs/ptr_container/doc/guidelines.rst
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/guidelines.rst (original)
+++ branches/proto/v4/libs/ptr_container/doc/guidelines.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,7 +13,7 @@
 Choosing the right container
 ----------------------------
 
-The recommended usage pattern of the container classes are the same as the
+The recommended usage pattern of the container classes is the same as
 for normal standard containers.
 
 ``ptr_vector``, ``ptr_list`` and ``ptr_deque`` offer the programmer different

Modified: branches/proto/v4/libs/ptr_container/doc/headers.html
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/headers.html (original)
+++ branches/proto/v4/libs/ptr_container/doc/headers.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -292,8 +292,8 @@
 <h2 class="subtitle" id="library-headers">Library headers</h2>
 <table border="1" class="docutils">
 <colgroup>
-<col width="34%" />
-<col width="66%" />
+<col width="29%" />
+<col width="71%" />
 </colgroup>
 <tbody valign="top">
 <tr><td><strong>Header</strong></td>
@@ -323,6 +323,9 @@
 <td>classes <a class="reference" href="ptr_map.html">ptr_map</a> and <a class="reference" href="ptr_multimap.html">ptr_multimap</a>
 (and <tt class="docutils literal"><span class="pre">std::map</span></tt> and <tt class="docutils literal"><span class="pre">std::multimap</span></tt>)</td>
 </tr>
+<tr><td><tt class="docutils literal"><span class="pre">&lt;boost/ptr_container/ptr_inserter.hpp&gt;</span></tt></td>
+<td>functions <a class="reference" href="ptr_inserter.html">ptr_back_inserter</a>, <a class="reference" href="ptr_inserter.html">ptr_front_inserter</a> and <a class="reference" href="ptr_inserter.html">ptr_inserter</a></td>
+</tr>
 <tr><td><tt class="docutils literal"><span class="pre">&lt;boost/ptr_container/ptr_container.hpp&gt;</span></tt></td>
 <td>all classes</td>
 </tr>

Modified: branches/proto/v4/libs/ptr_container/doc/headers.rst
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/headers.rst (original)
+++ branches/proto/v4/libs/ptr_container/doc/headers.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -28,6 +28,8 @@
 ``<boost/ptr_container/ptr_map.hpp>`` classes `ptr_map <ptr_map.html>`_ and `ptr_multimap <ptr_multimap.html>`_
                                                            (and ``std::map`` and ``std::multimap``)
 
+``<boost/ptr_container/ptr_inserter.hpp>`` functions `ptr_back_inserter <ptr_inserter.html>`_, `ptr_front_inserter <ptr_inserter.html>`_ and `ptr_inserter <ptr_inserter.html>`_
+
 ``<boost/ptr_container/ptr_container.hpp>`` all classes
 
 ``<boost/ptr_container/ptr_sequence_adapter.hpp>`` class `ptr_sequence_adapter <ptr_sequence_adapter.html>`_

Modified: branches/proto/v4/libs/ptr_container/doc/ptr_container.html
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/ptr_container.html (original)
+++ branches/proto/v4/libs/ptr_container/doc/ptr_container.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -325,6 +325,7 @@
 <li><a class="reference" href="faq.html">FAQ</a></li>
 <li><a class="reference" href="#upgrading-from-boost-v-1-33">Upgrading from Boost v. 1.33.*</a></li>
 <li><a class="reference" href="#upgrading-from-boost-v-1-34">Upgrading from Boost v. 1.34.*</a></li>
+<li><a class="reference" href="#upgrading-from-boost-v-1-35">Upgrading from Boost v. 1.35.*</a></li>
 <li><a class="reference" href="#future-developments">Future Developments</a></li>
 <li><a class="reference" href="#acknowledgements">Acknowledgements</a></li>
 <li><a class="reference" href="#references">References</a></li>
@@ -401,7 +402,7 @@
 </ol>
 <!-- -->
 <ol class="arabic simple" start="8">
-<li>Built-in support for deep-copy semantics via the <a class="reference" href="reference.html#the-cloneable-concept">the Cloneable concept</a></li>
+<li>Built-in support for deep-copy semantics via the <a class="reference" href="reference.html#the-clonable-concept">the Clonable concept</a></li>
 </ol>
 <p>The disadvantages are</p>
 <ol class="arabic simple">
@@ -455,7 +456,7 @@
 </div>
 <div class="section">
 <h1><a id="upgrading-from-boost-v-1-34" name="upgrading-from-boost-v-1-34">Upgrading from Boost v. <tt class="docutils literal"><span class="pre">1.34.*</span></tt></a></h1>
-<p>Serialization have now been made optional thanks to Sebastian Ramacher.
+<p>Serialization has now been made optional thanks to Sebastian Ramacher.
 You simply include <tt class="docutils literal"><span class="pre">&lt;boost/ptr_container/serialize.hpp&gt;</span></tt> or perhaps
 just one of the more specialized headers.</p>
 <p>All containers are now copy-constructible and assignable. So you can e.g. now
@@ -472,7 +473,7 @@
 const VoidPtrContainer&amp; base() const;
 </pre>
 <p>These allow direct access to the wrapped container which is
-somtimes needed when you want to provide extra functionality.</p>
+sometimes needed when you want to provide extra functionality.</p>
 <p>A few new functions have been added to sequences:</p>
 <pre class="literal-block">
 void resize( size_type size );
@@ -483,18 +484,44 @@
 void transfer( iterator before, T** from, size_type size, bool delete_from = true );
 T** c_array();
 </pre>
-<p>Finally you can now also &quot;copy&quot; and &quot;assign&quot; an <tt class="docutils literal"><span class="pre">auto_type</span></tt> ptr by calling <tt class="docutils literal"><span class="pre">move()</span></tt>:</p>
+<p>Finally, you can now also &quot;copy&quot; and &quot;assign&quot; an <tt class="docutils literal"><span class="pre">auto_type</span></tt> ptr by calling <tt class="docutils literal"><span class="pre">move()</span></tt>:</p>
 <pre class="literal-block">
 boost::ptr_vector&lt;T&gt;::auto_type move_ptr = ...;
 return boost::ptr_container::move( move_ptr );
 </pre>
 </div>
 <div class="section">
+<h1><a id="upgrading-from-boost-v-1-35" name="upgrading-from-boost-v-1-35">Upgrading from Boost v. <tt class="docutils literal"><span class="pre">1.35.*</span></tt></a></h1>
+<p>The library has been fairly stable, but a few new containers have been supported:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">boost::ptr_unordered_set&lt;T&gt;</span></tt> in <tt class="docutils literal"><span class="pre">&lt;boost/ptr_container/ptr_unordered_set.hpp&gt;</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">boost::ptr_unordered_map&lt;Key,T&gt;</span></tt> in <tt class="docutils literal"><span class="pre">&lt;boost/ptr_container/ptr_unordered_map.hpp&gt;</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">boost::ptr_circular_buffer&lt;T&gt;</span></tt> in <tt class="docutils literal"><span class="pre">&lt;boost/ptr_container/ptr_circular_buffer.hpp&gt;</span></tt></li>
+</ul>
+<p>There are no docs for these classes yet, but they are almost identical to
+<tt class="docutils literal"><span class="pre">boost::ptr_set&lt;T&gt;</span></tt>, <tt class="docutils literal"><span class="pre">boost::ptr_map&lt;Key,T&gt;</span></tt> and <tt class="docutils literal"><span class="pre">boost::ptr_array&lt;T,N&gt;</span></tt>, respectively.
+The underlying containers stem from the two boost libraries</p>
+<ul class="simple">
+<li><a class="reference" href="../../unordered/index.html">Boost.Unordered</a></li>
+<li><a class="reference" href="../../circular_buffer/index.html">Boost.Circular Buffer</a></li>
+</ul>
+<p>Furthermore, <a class="reference" href="ptr_inserter.html">insert iterators</a> have been added.</p>
+</div>
+<div class="section">
 <h1><a id="future-developments" name="future-developments">Future Developments</a></h1>
 <p>There are indications that the <tt class="docutils literal"><span class="pre">void*</span></tt> implementation has a slight
 performance overhead compared to a <tt class="docutils literal"><span class="pre">T*</span></tt> based implementation. Furthermore, a
 <tt class="docutils literal"><span class="pre">T*</span></tt> based implementation is so much easier to use type-safely
 with algorithms. Therefore I anticipate to move to a <tt class="docutils literal"><span class="pre">T*</span></tt> based implementation.</p>
+<p>Furthermore, the clone allocator might be allowed to have state.
+This design requires some thought, so if you have good ideas and use-cases'
+for this, please don't hesitate to contact me.</p>
+<p>Also, support for Boost.Interprocess is on the todo list.</p>
+<p>There has been a few request for <tt class="docutils literal"><span class="pre">boost::ptr_multi_index_container&lt;T,...&gt;</span></tt>.
+I investigated how difficult it would be, and it did turn out to be difficult, albeit
+not impossible. But I don't have the resources to implement this beast
+for years to come, so if someone really needs this container, I suggest that they
+talk with me in private about how it can be done.</p>
 </div>
 <div class="section">
 <h1><a id="acknowledgements" name="acknowledgements">Acknowledgements</a></h1>
@@ -515,7 +542,7 @@
 <li>Pavel Chikulaev for comments and bug-fixes</li>
 <li>Andreas Hommel for fixing the nasty Metrowerks bug</li>
 <li>Charles Brockman for his many comments on the documentation</li>
-<li>Sebastian Ramacher for implementing the optinal serialization support</li>
+<li>Sebastian Ramacher for implementing the optional serialization support</li>
 </ul>
 </div>
 <div class="section">

Modified: branches/proto/v4/libs/ptr_container/doc/ptr_container.rst
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/ptr_container.rst (original)
+++ branches/proto/v4/libs/ptr_container/doc/ptr_container.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -37,6 +37,7 @@
 * FAQ_
 * `Upgrading from Boost v. 1.33.*`_
 * `Upgrading from Boost v. 1.34.*`_
+* `Upgrading from Boost v. 1.35.*`_
 * `Future Developments`_
 * Acknowledgements_
 * References_
@@ -134,9 +135,9 @@
 
 ..
 
-8. Built-in support for deep-copy semantics via the `the Cloneable concept`__
+8. Built-in support for deep-copy semantics via the `the Clonable concept`__
 
-.. __: reference.html#the-cloneable-concept
+.. __: reference.html#the-clonable-concept
 
 The disadvantages are
 
@@ -191,7 +192,7 @@
  Upgrading from Boost v. ``1.34.*``
 ====================================
 
-Serialization have now been made optional thanks to Sebastian Ramacher.
+Serialization has now been made optional thanks to Sebastian Ramacher.
 You simply include ``<boost/ptr_container/serialize.hpp>`` or perhaps
 just one of the more specialized headers.
 
@@ -210,7 +211,7 @@
     const VoidPtrContainer& base() const;
 
 These allow direct access to the wrapped container which is
-somtimes needed when you want to provide extra functionality.
+sometimes needed when you want to provide extra functionality.
     
 A few new functions have been added to sequences::
 
@@ -222,11 +223,33 @@
     void transfer( iterator before, T** from, size_type size, bool delete_from = true );
     T** c_array();
 
-Finally you can now also "copy" and "assign" an ``auto_type`` ptr by calling ``move()``::
+Finally, you can now also "copy" and "assign" an ``auto_type`` ptr by calling ``move()``::
 
     boost::ptr_vector<T>::auto_type move_ptr = ...;
     return boost::ptr_container::move( move_ptr );
 
+====================================
+ Upgrading from Boost v. ``1.35.*``
+====================================
+
+The library has been fairly stable, but a few new containers have been supported:
+
+- ``boost::ptr_unordered_set<T>`` in ``<boost/ptr_container/ptr_unordered_set.hpp>``
+
+- ``boost::ptr_unordered_map<Key,T>`` in ``<boost/ptr_container/ptr_unordered_map.hpp>``
+
+- ``boost::ptr_circular_buffer<T>`` in ``<boost/ptr_container/ptr_circular_buffer.hpp>``
+
+There are no docs for these classes yet, but they are almost identical to
+``boost::ptr_set<T>``, ``boost::ptr_map<Key,T>`` and ``boost::ptr_array<T,N>``, respectively.
+The underlying containers stem from the two boost libraries
+
+- `Boost.Unordered <../../unordered/index.html>`_
+
+- `Boost.Circular Buffer <../../circular_buffer/index.html>`_
+
+Furthermore, `insert iterators <ptr_inserter.html>`_ have been added.
+
 =====================
  Future Developments
 =====================
@@ -236,6 +259,18 @@
 ``T*`` based implementation is so much easier to use type-safely
 with algorithms. Therefore I anticipate to move to a ``T*`` based implementation.
 
+Furthermore, the clone allocator might be allowed to have state.
+This design requires some thought, so if you have good ideas and use-cases'
+for this, please don't hesitate to contact me.
+
+Also, support for Boost.Interprocess is on the todo list.
+
+There has been a few request for ``boost::ptr_multi_index_container<T,...>``.
+I investigated how difficult it would be, and it did turn out to be difficult, albeit
+not impossible. But I don't have the resources to implement this beast
+for years to come, so if someone really needs this container, I suggest that they
+talk with me in private about how it can be done.
+
 ================
 Acknowledgements
 ================
@@ -257,7 +292,7 @@
 - Pavel Chikulaev for comments and bug-fixes
 - Andreas Hommel for fixing the nasty Metrowerks bug
 - Charles Brockman for his many comments on the documentation
-- Sebastian Ramacher for implementing the optinal serialization support
+- Sebastian Ramacher for implementing the optional serialization support
 
 ==========
 References

Modified: branches/proto/v4/libs/ptr_container/doc/ptr_sequence_adapter.html
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/ptr_sequence_adapter.html (original)
+++ branches/proto/v4/libs/ptr_container/doc/ptr_sequence_adapter.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -467,7 +467,6 @@
 <ul class="simple">
 <li>Requirements: <tt class="docutils literal"><span class="pre">not</span> <span class="pre">empty();</span></tt></li>
 <li>Effects: <tt class="docutils literal"><span class="pre">return</span> <span class="pre">*begin();</span></tt></li>
-<li>Throws: <tt class="docutils literal"><span class="pre">bad_ptr_container_operation</span></tt> if <tt class="docutils literal"><span class="pre">empty()</span> <span class="pre">==</span> <span class="pre">true</span></tt></li>
 </ul>
 </blockquote>
 </li>
@@ -476,7 +475,6 @@
 <ul class="simple">
 <li>Requirements: <tt class="docutils literal"><span class="pre">not</span> <span class="pre">empty();</span></tt></li>
 <li>Effects: <tt class="docutils literal"><span class="pre">return</span> <span class="pre">*begin();</span></tt></li>
-<li>Throws: <tt class="docutils literal"><span class="pre">bad_ptr_container_operation</span></tt> if <tt class="docutils literal"><span class="pre">empty()</span> <span class="pre">==</span> <span class="pre">true</span></tt></li>
 </ul>
 </blockquote>
 </li>
@@ -485,7 +483,6 @@
 <ul class="simple">
 <li>Requirements: <tt class="docutils literal"><span class="pre">not</span> <span class="pre">empty();</span></tt></li>
 <li>Effects: <tt class="docutils literal"><span class="pre">return</span> <span class="pre">*--end();</span></tt></li>
-<li>Throws: <tt class="docutils literal"><span class="pre">bad_ptr_container_operation</span></tt> if <tt class="docutils literal"><span class="pre">empty()</span> <span class="pre">==</span> <span class="pre">true</span></tt></li>
 </ul>
 </blockquote>
 </li>
@@ -494,7 +491,6 @@
 <ul class="simple">
 <li>Requirements: <tt class="docutils literal"><span class="pre">not</span> <span class="pre">empty();</span></tt></li>
 <li>Effects: <tt class="docutils literal"><span class="pre">return</span> <span class="pre">*--end();</span></tt></li>
-<li>Throws: <tt class="docutils literal"><span class="pre">bad_ptr_container_operation</span></tt> if <tt class="docutils literal"><span class="pre">empty()</span> <span class="pre">==</span> <span class="pre">true</span></tt></li>
 </ul>
 </blockquote>
 </li>

Modified: branches/proto/v4/libs/ptr_container/doc/ptr_sequence_adapter.rst
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/ptr_sequence_adapter.rst (original)
+++ branches/proto/v4/libs/ptr_container/doc/ptr_sequence_adapter.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -197,7 +197,6 @@
 
     - Effects: ``return *begin();``
 
- - Throws: ``bad_ptr_container_operation`` if ``empty() == true``
 
 - ``const T& front() const;``
 
@@ -205,7 +204,6 @@
 
     - Effects: ``return *begin();``
 
- - Throws: ``bad_ptr_container_operation`` if ``empty() == true``
 
 - ``T& back();``
 
@@ -213,7 +211,6 @@
 
     - Effects: ``return *--end();``
 
- - Throws: ``bad_ptr_container_operation`` if ``empty() == true``
 
 - ``const T& back() const;``
 
@@ -221,8 +218,6 @@
 
     - Effects: ``return *--end();``
 
- - Throws: ``bad_ptr_container_operation`` if ``empty() == true``
-
 
 .. _`modifiers`:
 

Modified: branches/proto/v4/libs/ptr_container/doc/reference.html
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/reference.html (original)
+++ branches/proto/v4/libs/ptr_container/doc/reference.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -294,11 +294,11 @@
 each container. When containers have the same interface, that common interface is explained only once,
 but links are always provided to more relevant information.
 Please make sure you understand
-the <a class="reference" href="reference.html#the-Cloneable-concept">Cloneable</a> concept and
+the <a class="reference" href="reference.html#the-Clonable-concept">Clonable</a> concept and
 the <a class="reference" href="reference.html#the-clone-allocator-concept">Clone Allocator</a> concept.</p>
 <ul class="simple">
 <li><a class="reference" href="conventions.html">Conventions</a></li>
-<li><a class="reference" href="#the-cloneable-concept">The Cloneable concept</a></li>
+<li><a class="reference" href="#the-clonable-concept">The Clonable concept</a></li>
 <li><a class="reference" href="#the-clone-allocator-concept">The Clone Allocator concept</a></li>
 <li><a class="reference" href="#class-hierarchy">Class hierarchy</a>:<ul>
 <li><a class="reference" href="reversible_ptr_container.html">reversible_ptr_container</a><ul>
@@ -328,6 +328,7 @@
 </li>
 <li><a class="reference" href="#serialization">Serialization</a></li>
 <li><a class="reference" href="indirect_fun.html">Indirected functions</a></li>
+<li><a class="reference" href="ptr_inserter.html">Insert iterators</a></li>
 <li><a class="reference" href="#class-nullable">Class nullable</a></li>
 <li><a class="reference" href="#exception-classes">Exception classes</a></li>
 <li><a class="reference" href="#disabling-the-use-of-exceptions">Disabling the use of exceptions</a></li>
@@ -354,16 +355,16 @@
   - `ptr_map <ptr_map.html>`_
   - `ptr_multimap <ptr_multimap.html>`_ -->
 <div class="section">
-<h1><a id="the-cloneable-concept" name="the-cloneable-concept">The Cloneable concept</a></h1>
+<h1><a id="the-clonable-concept" name="the-clonable-concept">The Clonable concept</a></h1>
 <p><strong>Refinement of</strong></p>
 <ul class="simple">
 <li>Heap Allocable</li>
 <li>Heap Deallocable</li>
 </ul>
-<p>The Cloneable concept is introduced to formalize the requirements for
-copying heap-allocated objects. A type <tt class="docutils literal"><span class="pre">T</span></tt> might be Cloneable even though it
+<p>The Clonable concept is introduced to formalize the requirements for
+copying heap-allocated objects. A type <tt class="docutils literal"><span class="pre">T</span></tt> might be Clonable even though it
 is not Assignable or Copy Constructible. Notice that many operations on
-the containers do not even require the stored type to be Cloneable.</p>
+the containers do not even require the stored type to be Clonable.</p>
 <p><strong>Notation</strong></p>
 <table border="1" class="docutils">
 <colgroup>
@@ -381,7 +382,7 @@
 <tr><td><tt class="docutils literal"><span class="pre">T</span></tt></td>
 <td><tt class="docutils literal"><span class="pre">a</span></tt></td>
 <td><tt class="docutils literal"><span class="pre">ptr</span></tt></td>
-<td>A Cloneable type</td>
+<td>A Clonable type</td>
 </tr>
 </tbody>
 </table>
@@ -432,7 +433,7 @@
 }
 </pre>
 <p>Notice that this implementation makes normal Copy Constructible classes automatically
-Cloneable unless <tt class="docutils literal"><span class="pre">operator</span> <span class="pre">new()</span></tt> or <tt class="docutils literal"><span class="pre">operator</span> <span class="pre">delete()</span></tt> are hidden.</p>
+Clonable unless <tt class="docutils literal"><span class="pre">operator</span> <span class="pre">new()</span></tt> or <tt class="docutils literal"><span class="pre">operator</span> <span class="pre">delete()</span></tt> are hidden.</p>
 <p>The two functions represent a layer of indirection which is necessary to support
 classes that are not Copy Constructible by default. Notice that the implementation
 relies on argument-dependent lookup (ADL) to find the right version of
@@ -584,7 +585,7 @@
 <p>The pointer container adapters are used when you
 want to make a pointer container starting from
 your own &quot;normal&quot; container. For example, you
-might have a map class that is extends <tt class="docutils literal"><span class="pre">std::map</span></tt>
+might have a map class that extends <tt class="docutils literal"><span class="pre">std::map</span></tt>
 in some way; the adapter class then allows you
 to use your map class as a basis for a new
 pointer container.</p>
@@ -646,7 +647,7 @@
 </div>
 <div class="section">
 <h1><a id="serialization" name="serialization">Serialization</a></h1>
-<p>As of version 1.34.0 of Boost, the library support
+<p>As of version 1.34.0 of Boost, the library supports
 serialization via <a class="reference" href="../../serialization/index.html">Boost.Serialization</a>.</p>
 <p>Of course, for serialization to work it is required
 that the stored type itself is serializable. For maps, both
@@ -786,7 +787,7 @@
 completely. This means the library is more fit for domains where exceptions
 are not used. Furthermore, it also speeds up a operations a little. Instead
 of throwing an exception, the library simply calls <a class="reference" href="../../utility/assert.html">BOOST_ASSERT</a>.</p>
-<p>To disable exceptions, simly define this macro before including any header:</p>
+<p>To disable exceptions, simply define this macro before including any header:</p>
 <pre class="literal-block">
 #define BOOST_PTR_CONTAINER_NO_EXCEPTIONS 1
 #include &lt;boost/ptr_container/ptr_vector.hpp&gt;

Modified: branches/proto/v4/libs/ptr_container/doc/reference.rst
==============================================================================
--- branches/proto/v4/libs/ptr_container/doc/reference.rst (original)
+++ branches/proto/v4/libs/ptr_container/doc/reference.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,11 +12,11 @@
 each container. When containers have the same interface, that common interface is explained only once,
 but links are always provided to more relevant information.
 Please make sure you understand
-the `Cloneable <reference.html#the-Cloneable-concept>`_ concept and
+the `Clonable <reference.html#the-Clonable-concept>`_ concept and
 the `Clone Allocator <reference.html#the-clone-allocator-concept>`_ concept.
 
 - `Conventions <conventions.html>`_
-- `The Cloneable concept`_
+- `The Clonable concept`_
 - `The Clone Allocator concept`_
 
 - `Class hierarchy`_:
@@ -44,6 +44,7 @@
       
 - `Serialization`_
 - `Indirected functions <indirect_fun.html>`_
+- `Insert iterators <ptr_inserter.html>`_
 - `Class nullable`_
 - `Exception classes`_
 - `Disabling the use of exceptions`_
@@ -74,24 +75,24 @@
 
 
 
-The Cloneable concept
-+++++++++++++++++++++
+The Clonable concept
+++++++++++++++++++++
 
 **Refinement of**
 
 - Heap Allocable
 - Heap Deallocable
 
-The Cloneable concept is introduced to formalize the requirements for
-copying heap-allocated objects. A type ``T`` might be Cloneable even though it
+The Clonable concept is introduced to formalize the requirements for
+copying heap-allocated objects. A type ``T`` might be Clonable even though it
 is not Assignable or Copy Constructible. Notice that many operations on
-the containers do not even require the stored type to be Cloneable.
+the containers do not even require the stored type to be Clonable.
 
 **Notation**
 
 ======================= ============================================ =================== =====================
    **Type** **Object** (``const`` or non-``const``) **Pointer** **Describes**
- ``T`` ``a`` ``ptr`` A Cloneable type
+ ``T`` ``a`` ``ptr`` A Clonable type
 ======================= ============================================ =================== =====================
        
 **Valid expressions**
@@ -128,7 +129,7 @@
 
 
 Notice that this implementation makes normal Copy Constructible classes automatically
-Cloneable unless ``operator new()`` or ``operator delete()`` are hidden.
+Clonable unless ``operator new()`` or ``operator delete()`` are hidden.
 
 The two functions represent a layer of indirection which is necessary to support
 classes that are not Copy Constructible by default. Notice that the implementation
@@ -260,7 +261,7 @@
 The pointer container adapters are used when you
 want to make a pointer container starting from
 your own "normal" container. For example, you
-might have a map class that is extends ``std::map``
+might have a map class that extends ``std::map``
 in some way; the adapter class then allows you
 to use your map class as a basis for a new
 pointer container.
@@ -318,7 +319,7 @@
 Serialization
 +++++++++++++
 
-As of version 1.34.0 of Boost, the library support
+As of version 1.34.0 of Boost, the library supports
 serialization via `Boost.Serialization`__.
 
 .. __: ../../serialization/index.html
@@ -471,7 +472,7 @@
 
 .. __: ../../utility/assert.html
 
-To disable exceptions, simly define this macro before including any header::
+To disable exceptions, simply define this macro before including any header::
 
         #define BOOST_PTR_CONTAINER_NO_EXCEPTIONS 1
         #include <boost/ptr_container/ptr_vector.hpp>

Modified: branches/proto/v4/libs/ptr_container/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/ptr_container/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/ptr_container/test/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -37,6 +37,6 @@
     
     [ sc-test ptr_unordered_set ]
     [ sc-test ptr_unordered_map ]
- #[ sc-test ptr_circular_buffer ]
+ [ sc-test ptr_circular_buffer ]
  
     ;

Modified: branches/proto/v4/libs/ptr_container/test/ptr_circular_buffer.cpp
==============================================================================
Binary files. No diff available.

Modified: branches/proto/v4/libs/ptr_container/test/sequence_test_data.hpp
==============================================================================
--- branches/proto/v4/libs/ptr_container/test/sequence_test_data.hpp (original)
+++ branches/proto/v4/libs/ptr_container/test/sequence_test_data.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,13 +19,6 @@
 template< class IntContainer >
 void algorithms_test();
 
-template< class Cont >
-struct set_capacity
-{
- void operator()( Cont& ) const
- { }
-};
-
 template< typename C, typename B, typename T >
 void reversible_container_test()
 {
@@ -39,16 +32,20 @@
     c.push_back( new T );
     BOOST_CHECK( c.size() == 1 );
 
+ const C c2_dummy( c.begin(), c.end() );
+ BOOST_CHECK_EQUAL( c2_dummy.size(), c.size() );
     const C c2( c.clone() );
- BOOST_CHECK( c2.size() == c.size() );
+ BOOST_CHECK_EQUAL( c2.size(), c.size() );
     
     C c3( c.begin(), c.end() );
- BOOST_CHECK( c.size() == c3.size() );
+ set_capacity<C>()( c3 );
+ BOOST_CHECK_EQUAL( c.size(), c3.size() );
 
     c.assign( c3.begin(), c3.end() );
- BOOST_CHECK( c.size() == c3.size() );
+ BOOST_CHECK_EQUAL( c.size(), c3.size() );
         
     c.assign( c3 );
+ set_capacity<C>()( c );
     BOOST_MESSAGE( "finished construction test" );
 
     C a_copy( c );
@@ -62,7 +59,7 @@
     BOOST_MESSAGE( "finished copying test" );
 
     BOOST_DEDUCED_TYPENAME C::allocator_type alloc = c.get_allocator();
- hide_warning(alloc);
+ hide_warning(alloc);
     BOOST_DEDUCED_TYPENAME C::iterator i = c.begin();
     BOOST_DEDUCED_TYPENAME C::const_iterator ci = c2.begin();
     BOOST_DEDUCED_TYPENAME C::iterator i2 = c.end();
@@ -101,10 +98,13 @@
     BOOST_MESSAGE( "finished accessors test" );
     
     c.push_back( new T );
+ BOOST_CHECK_EQUAL( c.size(), 4u );
 
     c.pop_back();
+ BOOST_CHECK( !c.empty() );
     c.insert( c.end(), new T );
     c.insert( c.end(), std::auto_ptr<T>( new T ) );
+ BOOST_CHECK_EQUAL( c.size(), 5u );
 
 #if defined(BOOST_NO_SFINAE) || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
 #else
@@ -115,6 +115,7 @@
     c3.erase( c3.begin(), c3.end() );
     c3.erase( boost::make_iterator_range(c3) );
     BOOST_CHECK( c3.empty() );
+ BOOST_CHECK( !c.empty() );
     c.swap( c3 );
     BOOST_CHECK( !c3.empty() );
     c3.clear();
@@ -172,12 +173,17 @@
 template< class CDerived, class CBase, class T >
 void test_transfer()
 {
+ BOOST_MESSAGE( "starting transfer test" );
     CDerived from;
     CBase to;
 
+ set_capacity<CDerived>()( from );
+ set_capacity<CBase>()( to );
+
     from.push_back( new T );
     from.push_back( new T );
     to. BOOST_NESTED_TEMPLATE transfer<CDerived>( to.end(), from );
+ BOOST_MESSAGE( "finished transfer test" );
 }
 
 
@@ -229,7 +235,10 @@
 template< class IntContainer >
 void random_access_algorithms_test()
 {
+ BOOST_MESSAGE( "starting random accessors algorithms test" );
+
     IntContainer c;
+ set_capacity<IntContainer>()( c );
     assign::push_back( c )
                     ( new int(1) )
                     ( new int(3) )
@@ -274,6 +283,7 @@
     // C = [0,2,3,6]
 
     IntContainer c2;
+ set_capacity<IntContainer>()( c2 );
     assign::push_back( c2 )
                    ( new int(-1) )
                    ( new int(1) )
@@ -285,5 +295,6 @@
     BOOST_CHECK( c2.empty() );
     BOOST_CHECK( c.size() == 9u );
     BOOST_CHECK( is_sorted< std::less_equal<int> >( c ) );
+ BOOST_MESSAGE( "finished random accessors algorithms test" );
 }
 

Modified: branches/proto/v4/libs/ptr_container/test/serialization.cpp
==============================================================================
--- branches/proto/v4/libs/ptr_container/test/serialization.cpp (original)
+++ branches/proto/v4/libs/ptr_container/test/serialization.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -39,6 +39,25 @@
 }
 
 //
+// used to customize tests for circular_buffer
+//
+template< class Cont >
+struct set_capacity
+{
+ void operator()( Cont& ) const
+ { }
+};
+
+template<class T>
+struct set_capacity< boost::ptr_circular_buffer<T> >
+{
+ void operator()( boost::ptr_circular_buffer<T>& c ) const
+ {
+ c.set_capacity( 100u );
+ }
+};
+
+//
 // class hierarchy
 //
 struct Base
@@ -49,7 +68,7 @@
 
     
     template< class Archive >
- void serialize( Archive& ar, const unsigned int version )
+ void serialize( Archive& ar, const unsigned int /*version*/ )
     {
         ar & boost::serialization::make_nvp( "i", i );
     }
@@ -84,7 +103,7 @@
     int i2;
 
     template< class Archive >
- void serialize( Archive& ar, const unsigned int version )
+ void serialize( Archive& ar, const unsigned int /*version*/ )
     {
         ar & boost::serialization::make_nvp( "Base",
                  boost::serialization::base_object<Base>( *this ) );
@@ -106,7 +125,7 @@
 //
 
 template< class C, class T >
-void add( C& c, T* r, unsigned n )
+void add( C& c, T* r, unsigned /*n*/ )
 {
     c.insert( c.end(), r );
 }
@@ -121,8 +140,10 @@
 void test_serialization_helper()
 {
     Cont vec;
+ set_capacity<Cont>()( vec );
     add( vec, new Base( -1 ), 0u );
     add( vec, new Derived( 1 ), 1u );
+ BOOST_CHECK_EQUAL( vec.size(), 2u );
 
     std::ofstream ofs("filename");
     OArchive oa(ofs);
@@ -147,6 +168,32 @@
 
 }
 
+template< class Cont, class OArchive, class IArchive >
+void test_serialization_unordered_set_helper()
+{
+ Cont vec;
+ set_capacity<Cont>()( vec );
+ add( vec, new Base( -1 ), 0u );
+ add( vec, new Derived( 1 ), 1u );
+ BOOST_CHECK_EQUAL( vec.size(), 2u );
+
+ std::ofstream ofs("filename");
+ OArchive oa(ofs);
+ oa << boost::serialization::make_nvp( "container", as_const(vec) );
+ ofs.close();
+
+
+ std::ifstream ifs("filename", std::ios::binary);
+ IArchive ia(ifs);
+ Cont vec2;
+ ia >> boost::serialization::make_nvp( "container", vec2 );
+ ifs.close();
+
+ BOOST_CHECK_EQUAL( vec.size(), vec2.size() );
+ BOOST_CHECK_EQUAL( (*vec2.begin()).i, 0 );
+ BOOST_CHECK_EQUAL( (*++vec2.begin()).i, -1 );
+}
+
 template< class Map, class OArchive, class IArchive >
 void test_serialization_map_helper()
 {
@@ -220,6 +267,12 @@
     test_serialization_helper< boost::ptr_vector<Base>,
                                boost::archive::xml_oarchive,
                                boost::archive::xml_iarchive>();
+ test_serialization_helper< boost::ptr_circular_buffer<Base>,
+ boost::archive::text_oarchive,
+ boost::archive::text_iarchive>();
+ test_serialization_helper< boost::ptr_circular_buffer<Base>,
+ boost::archive::xml_oarchive,
+ boost::archive::xml_iarchive>();
     test_serialization_helper< boost::ptr_array<Base,2>,
                                boost::archive::text_oarchive,
                                boost::archive::text_iarchive>();
@@ -229,16 +282,14 @@
     test_serialization_helper< boost::ptr_multiset<Base>,
                                boost::archive::text_oarchive,
                                boost::archive::text_iarchive>();
- /*test_serialization_helper< boost::ptr_unordered_set<Base>,
- boost::archive::text_oarchive,
- boost::archive::text_iarchive>();
- test_serialization_helper< boost::ptr_unordered_multiset<Base>,
- boost::archive::text_oarchive,
- boost::archive::text_iarchive>();
+
+ test_serialization_unordered_set_helper< boost::ptr_unordered_set<Base>,
+ boost::archive::text_oarchive,
+ boost::archive::text_iarchive>();
+ test_serialization_unordered_set_helper<boost::ptr_unordered_multiset<Base>,
+ boost::archive::text_oarchive,
+ boost::archive::text_iarchive>();
                                
- @todo: fix ordernig issue here...
- */
-
     test_serialization_map_helper< boost::ptr_map<std::string,Base>,
                                    boost::archive::text_oarchive,
                                    boost::archive::text_iarchive>();

Modified: branches/proto/v4/libs/ptr_container/test/test_data.hpp
==============================================================================
--- branches/proto/v4/libs/ptr_container/test/test_data.hpp (original)
+++ branches/proto/v4/libs/ptr_container/test/test_data.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -70,7 +70,7 @@
     Base* clone() const { return do_clone(); }
     void foo() { do_foo(); }
     
- virtual bool less_than( const Base& b ) const
+ virtual bool less_than( const Base& /*b*/ ) const
     {
         return true;
     }
@@ -95,9 +95,9 @@
 #endif
     
 private:
- virtual void do_print( ostream& out ) const { };
- virtual Base* do_clone() const { return new Base( *this ); };
- virtual void do_foo() { };
+ virtual void do_print( ostream& /*out*/ ) const { };
+ virtual Base* do_clone() const { return new Base( *this ); };
+ virtual void do_foo() { };
 };
 
 #ifdef PTR_CONTAINER_DEBUG
@@ -274,19 +274,31 @@
 // used to hide "unused variable" warnings
 //
 template< class T >
-inline void hide_warning( T& r )
+inline void hide_warning( T& /*r*/ )
 { }
 
 //
+// used to customize tests for circular_buffer
+//
+template< class Cont >
+struct set_capacity
+{
+ void operator()( Cont& ) const
+ { }
+};
+
+//
 // transfer() test
 //
 
 template< class Cont1, class Cont2 >
 void transfer_test( Cont1& from, Cont2& to )
 {
+ BOOST_MESSAGE( "starting container transfer test" );
     BOOST_CHECK( !from.empty() );
     to. BOOST_NESTED_TEMPLATE transfer<Cont1>( from );
     BOOST_CHECK( !to.empty() );
+ BOOST_MESSAGE( "finishing container transfer test" );
 }
 
 
@@ -297,7 +309,10 @@
 template< class BaseContainer, class DerivedContainer, class Derived >
 void container_assignment_test()
 {
+ BOOST_MESSAGE( "starting container assignment test" );
+
     DerivedContainer derived;
+ set_capacity<DerivedContainer>()( derived );
     derived.insert( derived.begin(), new Derived );
     derived.insert( derived.begin(), new Derived );
 
@@ -311,6 +326,8 @@
     base2 = base;
     BOOST_CHECK_EQUAL( base2.size(), base.size() );
     base = base;
+
+ BOOST_MESSAGE( "finished container assignment test" );
 }
 
 

Modified: branches/proto/v4/libs/python/doc/tutorial/doc/tutorial.qbk
==============================================================================
--- branches/proto/v4/libs/python/doc/tutorial/doc/tutorial.qbk (original)
+++ branches/proto/v4/libs/python/doc/tutorial/doc/tutorial.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -186,6 +186,10 @@
 Or something similar. If all is well, you should now have built the DLLs and
 run the Python program.
 
+[note Starting from Boost 1.35, bjam erases the generated executables
+(e.g. pyd file) after the test has concluded to conserve disk space.
+To keep bjam from doing that, pass --preserve-test-targets to bjam.]
+
 [:[*There you go... Have fun!]]
 
 [endsect]

Modified: branches/proto/v4/libs/python/doc/v2/object.html
==============================================================================
--- branches/proto/v4/libs/python/doc/v2/object.html (original)
+++ branches/proto/v4/libs/python/doc/v2/object.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -655,6 +655,11 @@
       template &lt;class A0, class A1,...class An&gt;
       object operator()(A0 const&amp;, A1 const&amp;,...An const&amp;) const;
 
+ detail::args_proxy operator* () const;
+ object operator()(detail::args_proxy const &amp;args) const;
+ object operator()(detail::args_proxy const &amp;args,
+ detail::kwds_proxy const &amp;kwds) const;
+
       // truth value testing
       //
       typedef unspecified bool_type;
@@ -704,6 +709,25 @@
       call&lt;object&gt;(object(*static_cast&lt;U*&gt;(this)).ptr(), a1,
       a2,...aN)</dt>
     </dl>
+
+<pre>
+object operator()(detail::args_proxy const &amp;args) const;
+</pre>
+<dl class="function-semantics">
+ <dt><b>Effects:</b>
+ call object with arguments given by the tuple <varname>args</varname></dt>
+</dl>
+<pre>
+object operator()(detail::args_proxy const &amp;args,
+ detail::kwds_proxy const &amp;kwds) const;
+</pre>
+<dl class="function-semantics">
+ <dt><b>Effects:</b>
+ call object with arguments given by the tuple <varname>args</varname>, and named
+ arguments given by the dictionary <varname>kwds</varname></dt>
+</dl>
+
+
 <pre>
 operator bool_type() const;
 </pre>

Modified: branches/proto/v4/libs/python/doc/v2/pickle.html
==============================================================================
--- branches/proto/v4/libs/python/doc/v2/pickle.html (original)
+++ branches/proto/v4/libs/python/doc/v2/pickle.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,112 +1,93 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN"
-"http://www.w3.org/TR/REC-html40/strict.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
-<title>Boost.Python Pickle Support</title>
-
-<div>
-
-<img src="../../../../boost.png"
- alt="boost.png (6897 bytes)"
- align="center"
- width="277" height="86">
-
-<hr>
-<h1>Boost.Python Pickle Support</h1>
-
-Pickle is a Python module for object serialization, also known
-as persistence, marshalling, or flattening.
-
-<p>
-It is often necessary to save and restore the contents of an object to
-a file. One approach to this problem is to write a pair of functions
-that read and write data from a file in a special format. A powerful
-alternative approach is to use Python's pickle module. Exploiting
-Python's ability for introspection, the pickle module recursively
-converts nearly arbitrary Python objects into a stream of bytes that
-can be written to a file.
-
-<p>
-The Boost Python Library supports the pickle module
-through the interface as described in detail in the
-<a href="http://www.python.org/doc/current/lib/module-pickle.html"
->Python Library Reference for pickle.</a> This interface
-involves the special methods <tt>__getinitargs__</tt>,
-<tt>__getstate__</tt> and <tt>__setstate__</tt> as described
-in the following. Note that Boost.Python is also fully compatible
-with Python's cPickle module.
-
-<hr>
-<h2>The Boost.Python Pickle Interface</h2>
-
-At the user level, the Boost.Python pickle interface involves three special
-methods:
-
-<dl>
-<dt>
-<strong><tt>__getinitargs__</tt></strong>
-<dd>
- When an instance of a Boost.Python extension class is pickled, the
- pickler tests if the instance has a <tt>__getinitargs__</tt> method.
- This method must return a Python tuple (it is most convenient to use
- a boost::python::tuple). When the instance is restored by the
- unpickler, the contents of this tuple are used as the arguments for
- the class constructor.
-
- <p>
- If <tt>__getinitargs__</tt> is not defined, <tt>pickle.load</tt>
- will call the constructor (<tt>__init__</tt>) without arguments;
- i.e., the object must be default-constructible.
-
-<p>
-<dt>
-<strong><tt>__getstate__</tt></strong>
-
-<dd>
- When an instance of a Boost.Python extension class is pickled, the
- pickler tests if the instance has a <tt>__getstate__</tt> method.
- This method should return a Python object representing the state of
- the instance.
-
-<p>
-<dt>
-<strong><tt>__setstate__</tt></strong>
-
-<dd>
- When an instance of a Boost.Python extension class is restored by the
- unpickler (<tt>pickle.load</tt>), it is first constructed using the
- result of <tt>__getinitargs__</tt> as arguments (see above). Subsequently
- the unpickler tests if the new instance has a <tt>__setstate__</tt>
- method. If so, this method is called with the result of
- <tt>__getstate__</tt> (a Python object) as the argument.
-
-</dl>
-
-The three special methods described above may be <tt>.def()</tt>'ed
-individually by the user. However, Boost.Python provides an easy to use
-high-level interface via the
-<strong><tt>boost::python::pickle_suite</tt></strong> class that also
-enforces consistency: <tt>__getstate__</tt> and <tt>__setstate__</tt>
-must be defined as pairs. Use of this interface is demonstrated by the
-following examples.
-
-<hr>
-<h2>Examples</h2>
-
-There are three files in
-<tt>boost/libs/python/test</tt> that show how to
-provide pickle support.
-
-<hr>
-<h3>pickle1.cpp</h3>
-
- The C++ class in this example can be fully restored by passing the
- appropriate argument to the constructor. Therefore it is sufficient
- to define the pickle interface method <tt>__getinitargs__</tt>.
- This is done in the following way:
-
-<ul>
-<li>1. Definition of the C++ pickle function:
-<pre>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Boost.Python Pickle Support</title>
+</head>
+
+<body>
+ <div>
+ <img src="../../../../boost.png" alt="boost.png (6897 bytes)" align=
+ "center" width="277" height="86" />
+ <hr />
+
+ <h1>Boost.Python Pickle Support</h1>Pickle is a Python module for object
+ serialization, also known as persistence, marshalling, or flattening.
+
+ <p>It is often necessary to save and restore the contents of an object to
+ a file. One approach to this problem is to write a pair of functions that
+ read and write data from a file in a special format. A powerful
+ alternative approach is to use Python's pickle module. Exploiting
+ Python's ability for introspection, the pickle module recursively
+ converts nearly arbitrary Python objects into a stream of bytes that can
+ be written to a file.</p>
+
+ <p>The Boost Python Library supports the pickle module through the
+ interface as described in detail in the <a href=
+ "http://www.python.org/doc/current/lib/module-pickle.html">Python Library
+ Reference for pickle.</a> This interface involves the special methods
+ <tt>__getinitargs__</tt>, <tt>__getstate__</tt> and <tt>__setstate__</tt>
+ as described in the following. Note that Boost.Python is also fully
+ compatible with Python's cPickle module.</p>
+ <hr />
+
+ <h2>The Boost.Python Pickle Interface</h2>At the user level, the
+ Boost.Python pickle interface involves three special methods:
+
+ <dl>
+ <dt><strong><tt>__getinitargs__</tt></strong></dt>
+
+ <dd>
+ When an instance of a Boost.Python extension class is pickled, the
+ pickler tests if the instance has a <tt>__getinitargs__</tt> method.
+ This method must return a Python tuple (it is most convenient to use
+ a boost::python::tuple). When the instance is restored by the
+ unpickler, the contents of this tuple are used as the arguments for
+ the class constructor.
+
+ <p>If <tt>__getinitargs__</tt> is not defined, <tt>pickle.load</tt>
+ will call the constructor (<tt>__init__</tt>) without arguments;
+ i.e., the object must be default-constructible.</p>
+ </dd>
+
+ <dt><strong><tt>__getstate__</tt></strong></dt>
+
+ <dd>When an instance of a Boost.Python extension class is pickled, the
+ pickler tests if the instance has a <tt>__getstate__</tt> method. This
+ method should return a Python object representing the state of the
+ instance.</dd>
+
+ <dt><strong><tt>__setstate__</tt></strong></dt>
+
+ <dd>When an instance of a Boost.Python extension class is restored by
+ the unpickler (<tt>pickle.load</tt>), it is first constructed using the
+ result of <tt>__getinitargs__</tt> as arguments (see above).
+ Subsequently the unpickler tests if the new instance has a
+ <tt>__setstate__</tt> method. If so, this method is called with the
+ result of <tt>__getstate__</tt> (a Python object) as the argument.</dd>
+ </dl>The three special methods described above may be <tt>.def()</tt>'ed
+ individually by the user. However, Boost.Python provides an easy to use
+ high-level interface via the
+ <strong><tt>boost::python::pickle_suite</tt></strong> class that also
+ enforces consistency: <tt>__getstate__</tt> and <tt>__setstate__</tt>
+ must be defined as pairs. Use of this interface is demonstrated by the
+ following examples.
+ <hr />
+
+ <h2>Examples</h2>There are three files in <tt>boost/libs/python/test</tt>
+ that show how to provide pickle support.
+ <hr />
+
+ <h3>pickle1.cpp</h3>The C++
+ class in this example can be fully restored by passing the appropriate
+ argument to the constructor. Therefore it is sufficient to define the
+ pickle interface method <tt>__getinitargs__</tt>. This is done in the
+ following way:
+
+ <ul>
+ <li>1. Definition of the C++ pickle function:
+ <pre>
   struct world_pickle_suite : boost::python::pickle_suite
   {
     static
@@ -117,26 +98,28 @@
     }
   };
 </pre>
-<li>2. Establishing the Python binding:
-<pre>
+ </li>
+
+ <li>2. Establishing the Python binding:
+ <pre>
   class_&lt;world&gt;("world", args&lt;const std::string&amp;&gt;())
       // ...
       .def_pickle(world_pickle_suite())
       // ...
 </pre>
-</ul>
-
-<hr>
-<h3>pickle2.cpp</h3>
-
- The C++ class in this example contains member data that cannot be
- restored by any of the constructors. Therefore it is necessary to
- provide the <tt>__getstate__</tt>/<tt>__setstate__</tt> pair of
- pickle interface methods:
-
-<ul>
-<li>1. Definition of the C++ pickle functions:
-<pre>
+ </li>
+ </ul>
+ <hr />
+
+ <h3>pickle2.cpp</h3>The C++
+ class in this example contains member data that cannot be restored by any
+ of the constructors. Therefore it is necessary to provide the
+ <tt>__getstate__</tt>/<tt>__setstate__</tt> pair of pickle interface
+ methods:
+
+ <ul>
+ <li>1. Definition of the C++ pickle functions:
+ <pre>
   struct world_pickle_suite : boost::python::pickle_suite
   {
     static
@@ -161,92 +144,76 @@
     }
   };
 </pre>
-<li>2. Establishing the Python bindings for the entire suite:
-<pre>
+ </li>
+
+ <li>2. Establishing the Python bindings for the entire suite:
+ <pre>
   class_&lt;world&gt;("world", args&lt;const std::string&amp;&gt;())
       // ...
       .def_pickle(world_pickle_suite())
       // ...
 </pre>
-</ul>
-
- <p>
- For simplicity, the <tt>__dict__</tt> is not included in the result
- of <tt>__getstate__</tt>. This is not generally recommended, but a
- valid approach if it is anticipated that the object's
- <tt>__dict__</tt> will always be empty. Note that the safety guard
- described below will catch the cases where this assumption is violated.
-
-<hr>
-<h3>pickle3.cpp</h3>
-
- This example is similar to <a
- href="../../test/pickle2.cpp"><tt>pickle2.cpp</tt></a>. However, the
- object's <tt>__dict__</tt> is included in the result of
- <tt>__getstate__</tt>. This requires a little more code but is
- unavoidable if the object's <tt>__dict__</tt> is not always empty.
-
-<hr>
-<h2>Pitfall and Safety Guard</h2>
-
-The pickle protocol described above has an important pitfall that the
-end user of a Boost.Python extension module might not be aware of:
-<p>
-<strong>
-<tt>__getstate__</tt> is defined and the instance's <tt>__dict__</tt>
-is not empty.
-</strong>
-<p>
-
- The author of a Boost.Python extension class might provide a
- <tt>__getstate__</tt> method without considering the possibilities
- that:
-
- <p>
- <ul>
- <li>
- his class is used in Python as a base class. Most likely the
- <tt>__dict__</tt> of instances of the derived class needs to be
- pickled in order to restore the instances correctly.
-
- <p>
- <li>
- the user adds items to the instance's <tt>__dict__</tt> directly.
- Again, the <tt>__dict__</tt> of the instance then needs to be
- pickled.
-
- </ul>
- <p>
-
- To alert the user to this highly unobvious problem, a safety guard is
- provided. If <tt>__getstate__</tt> is defined and the instance's
- <tt>__dict__</tt> is not empty, Boost.Python tests if the class has
- an attribute <tt>__getstate_manages_dict__</tt>. An exception is
- raised if this attribute is not defined:
+ </li>
+ </ul>
 
-<pre>
+ <p>For simplicity, the <tt>__dict__</tt> is not included in the result of
+ <tt>__getstate__</tt>. This is not generally recommended, but a valid
+ approach if it is anticipated that the object's <tt>__dict__</tt> will
+ always be empty. Note that the safety guard described below will catch
+ the cases where this assumption is violated.</p>
+ <hr />
+
+ <h3>pickle3.cpp</h3>This
+ example is similar to <a href=
+ "../../test/pickle2.cpp"><tt>pickle2.cpp</tt></a>. However, the object's
+ <tt>__dict__</tt> is included in the result of <tt>__getstate__</tt>.
+ This requires a little more code but is unavoidable if the object's
+ <tt>__dict__</tt> is not always empty.
+ <hr />
+
+ <h2>Pitfall and Safety Guard</h2>The pickle protocol described above has
+ an important pitfall that the end user of a Boost.Python extension module
+ might not be aware of:
+
+ <p><strong><tt>__getstate__</tt> is defined and the instance's
+ <tt>__dict__</tt> is not empty.</strong></p>
+
+ <p>The author of a Boost.Python extension class might provide a
+ <tt>__getstate__</tt> method without considering the possibilities
+ that:</p>
+
+ <ul>
+ <li>his class is used in Python as a base class. Most likely the
+ <tt>__dict__</tt> of instances of the derived class needs to be pickled
+ in order to restore the instances correctly.</li>
+
+ <li>the user adds items to the instance's <tt>__dict__</tt> directly.
+ Again, the <tt>__dict__</tt> of the instance then needs to be
+ pickled.</li>
+ </ul>
+
+ <p>To alert the user to this highly unobvious problem, a safety guard is
+ provided. If <tt>__getstate__</tt> is defined and the instance's
+ <tt>__dict__</tt> is not empty, Boost.Python tests if the class has an
+ attribute <tt>__getstate_manages_dict__</tt>. An exception is raised if
+ this attribute is not defined:</p>
+ <pre>
     RuntimeError: Incomplete pickle support (__getstate_manages_dict__ not set)
-</pre>
-
- To resolve this problem, it should first be established that the
- <tt>__getstate__</tt> and <tt>__setstate__</tt> methods manage the
- instances's <tt>__dict__</tt> correctly. Note that this can be done
- either at the C++ or the Python level. Finally, the safety guard
- should intentionally be overridden. E.g. in C++ (from
- pickle3.cpp):
-
-<pre>
+</pre>To resolve this problem, it should first be established that the <tt>
+ __getstate__</tt> and <tt>__setstate__</tt> methods manage the
+ instances's <tt>__dict__</tt> correctly. Note that this can be done
+ either at the C++ or the Python level. Finally, the safety guard should
+ intentionally be overridden. E.g. in C++ (from <a href=
+ "../../test/pickle3.cpp"><tt>pickle3.cpp</tt></a>):
+ <pre>
   struct world_pickle_suite : boost::python::pickle_suite
   {
     // ...
 
     static bool getstate_manages_dict() { return true; }
   };
-</pre>
-
- Alternatively in Python:
-
-<pre>
+</pre>Alternatively in Python:
+ <pre>
     import your_bpl_module
     class your_class(your_bpl_module.your_class):
       __getstate_manages_dict__ = 1
@@ -255,54 +222,41 @@
       def __setstate__(self, state):
         # your code here
 </pre>
+ <hr />
 
-<hr>
-<h2>Practical Advice</h2>
+ <h2>Practical Advice</h2>
 
-<ul>
-<li>
- In Boost.Python extension modules with many extension classes,
- providing complete pickle support for all classes would be a
- significant overhead. In general complete pickle support should
- only be implemented for extension classes that will eventually
- be pickled.
-
-<p>
-<li>
- Avoid using <tt>__getstate__</tt> if the instance can also be
- reconstructed by way of <tt>__getinitargs__</tt>. This automatically
- avoids the pitfall described above.
-
-<p>
-<li>
- If <tt>__getstate__</tt> is required, include the instance's
- <tt>__dict__</tt> in the Python object that is returned.
-
-</ul>
-
-<hr>
-<h2>Light-weight alternative: pickle support implemented in Python</h2>
-
-<h3>pickle4.cpp</h3>
-
-The <tt>pickle4.cpp</tt> example demonstrates an alternative technique
-for implementing pickle support. First we direct Boost.Python via
-the <tt>class_::enable_pickling()</tt> member function to define only
-the basic attributes required for pickling:
-
-<pre>
+ <ul>
+ <li>In Boost.Python extension modules with many extension classes,
+ providing complete pickle support for all classes would be a
+ significant overhead. In general complete pickle support should only be
+ implemented for extension classes that will eventually be pickled.</li>
+
+ <li>Avoid using <tt>__getstate__</tt> if the instance can also be
+ reconstructed by way of <tt>__getinitargs__</tt>. This automatically
+ avoids the pitfall described above.</li>
+
+ <li>If <tt>__getstate__</tt> is required, include the instance's
+ <tt>__dict__</tt> in the Python object that is returned.</li>
+ </ul>
+ <hr />
+
+ <h2>Light-weight alternative: pickle support implemented in Python</h2>
+
+ <h3>pickle4.cpp</h3>The
+ <tt>pickle4.cpp</tt> example demonstrates an alternative technique for
+ implementing pickle support. First we direct Boost.Python via the
+ <tt>class_::enable_pickling()</tt> member function to define only the
+ basic attributes required for pickling:
+ <pre>
   class_&lt;world&gt;("world", args&lt;const std::string&amp;&gt;())
       // ...
       .enable_pickling()
       // ...
-</pre>
-
-This enables the standard Python pickle interface as described
-in the Python documentation. By &quot;injecting&quot; a
-<tt>__getinitargs__</tt> method into the definition of the wrapped
-class we make all instances pickleable:
-
-<pre>
+</pre>This enables the standard Python pickle interface as described in the
+Python documentation. By "injecting" a <tt>__getinitargs__</tt> method into
+the definition of the wrapped class we make all instances pickleable:
+ <pre>
   # import the wrapped world class
   from pickle4_ext import world
 
@@ -312,18 +266,15 @@
 
   # now inject __getinitargs__ (Python is a dynamic language!)
   world.__getinitargs__ = world_getinitargs
-</pre>
-
-See also the
-<a href="../tutorial/doc/html/python/techniques.html#python.extending_wrapped_objects_in_python"
->tutorial section</a> on injecting additional methods from Python.
-
-<hr>
-
-&copy; Copyright Ralf W. Grosse-Kunstleve 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)
-
-<p>
-Updated: Feb 2004.
-</div>
+</pre>See also the <a href=
+"../tutorial/doc/html/python/techniques.html#python.extending_wrapped_objects_in_python">
+ tutorial section</a> on injecting additional methods from Python.
+ <hr />
+ © Copyright Ralf W. Grosse-Kunstleve 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)
+
+ <p>Updated: Feb 2004.</p>
+ </div>
+</body>
+</html>

Modified: branches/proto/v4/libs/python/test/module_tail.cpp
==============================================================================
--- branches/proto/v4/libs/python/test/module_tail.cpp (original)
+++ branches/proto/v4/libs/python/test/module_tail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,7 @@
 # endif
 
 # ifdef _MSC_VER
+# include <eh.h> // for _set_se_translator()
 # pragma warning(push)
 # pragma warning(disable:4297)
 # pragma warning(disable:4535)

Modified: branches/proto/v4/libs/python/test/object.cpp
==============================================================================
--- branches/proto/v4/libs/python/test/object.cpp (original)
+++ branches/proto/v4/libs/python/test/object.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -187,6 +187,11 @@
     return s.slice(2,-1).slice(1,-1) == "lo, wor";
 }
 
+object test_call(object c, object args, object kwds)
+{
+ return c(*args, **kwds);
+}
+
 bool check_binary_operators()
 {
     int y;
@@ -377,6 +382,7 @@
     def("test_item", test_item);
     def("test_not_item", test_not_item);
 
+ def("test_call", test_call);
     def("check_binary_operators", check_binary_operators);
     def("check_inplace", check_inplace);
     def("check_string_slice", check_string_slice);

Modified: branches/proto/v4/libs/python/test/object.py
==============================================================================
--- branches/proto/v4/libs/python/test/object.py (original)
+++ branches/proto/v4/libs/python/test/object.py 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -134,7 +134,12 @@
 
         Operators
 
-
+>>> def print_args(*args, **kwds):
+... print args, kwds
+>>> test_call(print_args, (0, 1, 2, 3), {'a':'A'})
+(0, 1, 2, 3) {'a': 'A'}
+
+
>>> assert check_binary_operators()
 
>>> class X: pass

Modified: branches/proto/v4/libs/range/doc/boost_range.html
==============================================================================
--- branches/proto/v4/libs/range/doc/boost_range.html (original)
+++ branches/proto/v4/libs/range/doc/boost_range.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -152,7 +152,7 @@
     </span>rend<span class=special>( </span><span class=keyword>const </span><span
 class=identifier>T</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);
     </span>
- </span><span class=comment>//
+ <span class=comment>//
     // Random Access Range functions
     //
     
@@ -235,7 +235,7 @@
                     <td><code>A[sz]</code>
                     <td><code>a</code>
                     <td>denotes an array of type <code>A</code> of size <code>sz</code>
- <tr>
+ </tr>
                 <tr>
                     <td><code>Char*</code>
                     <td><code>s</code>
@@ -259,9 +259,9 @@
                     <th>
                         Complexity</th>
                 </tr>
- <tr>
- <a name="range_iterator"></a>
- <td><code>range_iterator&lt;X&gt;::type</code></td>
+
+ <tr >
+ <td><a name="range_iterator"></a><code>range_iterator&lt;X&gt;::type</code></td>
                     <td><code>T::iterator</code><br>
                         <code>P::first_type</code><br>
                         <code>A*</code><br>
@@ -269,8 +269,8 @@
                     <td>compile time</td>
                 </tr>
                 <tr>
- <a name="range_const_iterator"></a>
- <td><code>range_iterator&lt;const X&gt;::type</code></td>
+
+ <td><a name="range_const_iterator"></a><code>range_iterator&lt;const X&gt;::type</code></td>
                     <td><code>T::const_iterator</code><br>
                         <code>P::first_type</code><br>
                         <code>const A*</code><br>
@@ -278,54 +278,53 @@
                     <td>compile time</td>
                 </tr>
                 <tr>
- <a name="range_value"></a>
- <td><code>range_value&lt;X&gt;::type</code></td>
+
+ <td><a name="range_value"></a><code>range_value&lt;X&gt;::type</code></td>
                     <td><code>boost::iterator_value&lt;range_iterator&lt;X&gt;::type&gt;::type</code>
                      </td>
                     <td>compile time</td>
                 </tr>
                 <tr>
- <a name="range_reference"></a>
- <td><code>range_reference&lt;X&gt;::type</code></td>
+
+ <td><a name="range_reference"></a><code>range_reference&lt;X&gt;::type</code></td>
                     <td><code>boost::iterator_reference&lt;range_iterator&lt;X&gt;::type&gt;::type</code>
                      </td>
                     <td>compile time</td>
                 </tr>
 
                                 <tr>
- <a name="range_pointer"></a>
- <td><code>range_pointer&lt;X&gt;::type</code></td>
+
+ <td><a name="range_pointer"></a><code>range_pointer&lt;X&gt;::type</code></td>
                     <td><code>boost::iterator_pointer&lt;range_iterator&lt;X&gt;::type&gt;::type</code>
                      </td>
                     <td>compile time</td>
                 </tr>
                 
                                 <tr>
- <a name="range_category"></a>
- <td><code>range_category&lt;X&gt;::type</code></td>
+
+ <td><a name="range_category"></a><code>range_category&lt;X&gt;::type</code></td>
                     <td><code>boost::iterator_category&lt;range_iterator&lt;X&gt;::type&gt;::type</code>
                      </td>
                     <td>compile time</td>
                 </tr>
                 <tr>
- <a name="range_difference"></a>
- <td><code>range_difference&lt;X&gt;::type</code></td>
+
+ <td><a name="range_difference"></a><code>range_difference&lt;X&gt;::type</code></td>
                     <td>
                         <code>boost::iterator_difference&lt;range_iterator&lt;X&gt;::type&gt;::type</code></td>
                         
                     <td>compile time</td>
                 </tr>
- </tr>
 
                 <tr>
- <a name="range_reverse_iterator"></a>
- <td><code>range_reverse_iterator&lt;X&gt;::type</code></td>
+
+ <td><a name="range_reverse_iterator"></a><code>range_reverse_iterator&lt;X&gt;::type</code></td>
                     <td><code>boost::reverse_iterator&lt;range_iterator&lt;X&gt;::type&gt;</code><br>
                     <td>compile time</td>
                 </tr>
                 <tr>
- <a name="range_const_reverse_iterator"></a>
- <td><code>range_reverse_iterator&lt;const X&gt;::type</code></td>
+
+ <td><a name="range_const_reverse_iterator"></a><code>range_reverse_iterator&lt;const X&gt;::type</code></td>
                     <td><code>boost::reverse_iterator&lt;range_iterator&lt;const X&gt;::type&gt;</code>
                         <br>
                     <td>compile time</td>
@@ -346,11 +345,11 @@
                         Complexity</th>
                 </tr>
                 <tr>
- <a name="begin"></a>
- <td><code>begin(x)</code></td>
+
+ <td><a name="begin"></a><code>begin(x)</code></td>
                     <td><code>range_iterator&lt;X&gt;::type</code></td>
                     <td>
- <code>p.first</code> if <code>p</code> is of type <code>std::pair&ltT&gt;<code><br>
+ <code>p.first</code> if <code>p</code> is of type <code>std::pair&lt;T&gt;<code><br>
                         <code>a</code> if <code>a</code> is an array <br>
                         <code>range_begin(x)</code> if that expression would invoke a function found by ADL <br>
                         <code>t.begin()</code> otherwise
@@ -358,11 +357,11 @@
                     <td>constant time</td>
                 </tr>
                 <tr>
- <a name="end"></a>
- <td><code>end(x)</code></td>
+
+ <td><a name="end"></a><code>end(x)</code></td>
                     <td><code>range_iterator&lt;X&gt;::type</code></td>
                     <td>
- <code>p.second</code> if <code>p</code> is of type <code>std::pair&ltT&gt;<code><br>
+ <code>p.second</code> if <code>p</code> is of type <code>std::pair&lt;T&gt;<code><br>
                         <code>a + sz</code> if <code>a</code> is an array of size <code>sz</code>
                         
                         <br>
@@ -373,16 +372,16 @@
                         constant time </td>
                 </tr>
                 <tr>
- <a name="empty"></a>
- <td><code>empty(x)</code></td>
+
+ <td><a name="empty"></a><code>empty(x)</code></td>
                     <td><code>bool</code></td>
                     <td><code>boost::begin(x) == boost::end(x)</code><br>
                     <td> constant time <br>
                     </td>
                 </tr>
                 <tr>
- <a name="distance"></a>
- <td><code>distance(x)</code></td>
+
+ <td><a name="distance"></a><code>distance(x)</code></td>
                     <td><code>range_difference&lt;X&gt;::type</code></td>
                     <td>
                         <code>
@@ -394,16 +393,16 @@
                 </tr>
 
                 <tr>
- <a name="size"></a>
- <td><code>size(x)</code></td>
+
+ <td><a name="size"></a><code>size(x)</code></td>
                     <td><code>range_difference&lt;X&gt;::type</code></td>
                     <td><code> boost::end(x) - boost::begin(x)</code>
                         
                     <td> constant time </td>
                 </tr>
                 <tr>
- <a name="rbegin"></a>
- <td><code>rbegin(x)</code></td>
+
+ <td><a name="rbegin"></a><code>rbegin(x)</code></td>
                     <td><code>range_reverse_iterator&lt;X&gt;::type</code></td>
                     <td><code>range_reverse_iterator&lt;X&gt;::type( boost::end(x) )</code>
                         <br>
@@ -411,15 +410,15 @@
                     </td>
                 </tr>
                 <tr>
- <a name="rend"></a>
- <td><code>rend(x)</code></td>
+
+ <td> <a name="rend"></a><code>rend(x)</code></td>
                     <td><code>range_reverse_iterator&lt;X&gt;::type</code></td>
                     <td><code>range_reverse_iterator&lt;X&gt;::type( boost::begin(x) )</code>
                     <td>constant time</td>
                 </tr>
                 <tr>
- <a name="const_begin"></a>
- <td><code>const_begin(x)</code></td>
+
+ <td><a name="const_begin"></a><code>const_begin(x)</code></td>
                     <td><code>range_iterator&lt;const X&gt;::type</code></td>
                     <td><code>range_iterator&lt;const X&gt;::type( boost::begin(x) )</code>
                         <br>
@@ -427,15 +426,15 @@
                     </td>
                 </tr>
                 <tr>
- <a name="const_end"></a>
- <td><code>const_end(x)</code></td>
+
+ <td><a name="const_end"></a><code>const_end(x)</code></td>
                     <td><code>range_iterator&lt;const X&gt;::type</code></td>
                     <td><code>range_iterator&lt;const X&gt;::type( boost::end(x) )</code>
                     <td>constant time</td>
                 </tr>
                 <tr>
- <a name="const_rbegin"></a>
- <td><code>const_rbegin(x)</code></td>
+
+ <td><a name="const_rbegin"></a><code>const_rbegin(x)</code></td>
                     <td><code>range_reverse_iterator&lt;const X&gt;::type</code></td>
                     <td><code>range_reverse_iterator&lt;const X&gt;::type( boost::rbegin(x) )</code>
                         <br>
@@ -443,16 +442,16 @@
                     </td>
                 </tr>
                 <tr>
- <a name="const_rend"></a>
- <td><code>const_rend(x)</code></td>
+
+ <td><a name="const_rend"></a><code>const_rend(x)</code></td>
                     <td><code>range_reverse_iterator&lt;const X&gt;::type</code></td>
                     <td><code>range_reverse_iterator&lt;const X&gt;::type( boost::rend(x) )</code>
         
                     <td>constant time</td>
                 </tr>
                  <tr>
- <a name="as_literal"></a>
- <td><code>as_literal(x)</code></td>
+
+ <td><a name="as_literal"></a><code>as_literal(x)</code></td>
                      <td><code>iterator_range&lt;U></code> where <code>U</code> is
                         <code>Char*</code> if <code>x</code> is a pointer to a
                         string and <code>U</code> is
@@ -460,20 +459,21 @@
                         </td>
                      <td>
                          
- <code>[a,a+sz-1)</code> if <code>a</code> is an array of size <code>sz</code><br>
- <code>[s,s + std::char_traits&lt;X&gt;::length(s))</code> if <code>s</code> is a <code>Char*</code>
+ <!-- <code>[a,a+sz-1)</code> if <code>a</code> is an array
+ of size <code>sz</code><br>-->
+ <code>[s,s + std::char_traits&lt;X&gt;::length(s))</code> if <code>s</code> is a <code>Char*</code> or an array of <code>Char</code>
                                 <br>
                                     <code>[boost::begin(x),boost::end(x))</code> otherwise
 
 
                          
                          </td>
- <td>linear time for pointers to a string, constant time
- otherwise</td>
+ <td>linear time for pointers to a string or arrays of
+ <code>Char</code>, constant time otherwise</td>
                 </tr>
                  <tr>
- <a name="as_array"></a>
- <td><code>as_array(x)</code></td>
+
+ <td><a name="as_array"></a><code>as_array(x)</code></td>
                      <td><code>iterator_range&lt;X></code> </td>
                      <td>
                                   <code>[boost::begin(x),boost::end(x))</code>
@@ -561,7 +561,7 @@
                         Member type</th>
                     <th>
                         Related concept</th>
- <tr>
+ </tr>
                 <tr>
                     <td><code>iterator</code></td>
                     <td>Single Pass Range</td>

Modified: branches/proto/v4/libs/range/doc/examples.html
==============================================================================
--- branches/proto/v4/libs/range/doc/examples.html (original)
+++ branches/proto/v4/libs/range/doc/examples.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -23,16 +23,16 @@
     <ul >
         <li >
             <a href="../test/string.cpp" target="_self" ><code >string.cpp</code></a>
- </li>
+
         shows how to implement a container version of <code >std::find()</code> that
         works with <code >char[],wchar_t[],char*,wchar_t*.</code>
-
+ </li>
         <li >
             <a href="../test/algorithm_example.cpp" target="_self" ><code >algorithm_example.cpp</code></a>
 
- </li>
+
         shows the replace example from the introduction.
-
+ </li>
         <li> iterator_range.cpp
         <li> sub_range.cpp
         <li> iterator_pair.cpp

Modified: branches/proto/v4/libs/range/doc/faq.html
==============================================================================
--- branches/proto/v4/libs/range/doc/faq.html (original)
+++ branches/proto/v4/libs/range/doc/faq.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -22,7 +22,7 @@
         <li >
             <i>Why is there no difference between <code >range_iterator&lt;C&gt;::type</code>
             and <code >range_const_iterator&lt;C&gt;::type</code> for <code>std::pair&lt;iterator, iterator&gt;</code></i>.
- </li>
+
         <p >
         In general it is not possible nor desirable to find a corresponding <code >const_iterator</code>.
         When it is possible to come up with one, the client might choose to construct a <code >std::pair&lt;const_iterator,const_iterator&gt;</code>
@@ -33,7 +33,7 @@
         is somewhat more convenient than a <code>pair</code> and that a <a
         href="utility_class.html#sub_range"><code>sub_range</code></a> does
        propagate const-ness. </p>
-
+ </li>
         <li >
             <i>Why is there not supplied more types or more functions?</i>
             <p >

Modified: branches/proto/v4/libs/range/doc/headers.html
==============================================================================
--- branches/proto/v4/libs/range/doc/headers.html (original)
+++ branches/proto/v4/libs/range/doc/headers.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -167,7 +167,7 @@
         </tr>
 
     </table>
- <br
+ <br>
       </p>
 
 

Modified: branches/proto/v4/libs/range/doc/intro.html
==============================================================================
--- branches/proto/v4/libs/range/doc/intro.html (original)
+++ branches/proto/v4/libs/range/doc/intro.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -108,7 +108,7 @@
     </span>
     <span class=identifier>my_vector</span><span class=special>.</span><span
 class=identifier>assign</span><span class=special>( </span><span class=identifier>values</span><span class=special>, </span><span class=identifier>boost</span><span class=special>::</span><span class=identifier>end</span><span class=special>( </span><span class=identifier>values </span><span class=special>) </span><span class=special>);</span>
- </span><span class=keyword>typedef </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>vector</span><span class=special>&lt;</span><span class=keyword>int</span><span class=special>&gt;::</span><span class=identifier>iterator </span><span class=identifier>iterator</span><span class=special>;
+ <span class=keyword>typedef </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>vector</span><span class=special>&lt;</span><span class=keyword>int</span><span class=special>&gt;::</span><span class=identifier>iterator </span><span class=identifier>iterator</span><span class=special>;
     </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>pair</span><span class=special>&lt;</span><span class=identifier>iterator</span><span class=special>,</span><span class=identifier>iterator</span><span class=special>&gt; </span><span class=identifier>my_view</span><span class=special>( </span><span class=identifier>boost</span><span class=special>::</span><span class=identifier>begin</span><span class=special>( </span><span class=identifier>my_vector </span><span class=special>),
                                                 </span><span class=identifier>boost</span><span class=special>::</span><span class=identifier>begin</span><span class=special>( </span><span class=identifier>my_vector </span><span class=special>) </span><span class=special>+ </span><span class=identifier>N </span><span class=special>);
     </span><span class=keyword>char </span><span class=identifier>str_val</span><span class=special>[] </span><span class=special>= </span><span class=string>&quot;a string&quot;</span><span class=special>;

Modified: branches/proto/v4/libs/range/doc/portability.html
==============================================================================
--- branches/proto/v4/libs/range/doc/portability.html (original)
+++ branches/proto/v4/libs/range/doc/portability.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -29,9 +29,8 @@
     template partial specialization. For non-conforming compilers there might be a
     chance that it works anyway thanks to workarounds in the type traits library.
     </p>
- <pp>
- Visual C++ 6/7.0 has a limited support for arrays: as long as the arrays are
- of built-in type it should work.
+ <p> Visual C++ 6/7.0 has a limited support for arrays: as long as the arrays
+ are of built-in type it should work.
     </p>
     <p >
     Notice also that some compilers cannot do function template ordering properly.

Modified: branches/proto/v4/libs/range/doc/range.html
==============================================================================
--- branches/proto/v4/libs/range/doc/range.html (original)
+++ branches/proto/v4/libs/range/doc/range.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,4 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
 <HTML>
 <!--
   -- Copyright (c) Jeremy Siek 2000
@@ -90,7 +91,7 @@
 <code>boost</code></p>-->
 
     <hr>
- <a name="single_pass_range">
+ <a name="single_pass_range"></a>
     <H2>Single Pass Range</H2>
 
     <h3>Notation</h3>
@@ -227,7 +228,7 @@
        
 
     <hr>
- <a name=forward_range><h2>Forward Range</h2>
+ <a name=forward_range></a><h2>Forward Range</h2>
 
     <h3>Notation</h3>
     <Table>
@@ -255,7 +256,7 @@
   
     <hr>
 
- <a name="bidirectional_range"><h2>Bidirectional Range</h2>
+ <a name="bidirectional_range"></a><h2>Bidirectional Range</h2>
 
     <h3>Notation</h3>
     <Table>
@@ -283,7 +284,8 @@
 
     <hr>
 
- <a name=random_access_range><h2>Random Access Range</h2> <h3>Description</h3>
+ <a name=random_access_range></a><h2>Random Access Range</h2>
+ <h3>Description</h3>
     <p>
     A range <code>X</code> where <code>boost::range_iterator&lt;X>::type</code> is a model
 of <a
@@ -299,10 +301,10 @@
 
     <hr>
 
- <a name=concept_checking><h2>Concept Checking</h2>
+ <a name=concept_checking></a><h2>Concept Checking</h2>
 
     Each of the range concepts has a corresponding concept checking
- class in the file <code><boost/range/concepts.hpp></codE>. These classes may be
+ class in the file <code>&lt;boost/range/concepts.hpp&gt;</code>. These classes may be
     used in conjunction with the <a
     href="../../concept_check/concept_check.htm">Boost Concept
     Check</a> library to insure that the type of a template parameter

Modified: branches/proto/v4/libs/range/doc/utility_class.html
==============================================================================
--- branches/proto/v4/libs/range/doc/utility_class.html (original)
+++ branches/proto/v4/libs/range/doc/utility_class.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -31,7 +31,6 @@
         <li>
             Class sub_range
     </ul>
- </ul>
 
     The <code>iterator_range</code> class is templated on a <a
     href="../../iterator/doc/new-iter-concepts.html#forward-traversal-iterators-lib-forward-traversal-iterators">Forward
@@ -84,7 +83,7 @@
         </span><span class=keyword>typedef </span><span class=identifier>ForwardTraversalIterator </span><span class=identifier>const_iterator</span><span class=special>;</span>
         <span class=keyword>typedef </span><span class=identifier>iterator_difference</span><span class=special>&lt;</span><span class=identifier>iterator</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=identifier>difference_type</span><span class=special>;</span>
  
- </span><span class=keyword>public</span><span class=special>: </span><span class=comment>// construction, assignment
+ <span class=keyword>public</span><span class=special>: </span><span class=comment>// construction, assignment
         </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>ForwardTraversalIterator2 </span><span class=special>&gt;
         </span><span class=identifier>iterator_range</span><span class=special>( </span><span class=identifier>ForwardTraversalIterator2 </span><span class=identifier>Begin</span><span class=special>, </span><span class=identifier>ForwardTraversalIterator2 </span><span class=identifier>End </span><span class=special>);
                     
@@ -110,7 +109,7 @@
         </span><span class=keyword>operator </span>unspecified_bool_type<span class=special>() </span><span class=keyword>const</span><span class=special>;
     </span> <span class=keyword>bool</span> <span
 class=identifier>equal</span><span
-class=special>( </span><span class=keyword>const</span> <span class=identifier>iterator_range</span><span class=special>& ) </span><span
+class=special>( </span><span class=keyword>const</span> <span class=identifier>iterator_range</span><span class=special>&amp; ) </span><span
 class=keyword>const;</span>
         <span class=identifier>reference </span><span class=identifier>front</span><span class=special>() </span><span class=keyword>const</span><span class=special>;</span>
         <span class=identifier>reference </span><span class=identifier>back</span><span class=special>() </span><span class=keyword>const</span><span class=special>;</span>
@@ -119,7 +118,7 @@
         <span class=comment>// for Random Access Range only: </span>
         <span class=identifier>reference </span><span class=keyword>operator</span><span class=special>[]( </span><span class=identifier>difference_type </span><span class=identifier>at </span><span class=special>) </span><span class=keyword>const</span><span class=special>;</span>
         <span class=identifier>value_type</span> <span class=keyword>operator</span><span class=special>()( </span><span class=identifier>difference_type </span><span class=identifier>at </span><span class=special>) </span><span class=keyword>const</span><span class=special>;</span>
- </span><span class=special>};
+ <span class=special>};
     
     </span><span class=comment>// stream output
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>ForwardTraversalIterator</span><span class=special>, </span><span class=keyword>class </span><span class=identifier>T</span><span class=special>, </span><span class=keyword>class </span><span class=identifier>Traits </span><span class=special>&gt;
@@ -164,7 +163,7 @@
     </span><span class=keyword>bool </span><span class=keyword>operator</span><span class=special>&lt;( </span><span class=keyword>const </span><span class=identifier>ForwardRange</span><span class=special>&amp; </span><span class=identifier>l</span><span class=special>,
                     </span><span class=keyword>const </span><span class=identifier>iterator_range</span><span class=special>&lt;</span><span class=identifier>ForwardTraversalIterator</span><span class=special>&gt;&amp; </span><span class=identifier>r </span><span class=special>);</span>
  
- </span><span class=comment>// external construction
+ <span class=comment>// external construction
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>ForwardTraversalIterator </span><span class=special>&gt;
     </span><span class=identifier>iterator_range</span><span class=special>&lt; </span><span class=identifier>ForwardTraversalIterator </span><span class=special>&gt;
     </span><span class=identifier>make_iterator_range</span><span class=special>( </span><span class=identifier>ForwardTraversalIterator </span><span class=identifier>Begin</span><span class=special>,
@@ -190,7 +189,7 @@
                          </span><span class=keyword>typename </span><span class=identifier>range_difference</span><span class=special>&lt;</span><span class=identifier>Range</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=identifier>advance_begin</span><span class=special>,
                          </span><span class=keyword>typename </span><span class=identifier>range_difference</span><span class=special>&lt;</span><span class=identifier>Range</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=identifier>advance_end </span><span class=special>);</span>
     
- </span><span class=comment>// convenience
+ <span class=comment>// convenience
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>Sequence</span><span class=special>, </span><span class=keyword>class </span><span class=identifier>ForwardRange </span><span class=special>&gt;
     </span><span class=identifier>Sequence </span><a href="#copy_range"><span
 class=identifier>copy_range</span></a><span class=special>( </span><span
@@ -226,9 +225,9 @@
      
 <p>
 <a name="equal"></a>
-<code>bool equal( iterator_range& r ) const;</code>
+<code>bool equal( iterator_range&amp; r ) const;</code>
 <blockquote>
- <i>Returns</i> <code>begin() == r.begin() && end() == r.end();</code>
+ <i>Returns</i> <code>begin() == r.begin() &amp;&amp; end() == r.end();</code>
 </blockquote>
 </p>
 
@@ -236,21 +235,21 @@
 
 <p>
 <a name="comparison"></a>
-<code>bool operator==( const ForwardRange1& l, const ForwardRange2& r );</code>
+<code>bool operator==( const ForwardRange1&amp; l, const ForwardRange2&amp; r );</code>
 <blockquote>
     <i>Returns</i> <code>size(l) != size(r) ? false : std::equal( begin(l), end(l), begin(r) );</code> </blockquote> </p>
-<code>bool operator!=( const ForwardRange1& l, const ForwardRange2& r );</code>
+<code>bool operator!=( const ForwardRange1&amp; l, const ForwardRange2&amp; r );</code>
 <blockquote>
     <i>Returns</i> <code>!( l == r );</code>
 </blockquote>
-<code>bool operator<( const ForwardRange1& l, const ForwardRange2& r );</code>
+<code>bool operator<( const ForwardRange1&amp; l, const ForwardRange2&amp; r );</code>
 <blockquote>
     <i>Returns</i> <code>std::lexicographical_compare( begin(l), end(l), begin(r), end(r) );</code> </blockquote>
     
 <p>
 <a name="make_iterator_range"></a>
 <pre>
-iterator_range make_iterator_range( Range& r,
+iterator_range make_iterator_range( Range&amp; r,
                                     typename range_difference&lt;Range>::type advance_begin,
                                     typename range_difference&lt;Range>::type advance_end );
 </pre>
@@ -266,7 +265,7 @@
 </blockquote>
 <p>
 <a name="copy_range"></a>
-<code>Sequence copy_range( const ForwardRange& r );</code>
+<code>Sequence copy_range( const ForwardRange&amp; r );</code>
 <blockquote>
     <i>Returns</i> <code>Sequence( begin(r), end(r) );</code>
 </blockquote>
@@ -292,7 +291,7 @@
     </span><span class=keyword>class </span><span class=identifier>sub_range </span><span class=special>: </span><span class=keyword>public </span><span class=identifier>iterator_range</span><span class=special>&lt; </span><span class=keyword>typename </span><span class=identifier>range_iterator</span><span class=special>&lt;</span><span class=identifier>ForwardRange</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=special>&gt;
     </span><span class=special>{
     </span><span class=keyword>public</span><span class=special>: </span>
- <span class=keyword>typedef </span><span class=keyword>typename </span><span class=identifier>range_iterator</span><span class=special>&lt;</span><span class=identifier>ForwardRange</span><spanclass=special>&gt;::</span><span class=identifier>type </span><span class=identifier>iterator</span><span class=special>;</span>
+ <span class=keyword>typedef </span><span class=keyword>typename </span><span class=identifier>range_iterator</span><span class=special>&lt;</span><span class=identifier>ForwardRange</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=identifier>iterator</span><span class=special>;</span>
         <span class=keyword>typedef </span><span class=keyword>typename </span><span class=identifier>range_iterator</span><span class=special>&lt;</span><span class=keyword>const </span><span class=identifier>ForwardRange</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=identifier>const_iterator</span><span class=special>;</span>
         <span class=keyword>typedef </span><span class=keyword>typename </span><span class=identifier>iterator_difference</span><span class=special>&lt;</span><span class=identifier>iterator</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=identifier>difference_type</span><span class=special>;</span>
     

Modified: branches/proto/v4/libs/range/index.html
==============================================================================
--- branches/proto/v4/libs/range/index.html (original)
+++ branches/proto/v4/libs/range/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -34,7 +34,7 @@
   </p>
   
   <ul>
- <li> Introduction </code>
+ <li> Introduction
           
       <li>Range concepts:
       <ul>
@@ -55,6 +55,8 @@
           <li><a href="doc/mfc_atl.html">MFC/ATL mapping (courtesy of Shunsuke
               Sogame)</a></li>
       <li>Portability
+ <li><a href="doc/upgrading.html">Upgrading from Boost v.
+ 1.34.*</a></li>
       <li>FAQ
       <li>History and acknowledgment
           

Modified: branches/proto/v4/libs/range/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/range/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/range/test/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,9 +12,9 @@
 {
     return [
         run $(name).cpp /boost/test//boost_unit_test_framework/<link>static
+ :
         :
- :
- : $(includes)
+ : <toolset>gcc:<cxxflags>"-Wall -Wunused "
         ] ;
 }
 

Modified: branches/proto/v4/libs/rational/index.html
==============================================================================
--- branches/proto/v4/libs/rational/index.html (original)
+++ branches/proto/v4/libs/rational/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -37,10 +37,11 @@
 
 <p>Revised&nbsp; December 14, 1999</p>
 
-<p>© Copyright Paul Moore 1999. Permission to copy, use, modify, sell
+<p>&copy; Copyright Paul Moore 1999. Permission to copy, use, modify, sell
 and distribute this document is granted provided this copyright notice
 appears in all copies. This document is provided &quot;as is&quot; without
 express or implied warranty, and with no claim as to its suitability for
 any purpose.</p>
+<!-- boostinspect:nolicense (can't find Paul Moore to change license) -->
 </body>
 </html>

Modified: branches/proto/v4/libs/rational/rational.html
==============================================================================
--- branches/proto/v4/libs/rational/rational.html (original)
+++ branches/proto/v4/libs/rational/rational.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -671,10 +671,11 @@
 
 <p>Revised November 5, 2006</p>
 
-<p>© Copyright Paul Moore 1999-2001; &copy; Daryle Walker 2005. Permission to
-copy, use, modify, sell and distribute this document is granted provided this
+<p>&copy; Copyright Paul Moore 1999-2001; &copy; Daryle Walker 2005. Permission
+to copy, use, modify, sell and distribute this document is granted provided this
 copyright notice appears in all copies. This document is provided &quot;as
 is&quot; without express or implied warranty, and with no claim as to its
 suitability for any purpose.</p>
+<!-- boostinspect:nolicense (can't find Paul Moore to change license) -->
 </body>
 </html>

Modified: branches/proto/v4/libs/rational/test/rational_example.cpp
==============================================================================
--- branches/proto/v4/libs/rational/test/rational_example.cpp (original)
+++ branches/proto/v4/libs/rational/test/rational_example.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,6 +5,10 @@
 // appears in all copies. This software is provided "as is" without express or
 // implied warranty, and with no claim as to its suitability for any purpose.
 
+// boostinspect:nolicense (don't complain about the lack of a Boost license)
+// (Paul Moore hasn't been in contact for years, so there's no way to change the
+// license.)
+
 // Revision History
 // 14 Dec 99 Initial version
 

Modified: branches/proto/v4/libs/rational/test/rational_test.cpp
==============================================================================
--- branches/proto/v4/libs/rational/test/rational_test.cpp (original)
+++ branches/proto/v4/libs/rational/test/rational_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,11 @@
  * extended, by Paul Moore, with permission.
  */
 
+// boostinspect:nolicense (don't complain about the lack of a Boost license)
+// (Stephen Silver hasn't been contacted yet for permission to change the
+// license. If Paul Moore's permission is also needed, then that's a problem
+// since he hasn't been in contact for years.)
+
 // Revision History
 // 05 Nov 06 Add testing of zero-valued denominators & divisors; casting with
 // types that are not implicitly convertible (Daryle Walker)
@@ -26,6 +31,8 @@
 
 #define BOOST_TEST_MAIN "Boost::Rational unit tests"
 
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
 #include <boost/mpl/list.hpp>
 #include <boost/operators.hpp>
 #include <boost/preprocessor/stringize.hpp>
@@ -40,7 +47,6 @@
 #include <climits>
 #include <iostream>
 #include <istream>
-#include <limits>
 #include <ostream>
 #include <sstream>
 #include <stdexcept>
@@ -227,8 +233,10 @@
 public:
     static const bool is_specialized = limits_type::is_specialized;
 
- static MyInt min() throw() { return limits_type::min(); }
- static MyInt max() throw() { return limits_type::max(); }
+ static MyInt min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return
+ limits_type::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ static MyInt max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return
+ limits_type::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
 
     static const int digits = limits_type::digits;
     static const int digits10 = limits_type::digits10;
@@ -273,8 +281,10 @@
 public:
     static const bool is_specialized = limits_type::is_specialized;
 
- static MyOverflowingUnsigned min() throw() { return limits_type::min(); }
- static MyOverflowingUnsigned max() throw() { return limits_type::max(); }
+ static MyOverflowingUnsigned min BOOST_PREVENT_MACRO_SUBSTITUTION () throw()
+ { return limits_type::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ static MyOverflowingUnsigned max BOOST_PREVENT_MACRO_SUBSTITUTION () throw()
+ { return limits_type::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
 
     static const int digits = limits_type::digits;
     static const int digits10 = limits_type::digits10;

Modified: branches/proto/v4/libs/regex/doc/examples.qbk
==============================================================================
--- branches/proto/v4/libs/regex/doc/examples.qbk (original)
+++ branches/proto/v4/libs/regex/doc/examples.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,41 +18,54 @@
 are concerned - if anyone spots anything that isn't being tested I'd be
 glad to hear about it.
 
-Directory: [@../../test/regress libs/regex/test/regress].
+Files:
 
-Files: See directory.
+* [@../../test/regress/main.cpp main.cpp]
+* [@../../test/regress/basic_tests.cpp basic_tests.cpp]
+* [@../../test/regress/test_alt.cpp test_alt.cpp]
+* [@../../test/regress/test_anchors.cpp test_anchors.cpp]
+* [@../../test/regress/test_asserts.cpp test_asserts.cpp]
+* [@../../test/regress/test_backrefs.cpp test_backrefs.cpp]
+* [@../../test/regress/test_deprecated.cpp test_deprecated.cpp]
+* [@../../test/regress/test_emacs.cpp test_emacs.cpp]
+* [@../../test/regress/test_escapes.cpp test_escapes.cpp]
+* [@../../test/regress/test_grep.cpp test_grep.cpp]
+* [@../../test/regress/test_icu.cpp test_icu.cpp]
+* [@../../test/regress/test_locale.cpp test_locale.cpp]
+* [@../../test/regress/test_mfc.cpp test_mfc.cpp]
+* [@../../test/regress/test_non_greedy_repeats.cpp test_non_greedy_repeats.cpp]
+* [@../../test/regress/test_operators.cpp test_operators.cpp]
+* [@../../test/regress/test_overloads.cpp test_overloads.cpp]
+* [@../../test/regress/test_perl_ex.cpp test_perl_ex.cpp]
+* [@../../test/regress/test_replace.cpp test_replace.cpp]
+* [@../../test/regress/test_sets.cpp test_sets.cpp]
+* [@../../test/regress/test_simple_repeats.cpp test_simple_repeats.cpp]
+* [@../../test/regress/test_tricky_cases.cpp test_tricky_cases.cpp]
+* [@../../test/regress/test_unicode.cpp test_unicode.cpp]
 
 [*bad_expression_test:]
 
 Verifies that "bad" regular expressions don't cause the matcher to go into
 infinite loops, but to throw an exception instead.
 
-Directory: [@../../test/pathology libs/regex/test/pathology].
-
 Files: [@../../test/pathology/bad_expression_test.cpp bad_expression_test.cpp].
 
 [*recursion_test:]
 
 Verifies that the matcher can't overrun the stack (no matter what the expression).
 
-Directory: [@../../test/pathology libs/regex/test/pathology].
-
 Files: [@../../test/pathology/recursion_test.cpp recursion_test.cpp].
 
 [*concepts:]
 
 Verifies that the library meets all documented concepts (a compile only test).
 
-Directory: [@../../test/concepts libs/regex/test/concepts].
-
 Files: [@../../test/concepts/concept_check.cpp concept_check.cpp].
 
 [*captures_test:]
 
 Test code for captures.
 
-Directory: [@../../test/captures libs/test/captures].
-
 Files: [@../../test/captures/captures_test.cpp captures_test.cpp].
 
 [h4 Example programs]

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/acknowledgements.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/acknowledgements.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/acknowledgements.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/examples.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/examples.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/examples.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Example Programs</a>
 </h3></div></div></div>
 <a name="boost_regex.background_information.examples.test_programs"></a><h5>
-<a name="id647277"></a>
+<a name="id657134"></a>
         <a href="examples.html#boost_regex.background_information.examples.test_programs">Test
         Programs</a>
       </h5>
@@ -43,11 +43,32 @@
         it.
       </p>
 <p>
- Directory: libs/regex/test/regress.
- </p>
-<p>
- Files: See directory.
+ Files:
       </p>
+<div class="itemizedlist"><ul type="disc">
+<li>main.cpp</li>
+<li>basic_tests.cpp</li>
+<li>test_alt.cpp</li>
+<li>test_anchors.cpp</li>
+<li>test_asserts.cpp</li>
+<li>test_backrefs.cpp</li>
+<li>test_deprecated.cpp</li>
+<li>test_emacs.cpp</li>
+<li>test_escapes.cpp</li>
+<li>test_grep.cpp</li>
+<li>test_icu.cpp</li>
+<li>test_locale.cpp</li>
+<li>test_mfc.cpp</li>
+<li>test_non_greedy_repeats.cpp</li>
+<li>test_operators.cpp</li>
+<li>test_overloads.cpp</li>
+<li>test_perl_ex.cpp</li>
+<li>test_replace.cpp</li>
+<li>test_sets.cpp</li>
+<li>test_simple_repeats.cpp</li>
+<li>test_tricky_cases.cpp</li>
+<li>test_unicode.cpp</li>
+</ul></div>
 <p>
         <span class="bold"><strong>bad_expression_test:</strong></span>
       </p>
@@ -56,9 +77,6 @@
         to go into infinite loops, but to throw an exception instead.
       </p>
 <p>
- Directory: libs/regex/test/pathology.
- </p>
-<p>
         Files: bad_expression_test.cpp.
       </p>
 <p>
@@ -68,9 +86,6 @@
         Verifies that the matcher can't overrun the stack (no matter what the expression).
       </p>
 <p>
- Directory: libs/regex/test/pathology.
- </p>
-<p>
         Files: recursion_test.cpp.
       </p>
 <p>
@@ -80,9 +95,6 @@
         Verifies that the library meets all documented concepts (a compile only test).
       </p>
 <p>
- Directory: libs/regex/test/concepts.
- </p>
-<p>
         Files: concept_check.cpp.
       </p>
 <p>
@@ -92,13 +104,10 @@
         Test code for captures.
       </p>
 <p>
- Directory: libs/test/captures.
- </p>
-<p>
         Files: captures_test.cpp.
       </p>
 <a name="boost_regex.background_information.examples.example_programs"></a><h5>
-<a name="id647485"></a>
+<a name="id657522"></a>
         <a href="examples.html#boost_regex.background_information.examples.example_programs">Example
         programs</a>
       </h5>
@@ -124,7 +133,7 @@
         Files: regex_timer.cpp.
       </p>
 <a name="boost_regex.background_information.examples.code_snippets"></a><h5>
-<a name="id647566"></a>
+<a name="id657602"></a>
         <a href="examples.html#boost_regex.background_information.examples.code_snippets">Code
         snippets</a>
       </h5>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/faq.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/faq.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/faq.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/futher.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/futher.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/futher.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/headers.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/headers.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/headers.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/history.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/history.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/history.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,8 +13,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -26,7 +26,7 @@
 <a name="boost_regex.background_information.history"></a> History
 </h3></div></div></div>
 <a name="boost_regex.background_information.history.boost_1_34"></a><h5>
-<a name="id649714"></a>
+<a name="id659744"></a>
         <a href="history.html#boost_regex.background_information.history.boost_1_34">Boost
         1.34</a>
       </h5>
@@ -49,7 +49,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.background_information.history.boost_1_33_1"></a><h5>
-<a name="id649765"></a>
+<a name="id659795"></a>
         <a href="history.html#boost_regex.background_information.history.boost_1_33_1">Boost
         1.33.1</a>
       </h5>
@@ -119,7 +119,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.background_information.history.boost_1_33_0"></a><h5>
-<a name="id649895"></a>
+<a name="id659924"></a>
         <a href="history.html#boost_regex.background_information.history.boost_1_33_0">Boost
         1.33.0</a>
       </h5>
@@ -174,7 +174,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.background_information.history.boost_1_32_1"></a><h5>
-<a name="id649992"></a>
+<a name="id660024"></a>
         <a href="history.html#boost_regex.background_information.history.boost_1_32_1">Boost
         1.32.1</a>
       </h5>
@@ -182,7 +182,7 @@
           Fixed bug in partial matches of bounded repeats of '.'.
         </li></ul></div>
 <a name="boost_regex.background_information.history.boost_1_31_0"></a><h5>
-<a name="id650025"></a>
+<a name="id660057"></a>
         <a href="history.html#boost_regex.background_information.history.boost_1_31_0">Boost
         1.31.0</a>
       </h5>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/locale.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/locale.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/locale.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -58,7 +58,7 @@
         There are three separate localization mechanisms supported by Boost.Regex:
       </p>
 <a name="boost_regex.background_information.locale.win32_localization_model_"></a><h5>
-<a name="id643785"></a>
+<a name="id653642"></a>
         <a href="locale.html#boost_regex.background_information.locale.win32_localization_model_">Win32
         localization model.</a>
       </h5>
@@ -90,7 +90,7 @@
         are treated as "unknown" graphic characters.
       </p>
 <a name="boost_regex.background_information.locale.c_localization_model_"></a><h5>
-<a name="id644023"></a>
+<a name="id653880"></a>
         <a href="locale.html#boost_regex.background_information.locale.c_localization_model_">C
         localization model.</a>
       </h5>
@@ -114,7 +114,7 @@
         libraries including version 1 of this library.
       </p>
 <a name="boost_regex.background_information.locale.c___localization_model_"></a><h5>
-<a name="id644136"></a>
+<a name="id653992"></a>
         <a href="locale.html#boost_regex.background_information.locale.c___localization_model_">C++
         localization model.</a>
       </h5>
@@ -151,7 +151,7 @@
         in your code. The best way to ensure this is to add the #define to <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
       </p>
 <a name="boost_regex.background_information.locale.providing_a_message_catalogue"></a><h5>
-<a name="id644596"></a>
+<a name="id654452"></a>
         <a href="locale.html#boost_regex.background_information.locale.providing_a_message_catalogue">Providing
         a message catalogue</a>
       </h5>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/performance.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/performance.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/performance.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/redist.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/redist.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/redist.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/standards.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/standards.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/standards.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Conformance</a>
 </h3></div></div></div>
 <a name="boost_regex.background_information.standards.c__"></a><h5>
-<a name="id648552"></a>
+<a name="id658582"></a>
         <a href="standards.html#boost_regex.background_information.standards.c__">C++</a>
       </h5>
 <p>
@@ -36,7 +36,7 @@
         Report on C++ Library Extensions</a>.
       </p>
 <a name="boost_regex.background_information.standards.ecmascript___javascript"></a><h5>
-<a name="id648590"></a>
+<a name="id658620"></a>
         <a href="standards.html#boost_regex.background_information.standards.ecmascript___javascript">ECMAScript
         / JavaScript</a>
       </h5>
@@ -49,7 +49,7 @@
         rather than a Unicode escape sequence; use \x{DDDD} for Unicode escape sequences.
       </p>
 <a name="boost_regex.background_information.standards.perl"></a><h5>
-<a name="id648630"></a>
+<a name="id658659"></a>
         <a href="standards.html#boost_regex.background_information.standards.perl">Perl</a>
       </h5>
 <p>
@@ -62,7 +62,7 @@
         (??{code}) Not implementable in a compiled strongly typed language.
       </p>
 <a name="boost_regex.background_information.standards.posix"></a><h5>
-<a name="id648668"></a>
+<a name="id658698"></a>
         <a href="standards.html#boost_regex.background_information.standards.posix">POSIX</a>
       </h5>
 <p>
@@ -82,7 +82,7 @@
         a custom traits class.
       </p>
 <a name="boost_regex.background_information.standards.unicode"></a><h5>
-<a name="id648715"></a>
+<a name="id658745"></a>
         <a href="standards.html#boost_regex.background_information.standards.unicode">Unicode</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/thread_safety.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/thread_safety.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/background_information/thread_safety.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/captures.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/captures.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/captures.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -35,7 +35,7 @@
       accessed.
     </p>
 <a name="boost_regex.captures.marked_sub_expressions"></a><h5>
-<a name="id493056"></a>
+<a name="id502903"></a>
       <a href="captures.html#boost_regex.captures.marked_sub_expressions">Marked sub-expressions</a>
     </h5>
 <p>
@@ -218,7 +218,7 @@
       output stream.
     </p>
 <a name="boost_regex.captures.unmatched_sub_expressions"></a><h5>
-<a name="id493679"></a>
+<a name="id503526"></a>
       <a href="captures.html#boost_regex.captures.unmatched_sub_expressions">Unmatched Sub-Expressions</a>
     </h5>
 <p>
@@ -231,7 +231,7 @@
       you can determine which sub-expressions matched by accessing the <code class="computeroutput"><span class="identifier">sub_match</span><span class="special">::</span><span class="identifier">matched</span></code> data member.
     </p>
 <a name="boost_regex.captures.repeated_captures"></a><h5>
-<a name="id493741"></a>
+<a name="id503588"></a>
       <a href="captures.html#boost_regex.captures.repeated_captures">Repeated Captures</a>
     </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/algorithm.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/algorithm.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/algorithm.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/compiler.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/compiler.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/compiler.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/linkage.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/linkage.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/linkage.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/locale.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/locale.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/locale.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/tuning.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/tuning.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/configuration/tuning.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/format.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/format.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/format.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -32,7 +32,7 @@
         '$', '\', '(', ')', '?', and ':'.
       </p>
 <a name="boost_regex.format.boost_format_syntax.grouping"></a><h5>
-<a name="id515629"></a>
+<a name="id525475"></a>
         <a href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.grouping">Grouping</a>
       </h5>
 <p>
@@ -40,7 +40,7 @@
         you want a to output literal parenthesis.
       </p>
 <a name="boost_regex.format.boost_format_syntax.conditionals"></a><h5>
-<a name="id515659"></a>
+<a name="id525505"></a>
         <a href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.conditionals">Conditionals</a>
       </h5>
 <p>
@@ -66,7 +66,7 @@
         with "bar" otherwise.
       </p>
 <a name="boost_regex.format.boost_format_syntax.placeholder_sequences"></a><h5>
-<a name="id515716"></a>
+<a name="id525562"></a>
         <a href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.placeholder_sequences">Placeholder
         Sequences</a>
       </h5>
@@ -161,7 +161,7 @@
         as a literal.
       </p>
 <a name="boost_regex.format.boost_format_syntax.escape_sequences"></a><h5>
-<a name="id515888"></a>
+<a name="id525734"></a>
         <a href="boost_format_syntax.html#boost_regex.format.boost_format_syntax.escape_sequences">Escape
         Sequences</a>
       </h5>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/format/perl_format.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/format/perl_format.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/format/perl_format.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/format/sed_format.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/format/sed_format.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/format/sed_format.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/install.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/install.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/install.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -49,7 +49,7 @@
       file before you can use it, instructions for specific platforms are as follows:
     </p>
 <a name="boost_regex.install.building_with_bjam"></a><h5>
-<a name="id436188"></a>
+<a name="id446088"></a>
       <a href="install.html#boost_regex.install.building_with_bjam">Building with bjam</a>
     </h5>
 <p>
@@ -58,7 +58,7 @@
       started guide</a> for more information.
     </p>
 <a name="boost_regex.install.building_with_unicode_and_icu_support"></a><h5>
-<a name="id436222"></a>
+<a name="id447706"></a>
       <a href="install.html#boost_regex.install.building_with_unicode_and_icu_support">Building
       With Unicode and ICU Support</a>
     </h5>
@@ -96,11 +96,11 @@
       ICU you are using is binary compatible with the toolset you use to build Boost.
     </p>
 <a name="boost_regex.install.building_via_makefiles"></a><h5>
-<a name="id435695"></a>
+<a name="id445600"></a>
       <a href="install.html#boost_regex.install.building_via_makefiles">Building via makefiles</a>
     </h5>
 <a name="boost_regex.install.borland_c___builder_"></a><h6>
-<a name="id435718"></a>
+<a name="id445624"></a>
       <a href="install.html#boost_regex.install.borland_c___builder_">Borland C++ Builder:</a>
     </h6>
 <div class="itemizedlist"><ul type="disc">
@@ -166,7 +166,7 @@
       a lot in compile times!
     </p>
 <a name="boost_regex.install.microsoft_visual_c___6__7__7_1_and_8"></a><h5>
-<a name="id490291"></a>
+<a name="id500138"></a>
       <a href="install.html#boost_regex.install.microsoft_visual_c___6__7__7_1_and_8">Microsoft
       Visual C++ 6, 7, 7.1 and 8</a>
     </h5>
@@ -253,7 +253,7 @@
       </li>
 </ul></div>
 <a name="boost_regex.install.gcc_2_95_and_later_"></a><h6>
-<a name="id490603"></a>
+<a name="id500450"></a>
       <a href="install.html#boost_regex.install.gcc_2_95_and_later_">GCC(2.95 and later)</a>
     </h6>
 <p>
@@ -302,7 +302,7 @@
       see the config library documentation.
     </p>
 <a name="boost_regex.install.sun_workshop_6_1"></a><h6>
-<a name="id490804"></a>
+<a name="id500651"></a>
       <a href="install.html#boost_regex.install.sun_workshop_6_1">Sun Workshop 6.1</a>
     </h6>
 <p>
@@ -347,7 +347,7 @@
       will build v9 variants of the regex library named libboost_regex_v9.a etc.
     </p>
 <a name="boost_regex.install.makefiles_for_other_compilers"></a><h6>
-<a name="id491026"></a>
+<a name="id500873"></a>
       <a href="install.html#boost_regex.install.makefiles_for_other_compilers">Makefiles
       for Other compilers</a>
     </h6>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/introduction_and_overview.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/introduction_and_overview.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/introduction_and_overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/partial_matches.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/partial_matches.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/partial_matches.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/bad_expression.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/bad_expression.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/bad_expression.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="boost_regex.ref.bad_expression"></a> bad_expression
 </h3></div></div></div>
 <a name="boost_regex.ref.bad_expression.synopsis"></a><h5>
-<a name="id596313"></a>
+<a name="id606153"></a>
         <a href="bad_expression.html#boost_regex.ref.bad_expression.synopsis">Synopsis</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pattern_except</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -54,7 +54,7 @@
 <span class="special">}</span> <span class="comment">// namespace boost
 </span></pre>
 <a name="boost_regex.ref.bad_expression.description"></a><h5>
-<a name="id596816"></a>
+<a name="id606656"></a>
         <a href="bad_expression.html#boost_regex.ref.bad_expression.description">Description</a>
       </h5>
 <pre class="programlisting"><span class="identifier">regex_error</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">error_type</span> <span class="identifier">err</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span> <span class="identifier">pos</span><span class="special">);</span>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/basic_regex.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/basic_regex.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/basic_regex.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="boost_regex.ref.basic_regex"></a> basic_regex
 </h3></div></div></div>
 <a name="boost_regex.ref.basic_regex.synopsis"></a><h5>
-<a name="id516301"></a>
+<a name="id526147"></a>
         <a href="basic_regex.html#boost_regex.ref.basic_regex.synopsis">Synopsis</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -243,7 +243,7 @@
 <span class="special">}</span> <span class="comment">// namespace boost
 </span></pre>
 <a name="boost_regex.ref.basic_regex.description"></a><h5>
-<a name="id522233"></a>
+<a name="id532078"></a>
         <a href="basic_regex.html#boost_regex.ref.basic_regex.description">Description</a>
       </h5>
 <p>
@@ -326,7 +326,7 @@
         <code class="computeroutput"><span class="identifier">basic_regex</span></code>.
       </p>
 <div class="table">
-<a name="id524168"></a><p class="title"><b>Table 1. basic_regex default construction postconditions</b></p>
+<a name="id534014"></a><p class="title"><b>Table 1. basic_regex default construction postconditions</b></p>
 <div class="table-contents"><table class="table" summary="basic_regex default construction postconditions">
 <colgroup>
 <col>
@@ -406,7 +406,7 @@
         flags</a> specified in <span class="emphasis"><em>f</em></span>.
       </p>
 <div class="table">
-<a name="id524567"></a><p class="title"><b>Table 2. Postconditions for basic_regex construction</b></p>
+<a name="id534413"></a><p class="title"><b>Table 2. Postconditions for basic_regex construction</b></p>
 <div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
 <colgroup>
 <col>
@@ -511,7 +511,7 @@
         specified in <span class="emphasis"><em>f</em></span>.
       </p>
 <div class="table">
-<a name="id525113"></a><p class="title"><b>Table 3. Postconditions for basic_regex construction</b></p>
+<a name="id534958"></a><p class="title"><b>Table 3. Postconditions for basic_regex construction</b></p>
 <div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
 <colgroup>
 <col>
@@ -615,7 +615,7 @@
         according the option flags specified in <span class="emphasis"><em>f</em></span>.
       </p>
 <div class="table">
-<a name="id525646"></a><p class="title"><b>Table 4. Postconditions for basic_regex construction</b></p>
+<a name="id535491"></a><p class="title"><b>Table 4. Postconditions for basic_regex construction</b></p>
 <div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
 <colgroup>
 <col>
@@ -726,7 +726,7 @@
         flags</a> specified in <span class="emphasis"><em>f</em></span>.
       </p>
 <div class="table">
-<a name="id526281"></a><p class="title"><b>Table 5. Postconditions for basic_regex construction</b></p>
+<a name="id536126"></a><p class="title"><b>Table 5. Postconditions for basic_regex construction</b></p>
 <div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
 <colgroup>
 <col>
@@ -828,7 +828,7 @@
         flags</a> specified in <span class="emphasis"><em>f</em></span>.
       </p>
 <div class="table">
-<a name="id526756"></a><p class="title"><b>Table 6. Postconditions for basic_regex construction</b></p>
+<a name="id536601"></a><p class="title"><b>Table 6. Postconditions for basic_regex construction</b></p>
 <div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
 <colgroup>
 <col>
@@ -1026,7 +1026,7 @@
         in <span class="emphasis"><em>f</em></span>.
       </p>
 <div class="table">
-<a name="id528609"></a><p class="title"><b>Table 7. Postconditions for basic_regex::assign</b></p>
+<a name="id538455"></a><p class="title"><b>Table 7. Postconditions for basic_regex::assign</b></p>
 <div class="table-contents"><table class="table" summary="Postconditions for basic_regex::assign">
 <colgroup>
 <col>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/charT_concept.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/charT_concept.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/charT_concept.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/iterator_concepts.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/iterator_concepts.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/iterator_concepts.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/traits_concept.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/traits_concept.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/concepts/traits_concept.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
           Boost-specific enhanced interface.
         </p>
 <a name="boost_regex.ref.concepts.traits_concept.minimal_requirements_"></a><h5>
-<a name="id622895"></a>
+<a name="id632754"></a>
           <a href="traits_concept.html#boost_regex.ref.concepts.traits_concept.minimal_requirements_">Minimal
           requirements.</a>
         </h5>
@@ -381,7 +381,7 @@
 </tbody>
 </table></div>
 <a name="boost_regex.ref.concepts.traits_concept.additional_optional_requirements"></a><h5>
-<a name="id623722"></a>
+<a name="id633573"></a>
           <a href="traits_concept.html#boost_regex.ref.concepts.traits_concept.additional_optional_requirements">Additional
           Optional Requirements</a>
         </h5>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/old_regex.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/old_regex.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/old_regex.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_format.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_format.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_format.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
           previous version of Boost.Regex and will not be further updated:
         </p>
 <a name="boost_regex.ref.deprecated_interfaces.regex_format.algorithm_regex_format"></a><h5>
-<a name="id624460"></a>
+<a name="id634317"></a>
           <a href="regex_format.html#boost_regex.ref.deprecated_interfaces.regex_format.algorithm_regex_format">Algorithm
           regex_format</a>
         </h5>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_grep.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_grep.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_grep.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_split.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_split.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/deprecated_interfaces/regex_split.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/error_type.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/error_type.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/error_type.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="boost_regex.ref.error_type"></a> error_type
 </h3></div></div></div>
 <a name="boost_regex.ref.error_type.synopsis"></a><h5>
-<a name="id602297"></a>
+<a name="id612137"></a>
         <a href="error_type.html#boost_regex.ref.error_type.synopsis">Synopsis</a>
       </h5>
 <p>
@@ -57,7 +57,7 @@
 </span><span class="special">}</span> <span class="comment">// namespace boost
 </span></pre>
 <a name="boost_regex.ref.error_type.description"></a><h5>
-<a name="id602860"></a>
+<a name="id612702"></a>
         <a href="error_type.html#boost_regex.ref.error_type.description">Description</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_flag_type.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_flag_type.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_flag_type.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -69,7 +69,7 @@
 </span><span class="special">}</span> <span class="comment">// namespace boost
 </span></pre>
 <a name="boost_regex.ref.match_flag_type.description"></a><h5>
-<a name="id601531"></a>
+<a name="id611372"></a>
         <a href="match_flag_type.html#boost_regex.ref.match_flag_type.description">Description</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_results.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_results.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/match_results.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -27,7 +27,7 @@
 <a name="boost_regex.ref.match_results"></a> match_results
 </h3></div></div></div>
 <a name="boost_regex.ref.match_results.synopsis"></a><h5>
-<a name="id531997"></a>
+<a name="id541842"></a>
         <a href="match_results.html#boost_regex.ref.match_results.synopsis">Synopsis</a>
       </h5>
 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@@ -142,7 +142,7 @@
          <span class="identifier">match_results</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">m2</span><span class="special">);</span>
 </pre>
 <a name="boost_regex.ref.match_results.description"></a><h5>
-<a name="id534900"></a>
+<a name="id544746"></a>
         <a href="match_results.html#boost_regex.ref.match_results.description">Description</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/intro.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/intro.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/intro.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_algo.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_algo.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_algo.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -43,7 +43,7 @@
             on to the "real" algorithm.
           </p>
 <a name="boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_match"></a><h5>
-<a name="id605295"></a>
+<a name="id615144"></a>
             <a href="unicode_algo.html#boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_match">u32regex_match</a>
           </h5>
 <p>
@@ -89,7 +89,7 @@
 <span class="special">}</span>
 </pre>
 <a name="boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_search"></a><h5>
-<a name="id606015"></a>
+<a name="id615863"></a>
             <a href="unicode_algo.html#boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_search">u32regex_search</a>
           </h5>
 <p>
@@ -128,7 +128,7 @@
 <span class="special">}</span>
 </pre>
 <a name="boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_replace"></a><h5>
-<a name="id606608"></a>
+<a name="id616456"></a>
             <a href="unicode_algo.html#boost_regex.ref.non_std_strings.icu.unicode_algo.u32regex_replace">u32regex_replace</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_iter.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_iter.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_iter.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
           Unicode Aware Regex Iterators</a>
 </h5></div></div></div>
 <a name="boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_iterator"></a><h5>
-<a name="id607067"></a>
+<a name="id616916"></a>
             <a href="unicode_iter.html#boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_iterator">u32regex_iterator</a>
           </h5>
 <p>
@@ -126,7 +126,7 @@
             Provided of course that the input is encoded as UTF-8.
           </p>
 <a name="boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_token_iterator"></a><h5>
-<a name="id608814"></a>
+<a name="id618662"></a>
             <a href="unicode_iter.html#boost_regex.ref.non_std_strings.icu.unicode_iter.u32regex_token_iterator">u32regex_token_iterator</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_types.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_types.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/icu/unicode_types.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_algo.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_algo.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_algo.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
             here they are anyway:
           </p>
 <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match"></a><h5>
-<a name="id613970"></a>
+<a name="id623819"></a>
             <a href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match">regex_match</a>
           </h5>
 <p>
@@ -82,7 +82,7 @@
 <span class="special">}</span>
 </pre>
 <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match__second_overload_"></a><h5>
-<a name="id614882"></a>
+<a name="id624731"></a>
             <a href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_match__second_overload_">regex_match
             (second overload)</a>
           </h5>
@@ -110,7 +110,7 @@
 <span class="special">}</span>
 </pre>
 <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search"></a><h5>
-<a name="id615473"></a>
+<a name="id625322"></a>
             <a href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search">regex_search</a>
           </h5>
 <p>
@@ -149,7 +149,7 @@
 <span class="special">}</span>
 </pre>
 <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search__second_overload_"></a><h5>
-<a name="id616211"></a>
+<a name="id626060"></a>
             <a href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_search__second_overload_">regex_search
             (second overload)</a>
           </h5>
@@ -164,7 +164,7 @@
             <span class="special">+</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">GetLength</span><span class="special">(),</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">f</span><span class="special">);</span></code>
           </p>
 <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_replace"></a><h5>
-<a name="id616615"></a>
+<a name="id626464"></a>
             <a href="mfc_algo.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_algo.regex_replace">regex_replace</a>
           </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_intro.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_intro.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_intro.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_iter.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_iter.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_iter.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -32,7 +32,7 @@
             an MFC/ATL string to a regex_iterator or regex_token_iterator:
           </p>
 <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_iterator_creation_helper"></a><h5>
-<a name="id617695"></a>
+<a name="id627545"></a>
             <a href="mfc_iter.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_iterator_creation_helper">regex_iterator
             creation helper</a>
           </h5>
@@ -68,7 +68,7 @@
 <span class="special">}</span>
 </pre>
 <a name="boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_token_iterator_creation_helpers"></a><h5>
-<a name="id618444"></a>
+<a name="id628294"></a>
             <a href="mfc_iter.html#boost_regex.ref.non_std_strings.mfc_strings.mfc_iter.regex_token_iterator_creation_helpers">regex_token_iterator
             creation helpers</a>
           </h5>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_create.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_create.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_create.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_types.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_types.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/non_std_strings/mfc_strings/mfc_regex_types.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/posix.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/posix.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/posix.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -165,7 +165,7 @@
 <a name="regcomp"></a><p>
       </p>
 <a name="boost_regex.ref.posix.regcomp"></a><h5>
-<a name="id621362"></a>
+<a name="id631211"></a>
         <a href="posix.html#boost_regex.ref.posix.regcomp">regcomp</a>
       </h5>
 <p>
@@ -379,7 +379,7 @@
 <a name="regerror"></a><p>
       </p>
 <a name="boost_regex.ref.posix.regerror"></a><h5>
-<a name="id622005"></a>
+<a name="id631855"></a>
         <a href="posix.html#boost_regex.ref.posix.regerror">regerror</a>
       </h5>
 <p>
@@ -467,7 +467,7 @@
 <a name="regexec"></a><p>
       </p>
 <a name="boost_regex.ref.posix.regexec"></a><h5>
-<a name="id622188"></a>
+<a name="id632046"></a>
         <a href="posix.html#boost_regex.ref.posix.regexec">regexec</a>
       </h5>
 <p>
@@ -537,7 +537,7 @@
 <a name="regfree"></a><p>
       </p>
 <a name="boost_regex.ref.posix.regfree"></a><h5>
-<a name="id622329"></a>
+<a name="id632188"></a>
         <a href="posix.html#boost_regex.ref.posix.regfree">regfree</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_iterator.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_iterator.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_iterator.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -78,7 +78,7 @@
                           <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">m</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span>
 </pre>
 <a name="boost_regex.ref.regex_iterator.description"></a><h5>
-<a name="id580462"></a>
+<a name="id590309"></a>
         <a href="regex_iterator.html#boost_regex.ref.regex_iterator.description">Description</a>
       </h5>
 <p>
@@ -436,7 +436,7 @@
         <span class="emphasis"><em>m</em></span>.
       </p>
 <a name="boost_regex.ref.regex_iterator.examples"></a><h5>
-<a name="id583597"></a>
+<a name="id593442"></a>
         <a href="regex_iterator.html#boost_regex.ref.regex_iterator.examples">Examples</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_match.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_match.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_match.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -80,7 +80,7 @@
                  <span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">match_default</span><span class="special">);</span>
 </pre>
 <a name="boost_regex.ref.regex_match.description"></a><h5>
-<a name="id564067"></a>
+<a name="id573914"></a>
         <a href="regex_match.html#boost_regex.ref.regex_match.description">Description</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
@@ -360,7 +360,7 @@
         <span class="bold"><strong>Effects</strong></span>: Returns the result of <code class="computeroutput"><span class="identifier">regex_match</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">flags</span><span class="special">)</span></code>.
       </p>
 <a name="boost_regex.ref.regex_match.examples"></a><h5>
-<a name="id567246"></a>
+<a name="id577093"></a>
         <a href="regex_match.html#boost_regex.ref.regex_match.examples">Examples</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_replace.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_replace.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_replace.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -53,7 +53,7 @@
                                   <span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">match_default</span><span class="special">);</span>
 </pre>
 <a name="boost_regex.ref.regex_replace.description"></a><h5>
-<a name="id574547"></a>
+<a name="id584393"></a>
         <a href="regex_replace.html#boost_regex.ref.regex_replace.description">Description</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">OutputIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">&gt;</span>
@@ -163,7 +163,7 @@
         and then returns <code class="computeroutput"><span class="identifier">result</span></code>.
       </p>
 <a name="boost_regex.ref.regex_replace.examples"></a><h5>
-<a name="id576096"></a>
+<a name="id585942"></a>
         <a href="regex_replace.html#boost_regex.ref.regex_replace.examples">Examples</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_search.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_search.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_search.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -73,7 +73,7 @@
                   <span class="identifier">match_flag_type</span> <span class="identifier">flags</span> <span class="special">=</span> <span class="identifier">match_default</span><span class="special">);</span>
 </pre>
 <a name="boost_regex.ref.regex_search.description"></a><h5>
-<a name="id569456"></a>
+<a name="id579303"></a>
         <a href="regex_search.html#boost_regex.ref.regex_search.description">Description</a>
       </h5>
 <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">&gt;</span>
@@ -355,7 +355,7 @@
         <span class="bold"><strong>Effects</strong></span>: Returns the result of <code class="computeroutput"><span class="identifier">regex_search</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">flags</span><span class="special">)</span></code>.
       </p>
 <a name="boost_regex.ref.regex_search.examples"></a><h5>
-<a name="id572722"></a>
+<a name="id582569"></a>
         <a href="regex_search.html#boost_regex.ref.regex_search.examples">Examples</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_token_iterator.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_token_iterator.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_token_iterator.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -136,7 +136,7 @@
          <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_flag_type</span> <span class="identifier">m</span> <span class="special">=</span> <span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">);</span>
 </pre>
 <a name="boost_regex.ref.regex_token_iterator.description"></a><h5>
-<a name="id589414"></a>
+<a name="id599254"></a>
         <a href="regex_token_iterator.html#boost_regex.ref.regex_token_iterator.description">Description</a>
       </h5>
 <a name="boost_regex.regex_token_iterator.construct1"></a><p>
@@ -383,7 +383,7 @@
         <span class="emphasis"><em>m</em></span>.
       </p>
 <a name="boost_regex.ref.regex_token_iterator.examples"></a><h5>
-<a name="id593630"></a>
+<a name="id603471"></a>
         <a href="regex_token_iterator.html#boost_regex.ref.regex_token_iterator.examples">Examples</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_traits.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_traits.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/regex_traits.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -46,7 +46,7 @@
 <span class="special">}</span> <span class="comment">// namespace boost
 </span></pre>
 <a name="boost_regex.ref.regex_traits.description"></a><h5>
-<a name="id603542"></a>
+<a name="id613383"></a>
         <a href="regex_traits.html#boost_regex.ref.regex_traits.description">Description</a>
       </h5>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/sub_match.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/sub_match.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/sub_match.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -329,11 +329,11 @@
 <span class="special">}</span> <span class="comment">// namespace boost
 </span></pre>
 <a name="boost_regex.ref.sub_match.description"></a><h5>
-<a name="id548588"></a>
+<a name="id558434"></a>
         <a href="sub_match.html#boost_regex.ref.sub_match.description">Description</a>
       </h5>
 <a name="boost_regex.ref.sub_match.members"></a><h6>
-<a name="id548612"></a>
+<a name="id558457"></a>
         <a href="sub_match.html#boost_regex.ref.sub_match.members">Members</a>
       </h6>
 <a name="boost_regex.sub_match.value_type"></a><p>
@@ -473,7 +473,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.ref.sub_match.sub_match_non_member_operators"></a><h6>
-<a name="id550186"></a>
+<a name="id560032"></a>
         <a href="sub_match.html#boost_regex.ref.sub_match.sub_match_non_member_operators">sub_match
         non-member operators</a>
       </h6>
@@ -1008,7 +1008,7 @@
         <span class="special">+</span> <span class="identifier">m2</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span></code>.
       </p>
 <a name="boost_regex.ref.sub_match.stream_inserter"></a><h6>
-<a name="id562155"></a>
+<a name="id572003"></a>
         <a href="sub_match.html#boost_regex.ref.sub_match.stream_inserter">Stream inserter</a>
       </h6>
 <a name="boost_regex.sub_match.op_stream"></a><p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_basic.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_basic.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_basic.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_extended.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_extended.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_extended.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_literal.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_literal.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_literal.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_overview.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_overview.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_overview.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_perl.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_perl.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_perl.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_synopsis.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_synopsis.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/ref/syntax_option_type/syntax_option_type_synopsis.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_extended.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_extended.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_extended.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Expression Syntax</a>
 </h3></div></div></div>
 <a name="boost_regex.syntax.basic_extended.synopsis"></a><h4>
-<a name="id504344"></a>
+<a name="id514191"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.synopsis">Synopsis</a>
       </h4>
 <p>
@@ -46,7 +46,7 @@
 <a name="boost_regex.posix_extended_syntax"></a><p>
       </p>
 <a name="boost_regex.syntax.basic_extended.posix_extended_syntax"></a><h4>
-<a name="id504609"></a>
+<a name="id514455"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.posix_extended_syntax">POSIX
         Extended Syntax</a>
       </h4>
@@ -56,7 +56,7 @@
       </p>
 <pre class="programlisting">.[{()\*+?|^$</pre>
 <a name="boost_regex.syntax.basic_extended.wildcard_"></a><h5>
-<a name="id504649"></a>
+<a name="id514495"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.wildcard_">Wildcard:</a>
       </h5>
 <p>
@@ -74,7 +74,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.syntax.basic_extended.anchors_"></a><h5>
-<a name="id504717"></a>
+<a name="id514563"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.anchors_">Anchors:</a>
       </h5>
 <p>
@@ -86,7 +86,7 @@
         of an expression, or the last character of a sub-expression.
       </p>
 <a name="boost_regex.syntax.basic_extended.marked_sub_expressions_"></a><h5>
-<a name="id504752"></a>
+<a name="id514599"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.marked_sub_expressions_">Marked
         sub-expressions:</a>
       </h5>
@@ -98,7 +98,7 @@
         to by a back-reference.
       </p>
 <a name="boost_regex.syntax.basic_extended.repeats_"></a><h5>
-<a name="id504809"></a>
+<a name="id514655"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.repeats_">Repeats:</a>
       </h5>
 <p>
@@ -184,7 +184,7 @@
         operator to be applied to.
       </p>
 <a name="boost_regex.syntax.basic_extended.back_references_"></a><h5>
-<a name="id505256"></a>
+<a name="id515103"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.back_references_">Back references:</a>
       </h5>
 <p>
@@ -214,7 +214,7 @@
         </p></td></tr>
 </table></div>
 <a name="boost_regex.syntax.basic_extended.alternation"></a><h5>
-<a name="id505351"></a>
+<a name="id515197"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.alternation">Alternation</a>
       </h5>
 <p>
@@ -227,7 +227,7 @@
         will match either of "abd" or "abef".
       </p>
 <a name="boost_regex.syntax.basic_extended.character_sets_"></a><h5>
-<a name="id505454"></a>
+<a name="id515300"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.character_sets_">Character
         sets:</a>
       </h5>
@@ -240,7 +240,7 @@
         A bracket expression may contain any combination of the following:
       </p>
 <a name="boost_regex.syntax.basic_extended.single_characters_"></a><h6>
-<a name="id505490"></a>
+<a name="id515336"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.single_characters_">Single
         characters:</a>
       </h6>
@@ -249,7 +249,7 @@
         or 'c'.
       </p>
 <a name="boost_regex.syntax.basic_extended.character_ranges_"></a><h6>
-<a name="id505541"></a>
+<a name="id515387"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.character_ranges_">Character
         ranges:</a>
       </h6>
@@ -265,7 +265,7 @@
         the code points of the characters only.
       </p>
 <a name="boost_regex.syntax.basic_extended.negation_"></a><h6>
-<a name="id505642"></a>
+<a name="id515488"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.negation_">Negation:</a>
       </h6>
 <p>
@@ -274,7 +274,7 @@
         range <code class="computeroutput"><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span></code>.
       </p>
 <a name="boost_regex.syntax.basic_extended.character_classes_"></a><h6>
-<a name="id505724"></a>
+<a name="id515570"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.character_classes_">Character
         classes:</a>
       </h6>
@@ -284,7 +284,7 @@
         <a href="character_classes.html" title="Character Class Names">character class names</a>.
       </p>
 <a name="boost_regex.syntax.basic_extended.collating_elements_"></a><h6>
-<a name="id505806"></a>
+<a name="id515652"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.collating_elements_">Collating
         Elements:</a>
       </h6>
@@ -312,7 +312,7 @@
         matches a NUL character.
       </p>
 <a name="boost_regex.syntax.basic_extended.equivalence_classes_"></a><h6>
-<a name="id505968"></a>
+<a name="id515814"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.equivalence_classes_">Equivalence
         classes:</a>
       </h6>
@@ -329,7 +329,7 @@
         or even all locales on one platform.
       </p>
 <a name="boost_regex.syntax.basic_extended.combinations_"></a><h6>
-<a name="id506072"></a>
+<a name="id515919"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.combinations_">Combinations:</a>
       </h6>
 <p>
@@ -337,7 +337,7 @@
         <code class="computeroutput"><span class="special">[[:</span><span class="identifier">digit</span><span class="special">:]</span><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span><span class="special">[.</span><span class="identifier">NUL</span><span class="special">.]]</span></code>.
       </p>
 <a name="boost_regex.syntax.basic_extended.escapes"></a><h5>
-<a name="id506152"></a>
+<a name="id515998"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.escapes">Escapes</a>
       </h5>
 <p>
@@ -363,7 +363,7 @@
         extensions are also supported by Boost.Regex:
       </p>
 <a name="boost_regex.syntax.basic_extended.escapes_matching_a_specific_character"></a><h6>
-<a name="id506222"></a>
+<a name="id516068"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.escapes_matching_a_specific_character">Escapes
         matching a specific character</a>
       </h6>
@@ -552,7 +552,7 @@
 </tbody>
 </table></div>
 <a name="boost_regex.syntax.basic_extended._quot_single_character_quot__character_classes_"></a><h6>
-<a name="id506569"></a>
+<a name="id516415"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended._quot_single_character_quot__character_classes_">"Single
         character" character classes:</a>
       </h6>
@@ -706,7 +706,7 @@
 </tbody>
 </table></div>
 <a name="boost_regex.syntax.basic_extended.character_properties"></a><h6>
-<a name="id507201"></a>
+<a name="id517047"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.character_properties">Character
         Properties</a>
       </h6>
@@ -813,7 +813,7 @@
         matches any "digit" character, as does <code class="computeroutput"><span class="special">\</span><span class="identifier">p</span><span class="special">{</span><span class="identifier">digit</span><span class="special">}</span></code>.
       </p>
 <a name="boost_regex.syntax.basic_extended.word_boundaries"></a><h6>
-<a name="id507602"></a>
+<a name="id517448"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.word_boundaries">Word Boundaries</a>
       </h6>
 <p>
@@ -888,7 +888,7 @@
 </tbody>
 </table></div>
 <a name="boost_regex.syntax.basic_extended.buffer_boundaries"></a><h6>
-<a name="id507795"></a>
+<a name="id517641"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.buffer_boundaries">Buffer
         boundaries</a>
       </h6>
@@ -979,7 +979,7 @@
 </tbody>
 </table></div>
 <a name="boost_regex.syntax.basic_extended.continuation_escape"></a><h6>
-<a name="id508030"></a>
+<a name="id517877"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.continuation_escape">Continuation
         Escape</a>
       </h6>
@@ -991,7 +991,7 @@
         match to start where the last one ended.
       </p>
 <a name="boost_regex.syntax.basic_extended.quoting_escape"></a><h6>
-<a name="id508079"></a>
+<a name="id517926"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.quoting_escape">Quoting
         escape</a>
       </h6>
@@ -1005,7 +1005,7 @@
 <span class="special">\*+</span><span class="identifier">aaa</span>
 </pre>
 <a name="boost_regex.syntax.basic_extended.unicode_escapes"></a><h6>
-<a name="id508203"></a>
+<a name="id518049"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.unicode_escapes">Unicode
         escapes</a>
       </h6>
@@ -1056,7 +1056,7 @@
 </tbody>
 </table></div>
 <a name="boost_regex.syntax.basic_extended.any_other_escape"></a><h6>
-<a name="id508336"></a>
+<a name="id518182"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.any_other_escape">Any other
         escape</a>
       </h6>
@@ -1065,7 +1065,7 @@
         \@ matches a literal '@'.
       </p>
 <a name="boost_regex.syntax.basic_extended.operator_precedence"></a><h5>
-<a name="id508366"></a>
+<a name="id518212"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.operator_precedence">Operator
         precedence</a>
       </h5>
@@ -1101,7 +1101,7 @@
 </li>
 </ol></div>
 <a name="boost_regex.syntax.basic_extended.what_gets_matched"></a><h5>
-<a name="id508555"></a>
+<a name="id518402"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.what_gets_matched">What
         Gets Matched</a>
       </h5>
@@ -1111,11 +1111,11 @@
         rule</a>.
       </p>
 <a name="boost_regex.syntax.basic_extended.variations"></a><h4>
-<a name="id508595"></a>
+<a name="id518442"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.variations">Variations</a>
       </h4>
 <a name="boost_regex.syntax.basic_extended.egrep"></a><h5>
-<a name="id508618"></a>
+<a name="id518465"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.egrep">Egrep</a>
       </h5>
 <p>
@@ -1136,7 +1136,7 @@
         used with the -E option.
       </p>
 <a name="boost_regex.syntax.basic_extended.awk"></a><h5>
-<a name="id508776"></a>
+<a name="id518622"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.awk">awk</a>
       </h5>
 <p>
@@ -1150,7 +1150,7 @@
         these by default anyway.
       </p>
 <a name="boost_regex.syntax.basic_extended.options"></a><h4>
-<a name="id508822"></a>
+<a name="id518669"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.options">Options</a>
       </h4>
 <p>
@@ -1163,7 +1163,7 @@
         modify how the case and locale sensitivity are to be applied.
       </p>
 <a name="boost_regex.syntax.basic_extended.references"></a><h4>
-<a name="id508952"></a>
+<a name="id518798"></a>
         <a href="basic_extended.html#boost_regex.syntax.basic_extended.references">References</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_syntax.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_syntax.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/basic_syntax.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Expression Syntax</a>
 </h3></div></div></div>
 <a name="boost_regex.syntax.basic_syntax.synopsis"></a><h4>
-<a name="id509034"></a>
+<a name="id518880"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.synopsis">Synopsis</a>
       </h4>
 <p>
@@ -45,7 +45,7 @@
 <a name="boost_regex.posix_basic"></a><p>
       </p>
 <a name="boost_regex.syntax.basic_syntax.posix_basic_syntax"></a><h4>
-<a name="id509325"></a>
+<a name="id519171"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.posix_basic_syntax">POSIX
         Basic Syntax</a>
       </h4>
@@ -55,7 +55,7 @@
       </p>
 <pre class="programlisting">.[\*^$</pre>
 <a name="boost_regex.syntax.basic_syntax.wildcard_"></a><h5>
-<a name="id509364"></a>
+<a name="id519210"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.wildcard_">Wildcard:</a>
       </h5>
 <p>
@@ -73,7 +73,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.syntax.basic_syntax.anchors_"></a><h5>
-<a name="id509433"></a>
+<a name="id519279"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.anchors_">Anchors:</a>
       </h5>
 <p>
@@ -85,7 +85,7 @@
         of an expression, or the last character of a sub-expression.
       </p>
 <a name="boost_regex.syntax.basic_syntax.marked_sub_expressions_"></a><h5>
-<a name="id509469"></a>
+<a name="id519316"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.marked_sub_expressions_">Marked
         sub-expressions:</a>
       </h5>
@@ -97,7 +97,7 @@
         by a back-reference.
       </p>
 <a name="boost_regex.syntax.basic_syntax.repeats_"></a><h5>
-<a name="id509526"></a>
+<a name="id519372"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.repeats_">Repeats:</a>
       </h5>
 <p>
@@ -155,7 +155,7 @@
         to.
       </p>
 <a name="boost_regex.syntax.basic_syntax.back_references_"></a><h5>
-<a name="id509770"></a>
+<a name="id519616"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.back_references_">Back references:</a>
       </h5>
 <p>
@@ -173,7 +173,7 @@
       </p>
 <pre class="programlisting">aaabba</pre>
 <a name="boost_regex.syntax.basic_syntax.character_sets_"></a><h5>
-<a name="id509844"></a>
+<a name="id519690"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.character_sets_">Character
         sets:</a>
       </h5>
@@ -186,7 +186,7 @@
         A bracket expression may contain any combination of the following:
       </p>
 <a name="boost_regex.syntax.basic_syntax.single_characters_"></a><h6>
-<a name="id509880"></a>
+<a name="id519726"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.single_characters_">Single
         characters:</a>
       </h6>
@@ -195,7 +195,7 @@
         or 'c'.
       </p>
 <a name="boost_regex.syntax.basic_syntax.character_ranges_"></a><h6>
-<a name="id509930"></a>
+<a name="id519777"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.character_ranges_">Character
         ranges:</a>
       </h6>
@@ -211,7 +211,7 @@
         of the characters only.
       </p>
 <a name="boost_regex.syntax.basic_syntax.negation_"></a><h6>
-<a name="id510022"></a>
+<a name="id519868"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.negation_">Negation:</a>
       </h6>
 <p>
@@ -220,7 +220,7 @@
         range a-c.
       </p>
 <a name="boost_regex.syntax.basic_syntax.character_classes_"></a><h6>
-<a name="id510083"></a>
+<a name="id519929"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.character_classes_">Character
         classes:</a>
       </h6>
@@ -230,7 +230,7 @@
         <a href="character_classes.html" title="Character Class Names">character class names</a>.
       </p>
 <a name="boost_regex.syntax.basic_syntax.collating_elements_"></a><h6>
-<a name="id510166"></a>
+<a name="id520012"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.collating_elements_">Collating
         Elements:</a>
       </h6>
@@ -259,7 +259,7 @@
         element names</a>.
       </p>
 <a name="boost_regex.syntax.basic_syntax.equivalence_classes_"></a><h6>
-<a name="id510315"></a>
+<a name="id520161"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.equivalence_classes_">Equivalence
         classes:</a>
       </h6>
@@ -276,7 +276,7 @@
         or even all locales on one platform.
       </p>
 <a name="boost_regex.syntax.basic_syntax.combinations_"></a><h6>
-<a name="id510419"></a>
+<a name="id520265"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.combinations_">Combinations:</a>
       </h6>
 <p>
@@ -284,7 +284,7 @@
         <code class="computeroutput"><span class="special">[[:</span><span class="identifier">digit</span><span class="special">:]</span><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span><span class="special">[.</span><span class="identifier">NUL</span><span class="special">.]].</span></code>
       </p>
 <a name="boost_regex.syntax.basic_syntax.escapes"></a><h5>
-<a name="id510497"></a>
+<a name="id520343"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.escapes">Escapes</a>
       </h5>
 <p>
@@ -299,7 +299,7 @@
         will match either a literal '\' or a '^'.
       </p>
 <a name="boost_regex.syntax.basic_syntax.what_gets_matched"></a><h4>
-<a name="id510554"></a>
+<a name="id520400"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.what_gets_matched">What Gets
         Matched</a>
       </h4>
@@ -309,13 +309,13 @@
         rule</a>.
       </p>
 <a name="boost_regex.syntax.basic_syntax.variations"></a><h4>
-<a name="id510594"></a>
+<a name="id520440"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.variations">Variations</a>
       </h4>
 <a name="boost_regex.grep_syntax"></a><p>
       </p>
 <a name="boost_regex.syntax.basic_syntax.grep"></a><h5>
-<a name="id510626"></a>
+<a name="id520473"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.grep">Grep</a>
       </h5>
 <p>
@@ -333,7 +333,7 @@
         As its name suggests, this behavior is consistent with the Unix utility grep.
       </p>
 <a name="boost_regex.syntax.basic_syntax.emacs"></a><h5>
-<a name="id510770"></a>
+<a name="id520616"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.emacs">emacs</a>
       </h5>
 <p>
@@ -613,7 +613,7 @@
         leftmost-longest rule</a>.
       </p>
 <a name="boost_regex.syntax.basic_syntax.options"></a><h4>
-<a name="id511266"></a>
+<a name="id521112"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.options">Options</a>
       </h4>
 <p>
@@ -627,7 +627,7 @@
         options</a> modify how the case and locale sensitivity are to be applied.
       </p>
 <a name="boost_regex.syntax.basic_syntax.references"></a><h4>
-<a name="id511438"></a>
+<a name="id521285"></a>
         <a href="basic_syntax.html#boost_regex.syntax.basic_syntax.references">References</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/optional_char_class_names.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/optional_char_class_names.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/optional_char_class_names.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/std_char_clases.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/std_char_clases.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/character_classes/std_char_clases.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/digraphs.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/digraphs.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/digraphs.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/named_unicode.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/named_unicode.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/named_unicode.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/posix_symbolic_names.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/posix_symbolic_names.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/collating_names/posix_symbolic_names.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/leftmost_longest_rule.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/leftmost_longest_rule.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/leftmost_longest_rule.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
       Syntax</a>
 </h3></div></div></div>
 <a name="boost_regex.syntax.perl_syntax.synopsis"></a><h4>
-<a name="id497764"></a>
+<a name="id507610"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.synopsis">Synopsis</a>
       </h4>
 <p>
@@ -45,7 +45,7 @@
 </span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span> <span class="identifier">e2</span><span class="special">(</span><span class="identifier">my_expression</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span><span class="special">::</span><span class="identifier">perl</span><span class="special">|</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span><span class="special">::</span><span class="identifier">icase</span><span class="special">);</span>
 </pre>
 <a name="boost_regex.syntax.perl_syntax.perl_regular_expression_syntax"></a><h4>
-<a name="id497985"></a>
+<a name="id507832"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.perl_regular_expression_syntax">Perl
         Regular Expression Syntax</a>
       </h4>
@@ -55,7 +55,7 @@
       </p>
 <pre class="programlisting">.[{()\*+?|^$</pre>
 <a name="boost_regex.syntax.perl_syntax.wildcard"></a><h5>
-<a name="id498023"></a>
+<a name="id507869"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.wildcard">Wildcard</a>
       </h5>
 <p>
@@ -75,7 +75,7 @@
         </li>
 </ul></div>
 <a name="boost_regex.syntax.perl_syntax.anchors"></a><h5>
-<a name="id498104"></a>
+<a name="id507950"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.anchors">Anchors</a>
       </h5>
 <p>
@@ -85,7 +85,7 @@
         A '$' character shall match the end of a line.
       </p>
 <a name="boost_regex.syntax.perl_syntax.marked_sub_expressions"></a><h5>
-<a name="id498138"></a>
+<a name="id507984"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.marked_sub_expressions">Marked
         sub-expressions</a>
       </h5>
@@ -97,7 +97,7 @@
         to by a back-reference.
       </p>
 <a name="boost_regex.syntax.perl_syntax.non_marking_grouping"></a><h5>
-<a name="id498193"></a>
+<a name="id508040"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_marking_grouping">Non-marking
         grouping</a>
       </h5>
@@ -111,7 +111,7 @@
         out any separate sub-expressions.
       </p>
 <a name="boost_regex.syntax.perl_syntax.repeats"></a><h5>
-<a name="id498282"></a>
+<a name="id508128"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.repeats">Repeats</a>
       </h5>
 <p>
@@ -197,7 +197,7 @@
         operator to be applied to.
       </p>
 <a name="boost_regex.syntax.perl_syntax.non_greedy_repeats"></a><h5>
-<a name="id498755"></a>
+<a name="id508601"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_greedy_repeats">Non greedy
         repeats</a>
       </h5>
@@ -228,7 +228,7 @@
         input as possible.
       </p>
 <a name="boost_regex.syntax.perl_syntax.back_references"></a><h5>
-<a name="id498900"></a>
+<a name="id508746"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.back_references">Back references</a>
       </h5>
 <p>
@@ -248,7 +248,7 @@
 <pre class="programlisting"><span class="identifier">aaabba</span>
 </pre>
 <a name="boost_regex.syntax.perl_syntax.alternation"></a><h5>
-<a name="id498983"></a>
+<a name="id508829"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.alternation">Alternation</a>
       </h5>
 <p>
@@ -277,7 +277,7 @@
         <code class="computeroutput"><span class="special">(?:</span><span class="identifier">abc</span><span class="special">)??</span></code> has exactly the same effect.
       </p>
 <a name="boost_regex.syntax.perl_syntax.character_sets"></a><h5>
-<a name="id499172"></a>
+<a name="id509018"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_sets">Character sets</a>
       </h5>
 <p>
@@ -290,7 +290,7 @@
         A bracket expression may contain any combination of the following:
       </p>
 <a name="boost_regex.syntax.perl_syntax.single_characters"></a><h6>
-<a name="id499230"></a>
+<a name="id509077"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.single_characters">Single characters</a>
       </h6>
 <p>
@@ -298,7 +298,7 @@
         or 'c'.
       </p>
 <a name="boost_regex.syntax.perl_syntax.character_ranges"></a><h6>
-<a name="id499281"></a>
+<a name="id509127"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_ranges">Character
         ranges</a>
       </h6>
@@ -311,7 +311,7 @@
         regular expression, then ranges are locale sensitive.
       </p>
 <a name="boost_regex.syntax.perl_syntax.negation"></a><h6>
-<a name="id499361"></a>
+<a name="id509207"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.negation">Negation</a>
       </h6>
 <p>
@@ -320,7 +320,7 @@
         range <code class="computeroutput"><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span></code>.
       </p>
 <a name="boost_regex.syntax.perl_syntax.character_classes"></a><h6>
-<a name="id499444"></a>
+<a name="id509290"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_classes">Character
         classes</a>
       </h6>
@@ -330,7 +330,7 @@
         <a href="character_classes.html" title="Character Class Names">character class names</a>.
       </p>
 <a name="boost_regex.syntax.perl_syntax.collating_elements"></a><h6>
-<a name="id499527"></a>
+<a name="id509373"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.collating_elements">Collating
         Elements</a>
       </h6>
@@ -354,7 +354,7 @@
         character.
       </p>
 <a name="boost_regex.syntax.perl_syntax.equivalence_classes"></a><h6>
-<a name="id499675"></a>
+<a name="id509521"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.equivalence_classes">Equivalence
         classes</a>
       </h6>
@@ -371,7 +371,7 @@
         or even all locales on one platform.
       </p>
 <a name="boost_regex.syntax.perl_syntax.escaped_characters"></a><h6>
-<a name="id499778"></a>
+<a name="id509624"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.escaped_characters">Escaped
         Characters</a>
       </h6>
@@ -383,7 +383,7 @@
         is <span class="emphasis"><em>not</em></span> a "word" character.
       </p>
 <a name="boost_regex.syntax.perl_syntax.combinations"></a><h6>
-<a name="id499884"></a>
+<a name="id509730"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.combinations">Combinations</a>
       </h6>
 <p>
@@ -391,7 +391,7 @@
         <code class="computeroutput"><span class="special">[[:</span><span class="identifier">digit</span><span class="special">:]</span><span class="identifier">a</span><span class="special">-</span><span class="identifier">c</span><span class="special">[.</span><span class="identifier">NUL</span><span class="special">.]]</span></code>.
       </p>
 <a name="boost_regex.syntax.perl_syntax.escapes"></a><h5>
-<a name="id499962"></a>
+<a name="id509808"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.escapes">Escapes</a>
       </h5>
 <p>
@@ -584,7 +584,7 @@
 </tbody>
 </table></div>
 <a name="boost_regex.syntax.perl_syntax._quot_single_character_quot__character_classes_"></a><h6>
-<a name="id500675"></a>
+<a name="id510521"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax._quot_single_character_quot__character_classes_">"Single
         character" character classes:</a>
       </h6>
@@ -738,7 +738,7 @@
 </tbody>
 </table></div>
 <a name="boost_regex.syntax.perl_syntax.character_properties"></a><h6>
-<a name="id501307"></a>
+<a name="id511153"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.character_properties">Character
         Properties</a>
       </h6>
@@ -846,7 +846,7 @@
         matches any "digit" character, as does <code class="computeroutput"><span class="special">\</span><span class="identifier">p</span><span class="special">{</span><span class="identifier">digit</span><span class="special">}</span></code>.
       </p>
 <a name="boost_regex.syntax.perl_syntax.word_boundaries"></a><h6>
-<a name="id501717"></a>
+<a name="id511562"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.word_boundaries">Word Boundaries</a>
       </h6>
 <p>
@@ -868,7 +868,7 @@
         Matches only when not at a word boundary.
       </p>
 <a name="boost_regex.syntax.perl_syntax.buffer_boundaries"></a><h6>
-<a name="id501818"></a>
+<a name="id511664"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.buffer_boundaries">Buffer boundaries</a>
       </h6>
 <p>
@@ -893,7 +893,7 @@
         to the regular expression <code class="computeroutput"><span class="special">\</span><span class="identifier">n</span><span class="special">*\</span><span class="identifier">z</span></code>
       </p>
 <a name="boost_regex.syntax.perl_syntax.continuation_escape"></a><h6>
-<a name="id501902"></a>
+<a name="id511747"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.continuation_escape">Continuation
         Escape</a>
       </h6>
@@ -905,7 +905,7 @@
         match to start where the last one ended.
       </p>
 <a name="boost_regex.syntax.perl_syntax.quoting_escape"></a><h6>
-<a name="id501952"></a>
+<a name="id511798"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.quoting_escape">Quoting escape</a>
       </h6>
 <p>
@@ -918,7 +918,7 @@
 <span class="special">\*+</span><span class="identifier">aaa</span>
 </pre>
 <a name="boost_regex.syntax.perl_syntax.unicode_escapes"></a><h6>
-<a name="id502058"></a>
+<a name="id511904"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.unicode_escapes">Unicode escapes</a>
       </h6>
 <p>
@@ -929,7 +929,7 @@
         combining characters.
       </p>
 <a name="boost_regex.syntax.perl_syntax.any_other_escape"></a><h6>
-<a name="id502122"></a>
+<a name="id511968"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.any_other_escape">Any other
         escape</a>
       </h6>
@@ -938,7 +938,7 @@
         \@ matches a literal '@'.
       </p>
 <a name="boost_regex.syntax.perl_syntax.perl_extended_patterns"></a><h5>
-<a name="id502151"></a>
+<a name="id511997"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.perl_extended_patterns">Perl
         Extended Patterns</a>
       </h5>
@@ -947,7 +947,7 @@
         <code class="computeroutput"><span class="special">(?</span></code>.
       </p>
 <a name="boost_regex.syntax.perl_syntax.comments"></a><h6>
-<a name="id502192"></a>
+<a name="id512038"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.comments">Comments</a>
       </h6>
 <p>
@@ -956,7 +956,7 @@
         are ignored.
       </p>
 <a name="boost_regex.syntax.perl_syntax.modifiers"></a><h6>
-<a name="id502245"></a>
+<a name="id512091"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.modifiers">Modifiers</a>
       </h6>
 <p>
@@ -971,7 +971,7 @@
         applies the specified modifiers to pattern only.
       </p>
 <a name="boost_regex.syntax.perl_syntax.non_marking_groups"></a><h6>
-<a name="id502372"></a>
+<a name="id512218"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.non_marking_groups">Non-marking
         groups</a>
       </h6>
@@ -980,7 +980,7 @@
         an additional sub-expression.
       </p>
 <a name="boost_regex.syntax.perl_syntax.lookahead"></a><h6>
-<a name="id502423"></a>
+<a name="id512269"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.lookahead">Lookahead</a>
       </h6>
 <p>
@@ -1003,7 +1003,7 @@
         could be used to validate the password.
       </p>
 <a name="boost_regex.syntax.perl_syntax.lookbehind"></a><h6>
-<a name="id502564"></a>
+<a name="id512410"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.lookbehind">Lookbehind</a>
       </h6>
 <p>
@@ -1017,7 +1017,7 @@
         (pattern must be of fixed length).
       </p>
 <a name="boost_regex.syntax.perl_syntax.independent_sub_expressions"></a><h6>
-<a name="id502643"></a>
+<a name="id512489"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.independent_sub_expressions">Independent
         sub-expressions</a>
       </h6>
@@ -1030,7 +1030,7 @@
         no match is found at all.
       </p>
 <a name="boost_regex.syntax.perl_syntax.conditional_expressions"></a><h6>
-<a name="id502707"></a>
+<a name="id512553"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.conditional_expressions">Conditional
         Expressions</a>
       </h6>
@@ -1050,7 +1050,7 @@
         sub-expression has been matched).
       </p>
 <a name="boost_regex.syntax.perl_syntax.operator_precedence"></a><h5>
-<a name="id502875"></a>
+<a name="id512722"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.operator_precedence">Operator
         precedence</a>
       </h5>
@@ -1086,7 +1086,7 @@
         </li>
 </ol></div>
 <a name="boost_regex.syntax.perl_syntax.what_gets_matched"></a><h4>
-<a name="id503053"></a>
+<a name="id512900"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.what_gets_matched">What gets
         matched</a>
       </h4>
@@ -1271,7 +1271,7 @@
 </tbody>
 </table></div>
 <a name="boost_regex.syntax.perl_syntax.variations"></a><h4>
-<a name="id503968"></a>
+<a name="id513815"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.variations">Variations</a>
       </h4>
 <p>
@@ -1280,7 +1280,7 @@
         <code class="computeroutput"><span class="identifier">JavaScript</span></code> and <code class="computeroutput"><span class="identifier">JScript</span></code></a> are all synonyms for <code class="computeroutput"><span class="identifier">perl</span></code>.
       </p>
 <a name="boost_regex.syntax.perl_syntax.options"></a><h4>
-<a name="id504063"></a>
+<a name="id513910"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.options">Options</a>
       </h4>
 <p>
@@ -1293,7 +1293,7 @@
         sensitivity are to be applied.
       </p>
 <a name="boost_regex.syntax.perl_syntax.pattern_modifiers"></a><h4>
-<a name="id504164"></a>
+<a name="id514011"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.pattern_modifiers">Pattern
         Modifiers</a>
       </h4>
@@ -1305,7 +1305,7 @@
         and <code class="computeroutput"><span class="identifier">no_mod_s</span></code></a>.
       </p>
 <a name="boost_regex.syntax.perl_syntax.references"></a><h4>
-<a name="id504291"></a>
+<a name="id514138"></a>
         <a href="perl_syntax.html#boost_regex.syntax.perl_syntax.references">References</a>
       </h4>
 <p>

Modified: branches/proto/v4/libs/regex/doc/html/boost_regex/unicode.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/boost_regex/unicode.html (original)
+++ branches/proto/v4/libs/regex/doc/html/boost_regex/unicode.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -30,7 +30,7 @@
       There are two ways to use Boost.Regex with Unicode strings:
     </p>
 <a name="boost_regex.unicode.rely_on_wchar_t"></a><h5>
-<a name="id492782"></a>
+<a name="id502629"></a>
       <a href="unicode.html#boost_regex.unicode.rely_on_wchar_t">Rely on wchar_t</a>
     </h5>
 <p>
@@ -56,7 +56,7 @@
       </li>
 </ul></div>
 <a name="boost_regex.unicode.use_a_unicode_aware_regular_expression_type_"></a><h5>
-<a name="id492966"></a>
+<a name="id502813"></a>
       <a href="unicode.html#boost_regex.unicode.use_a_unicode_aware_regular_expression_type_">Use
       a Unicode Aware Regular Expression Type.</a>
     </h5>

Modified: branches/proto/v4/libs/regex/doc/html/index.html
==============================================================================
--- branches/proto/v4/libs/regex/doc/html/index.html (original)
+++ branches/proto/v4/libs/regex/doc/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,8 +12,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -28,7 +28,7 @@
 </h3></div></div></div>
 <div><p class="copyright">Copyright © 1998 -2007 John Maddock</p></div>
 <div><div class="legalnotice">
-<a name="id435844"></a><p>
+<a name="id445742"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -196,7 +196,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: April 11, 2008 at 08:50:33 GMT</small></p></td>
+<td align="left"><p><small>Last revised: July 25, 2008 at 09:01:43 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/libs/regex/example/snippets/icu_example.cpp
==============================================================================
--- branches/proto/v4/libs/regex/example/snippets/icu_example.cpp (original)
+++ branches/proto/v4/libs/regex/example/snippets/icu_example.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -157,7 +157,7 @@
    assert(greek == L"\x0391\x039D\x0395\x0398\x0391 2004");
 
    // extract currency symbols with associated value, use iterator interface:
- std::string text2 = " $100.23 or \xC2\xA3""198.12 "; // \xC2\xA3 is the £ sign encoded in UTF-8
+ std::string text2 = " $100.23 or \xC2\xA3""198.12 "; // \xC2\xA3 is the pound sign encoded in UTF-8
    enumerate_currencies(text2);
    enumerate_currencies2(text2);
 

Modified: branches/proto/v4/libs/regex/src/wc_regex_traits.cpp
==============================================================================
--- branches/proto/v4/libs/regex/src/wc_regex_traits.cpp (original)
+++ branches/proto/v4/libs/regex/src/wc_regex_traits.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,42 +19,57 @@
 
 #define BOOST_REGEX_SOURCE
 
-#include <boost/regex/config.hpp>
 #include <boost/detail/workaround.hpp>
-
-#ifdef _DLL_CPPLIB
 #include <memory>
 #include <string>
+
+#if defined(_DLL_CPPLIB) && !defined(_M_CEE_PURE) \
+ && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))
 //
-// This is a horrible workaround, without declaring these symbols extern we get
+// This is a horrible workaround, but without declaring these symbols extern we get
 // duplicate symbol errors when linking if the application is built without
 // /Zc:wchar_t
 //
+#ifdef _CRTIMP2_PURE
+# define BOOST_REGEX_STDLIB_DECL _CRTIMP2_PURE
+#else
+# define BOOST_REGEX_STDLIB_DECL _CRTIMP2
+#endif
+
 namespace std{
-template _CRTIMP2 bool __cdecl operator==(
+
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+template class BOOST_REGEX_STDLIB_DECL allocator<unsigned short>;
+template class BOOST_REGEX_STDLIB_DECL _String_val<unsigned short, allocator<unsigned short> >;
+template class BOOST_REGEX_STDLIB_DECL basic_string<unsigned short, char_traits<unsigned short>,
+ allocator<unsigned short> >;
+#endif
+
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400))
+template<> BOOST_REGEX_STDLIB_DECL std::size_t __cdecl char_traits<unsigned short>::length(unsigned short const*);
+#endif
+
+template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
    const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
    const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template _CRTIMP2 bool __cdecl operator==(
+template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
    const unsigned short *,
    const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template _CRTIMP2 bool __cdecl operator==(
+template BOOST_REGEX_STDLIB_DECL bool __cdecl operator==(
    const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
    const unsigned short *);
-template _CRTIMP2 bool __cdecl operator<(
+template BOOST_REGEX_STDLIB_DECL bool __cdecl operator<(
    const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
    const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-template _CRTIMP2 bool __cdecl operator>(
+template BOOST_REGEX_STDLIB_DECL bool __cdecl operator>(
    const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&,
    const basic_string<unsigned short, char_traits<unsigned short>, allocator<unsigned short> >&);
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1300) && BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400))
-template<> _CRTIMP2 std::size_t __cdecl char_traits<unsigned short>::length(unsigned short const*);
-#endif
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
-template _CRTIMP2 allocator<unsigned short>::allocator();
-#endif
 }
 #endif
 
+#include <boost/regex/config.hpp>
+#include <boost/detail/workaround.hpp>
+
 #if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
 
 #include <boost/regex/v4/c_regex_traits.hpp>

Modified: branches/proto/v4/libs/serialization/doc/headers.html
==============================================================================
--- branches/proto/v4/libs/serialization/doc/headers.html (original)
+++ branches/proto/v4/libs/serialization/doc/headers.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -161,13 +161,14 @@
 </a>
 <dd>For serialization of pointers to derived classes via key export.</dd>
 
-<dt><a target="is_abstract" href="../../../boost/serialization/is_abstract.hpp">
-boost/serialization/is_abstract.hpp
+<dt><a target="assume_abstract" href="../../../boost/serialization/assume_abstract.hpp">
+boost/serialization/assume_abstract.hpp
 </a>
-<dd>For serialization of pointers to abstract base classes. A generic implementation
-of this is functional only on the most modern compilers. This one is just
-a thin wrapper which permits one to specify "by hand" whether or not a base class
-is abstract or not.</dd>
+<dd>This is just a thin wrapper which permits one to explicitly specify that a
+particular type is an abstract base class. It is necessary to use this
+for compilers which don't support the boost type traits implementation of
+is_abstact.
+</dd>
 
 </dl>
 

Modified: branches/proto/v4/libs/serialization/doc/performance_status.html
==============================================================================
--- branches/proto/v4/libs/serialization/doc/performance_status.html (original)
+++ branches/proto/v4/libs/serialization/doc/performance_status.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,7 +5,7 @@
 <body bgcolor="#ffffff" text="#000000">
 <table border="0">
 <tr>
-<td><img border="0" src="C:/BoostTrunk/boost.png" width="277" height="86"></td>
+<td><img border="0" src="../../../boost.png" width="277" height="86"></td>
 <td>
 <h1>Library Status: serialization</h1>
 <b>Run Date:</b> 02:42:48 UTC, Tuesday 10 June 2008

Modified: branches/proto/v4/libs/serialization/doc/release.html
==============================================================================
--- branches/proto/v4/libs/serialization/doc/release.html (original)
+++ branches/proto/v4/libs/serialization/doc/release.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -130,7 +130,6 @@
     is fixed in this version. Unfortunately, the fix breaks serialization of
     <code style="white-space: normal">std::map</code> for those compilers which do not support
     partial template specialization.
- <li>Without taking special precautions, racking fails for types placed in a <code style="white-space: normal">std::map</code>.
  </ul>
 <p>
 Aside from the above, there are a number of issues related to specific platforms.

Modified: branches/proto/v4/libs/serialization/doc/special.html
==============================================================================
--- branches/proto/v4/libs/serialization/doc/special.html (original)
+++ branches/proto/v4/libs/serialization/doc/special.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -416,8 +416,8 @@
 <code style="white-space: normal">test_dll_simple</code>
 </a>,
 and
-<a href = "../test/dll_A.cpp" target="dll_A">
-<code style="white-space: normal">dll_A.cpp</code>
+<a href = "../test/dll_a.cpp" target="dll_a">
+<code style="white-space: normal">dll_a.cpp</code>
 </a>
 where implementation of serializaton is also completely separate
 from the main program but the code is loaded at runtime. In this

Modified: branches/proto/v4/libs/serialization/doc/style.css
==============================================================================
--- branches/proto/v4/libs/serialization/doc/style.css (original)
+++ branches/proto/v4/libs/serialization/doc/style.css 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,3 +6,10 @@
   MARGIN-LEFT: 0pt;
   background-color: #EEEEEE;
 }
+
+/*
+(C) Copyright 2008 Robert Ramey - http://www.rrsd.com .
+Use, modification and distribution is subject to the Boost Software
+License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
\ No newline at end of file

Modified: branches/proto/v4/libs/serialization/doc/todo.html
==============================================================================
--- branches/proto/v4/libs/serialization/doc/todo.html (original)
+++ branches/proto/v4/libs/serialization/doc/todo.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -30,7 +30,7 @@
   <dt>Performance Testing and Profiling</dt>
   <dt>Back Versioning</dt>
   <dt>Testing for Environments with No RTTI</dt>
- <dt>Additional Case Studies</dt>
+ <dt>Additional Case Studies</dt>
 </dl>
 
 These are enhancements that the serialization library needs but have not been done.

Modified: branches/proto/v4/libs/serialization/example/demo.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/example/demo.cpp (original)
+++ branches/proto/v4/libs/serialization/example/demo.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,6 +7,7 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 
 
+#include <cstddef> // NULL
 #include <iomanip>
 #include <iostream>
 #include <fstream>

Modified: branches/proto/v4/libs/serialization/example/demo_dll.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/example/demo_dll.cpp (original)
+++ branches/proto/v4/libs/serialization/example/demo_dll.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/example/demo_dll_a.hpp
==============================================================================
--- branches/proto/v4/libs/serialization/example/demo_dll_a.hpp (original)
+++ branches/proto/v4/libs/serialization/example/demo_dll_a.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -62,7 +62,7 @@
         #endif
         #if BOOST_WORKAROUND(__BORLANDC__, <= 0x551 )
             int i;
- if(Archive::is_saving::value){
+ if(BOOST_DEDUCED_TYPENAME Archive::is_saving::value){
                 i = l;
                 ar & BOOST_SERIALIZATION_NVP(i);
             }

Modified: branches/proto/v4/libs/serialization/example/demo_dll_a.ipp
==============================================================================
--- branches/proto/v4/libs/serialization/example/demo_dll_a.ipp (original)
+++ branches/proto/v4/libs/serialization/example/demo_dll_a.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -62,7 +62,7 @@
         #endif
         #if BOOST_WORKAROUND(__BORLANDC__, <= 0x551 )
             int i;
- if(Archive::is_saving::value){
+ if(BOOST_DEDUCED_TYPENAME Archive::is_saving::value){
                 i = l;
                 ar & BOOST_SERIALIZATION_NVP(i);
             }

Modified: branches/proto/v4/libs/serialization/example/demo_exception.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/example/demo_exception.cpp (original)
+++ branches/proto/v4/libs/serialization/example/demo_exception.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,6 +19,7 @@
 
 #include <algorithm>
 #include <iostream>
+#include <cstddef> // NULL
 #include <fstream>
 #include <string>
 

Modified: branches/proto/v4/libs/serialization/example/demo_shared_ptr.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/example/demo_shared_ptr.cpp (original)
+++ branches/proto/v4/libs/serialization/example/demo_shared_ptr.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,6 +11,7 @@
 
 #include <iomanip>
 #include <iostream>
+#include <cstddef> // NULL
 #include <fstream>
 #include <string>
 

Modified: branches/proto/v4/libs/serialization/example/portable_binary_archive.hpp
==============================================================================
--- branches/proto/v4/libs/serialization/example/portable_binary_archive.hpp (original)
+++ branches/proto/v4/libs/serialization/example/portable_binary_archive.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,11 @@
 #ifndef PORTABLE_BINARY_ARCHIVE_HPP
 #define PORTABLE_BINARY_ARCHIVE_HPP
 
+// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
 // MS compatible compilers support #pragma once
 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
 # pragma once

Modified: branches/proto/v4/libs/serialization/performance/profile.sh
==============================================================================
--- branches/proto/v4/libs/serialization/performance/profile.sh (original)
+++ branches/proto/v4/libs/serialization/performance/profile.sh 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,10 @@
 # build and run the tests leaving the executables in place
 
+# (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
+# Use, modification and distribution is subject to the Boost Software
+# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
 # runtest.sh --toolset=gcc --preserve-test-targets variant=profile
 if test $# -eq 0
 then

Modified: branches/proto/v4/libs/serialization/src/basic_archive.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/basic_archive.cpp (original)
+++ branches/proto/v4/libs/serialization/src/basic_archive.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -54,9 +54,13 @@
 // 3 - numerous changes - can't guarentee compatibility with previous versions
 // 4 - Boost 1.34
 // added register_version to properly support versioning for collections
+// 5 - Boost 1.36
+// changed serialization of collections: adding version even for primitive
+// types caused backwards compatibility breaking change in 1.35
+
 BOOST_ARCHIVE_DECL(unsigned char)
 ARCHIVE_VERSION(){
- return 4;
+ return 5;
 }
 
 } // namespace archive

Modified: branches/proto/v4/libs/serialization/src/basic_iarchive.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/basic_iarchive.cpp (original)
+++ branches/proto/v4/libs/serialization/src/basic_iarchive.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,7 @@
 #include <set>
 #include <list>
 #include <vector>
-#include <cstddef> // size_t
+#include <cstddef> // size_t, NULL
 
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
@@ -224,11 +224,9 @@
     const void * new_address,
     const void *old_address
 ){
- object_id_type i;
- i = moveable_objects_recent;
     // this code handles a couple of situations.
     // a) where reset_object_address is applied to an untracked object.
- // In such a case the call is really superfluous and it,s really an
+ // In such a case the call is really superfluous and its really an
     // an error. But we don't have access to the types here so we can't
     // know that. However, this code will effectively turn this situation
     // into a no-op and every thing will work fine - albeat with a small
@@ -238,30 +236,29 @@
     // but the code may work anyway. Naturally, a bad practice on the part
     // of the programmer but we can't detect it - as above. So maybe we
     // can save a few more people from themselves as above.
- //
- // note: this scheme fails when an untracked object contains a tracked object!!!
- for(; i < moveable_objects_end; ++i){
+ object_id_type i;
+ for(i = moveable_objects_recent; i < moveable_objects_end; ++i){
         if(old_address == object_id_vector[i].address)
             break;
     }
     for(; i < moveable_objects_end; ++i){
- aobject o = this->object_id_vector[i];
+
         // calculate displacement from this level
         // warning - pointer arithmetic on void * is in herently non-portable
         // but expected to work on all platforms in current usage
- if(o.address > old_address){
+ if(object_id_vector[i].address > old_address){
             std::size_t member_displacement
- = reinterpret_cast<std::size_t>(o.address)
+ = reinterpret_cast<std::size_t>(object_id_vector[i].address)
                 - reinterpret_cast<std::size_t>(old_address);
- o.address = reinterpret_cast<void *>(
+ object_id_vector[i].address = reinterpret_cast<void *>(
                 reinterpret_cast<std::size_t>(new_address) + member_displacement
             );
         }
         else{
             std::size_t member_displacement
                 = reinterpret_cast<std::size_t>(old_address)
- - reinterpret_cast<std::size_t>(o.address);
- o.address = reinterpret_cast<void *>(
+ - reinterpret_cast<std::size_t>(object_id_vector[i].address);
+ object_id_vector[i].address = reinterpret_cast<void *>(
                 reinterpret_cast<std::size_t>(new_address) - member_displacement
             );
        }

Modified: branches/proto/v4/libs/serialization/src/basic_iserializer.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/basic_iserializer.cpp (original)
+++ branches/proto/v4/libs/serialization/src/basic_iserializer.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,8 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
+#include <cstddef> // NULL
+
 #define BOOST_ARCHIVE_SOURCE
 #include <boost/archive/detail/basic_iserializer.hpp>
 

Modified: branches/proto/v4/libs/serialization/src/basic_oarchive.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/basic_oarchive.cpp (original)
+++ branches/proto/v4/libs/serialization/src/basic_oarchive.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,6 +12,7 @@
 
 #include <cassert>
 #include <set>
+#include <cstddef> // NULL
 
 #include <boost/limits.hpp>
 #include <boost/state_saver.hpp>

Modified: branches/proto/v4/libs/serialization/src/basic_oserializer.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/basic_oserializer.cpp (original)
+++ branches/proto/v4/libs/serialization/src/basic_oserializer.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,8 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
+#include <cstddef> // NULL
+
 #define BOOST_ARCHIVE_SOURCE
 #include <boost/archive/detail/basic_oserializer.hpp>
 

Modified: branches/proto/v4/libs/serialization/src/extended_type_info.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/extended_type_info.cpp (original)
+++ branches/proto/v4/libs/serialization/src/extended_type_info.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,6 +16,7 @@
 #include <set>
 #include <utility>
 #include <cassert>
+#include <cstddef> // NULL
 
 #include <boost/config.hpp> // msvc needs this to suppress warning
 

Modified: branches/proto/v4/libs/serialization/src/extended_type_info_no_rtti.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/extended_type_info_no_rtti.cpp (original)
+++ branches/proto/v4/libs/serialization/src/extended_type_info_no_rtti.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,8 +9,10 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
-#include <boost/config.hpp>
 #include <cstring>
+#include <cstddef> // NULL
+
+#include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{ using ::strcmp; }
 #endif

Modified: branches/proto/v4/libs/serialization/src/extended_type_info_typeid.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/extended_type_info_typeid.cpp (original)
+++ branches/proto/v4/libs/serialization/src/extended_type_info_typeid.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,7 @@
 #include <set>
 #include <cassert>
 #include <typeinfo>
+#include <cstddef> // NULL
 
 #include <boost/detail/no_exceptions_support.hpp>
 

Modified: branches/proto/v4/libs/serialization/src/void_cast.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/void_cast.cpp (original)
+++ branches/proto/v4/libs/serialization/src/void_cast.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,6 +14,7 @@
 #endif
 
 #include <cassert>
+#include <cstddef> // NULL
 
 // STL
 #include <vector>

Modified: branches/proto/v4/libs/serialization/test/A.hpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/A.hpp (original)
+++ branches/proto/v4/libs/serialization/test/A.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,18 +16,16 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
-#include <cstddef> // size_t
 #include <ostream> // for friend output operators
-
+#include <cstddef> // size_t
 #include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::size_t;
 }
 #endif
 
+#include <boost/detail/workaround.hpp>
 #include <boost/limits.hpp>
 #include <boost/cstdint.hpp>
 
@@ -69,7 +67,7 @@
             #endif
             #if BOOST_WORKAROUND(__BORLANDC__, <= 0x551 )
                 int i;
- if(Archive::is_saving::value){
+ if(BOOST_DEDUCED_TYPENAME Archive::is_saving::value){
                     i = l;
                     ar & BOOST_SERIALIZATION_NVP(i);
                 }
@@ -143,7 +141,6 @@
     // hash function for class A
     operator std::size_t () const;
     friend std::ostream & operator<<(std::ostream & os, A const & a);
- friend std::istream & operator>>(std::istream & is, A & a);
 };
 
 #endif // BOOST_SERIALIZATION_TEST_A_HPP

Modified: branches/proto/v4/libs/serialization/test/A.ipp
==============================================================================
--- branches/proto/v4/libs/serialization/test/A.ipp (original)
+++ branches/proto/v4/libs/serialization/test/A.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,7 +32,7 @@
     #endif
     #if BOOST_WORKAROUND(__BORLANDC__, <= 0x551 )
         int i;
- if(Archive::is_saving::value){
+ if(BOOST_DEDUCED_TYPENAME Archive::is_saving::value){
             i = l;
             ar & BOOST_SERIALIZATION_NVP(i);
         }

Modified: branches/proto/v4/libs/serialization/test/B.hpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/B.hpp (original)
+++ branches/proto/v4/libs/serialization/test/B.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,7 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <cstdlib> // for rand()
+#include <cmath>
 
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)

Modified: branches/proto/v4/libs/serialization/test/D.hpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/D.hpp (original)
+++ branches/proto/v4/libs/serialization/test/D.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,6 +16,8 @@
 
 // See http://www.boost.org for updates, documentation, and revision history.
 
+#include <cstddef> // NULL
+
 #include "test_tools.hpp"
 #include <boost/detail/no_exceptions_support.hpp>
 #include <boost/throw_exception.hpp>

Modified: branches/proto/v4/libs/serialization/test/test_array.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_array.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_array.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,9 @@
 
 // should pass compilation and execution
 
+#include <cstddef>
 #include <fstream>
+
 #include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
@@ -20,6 +22,7 @@
 #include "test_tools.hpp"
 #include <boost/detail/no_exceptions_support.hpp>
 #include <boost/archive/archive_exception.hpp>
+#include <boost/array.hpp>
 
 #include "A.hpp"
 #include "A.ipp"
@@ -57,19 +60,30 @@
 
     // test array of objects
     const T a_array[10]={T(),T(),T(),T(),T(),T(),T(),T(),T(),T()};
+ const T b_array[2][3]={{T(),T(),T()},{T(),T(),T()}};
+ const boost::array<T,10> c_array = boost::array<T,10>();
     {
         test_ostream os(testfile, TEST_STREAM_FLAGS);
         test_oarchive oa(os, TEST_ARCHIVE_FLAGS);
         oa << boost::serialization::make_nvp("a_array", a_array);
+ oa << boost::serialization::make_nvp("b_array", b_array);
+ oa << boost::serialization::make_nvp("c_array", c_array);
     }
     {
         T a_array1[10];
+ T b_array1[2][3];
+ boost::array<T,10> c_array1;
         test_istream is(testfile, TEST_STREAM_FLAGS);
         test_iarchive ia(is, TEST_ARCHIVE_FLAGS);
         ia >> boost::serialization::make_nvp("a_array", a_array1);
+ ia >> boost::serialization::make_nvp("b_array", b_array1);
+ ia >> boost::serialization::make_nvp("c_array", c_array1);
 
         array_equal_to/*<A[10]>*/ Compare;
         BOOST_CHECK(Compare(a_array, a_array1));
+ BOOST_CHECK(Compare(b_array[0], b_array1[0]));
+ BOOST_CHECK(Compare(b_array[1], b_array1[1]));
+ BOOST_CHECK(Compare(c_array, c_array1));
     }
     {
         T a_array1[9];

Modified: branches/proto/v4/libs/serialization/test/test_binary.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_binary.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_binary.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,11 +8,12 @@
 
 // should pass compilation and execution
 
+#include <cstdlib> // for rand(), NULL
+
 #include <fstream>
+#include <boost/config.hpp>
 
-#include <cstdlib> // for rand()
 #include <cstdio> // remove
-#include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::rand;

Modified: branches/proto/v4/libs/serialization/test/test_codecvt_null.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_codecvt_null.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_codecvt_null.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,9 +16,9 @@
 #include <iterator>
 #include <locale>
 #include <vector>
-#include <cstddef>
-
 #include <cstdio> // remove
+#include <cstddef> // NULL, size_t
+
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/libs/serialization/test/test_complex.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_complex.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_complex.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,10 +10,12 @@
 
 #include <fstream>
 
-#include <cstdio> // remove
+#include <cstddef> // NULL
 #include <cstdlib> // rand
 #include <limits>
 #include <boost/config.hpp>
+
+#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;

Modified: branches/proto/v4/libs/serialization/test/test_contained_class.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_contained_class.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_contained_class.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // should pass compilation and execution
 
+#include <cstddef>
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_cyclic_ptrs.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_cyclic_ptrs.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_cyclic_ptrs.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_delete_pointer.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_delete_pointer.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_delete_pointer.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,6 +7,7 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 //
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_deque.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_deque.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_deque.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // should pass compilation and execution
 
+#include <cstddef>
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_derived.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_derived.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_derived.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_derived_class_ptr.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_derived_class_ptr.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_derived_class_ptr.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_diamond.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_diamond.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_diamond.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,11 +8,12 @@
 
 // test of serialization library for diamond intheritence situations
 
+#include <cstddef> // NULL
 #include <fstream>
 #include <iostream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
+#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;

Modified: branches/proto/v4/libs/serialization/test/test_dll_exported.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_dll_exported.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_dll_exported.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_dll_simple.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_dll_simple.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_dll_simple.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,6 +10,7 @@
 
 // invoke header for a custom archive test.
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_exported.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_exported.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_exported.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,10 +8,11 @@
 
 // should pass compilation and execution
 
+#include <cstddef>
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
+#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;
@@ -29,7 +30,7 @@
 
 template<class Archive>
 void polymorphic_base::serialize(
- Archive &ar,
+ Archive & /* ar */,
     const unsigned int /* file_version */){
 }
 
@@ -37,7 +38,7 @@
 {
     friend class boost::serialization::access;
     template<class Archive>
- void serialize(Archive &ar, const unsigned int /* file_version */){
+ void serialize(Archive & ar, const unsigned int /* file_version */){
         ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(polymorphic_base);
     }
 public:

Modified: branches/proto/v4/libs/serialization/test/test_list.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_list.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_list.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,10 +8,11 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
+#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;

Modified: branches/proto/v4/libs/serialization/test/test_list_ptrs.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_list_ptrs.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_list_ptrs.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,10 +8,11 @@
 
 // should pass compilation and execution
 
+#include <cstddef>
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
+#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;

Modified: branches/proto/v4/libs/serialization/test/test_map.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_map.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_map.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,7 +11,7 @@
 #include <algorithm>
 #include <vector>
 #include <fstream>
-#include <cstddef> // size_t
+#include <cstddef> // size_t, NULL
 
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>

Modified: branches/proto/v4/libs/serialization/test/test_mi.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_mi.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_mi.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,11 +9,12 @@
 // test of serialization of base classes with multiple inheritance
 // contributed by Peter Dimov
 
+#include <cstddef>
 #include <iostream>
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
+#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;

Modified: branches/proto/v4/libs/serialization/test/test_mult_archive_types.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_mult_archive_types.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_mult_archive_types.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,10 +6,11 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
+#include <cstddef>
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
+#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;

Modified: branches/proto/v4/libs/serialization/test/test_multiple_ptrs.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_multiple_ptrs.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_multiple_ptrs.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,10 +8,11 @@
 
 // should pass compilation and execution
 
+#include <cstddef>
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
+#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;

Modified: branches/proto/v4/libs/serialization/test/test_no_rtti.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_no_rtti.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_no_rtti.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,11 @@
 // As this program uses RTTI for one of the types, the test will fail
 // on a system for which RTTI is not enabled or not existent.
 
+#include <cstddef>
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
+#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;

Modified: branches/proto/v4/libs/serialization/test/test_non_default_ctor.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_non_default_ctor.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_non_default_ctor.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,9 +12,10 @@
 // a) non-intrusive method of implementing serialization
 // b) usage of a non-default constructor
 
+#include <cstddef> // NULL
+#include <cstdio> // remove()
 #include <fstream>
 #include <cstdlib> // for rand()
-#include <cstdio> // remove()
 #include <cmath> // for fabs()
 #include <limits>
 

Modified: branches/proto/v4/libs/serialization/test/test_null_ptr.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_null_ptr.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_null_ptr.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,9 +8,10 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/libs/serialization/test/test_nvp.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_nvp.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_nvp.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,9 +8,10 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/libs/serialization/test/test_object.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_object.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_object.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,9 +9,10 @@
 // test implementation level "object_serializable"
 // should pass compilation and execution
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/libs/serialization/test/test_optional.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_optional.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_optional.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,10 +8,12 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
+
 #include <boost/config.hpp>
 
-#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;

Modified: branches/proto/v4/libs/serialization/test/test_polymorphic.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_polymorphic.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_polymorphic.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,9 +8,10 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/libs/serialization/test/test_primitive.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_primitive.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_primitive.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // test implementation level "primitive_type"
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include "test_tools.hpp"

Modified: branches/proto/v4/libs/serialization/test/test_recursion.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_recursion.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_recursion.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,9 +8,10 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/libs/serialization/test/test_registered.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_registered.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_registered.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,9 +8,10 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/libs/serialization/test/test_set.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_set.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_set.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,12 +8,19 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULLsize_t
+#include <cstdio> // remove
+#include <fstream>
+
 #include <algorithm>
 #include <vector>
-#include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::size_t;
+}
+#endif
 
 #include <boost/detail/workaround.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)

Modified: branches/proto/v4/libs/serialization/test/test_shared_ptr.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_shared_ptr.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_shared_ptr.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,9 +8,10 @@
 //
 // See http://www.boost.org for updates, documentation, and revision history.
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/libs/serialization/test/test_shared_ptr_132.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_shared_ptr_132.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_shared_ptr_132.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 //
 // See http://www.boost.org for updates, documentation, and revision history.
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_simple_class.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_simple_class.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_simple_class.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,9 +10,10 @@
 
 // invoke header for a custom archive test.
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
 
 #if defined(BOOST_NO_STDC_NAMESPACE)

Modified: branches/proto/v4/libs/serialization/test/test_simple_class_ptr.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_simple_class_ptr.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_simple_class_ptr.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,9 +8,10 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/libs/serialization/test/test_split.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_split.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_split.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,9 +8,10 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
+#include <cstdio> // remove
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{

Modified: branches/proto/v4/libs/serialization/test/test_tracking.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_tracking.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_tracking.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,10 +8,11 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
 #include <fstream>
 
-#include <cstdio> // remove
 #include <boost/config.hpp>
+#include <cstdio> // remove
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;

Modified: branches/proto/v4/libs/serialization/test/test_unregistered.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_unregistered.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_unregistered.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,6 +10,7 @@
 
 #include <fstream>
 
+#include <cstddef> // NULL
 #include <cstdio> // remove
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)

Modified: branches/proto/v4/libs/serialization/test/test_valarray.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_valarray.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_valarray.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_variant.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_variant.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_variant.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,8 +15,9 @@
 // thanks to Robert Ramey and Peter Dimov.
 //
 
-#include <fstream>
+#include <cstddef> // NULL
 #include <cstdio> // remove
+#include <fstream>
 #include <cmath> // for fabs()
 #include <boost/config.hpp>
 #if defined(BOOST_NO_STDC_NAMESPACE)

Modified: branches/proto/v4/libs/serialization/test/test_vector.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_vector.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_vector.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,6 +8,7 @@
 
 // should pass compilation and execution
 
+#include <cstddef> // NULL
 #include <fstream>
 
 #include <cstdio> // remove

Modified: branches/proto/v4/libs/serialization/test/test_void_cast.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_void_cast.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_void_cast.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,6 +7,7 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 // <gennadiy.rozental_at_[hidden]>
 
+#include <cstddef> // NULL
 #include "test_tools.hpp"
 #include <boost/serialization/extended_type_info_typeid.hpp>
 #include <boost/serialization/void_cast.hpp>

Modified: branches/proto/v4/libs/serialization/vc7ide/readme.txt
==============================================================================
--- branches/proto/v4/libs/serialization/vc7ide/readme.txt (original)
+++ branches/proto/v4/libs/serialization/vc7ide/readme.txt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,4 +21,9 @@
 After each test is built, it is run and the ouput is shown in the IDE Output window.
 
 Note that the fact that all configurations are not valid for all tests precludes building
-the all the tests from withing the IDE in one batch.
\ No newline at end of file
+the all the tests from withing the IDE in one batch.
+
+(C) Copyright 2008 Robert Ramey - http://www.rrsd.com .
+Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/proto/v4/libs/smart_ptr/test/sp_atomic_mt2_test.cpp
==============================================================================
--- branches/proto/v4/libs/smart_ptr/test/sp_atomic_mt2_test.cpp (original)
+++ branches/proto/v4/libs/smart_ptr/test/sp_atomic_mt2_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -83,7 +83,7 @@
 
     case pt_atomics:
         {
- boost::shared_ptr<X> p2 = ps.atomic_load();
+ boost::shared_ptr<X> p2 = boost::atomic_load( &ps );
             return p2->get();
         }
     }
@@ -109,14 +109,14 @@
 
     case pt_atomics:
         {
- boost::shared_ptr<X> p1 = ps.atomic_load();
+ boost::shared_ptr<X> p1 = boost::atomic_load( &ps );
 
             for( ;; )
             {
                 boost::shared_ptr<X> p2( new X( *p1 ) );
                 p2->set();
 
- if( ps.atomic_compare_swap( p1, p2 ) ) break;
+ if( boost::atomic_compare_exchange( &ps, &p1, p2 ) ) break;
             }
         }
         break;

Modified: branches/proto/v4/libs/smart_ptr/test/sp_atomic_mt_test.cpp
==============================================================================
--- branches/proto/v4/libs/smart_ptr/test/sp_atomic_mt_test.cpp (original)
+++ branches/proto/v4/libs/smart_ptr/test/sp_atomic_mt_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -93,7 +93,7 @@
 
 #else
 
- boost::shared_ptr<X> p2 = ps.atomic_load();
+ boost::shared_ptr<X> p2 = boost::atomic_load( &ps );
 
         s += p2->get();
 
@@ -134,7 +134,7 @@
         BOOST_TEST( p2->v_ == i );
         p2->set();
 
- ps.atomic_store( p2 );
+ boost::atomic_store( &ps, p2 );
 
 #endif
     }

Modified: branches/proto/v4/libs/smart_ptr/test/sp_atomic_test.cpp
==============================================================================
--- branches/proto/v4/libs/smart_ptr/test/sp_atomic_test.cpp (original)
+++ branches/proto/v4/libs/smart_ptr/test/sp_atomic_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -25,31 +25,31 @@
     boost::shared_ptr<X> px( new X );
 
     {
- boost::shared_ptr<X> p2 = px.atomic_load();
+ boost::shared_ptr<X> p2 = boost::atomic_load( &px );
         BOOST_TEST_SP_EQ( p2, px );
 
         boost::shared_ptr<X> px2( new X );
- px.atomic_store( px2 );
+ boost::atomic_store( &px, px2 );
         BOOST_TEST_SP_EQ( px, px2 );
 
- p2 = px.atomic_load();
+ p2 = boost::atomic_load( &px );
         BOOST_TEST_SP_EQ( p2, px );
         BOOST_TEST_SP_EQ( p2, px2 );
 
         boost::shared_ptr<X> px3( new X );
- boost::shared_ptr<X> p3 = px.atomic_swap( px3 );
+ boost::shared_ptr<X> p3 = boost::atomic_exchange( &px, px3 );
         BOOST_TEST_SP_EQ( p3, px2 );
         BOOST_TEST_SP_EQ( px, px3 );
 
         boost::shared_ptr<X> px4( new X );
         boost::shared_ptr<X> cmp;
 
- bool r = px.atomic_compare_swap( cmp, px4 );
+ bool r = boost::atomic_compare_exchange( &px, &cmp, px4 );
         BOOST_TEST( !r );
         BOOST_TEST_SP_EQ( px, px3 );
         BOOST_TEST_SP_EQ( cmp, px3 );
 
- r = px.atomic_compare_swap( cmp, px4 );
+ r = boost::atomic_compare_exchange( &px, &cmp, px4 );
         BOOST_TEST( r );
         BOOST_TEST_SP_EQ( px, px4 );
     }
@@ -59,26 +59,26 @@
     px.reset();
 
     {
- boost::shared_ptr<X> p2 = px.atomic_load( boost::memory_order_acquire );
+ boost::shared_ptr<X> p2 = boost::atomic_load_explicit( &px, boost::memory_order_acquire );
         BOOST_TEST_SP_EQ( p2, px );
 
         boost::shared_ptr<X> px2( new X );
- px.atomic_store( px2, boost::memory_order_release );
+ boost::atomic_store_explicit( &px, px2, boost::memory_order_release );
         BOOST_TEST_SP_EQ( px, px2 );
 
- boost::shared_ptr<X> p3 = px.atomic_swap( boost::shared_ptr<X>(), boost::memory_order_acq_rel );
+ boost::shared_ptr<X> p3 = boost::atomic_exchange_explicit( &px, boost::shared_ptr<X>(), boost::memory_order_acq_rel );
         BOOST_TEST_SP_EQ( p3, px2 );
         BOOST_TEST_SP_EQ( px, p2 );
 
         boost::shared_ptr<X> px4( new X );
         boost::shared_ptr<X> cmp( px2 );
 
- bool r = px.atomic_compare_swap( cmp, px4, boost::memory_order_acquire, boost::memory_order_relaxed );
+ bool r = boost::atomic_compare_exchange_explicit( &px, &cmp, px4, boost::memory_order_acquire, boost::memory_order_relaxed );
         BOOST_TEST( !r );
         BOOST_TEST_SP_EQ( px, p2 );
         BOOST_TEST_SP_EQ( cmp, p2 );
 
- r = px.atomic_compare_swap( cmp, px4, boost::memory_order_release, boost::memory_order_acquire );
+ r = boost::atomic_compare_exchange_explicit( &px, &cmp, px4, boost::memory_order_release, boost::memory_order_acquire );
         BOOST_TEST( r );
         BOOST_TEST_SP_EQ( px, px4 );
     }

Modified: branches/proto/v4/libs/smart_ptr/test/spinlock_pool_test.cpp
==============================================================================
--- branches/proto/v4/libs/smart_ptr/test/spinlock_pool_test.cpp (original)
+++ branches/proto/v4/libs/smart_ptr/test/spinlock_pool_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,7 +17,7 @@
     int x = 0;
 
     {
- boost::detail::spinlock_pool<0>::scoped_lock lock( &x );
+ boost::detail::spinlock_pool<0>::scoped_lock lock( &x );
         ++x;
     }
 

Modified: branches/proto/v4/libs/spirit/classic/doc/closures.html
==============================================================================
--- branches/proto/v4/libs/spirit/classic/doc/closures.html (original)
+++ branches/proto/v4/libs/spirit/classic/doc/closures.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -61,7 +61,7 @@
     <td class="note_box"><img src="theme/alert.gif" width="16" height="16"> <strong>Closures</strong>
       <strong>and Phoenix</strong><br> <br>
       Spirit v1.8 closure support requires Phoenix.
- In the future, Spirit will fully support BLL.
+ In the future, Spirit will fully support BLL.
       Currently, work is underway to merge the features of both libraries.</td>
   </tr>
 </table>

Modified: branches/proto/v4/libs/spirit/classic/example/Jamfile
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/Jamfile (original)
+++ branches/proto/v4/libs/spirit/classic/example/Jamfile 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -122,6 +122,7 @@
 
 exe regular_expression
     : fundamental/regular_expression.cpp
+ /boost//regex
     :
     ;
 
@@ -219,6 +220,14 @@
 
 exe regex_convert
     : intermediate/regex_convert.cpp
+ /boost//regex
+ :
+ ;
+
+exe simple_xml
+ : intermediate/simple_xml/driver.cpp
+ intermediate/simple_xml/tag.cpp
+ intermediate/simple_xml/tag.cpp
     :
     ;
 

Modified: branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/distinct_parser.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/distinct_parser.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/distinct_parser.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,7 @@
 
 using namespace std;
 using namespace boost;
-using namespace spirit;
+using namespace BOOST_SPIRIT_CLASSIC_NS;
 
 // keyword_p for C++
 // (for basic usage instead of std_p)

Modified: branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/distinct_parser_dynamic.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/distinct_parser_dynamic.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/fundamental/distinct/distinct_parser_dynamic.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,7 @@
 
 using namespace std;
 using namespace boost;
-using namespace spirit;
+using namespace BOOST_SPIRIT_CLASSIC_NS;
 
 struct my_grammar: public grammar<my_grammar>
 {

Modified: branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/primitive_calc.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/primitive_calc.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/primitive_calc.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,8 +15,8 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 #include <boost/spirit/include/classic_core.hpp>
-#include <boost/spirit/include/classic_primitives.hpp>
-#include <boost/spirit/include/classic_operators.hpp>
+#include <boost/spirit/include/phoenix1_primitives.hpp>
+#include <boost/spirit/include/phoenix1_operators.hpp>
 #include <iostream>
 #include <string>
 

Modified: branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/rpn_calc.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/rpn_calc.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/fundamental/more_calculators/rpn_calc.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,7 +18,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 #include <boost/spirit/include/classic_core.hpp>
 #include <boost/spirit/include/classic_attribute.hpp>
-#include <boost/spirit/include/classic_functions.hpp>
+#include <boost/spirit/include/phoenix1_functions.hpp>
 #include <iostream>
 #include <string>
 

Modified: branches/proto/v4/libs/spirit/classic/example/fundamental/no_actions.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/fundamental/no_actions.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/fundamental/no_actions.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -22,7 +22,7 @@
 
 using namespace std;
 using namespace boost;
-using namespace spirit;
+using namespace BOOST_SPIRIT_CLASSIC_NS;
 
 //-----------------------------------------------------------------------------
 
@@ -39,7 +39,7 @@
 
     parse_info<> info = parse(
         "1",
-
+
         no_actions_d
         [
             r

Modified: branches/proto/v4/libs/spirit/classic/example/fundamental/parser_context.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/fundamental/parser_context.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/fundamental/parser_context.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,8 +19,8 @@
 // In this example int_rule is declared as rule with int match attribute's
 // type, so in int_rule variable we can hold any parser, which returns int
 // value. For example int_p or bin_p. And the most important is that we can
-// use returned value in the semantic action binded to the int_rule.
-//
+// use returned value in the semantic action binded to the int_rule.
+//
 //-----------------------------------------------------------------------------
 #include <iostream>
 #include <boost/cstdlib.hpp>
@@ -30,7 +30,7 @@
 using namespace std;
 using namespace boost;
 using namespace phoenix;
-using namespace spirit;
+using namespace BOOST_SPIRIT_CLASSIC_NS;
 
 //-----------------------------------------------------------------------------
 
@@ -41,7 +41,7 @@
     parse(
         "123",
         // Using a returned value in the semantic action
- int_rule[cout << arg1 << endl]
+ int_rule[cout << arg1 << endl]
     );
 
     return exit_success;

Modified: branches/proto/v4/libs/spirit/classic/example/fundamental/stuff_vector.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/fundamental/stuff_vector.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/fundamental/stuff_vector.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,9 +16,9 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 #include <boost/spirit/include/classic_core.hpp>
-#include <boost/spirit/include/classic_primitives.hpp>
 #include <boost/spirit/include/classic_operators.hpp>
-#include <boost/spirit/include/classic_functions.hpp>
+#include <boost/spirit/include/phoenix1_functions.hpp>
+#include <boost/spirit/include/phoenix1_primitives.hpp>
 #include <iostream>
 #include <string>
 

Modified: branches/proto/v4/libs/spirit/classic/example/fundamental/stuff_vector2.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/fundamental/stuff_vector2.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/fundamental/stuff_vector2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,10 +16,10 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 #include <boost/spirit/include/classic_core.hpp>
-#include <boost/spirit/include/classic_primitives.hpp>
 #include <boost/spirit/include/classic_operators.hpp>
-#include <boost/spirit/include/classic_functions.hpp>
-#include <boost/spirit/include/classic_casts.hpp>
+#include <boost/spirit/include/phoenix1_functions.hpp>
+#include <boost/spirit/include/phoenix1_primitives.hpp>
+#include <boost/spirit/include/phoenix1_casts.hpp>
 #include <iostream>
 #include <string>
 

Modified: branches/proto/v4/libs/spirit/classic/example/fundamental/sum.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/fundamental/sum.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/fundamental/sum.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,8 +15,8 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 #include <boost/spirit/include/classic_core.hpp>
-#include <boost/spirit/include/classic_primitives.hpp>
-#include <boost/spirit/include/classic_operators.hpp>
+#include <boost/spirit/include/phoenix1_primitives.hpp>
+#include <boost/spirit/include/phoenix1_operators.hpp>
 #include <iostream>
 #include <string>
 

Modified: branches/proto/v4/libs/spirit/classic/example/intermediate/ipv4_opt.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/intermediate/ipv4_opt.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/intermediate/ipv4_opt.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,7 +10,7 @@
 #include <boost/spirit/include/classic_push_back_actor.hpp>
 #include <boost/spirit/include/classic_if.hpp>
 #include <boost/spirit/include/classic_for.hpp>
-#include <boost/spirit/include/classic_phoenix.hpp>
+#include <boost/spirit/include/phoenix1.hpp>
 #include <iostream>
 #include <string>
 #include <vector>

Modified: branches/proto/v4/libs/spirit/classic/example/intermediate/lazy_parser.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/intermediate/lazy_parser.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/intermediate/lazy_parser.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -39,7 +39,7 @@
 #include <boost/spirit/include/classic_dynamic.hpp>
 
 using namespace boost;
-using namespace spirit;
+using namespace BOOST_SPIRIT_CLASSIC_NS;
 using namespace phoenix;
 
 //-----------------------------------------------------------------------------
@@ -56,14 +56,14 @@
         typedef stored_rule<ScannerT, parser_context<int> > number_rule_t;
 
         struct block_closure;
- typedef spirit::closure<
+ typedef boost::spirit::classic::closure<
             block_closure,
             int,
             typename number_rule_t::alias_t>
         closure_base_t;
 
         struct block_closure : closure_base_t
- {
+ {
             typename closure_base_t::member1 sum;
             typename closure_base_t::member2 int_rule;
         };

Modified: branches/proto/v4/libs/spirit/classic/example/intermediate/parameters.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/intermediate/parameters.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/intermediate/parameters.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -25,12 +25,12 @@
 
 #include <boost/spirit/include/classic_core.hpp>
 #include <boost/spirit/include/classic_symbols.hpp>
-
-#include <boost/spirit/include/classic_phx1_tuples.hpp>
-#include <boost/spirit/include/classic_phx1_tuple_helpers.hpp>
-#include <boost/spirit/include/classic_primitives.hpp>
 #include <boost/spirit/include/classic_closure.hpp>
 
+#include <boost/spirit/include/phoenix1_tuples.hpp>
+#include <boost/spirit/include/phoenix1_tuple_helpers.hpp>
+#include <boost/spirit/include/phoenix1_primitives.hpp>
+
 ///////////////////////////////////////////////////////////////////////////////
 // used namespaces
 using namespace BOOST_SPIRIT_CLASSIC_NS;

Modified: branches/proto/v4/libs/spirit/classic/example/techniques/epsilon.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/techniques/epsilon.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/techniques/epsilon.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,7 +32,7 @@
 
 using namespace std;
 using namespace boost;
-using namespace spirit;
+using namespace BOOST_SPIRIT_CLASSIC_NS;
 using namespace phoenix;
 
 //-----------------------------------------------------------------------------
@@ -51,7 +51,7 @@
 
     parse_info<> info = parse(
         "1",
-
+
         // r rule is used twice but the semantic action is invoked only once
         epsilon_p(r) >> r,
 

Modified: branches/proto/v4/libs/spirit/classic/example/techniques/no_rules/no_rule3.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/example/techniques/no_rules/no_rule3.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/example/techniques/no_rules/no_rule3.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -49,7 +49,7 @@
 // Client code
 //
 ///////////////////////////////////////////////////////////////////////////////
-struct skip_grammar : sub_grammar<skip_grammar>
+struct skip_grammar : boost::spirit::sub_grammar<skip_grammar>
 {
     typedef
        alternative<alternative<space_parser, sequence<sequence<

Modified: branches/proto/v4/libs/spirit/classic/test/grammar_def_test.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/test/grammar_def_test.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/test/grammar_def_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2005 João Abecasis
+// Copyright (c) 2005 Joao Abecasis
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/spirit/classic/test/mix_and_match_trees.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/test/mix_and_match_trees.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/test/mix_and_match_trees.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2006 João Abecasis
+// Copyright (c) 2006 Joao Abecasis
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/spirit/classic/test/negated_eps_p_test.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/test/negated_eps_p_test.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/test/negated_eps_p_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,5 @@
 /*=============================================================================
- Copyright (c) 2004 João Abecasis
+ Copyright (c) 2004 Joao Abecasis
     Copyright (c) 2004 Joel de Guzman
     http://spirit.sourceforge.net/
 

Modified: branches/proto/v4/libs/spirit/classic/test/symbols_add_null.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/classic/test/symbols_add_null.cpp (original)
+++ branches/proto/v4/libs/spirit/classic/test/symbols_add_null.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,14 +7,19 @@
     http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
 
+#include <stdexcept>
+
 #define BOOST_SPIRIT_ASSERT_EXCEPTION ::spirit_exception
 
-struct spirit_exception
+struct spirit_exception : std::exception
 {
     spirit_exception(char const * msg)
         : message(msg)
     {
     }
+ ~spirit_exception() throw() {}
+
+ char const* what() const throw() { return message; }
 
     char const * message;
 };
@@ -51,7 +56,7 @@
         symbols_.add(begin, end, (void*) boost::addressof(symbols_));
         BOOST_TEST(0);
     }
- catch (spirit_exception &e)
+ catch (spirit_exception &/*e*/)
     {
     }
 
@@ -61,7 +66,7 @@
         symbols_.add(begin2, end2, (void*) boost::addressof(symbols_));
         BOOST_TEST(0);
     }
- catch (spirit_exception &e)
+ catch (spirit_exception &/*e*/)
     {
     }
     return boost::report_errors();

Modified: branches/proto/v4/libs/spirit/doc/Jamfile
==============================================================================
--- branches/proto/v4/libs/spirit/doc/Jamfile (original)
+++ branches/proto/v4/libs/spirit/doc/Jamfile 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,9 +19,10 @@
         <xsl:param>boost.root=../../../..
         <xsl:param>boost.libraries=../../../libraries.htm
         <xsl:param>html.stylesheet=../../../../doc/html/boostbook.css
- <xsl:param>chunk.section.depth=5
- <xsl:param>chunk.first.sections=1
- <xsl:param>toc.section.depth=4
- <xsl:param>toc.max.depth=4
+ <xsl:param>chunk.section.depth=4
+ #<xsl:param>chunk.first.sections=1
+ <xsl:param>toc.section.depth=3
+ <xsl:param>toc.max.depth=3
         <xsl:param>generate.section.toc.level=4
+ <xsl:param>admon.graphics.path=images/
     ;

Deleted: branches/proto/v4/libs/spirit/doc/_concepts_template_.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/_concepts_template_.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,46 +0,0 @@
-[/==============================================================================
- Copyright (C) 2001-2008 Joel de Guzman
- Copyright (C) 2001-2008 Hartmut Kaiser
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-===============================================================================/]
-
-[section XXX]
-
-[heading Description]
-
-Description of XXX concept
-
-[variablelist Notation
- [[`xxx`] [An XXX]]
-]
-
-[heading Valid Expressions]
-
-(For any Forward Sequence the following expressions must be valid:)
-
-In addition to the requirements defined in _XXX-Basic_concept_, for any
-XXX the following must be met:
-
-[table
- [[Expression] [Semantics] [Return type] [Complexity]]
- [[`xxx`] [Semantics of `xxx`] [XXX] [Constant]]
-]
-
-[heading Type Requirements]
-
-[table
- [[Expression] [Requirements]]
- [[`xxx`] [Requirements for `xxx`]]
-]
-
-[heading Invariants]
-
-For any XXX xxx the following invariants always hold:
-
-[heading Models]
-
-Links to models of XXX concept
-
-[endsect]

Deleted: branches/proto/v4/libs/spirit/doc/_reference_template_.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/_reference_template_.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,56 +0,0 @@
-[/==============================================================================
- Copyright (C) 2001-2008 Joel de Guzman
- Copyright (C) 2001-2008 Hartmut Kaiser
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-===============================================================================/]
-
-[section XXX]
-
-[heading Description]
-
-Description of XXX
-
-[heading Header]
-
- #include <boost/spirit/xxx.hpp>
-
-[heading Synopsis]
-
- template <typename T>
- struct XXX;
-
-[heading Template parameters]
-
-[table
- [[Parameter] [Description] [Default]]
- [[`T`] [What is T] []]
-]
-
-[heading Model of]
-
-Link to concept
-
-[heading Objects]
-
-Objects provided by the library
-
-[variablelist Notation
- [[`xxx`] [An XXX]]
-]
-
-Semantics of an expression is defined only where it differs from, or is not
-defined in _concept-of_XXX_.
-
-[table
- [[Expression] [Semantics] [Return type] [Complexity]]
- [[`xxx`] [Semantics of `xxx`] [XXX] [Constant]]
-]
-
-[heading Example]
-
-Real example code. Use Quickbook import mechanism to link to actual
-working code snippets here.
-
-[endsect]

Deleted: branches/proto/v4/libs/spirit/doc/html/images/FlowOfControl.png
==============================================================================
Binary file. No diff available.

Deleted: branches/proto/v4/libs/spirit/doc/html/images/Thumbs.db
==============================================================================
Binary file. No diff available.

Deleted: branches/proto/v4/libs/spirit/doc/html/images/TokenStructure.png
==============================================================================
Binary file. No diff available.

Modified: branches/proto/v4/libs/spirit/doc/introduction.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/introduction.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/introduction.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,4 +7,191 @@
 ===============================================================================/]
 
 [section Introduction]
+
+Boost Spirit is an object oriented, recursive-descent parser and output generation
+library for C++. It allows to write grammars and format descriptions using a
+format very similar to EBNF (Extended Backus Naur Form, see [4]) directly in
+C++. These inline grammar specifications can mix freely with other C++ code and,
+thanks to the generative power of C++ templates, are immediately executable.
+In retrospect, conventional compiler-compilers or parser-generators have to
+perform an additional translation step from the source EBNF code to C or C++
+code.
+
+The syntax and semantics of the libraries API directly form domain specific
+embedded languages (DSEL). In fact, Spirit exposes 3 different DSEL's to the
+user:
+
+* one for creating parser grammars,
+* one for the specification of the required tokens to be used for parsing,
+* and one for the description of the required output formats.
+
+Since the target input grammars and output formats are written entirely in C++
+we do not need any separate tools to compile, preprocess, or integrate those
+into the build process. __spirit__ allows seamless integration of the parsing
+and output generation process with other C++ code. Often this allows for
+simpler and more efficient code.
+
+Both, the created parsers and generators, are fully attributed which allows to
+easily build and handle hierarchical data structures in memory. These data
+structures resemble the structure of the input data and can directly be used to
+generate arbitrarily formatted output.
+
+The [link spirit.spiritstructure figure] below depicts the overall structure
+of the Boost Spirit library. The library consists out of 4 major parts:
+
+* __classic__: This is the almost unchanged code base taken from the
+ former Boost Spirit V1.8 distribution. It has been moved into the namespace
+ boost::spirit::classic. A special compatibility layer has been added to
+ ensure complete compatibility with existing code using Spirit V1.8.
+* __qi__: This is the parser library allowing to build recursive
+ descent parsers. The exposed domain specific language can be used to describe
+ the grammars to implement, and the rules for storing the parsed information.
+* __lex__: This is the library usable to create tokinizers (lexers). The domain
+ specific language exposed by __lex__
+* __karma__: This is the generator library allowing to create code for
+ recursive descent, data type driven output formatting. The exposed domain
+ specific language is almost equivalent to the parser description language
+ used in __qi__, except that it is used to describe the required output
+ format to generate from a given data structure.
+
+[fig ./images/spiritstructure.png..The overall structure of the Boost Spirit library..spirit.spiritstructure]
+
+The separate sublibraries __qi__, __karma__ and __lex__ are well integrated
+with any of the other parts. Because of their similar structure and identical
+underlying technology these are usable either separately or together at the
+same time. For instance is it possible to directly feed the hierarchical data
+structures generated by __qi__ into output generators created using __karma__;
+or to use the token sequence generated by __lex__ as the input for a parser
+generated by __qi__.
+
+
+The [link spirit.spiritkarmaflow figure] below shows the typical data flow of
+some input being converted to some internal representation. After some
+(optional) transformation this data is converted back into some different,
+external representation. The picture highlights Spirit's the place in this data
+transformation flow.
+
+[fig ./images/spiritkarmaflow.png..The place of __qi__ and __karma__ in a data transformation flow of a typical application..spirit.spiritkarmaflow]
+
+[heading A quick overview about Parsing with __qi__]
+
+__qi__ is Spirit's sublibrary dealing with generating parsers based on a given
+target grammar (essentially a format description of the input data to read).
+
+A simple EBNF grammar snippet:
+
+ group ::= '(' expression ')'
+ factor ::= integer | group
+ term ::= factor (('*' factor) | ('/' factor))*
+ expression ::= term (('+' term) | ('-' term))*
+
+is approximated using facilities of Spirit's /Qi/ sublibrary as seen in this
+code snippet:
+
+ group = '(' >> expression >> ')';
+ factor = integer | group;
+ term = factor >> *(('*' >> factor) | ('/' >> factor));
+ expression = term >> *(('+' >> term) | ('-' >> term));
+
+Through the magic of expression templates, this is perfectly valid and
+executable C++ code. The production rule `expression` is in fact an object that
+has a member function parse that does the work given a source code written in
+the grammar that we have just declared. Yes, it's a calculator. We shall
+simplify for now by skipping the type declarations and the definition of the
+rule integer invoked by factor. Now, the production rule `expression` in our
+grammar specification, traditionally called the start symbol, can recognize
+inputs such as:
+
+ 12345
+ -12345
+ +12345
+ 1 + 2
+ 1 * 2
+ 1/2 + 3/4
+ 1 + 2 + 3 + 4
+ 1 * 2 * 3 * 4
+ (1 + 2) * (3 + 4)
+ (-1 + 2) * (3 + -4)
+ 1 + ((6 * 200) - 20) / 6
+ (1 + (2 + (3 + (4 + 5))))
+
+Certainly we have done some modifications to the original EBNF syntax. This is
+done to conform to C++ syntax rules. Most notably we see the abundance of
+shift >> operators. Since there are no 'empty' operators in C++, it is simply
+not possible to write something like:
+
+ a b
+
+as seen in math syntax, for example, to mean multiplication or, in our case,
+as seen in EBNF syntax to mean sequencing (b should follow a). Spirit
+uses the shift `>>` operator instead for this purpose. We take the `>>` operator,
+with arrows pointing to the right, to mean "is followed by". Thus we write:
+
+ a >> b
+
+The alternative operator `|` and the parentheses `()` remain as is. The
+assignment operator `=` is used in place of EBNF's `::=`. Last but not least,
+the Kleene star `*` which used to be a postfix operator in EBNF becomes a
+prefix. Instead of:
+
+ a* //... in EBNF syntax,
+
+we write:
+
+ *a //... in Spirit.
+
+since there are no postfix stars, `*`, in C/C++. Finally, we terminate each
+rule with the ubiquitous semi-colon, `;`.
+
+
+[heading A quick overview about Output Generation with __karma__]
+
+Spirit not only allows to describe the structure of the input. Starting with
+Version 2.0 it enables the specification of the output format for your data
+in a very similar way, and based on a single syntax and compatible semantics.
+
+Let's assume we need to generate a textual representation from a simple data
+structure as a `std::vector<int>`. Conventional code probably would look like:
+
+ std::vector<int> v (initialize_and_fill());
+ std::vector<int>::iterator end = v.end();
+ for (std::vector<int>::iterator it = v.begin(); it != end; ++it)
+ std::cout << *it << std::endl;
+
+which is not very flexible and quite difficult to maintain when it comes to
+changing the required output format. Spirit's sublibrary /Karma/ allows to
+specify output formats for arbitrary data structures in a very flexible way.
+following snippet is the /Karma/ format description used to create the very
+The same output as the traditional code above:
+
+ *(int_ << eol)
+
+Here are some more examples of format descriptions for different output
+representations of the same `std::vector<int>`:
+
+[table Different output formats for `std::vector<int>`
+ [ [Format] [Example] [Description] ]
+ [ [`'[' << *(int_ << ',') << ']'`] [`[1,8,10,]`] [Comma separated list of integers] ]
+ [ [`*('(' << int_ << ')' << ',')`] [`(1),(8),(10),]`] [Comma separated list of integers in parenthesis] ]
+ [ [`*hex`] [`18a`] [A list of hexadecimal numbers] ]
+ [ [`*(double_ << ',')`] [`1.0,8.0,10.0,`] [A list of floating point numbers] ]
+]
+
+The syntax is very similar to /Qi/ with the exception that we use the `<<`
+operator for output concatenation. This should be easy to understand as it
+follows the conventions used in the Standard's I/O streams.
+
+Another important feature of /karma/ is to allow to fully decouple the data
+type from the output format. You can use the same output format with different
+data types as long as these conforma conceptually. The next table gives some
+related examples.
+
+[table Different data types usable with the output format `(*int_ << eol)`
+ [ [Data type] ]
+ [ [`int i[4]`] [C style arrays] ]
+ [ [`std::vector<int>`] [Standard vector] ]
+ [ [`std::list<int>`] [Standard list] ]
+ [ [`boost::array<long, 20>`] [Boost array] ]
+]
+
 [endsect]

Modified: branches/proto/v4/libs/spirit/doc/lex.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,18 +6,18 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section __lex__]
+[section:lex __lex__]
 
 [include lex/introduction.qbk]
 
-[section __lex__ Tutorials]
+[section:tutorials __lex__ Tutorials]
 [include lex/lexer_tutorials.qbk]
 [include lex/lexer_quickstart1.qbk]
 [include lex/lexer_quickstart2.qbk]
 [include lex/lexer_quickstart3.qbk]
 [endsect]
 
-[section Abstracts]
+[section:abstracts Abstracts]
 [section Lexer Primitives]
 [include lex/lexer_primitives.qbk]
 [include lex/tokens_values.qbk]
@@ -31,11 +31,11 @@
 [include lex/lexer_states.qbk]
 [endsect]
 
-[section Quick Reference]
+[section:quick_reference Quick Reference]
 [endsect]
 
-[section Reference]
-[section Concepts]
+[section:reference Reference]
+[section:concepts Concepts]
 [include reference/lex/lexer.qbk]
 [include reference/lex/token.qbk]
 [include reference/lex/tokendef.qbk]

Modified: branches/proto/v4/libs/spirit/doc/lex/introduction.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/introduction.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/introduction.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Introduction to __lex__]
+[section:lexer_introduction Introduction to __lex__]
 
 Lexical scanning is the process of analyzing the stream of input characters and
 separating it into strings called tokens, separated by whitespace.
@@ -49,7 +49,7 @@
 * Type 3: Regular grammars
 
 The complexity of these grammars increases from regular grammars being the
-simplest to unrestricted grammars being the most complex. Similarily, the
+simplest to unrestricted grammars being the most complex. Similarly, the
 complexity of the recognizers for these grammars increases. Although, a few
 features of some programming languages (such as C++) are Type 1, fortunately
 for the most part programming languages can be described using only the Types 3
@@ -65,7 +65,7 @@
 
     letter := [a-zA-Z]
     digit := [0-9]
-
+
     identifier := letter [ letter | digit ]*
     integer := digit*
 
@@ -134,4 +134,21 @@
 generators (such as __re2c__, __ragel__, etc.). But it is very flexible and
 allows to speed up the development of your application.
 
+[heading The Library Structure of __lex__]
+
+The [link spirit.lexerflow figure] below shows a high level overview of how the
+__lex__ library might be used in an application. __lex__ allows to create
+lexical analyzers based on patterns. These patterns are regular expression
+based rules used to define the different tokens to be recognized in the
+character input sequence. The input sequence is expected to be provided to the
+lexical analyzer as an arbitrary standard forward iterator. The lexical
+analyzer itself exposes a standard forward iterator as well. The difference
+here is that the exposed iterator provides access to the token sequence instead
+of to the character sequence. The tokens in this sequence are constructed on
+the fly by analyzing the underlying character sequence and
+matching this to the patterns as defined by the application.
+
+[fig ./images/lexerflow.png..The Library structure and Common Flow of Information while using __lex__ in an application..spirit.lexerflow]
+
+
 [endsect]

Modified: branches/proto/v4/libs/spirit/doc/lex/lexer_attributes.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/lexer_attributes.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/lexer_attributes.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Lexer Attributes]
+[section:lexer_attributes Lexer Attributes]
 
 
 [endsect]

Modified: branches/proto/v4/libs/spirit/doc/lex/lexer_primitives.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/lexer_primitives.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/lexer_primitives.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,9 +6,10 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Lexer Primitives]
+[section:lexer_primitives Lexer Primitives]
 
 [/ Describe the primitive lexer constructs, such as token_def, token_set? ]
+
 [/ Describe the primitive lexer constructs usable in parsers, such as
    in_state[], set_state(), token(), etc. ]
 

Modified: branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart1.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart1.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart1.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Quickstart 1 - A word counter using __lex__]
+[section:lexer_quickstart1 Quickstart 1 - A word counter using __lex__]
 
 __lex__ is very modular, which follows the general building principle of the
 __spirit__ libraries. You never pay for features you don't use. It is nicely

Modified: branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart2.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart2.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart2.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Quickstart 2 - A better word counter using __lex__]
+[section:lexer_quickstart2 Quickstart 2 - A better word counter using __lex__]
 
 People knowing __flex__ will probably complain about the example from the
 section __sec_lex_quickstart_1__ as being overly complex and not being

Modified: branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart3.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart3.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/lexer_quickstart3.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Quickstart 3 - Counting Words Using a Parser]
+[section:lexer_quickstart3 Quickstart 3 - Counting Words Using a Parser]
 
 The whole purpose of integrating __lex__ as part of the __spirit__ library was
 to add a library allowing to merge lexical analysis with the parsing

Modified: branches/proto/v4/libs/spirit/doc/lex/lexer_semantic_actions.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/lexer_semantic_actions.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/lexer_semantic_actions.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,5 +6,5 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Lexer Semantic Actions]
+[section:lexer_semantic_actions Lexer Semantic Actions]
 [endsect]

Modified: branches/proto/v4/libs/spirit/doc/lex/lexer_states.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/lexer_states.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/lexer_states.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Lexer States]
+[section:lexer_states Lexer States]
 
 
 [heading Controlling the Lexer State from Lexer Semantic Actions]

Modified: branches/proto/v4/libs/spirit/doc/lex/lexer_static_model.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/lexer_static_model.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/lexer_static_model.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section The /Static/ Lexer Model]
+[section:lexer_static_model The /Static/ Lexer Model]
 
 The documentation of __lex__ so far mostly was about describing the features of
 the /dynamic/ model, where the tables needed for lexical analysis are generated

Modified: branches/proto/v4/libs/spirit/doc/lex/lexer_tutorials.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/lexer_tutorials.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/lexer_tutorials.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section __lex__ Tutorials Overview]
+[section:lexer_tutorials __lex__ Tutorials Overview]
 
 The __lex__ library implements several components on top of possibly different
 lexer generator libraries. It exposes a pair of iterators, which, when

Modified: branches/proto/v4/libs/spirit/doc/lex/parsing_using_a_lexer.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/parsing_using_a_lexer.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/parsing_using_a_lexer.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Parsing using a Lexer]
+[section:lexer_parsing Parsing using a Lexer]
 
 [/ write about integration of lexer component with __qi__]
 

Modified: branches/proto/v4/libs/spirit/doc/lex/token_definition.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/token_definition.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/token_definition.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,6 +6,6 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Ways to define Tokens]
+[section:lexer_token_definition Ways to define Tokens]
 
 [endsect]

Modified: branches/proto/v4/libs/spirit/doc/lex/tokenizing.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/tokenizing.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/tokenizing.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Tokenizing Input Data]
+[section:lexer_tokenizing Tokenizing Input Data]
 
 [heading The tokenize() function]
 

Modified: branches/proto/v4/libs/spirit/doc/lex/tokens_values.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/lex/tokens_values.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/lex/tokens_values.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section About Tokens and Token Values]
+[section:lexer_token_values About Tokens and Token Values]
 
 As already discussed, lexical scanning is the process of analyzing the stream
 of input characters and separating it into strings called tokens, most of the

Modified: branches/proto/v4/libs/spirit/doc/qi_and_karma.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/qi_and_karma.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/qi_and_karma.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,20 @@
 
 [section Qi and Karma]
 
-[include qi_and_karma/tutorials.qbk]
+[section Tutorials]
+[include qi_and_karma/tutorial_intro.qbk]
+[include qi_and_karma/warming_up.qbk]
+[include qi_and_karma/actions.qbk]
+[include qi_and_karma/complex.qbk]
+[include qi_and_karma/sum_tutorial.qbk]
+[include qi_and_karma/num_list2.qbk]
+[include qi_and_karma/num_list3.qbk]
+[include qi_and_karma/num_list4.qbk]
+[include qi_and_karma/roman.qbk]
+[include qi_and_karma/employee.qbk]
+[include qi_and_karma/mini_xml.qbk]
+[include qi_and_karma/error_handling.qbk]
+[endsect]
 
 [section Abstracts]
 [include qi_and_karma/peg.qbk]

Modified: branches/proto/v4/libs/spirit/doc/qi_and_karma/error_handling.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/qi_and_karma/error_handling.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/qi_and_karma/error_handling.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,5 +6,116 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ===============================================================================/]
 
-[section Error Handling]
+[section Mini XML - Error Handling]
+
+A parser will not be complete without error handling. Spirit2 provides some
+facilities to make it easy to adapt a grammar for error handling. We'll wrap up
+the Qi tutorial with another version of the mini xml parser, this time, with
+error handling.
+
+[@../../example/qi/mini_xml1.cpp] and here: [@../../example/qi/mini_xml2.cpp]
+
+[import ../../example/qi/mini_xml3.cpp]
+
+Here's the grammar:
+
+[tutorial_xml3_grammar]
+
+What's new?
+
+[heading Readable Names]
+
+First, when we call the base class, we give the grammar a name:
+
+ : mini_xml_grammar::base_type(xml, "xml")
+
+Then, we name all our rules:
+
+ xml.name("xml");
+ node.name("node");
+ text.name("text");
+ start_tag.name("start_tag");
+ end_tag.name("end_tag");
+
+[heading On Error]
+
+`on_error` declares our error handler:
+
+ on_error<Action>(rule, handler)
+
+This will specify what we will do when we get an error. We will print out an
+error message using phoenix:
+
+ on_error<fail>
+ (
+ xml
+ , std::cout
+ << val("Error! Expecting ")
+ << _4 // what failed?
+ << val(" here: \"")
+ << construct<std::string>(_3, _2) // iterators to error-pos, end
+ << val("\"")
+ << std::endl
+ );
+
+we choose to `fail` in our example for the `Action`: Quit and fail. Return a
+no_match (false). It can be one of:
+
+[table
+ [[`Action`] [Description]]
+ [[fail] [Quit and fail. Return a no_match.]]
+ [[retry] [Attempt error recovery, possibly moving the iterator position.]]
+ [[accept] [Force success, moving the iterator position appropriately.]]
+ [[rethrow] [Rethrows the error.]]
+]
+
+
+`rule` is the rule we attach the handler to. In our case, we are attaching to the
+`xml` rule.
+
+`handler` is the actual error handling function. It expects 4 arguments:
+
+[table
+ [[Arg] [Description]]
+ [[first] [The position of the iterator when the rule with the handler was entered.]]
+ [[last] [The end of input.]]
+ [[error-pos] [The actual position of the iterator where the error occurred.]]
+ [[what] [What failed: a string decribing the failure.]]
+]
+
+[heading Expectation Points]
+
+You might not have noticed it, but some of our expressions changed from using
+the `>>` to `>`. Look, for example:
+
+ end_tag =
+ "</"
+ > lit(_r1)
+ > '>'
+ ;
+
+What is it? It's the /expectation/ operator. You will have some "deterministic
+points" in the grammar. Those are the places where backtracking *cannot* occur.
+For our example above, when you get a `"</"`, you definitely must see a valid
+end-tag label next. It should be the one you got from the start-tag. After that,
+you definitely must have a `'>'` next. Otherwise, there is no point in
+proceeding forward and trying other branches, regardless where they are. The
+input is definitely erroneous. When this happens, an expectation_failure
+exception is thrown. Somewhere outward, the error handler will catch the
+exception.
+
+Try building the parser: [@../../example/qi/mini_xml2.cpp]. You can find some
+examples in: [@../../example/qi/mini_xml_samples] for testing purposes.
+"4.toyxml" has an error in it:
+
+ <foo><bar></foo></bar>
+
+Running the example with this gives you:
+
+ Error! Expecting "bar" here: "foo></bar>"
+ Error! Expecting end_tag here: "<bar></foo></bar>"
+ -------------------------
+ Parsing failed
+ -------------------------
+
 [endsect]

Deleted: branches/proto/v4/libs/spirit/doc/qi_and_karma/tutorials.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/qi_and_karma/tutorials.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,10 +0,0 @@
-[/==============================================================================
- Copyright (C) 2001-2008 Joel de Guzman
- Copyright (C) 2001-2008 Hartmut Kaiser
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-===============================================================================/]
-
-[section Tutorials]
-[endsect]

Modified: branches/proto/v4/libs/spirit/doc/spirit2.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/spirit2.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/spirit2.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,8 +24,9 @@
 [/ Some links ]
 
 [def __spirit__ [@http://spirit.sourceforge.net Spirit]]
-[def __phoenix__ [@http://boost.org/libs/spirit/phoenix/index.html Phoenix]]
-[def __phoenix2__ [@http://spirit.sourceforge.net/dl_more/phoenix_v2/libs/spirit/phoenix/doc/html/index.html Phoenix2]]
+[def __spirit_list__ [@http://www.nabble.com/The-Spirit-Parser-Library-f3430.html Spirit General List]]
+[def __phoenix__ [@../../phoenix/doc/html/index.html Phoenix]]
+[def __phoenix2__ [@../../phoenix/doc/html/index.html Phoenix2]]
 [def __fusion__ [@http://spirit.sourceforge.net/dl_more/fusion_v2/libs/fusion/doc/html/index.html Fusion]]
 [def __mpl__ [@http://www.boost.org/libs/mpl/index.html MPL]]
 [def __boost_tuples__ [@http://www.boost.org/libs/tuple/index.html Boost.Tuples]]
@@ -49,10 +50,13 @@
 [def __re2c__ [@http://re2c.sourceforge.net/ re2c]]
 [def __ragel__ [@http://www.cs.queensu.ca/~thurston/ragel/ Ragel]]
 
-[def __boost_variant__ [@http://www.boost.org/doc/html/variant.html `boost::variant<>`]]
+[def __boost_variant__ [@http://www.boost.org/doc/html/variant.html `boost.variant<>`]]
 [def __boost_iterator_range__ [@http://www.boost.org/libs/range/doc/utility_class.html#iter_range `boost::iterator_range<>`]]
+[def __boost_bind__ [@http://www.boost.org/libs/bind/index.html Boost.Bind]]
+[def __boost_lambda__ [@http://www.boost.org/libs/lambda/index.html Boost.Lambda]]
 
 
+[def __classic__ /Spirit.Classic/]
 [def __qi__ /Spirit.Qi/]
 [def __karma__ /Spirit.Karma/]
 [def __lex__ /Spirit.Lex/]
@@ -66,52 +70,52 @@
 [def __sec_qi_and_karma__ [link spirit.qi_and_karma Qi and Karma]]
 [def __sec_qi_karma_attributes__ [link spirit.qi_and_karma.abstracts.attributes Attributes]]
 
-[def __sec_lex__ [link spirit.__lex__ Lex]]
-[def __sec_lex_quickstart_1__ [link spirit.__lex__.__lex___tutorials.quickstart_1___a_word_counter_using___lex__ Lex Quickstart 1 - A word counter using __lex__]]
-[def __sec_lex_quickstart_2__ [link spirit.__lex__.__lex___tutorials.quickstart_2___a_better_word_counter_using___lex__ Lex Quickstart 2 - A better word counter using __lex__]]
-[def __sec_lex_quickstart_3__ [link spirit.__lex__.__lex___tutorials.quickstart_3___counting_words_using_a_parser Lex Quickstart 3 - Counting Words Using a Parser]]
-
-[def __sec_lex_static_model__ [link spirit.__lex__.abstracts.the__static__lexer_model The /Static/ Model]]
-[def __sec_lex_primitives__ [link spirit.__lex__.abstracts.lexer_primitives Lexer Primitives]]
-[def __sec_lex_tokenvalues__ [link spirit.__lex__.abstracts.lexer_primitives.about_tokens_and_token_values About Tokens and Token Values]]
-[def __sec_lex_attributes__ [link spirit.__lex__.abstracts.lexer_attributes Lexer Attributes]]
+[def __sec_lex__ [link spirit.lex Lex]]
+[def __sec_lex_quickstart_1__ [link spirit.lex.tutorials.lexer_quickstart1 Lex Quickstart 1 - A word counter using __lex__]]
+[def __sec_lex_quickstart_2__ [link spirit.lex.tutorials.lexer_quickstart2 Lex Quickstart 2 - A better word counter using __lex__]]
+[def __sec_lex_quickstart_3__ [link spirit.lex.tutorials.lexer_quickstart3 Lex Quickstart 3 - Counting Words Using a Parser]]
+
+[def __sec_lex_static_model__ [link spirit.lex.abstracts.lexer_static_model The /Static/ Model]]
+[def __sec_lex_primitives__ [link spirit.lex.abstracts.lexer_primitives Lexer Primitives]]
+[def __sec_lex_tokenvalues__ [link spirit.lex.abstracts.lexer_primitives.lexer_token_values About Tokens and Token Values]]
+[def __sec_lex_attributes__ [link spirit.lex.abstracts.lexer_attributes Lexer Attributes]]
 
-[def __sec_ref_lex_token__ [link spirit.__lex__.reference.concepts.token Token Reference]]
-[def __sec_ref_lex_token_def__ [link spirit.__lex__.reference.concepts.tokendef TokenDef Reference]]
+[def __sec_ref_lex_token__ [link spirit.lex.reference.concepts.token Token Reference]]
+[def __sec_ref_lex_token_def__ [link spirit.lex.reference.concepts.tokendef TokenDef Reference]]
 
 [/ References to API descriptions ]
 
 [def __api_tokenize_and_parse__ [link spirit.qi_and_karma.abstracts.parsing_and_generating.the_tokenize_and_phrase_parse___function `tokenize_and_parse()`]]
-[def __api_generate_static__ [link spirit.__lex__.abstracts.tokenizing_input_data.the_generate_static___function `generate_static()`]]
+[def __api_generate_static__ [link spirit.lex.abstracts.tokenizing_input_data.the_generate_static___function `generate_static()`]]
 
 
 [/ References to classes ]
 
-[def __class_token_def__ [link spirit.__lex__.reference.tokendef_class `token_def<>`]]
+[def __class_token_def__ [link spirit.lex.reference.tokendef_class `token_def<>`]]
 
-[def __class_lexertl_token__ [link spirit.__lex__.reference.token_class `lexertl_token<>`]]
-[def __class_lexertl_lexer__ [link spirit.__lex__.reference.lexer_class.the_lexertl_lexer_class_implementing_the_dynamic_model `lexertl_lexer<>`]]
-[def __class_lexertl_static_lexer__ [link spirit.__lex__.reference.lexer_class.the_lexertl_static_lexer_class_implementing_the_static_model `lexertl_static_lexer<>`]]
+[def __class_lexertl_token__ [link spirit.lex.reference.token_class `lexertl_token<>`]]
+[def __class_lexertl_lexer__ [link spirit.lex.reference.lexer_class.the_lexertl_lexer_class_implementing_the_dynamic_model `lexertl_lexer<>`]]
+[def __class_lexertl_static_lexer__ [link spirit.lex.reference.lexer_class.the_lexertl_static_lexer_class_implementing_the_static_model `lexertl_static_lexer<>`]]
 
 
 [/ Some images ]
 
-[def __note__ [$../../../../doc/html/images/adm_note.png]]
-[def __tip__ [$../../../../doc/html/images/adm_tip.png]]
-[def __important__ [$../../../../doc/html/images/adm_important.png]]
-[def __caution__ [$../../../../doc/html/images/adm_caution.png]]
-[def __danger__ [$../../../../doc/html/images/adm_danger.png]]
+[def __note__ [$images/note.png]]
+[def __tip__ [$images/tip.png]]
+[def __important__ [$images/important.png]]
+[def __caution__ [$images/caution.png]]
+[def __danger__ [$images/alert.png]]
 
 
 [/ some templates]
 
-[/ fig[ref title label]
- Image element with a title.
+[/ fig[ref title label]
+ Image element with a title.
 
- ref := Reference to the image file.
- title := The title to associate with this figure.
+ ref := Reference to the image file.
+ title := The title to associate with this figure.
     label := the id to use to be able to reference this picture
-]
+]
 [template fig[ref title label]'''
     <figure id="'''[label]'''">
         <title>'''[title]'''</title>
@@ -124,7 +128,7 @@
             </textobject>
         </inlinemediaobject>
     </figure>
-''']
+''']
 
 
 [/ Here we go ]

Modified: branches/proto/v4/libs/spirit/doc/what_s_new.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/doc/what_s_new.qbk (original)
+++ branches/proto/v4/libs/spirit/doc/what_s_new.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,36 +10,36 @@
 
 [heading Spirit Classic]
 
-The Spirit V1.8.x code base has been integrated with Spirit V2. It is now called
-*Spirit Classic*. Even if the directory structure has changed (the Spirit Classic
-headers are now moved to the '$BOOST_ROOT/boost/spirit/home/classic' directory),
-we created forwarding headers allowing to compile existing applications without
-any change. These forwarding headers are deprecated, though, which will result
-in corresponding warnings generated for each of the headers. The forwarding
-headers are expected to be removed in the future.
-
-The recommended way of using Spirit Classic now is to include header files from
-the directory '$BOOST_ROOT/boost/spirit/include'. All files of Spirit Classic
-in this directory have a 'classic_' prefixed to their name. For example the
-include
+The Spirit V1.8.x code base has been integrated with Spirit V2. It is now called
+__classic__. Even if the directory structure has changed (the Spirit Classic
+headers are now moved to the '''$BOOST_ROOT/boost/spirit/home/classic''' directory),
+we created forwarding headers allowing to compile existing applications without
+any change. These forwarding headers are deprecated, though, which will result
+in corresponding warnings generated for each of the headers starting with Boost
+V1.38. The forwarding headers are expected to be removed in the future.
+
+The recommended way of using Spirit Classic now is to include header files from
+the directory '''$BOOST_ROOT/boost/spirit/include'''. All files of Spirit Classic
+in this directory have a 'classic_' prefixed to their name. For example the
+include
 
     #include <boost/spirit/core/core.hpp>
 
-now should be written as:
+now should be written as:
 
     #include <boost/spirit/include/classic_core.hpp>
 
-To avoid namespace conflicts with the new Spirit V2 library we moved Spirit Classic
-into the namespace `boost::spirit::classic`. All references to the former
+To avoid namespace conflicts with the new Spirit V2 library we moved Spirit Classic
+into the namespace `boost::spirit::classic`. All references to the former
 namespace `boost::spirit` need to be adjusted as soon as the header names are
-corrected as described above. As an alternative you can define the preprocessor
-constant `BOOST_SPIRIT_USE_OLD_NAMESPACE`, which will force the Spirit Classic
-code to be in the namespace `boost::spirit` as before. This is not recommended,
+corrected as described above. As an alternative you can define the preprocessor
+constant `BOOST_SPIRIT_USE_OLD_NAMESPACE`, which will force the Spirit Classic
+code to be in the namespace `boost::spirit` as before. This is not recommended,
 though, as it may result in naming clashes.
 
-The change of the namespace will be automatically deactivated whenever the
-deprecated include files are being used. This ensures full backwards
-compatibility for existing applications.
+The change of the namespace will be automatically deactivated whenever the
+deprecated include files are being used. This ensures full backwards
+compatibility for existing applications.
 
 
 [endsect]

Modified: branches/proto/v4/libs/spirit/example/karma/actions.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/karma/actions.cpp (original)
+++ branches/proto/v4/libs/spirit/example/karma/actions.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,7 +12,7 @@
 #include <boost/bind.hpp>
 
 #include <iostream>
-#include <strstream>
+#include <sstream>
 
 // Presented are various ways to attach semantic actions
 // * Using plain function pointer

Modified: branches/proto/v4/libs/spirit/example/karma/calc2_ast_dump.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/karma/calc2_ast_dump.cpp (original)
+++ branches/proto/v4/libs/spirit/example/karma/calc2_ast_dump.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,9 +32,9 @@
 // Our calculator parser grammar
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct calculator : qi::grammar_def<Iterator, expression_ast(), space_type>
+struct calculator : qi::grammar<Iterator, expression_ast(), space_type>
 {
- calculator()
+ calculator() : calculator::base_type(expression)
     {
         expression =
             term [_val = _1]
@@ -66,9 +66,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename OuputIterator>
 struct dump_ast
- : karma::grammar_def<OuputIterator, expression_ast(), space_type>
+ : karma::grammar<OuputIterator, expression_ast(), space_type>
 {
- dump_ast()
+ dump_ast() : dump_ast::base_type(ast_node)
     {
         ast_node %=
                 int_ [_1 = _int(_val)]
@@ -111,15 +111,13 @@
     typedef std::string::const_iterator iterator_type;
     typedef calculator<iterator_type> calculator;
 
- calculator def;
- qi::grammar<calculator> calc(def, def.expression);
+ calculator calc;
 
     // Our generator grammar definitions
     typedef std::back_insert_iterator<std::string> output_iterator_type;
     typedef dump_ast<output_iterator_type> dump_ast;
-
- dump_ast dump_ast_def;
- karma::grammar<dump_ast> ast_grammar(dump_ast_def, dump_ast_def.ast_node);
+
+ dump_ast ast_grammar;
 
     std::string str;
     while (std::getline(std::cin, str))

Modified: branches/proto/v4/libs/spirit/example/karma/calc2_ast_rpn.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/karma/calc2_ast_rpn.cpp (original)
+++ branches/proto/v4/libs/spirit/example/karma/calc2_ast_rpn.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -32,9 +32,9 @@
 // Our calculator parser grammar
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct calculator : qi::grammar_def<Iterator, expression_ast(), space_type>
+struct calculator : qi::grammar<Iterator, expression_ast(), space_type>
 {
- calculator()
+ calculator() : calculator::base_type(expression)
     {
         expression =
             term [_val = _1]
@@ -67,9 +67,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename OuputIterator>
 struct ast_rpn
- : karma::grammar_def<OuputIterator, expression_ast(), space_type>
+ : karma::grammar<OuputIterator, expression_ast(), space_type>
 {
- ast_rpn()
+ ast_rpn() : ast_rpn::base_type(ast_node)
     {
         ast_node %=
                 int_ [_1 = _int(_val)]
@@ -114,15 +114,13 @@
     typedef std::string::const_iterator iterator_type;
     typedef calculator<iterator_type> calculator;
 
- calculator def;
- qi::grammar<calculator> calc(def, def.expression);
+ calculator calc;
 
     // Our generator grammar definitions
     typedef std::back_insert_iterator<std::string> output_iterator_type;
     typedef ast_rpn<output_iterator_type> ast_rpn;
     
- ast_rpn ast_rpn_def;
- karma::grammar<ast_rpn> ast_grammar(ast_rpn_def, ast_rpn_def.ast_node);
+ ast_rpn ast_grammar;
 
     std::string str;
     while (std::getline(std::cin, str))

Modified: branches/proto/v4/libs/spirit/example/karma/calc2_ast_vm.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/karma/calc2_ast_vm.cpp (original)
+++ branches/proto/v4/libs/spirit/example/karma/calc2_ast_vm.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -34,9 +34,9 @@
 // Our calculator parser grammar
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct calculator : qi::grammar_def<Iterator, expression_ast(), space_type>
+struct calculator : qi::grammar<Iterator, expression_ast(), space_type>
 {
- calculator()
+ calculator() : calculator::base_type(expression)
     {
         expression =
             term [_val = _1]
@@ -133,9 +133,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename OuputIterator, typename Delimiter>
 struct generate_byte_code
- : karma::grammar_def<OuputIterator, expression_ast(), Delimiter>
+ : karma::grammar<OuputIterator, expression_ast(), Delimiter>
 {
- generate_byte_code()
+ generate_byte_code() : generate_byte_code::base_type(ast_node)
     {
         ast_node %=
                 (dword(op_int) << dword) [_1 = _int(_val)]
@@ -172,11 +172,8 @@
     // Our generator grammar definitions
     typedef char* output_iterator_type;
     typedef generate_byte_code<output_iterator_type, Delimiter> generate_byte_code;
-
- generate_byte_code generate_byte_code_def;
- karma::grammar<generate_byte_code> gen_vm(
- generate_byte_code_def, generate_byte_code_def.ast_node);
 
+ generate_byte_code gen_vm;
     return karma::generate_delimited((*code.begin()).bytes, gen_vm, ast, d);
 }
 
@@ -195,8 +192,7 @@
     typedef std::string::const_iterator iterator_type;
     typedef calculator<iterator_type> calculator;
 
- calculator def;
- qi::grammar<calculator> calc(def, def.expression);
+ calculator calc;
 
     std::string str;
     while (std::getline(std::cin, str))

Modified: branches/proto/v4/libs/spirit/example/karma/mini_xml_karma.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/karma/mini_xml_karma.cpp (original)
+++ branches/proto/v4/libs/spirit/example/karma/mini_xml_karma.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -71,9 +71,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
 struct mini_xml_parser :
- qi::grammar_def<Iterator, mini_xml(), space_type>
+ qi::grammar<Iterator, mini_xml(), space_type>
 {
- mini_xml_parser()
+ mini_xml_parser() : mini_xml_parser::base_type(xml)
     {
         text = lexeme[+(char_ - '<') [_val += _1]];
         node = (xml | text) [_val = _1];
@@ -128,9 +128,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename OutputIterator>
 struct mini_xml_generator
- : karma::grammar_def<OutputIterator, mini_xml()>
+ : karma::grammar<OutputIterator, mini_xml()>
 {
- mini_xml_generator()
+ mini_xml_generator() : mini_xml_generator::base_type(xml)
     {
         node %=
                 lit[_1 = _string(_r0)]
@@ -180,8 +180,7 @@
         std::back_inserter(storage));
 
     typedef mini_xml_parser<std::string::const_iterator> mini_xml_parser;
- mini_xml_parser def; // Our grammar definition
- qi::grammar<mini_xml_parser> xmlin(def, def.xml); // Our grammar
+ mini_xml_parser xmlin; // Our grammar definition
     mini_xml ast; // our tree
 
     std::string::const_iterator iter = storage.begin();
@@ -197,8 +196,7 @@
         typedef std::back_insert_iterator<std::string> outiter_type;
         typedef mini_xml_generator<outiter_type> mini_xml_generator;
 
- mini_xml_generator gen; // Our grammar definition
- karma::grammar<mini_xml_generator> xmlout(gen, gen.xml); // Our grammar
+ mini_xml_generator xmlout; // Our grammar definition
 
         std::string generated;
         bool r = karma::generate(std::back_inserter(generated), xmlout, ast);

Modified: branches/proto/v4/libs/spirit/example/lex/example1.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/example1.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/example1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -61,10 +61,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
 struct example1_grammar
- : grammar_def<Iterator, in_state_skipper<token_def<> > >
+ : grammar<Iterator, in_state_skipper<token_def<> > >
 {
     template <typename TokenDef>
     example1_grammar(TokenDef const& tok)
+ : example1_grammar::base_type(start)
     {
         start = '{' >> *(tok.identifier >> -char_(',')) >> '}';
     }
@@ -97,10 +98,9 @@
     // now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process
     example1_tokens tokens; // Our token definition
- example1_grammar def (tokens); // Our grammar definition
+ example1_grammar calc(tokens); // Our grammar definition
 
     lexer<example1_tokens> lex(tokens); // Our lexer
- grammar<example1_grammar> calc(def); // Our parser
 
     std::string str (read_from_file("example1.input"));
 

Modified: branches/proto/v4/libs/spirit/example/lex/example2.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/example2.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/example2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -63,11 +63,12 @@
 // Grammar definition
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct example2_grammar : grammar_def<Iterator>
+struct example2_grammar : grammar<Iterator>
 {
     template <typename TokenDef>
     example2_grammar(TokenDef const& tok)
- : paragraphs(0), commands(0), questions(0), statements(0)
+ : example2_grammar::base_type(story),
+ paragraphs(0), commands(0), questions(0), statements(0)
     {
         story
             = +paragraph
@@ -131,10 +132,9 @@
     // now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process
     example2_tokens tokens; // Our token definition
- example2_grammar def (tokens); // Our grammar definition
+ example2_grammar calc(tokens); // Our grammar definition
 
     lexer<example2_tokens> lex(tokens); // Our lexer
- grammar<example2_grammar> calc(def, def.story); // Our grammar
 
     std::string str (read_from_file("example2.input"));
 
@@ -153,9 +153,9 @@
         std::cout << "-------------------------\n";
         std::cout << "Parsing succeeded\n";
         std::cout << "There were "
- << def.commands << " commands, "
- << def.questions << " questions, and "
- << def.statements << " statements.\n";
+ << calc.commands << " commands, "
+ << calc.questions << " questions, and "
+ << calc.statements << " statements.\n";
         std::cout << "-------------------------\n";
     }
     else

Modified: branches/proto/v4/libs/spirit/example/lex/example3.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/example3.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/example3.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -73,10 +73,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator, typename Lexer>
 struct example3_grammar
- : grammar_def<Iterator, in_state_skipper<typename Lexer::token_set> >
+ : grammar<Iterator, in_state_skipper<typename Lexer::token_set> >
 {
     template <typename TokenDef>
     example3_grammar(TokenDef const& tok)
+ : example3_grammar::base_type(start)
     {
         start
             = +(couplet | tok.ellipses)
@@ -105,17 +106,17 @@
 {
     // iterator type used to expose the underlying input stream
     typedef std::string::iterator base_iterator_type;
-
+
     // This is the token type to return from the lexer iterator
     typedef lexertl_token<base_iterator_type> token_type;
-
+
     // This is the lexer type to use to tokenize the input.
     // Here we use the lexertl based lexer engine.
     typedef lexertl_lexer<token_type> lexer_type;
-
+
     // This is the token definition type (derived from the given lexer type).
     typedef example3_tokens<lexer_type> example3_tokens;
-
+
     // this is the iterator type exposed by the lexer
     typedef lexer<example3_tokens>::iterator_type iterator_type;
 
@@ -125,10 +126,9 @@
     // now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process
     example3_tokens tokens; // Our token definition
- example3_grammar def (tokens); // Our grammar definition
+ example3_grammar calc(tokens); // Our grammar definition
 
     lexer<example3_tokens> lex(tokens); // Our lexer
- grammar<example3_grammar> calc(def); // Our grammar
 
     std::string str (read_from_file("example3.input"));
 
@@ -137,7 +137,7 @@
     std::string::iterator it = str.begin();
     iterator_type iter = lex.begin(it, str.end());
     iterator_type end = lex.end();
-
+
     // Parsing is done based on the the token stream, not the character
     // stream read from the input.
     // Note, how we use the token_set defined above as the skip parser.

Modified: branches/proto/v4/libs/spirit/example/lex/example4.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/example4.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/example4.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -101,10 +101,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator, typename Lexer>
 struct example4_grammar
- : grammar_def<Iterator, in_state_skipper<typename Lexer::token_set> >
+ : grammar<Iterator, in_state_skipper<typename Lexer::token_set> >
 {
     template <typename TokenDef>
     example4_grammar(TokenDef const& tok)
+ : example4_grammar::base_type(program)
     {
         program
             = +block
@@ -202,10 +203,9 @@
     // now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process
     example4_tokens tokens; // Our token definition
- example4_grammar def (tokens); // Our grammar definition
+ example4_grammar calc(tokens); // Our grammar definition
 
     lexer<example4_tokens> lex(tokens); // Our lexer
- grammar<example4_grammar> calc(def, def.program); // Our grammar
 
     std::string str (read_from_file("example4.input"));
 

Modified: branches/proto/v4/libs/spirit/example/lex/example5.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/example5.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/example5.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -100,10 +100,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator, typename Lexer>
 struct example5_base_grammar
- : grammar_def<Iterator, in_state_skipper<typename Lexer::token_set> >
+ : grammar<Iterator, in_state_skipper<typename Lexer::token_set> >
 {
     template <typename TokenDef>
     example5_base_grammar(TokenDef const& tok)
+ : example5_base_grammar::base_type(program)
     {
         program
             = +block
@@ -150,7 +151,7 @@
     }
 
     typedef
- grammar_def<Iterator, in_state_skipper<typename Lexer::token_set> >
+ grammar<Iterator, in_state_skipper<typename Lexer::token_set> >
     base_type;
     typedef typename base_type::skipper_type skipper_type;
     
@@ -245,10 +246,9 @@
     // now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process
     example5_tokens tokens; // Our token definition
- example5_grammar def (tokens); // Our grammar definition
+ example5_grammar calc(tokens); // Our grammar definition
 
     lexer<example5_tokens> lex(tokens); // Our lexer
- grammar<example5_grammar> calc(def, def.program); // Our grammar
 
     std::string str (read_from_file("example5.input"));
 

Modified: branches/proto/v4/libs/spirit/example/lex/example6.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/example6.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/example6.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -122,10 +122,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator, typename Lexer>
 struct example6_grammar
- : grammar_def<Iterator, in_state_skipper<typename Lexer::token_set> >
+ : grammar<Iterator, in_state_skipper<typename Lexer::token_set> >
 {
     template <typename TokenDef>
     example6_grammar(TokenDef const& tok)
+ : example6_grammar::base_type(program)
     {
         program
             = +block
@@ -225,10 +226,9 @@
     // now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process
     example6_tokens tokens; // Our token definition
- example6_grammar def (tokens); // Our grammar definition
+ example6_grammar calc(tokens); // Our grammar definition
 
     lexer<example6_tokens> lex(tokens); // Our lexer
- grammar<example6_grammar> calc(def, def.program); // Our grammar
 
     std::string str (read_from_file("example6.input"));
 

Modified: branches/proto/v4/libs/spirit/example/lex/print_numbers.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/print_numbers.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/print_numbers.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -52,11 +52,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Grammar definition
 ///////////////////////////////////////////////////////////////////////////////
-template <typename Iterator, typename Skipper>
-struct print_numbers_grammar : grammar_def<Iterator, Skipper>
+template <typename Iterator>
+struct print_numbers_grammar : grammar<Iterator>
 {
- template <typename Class>
- print_numbers_grammar(Class& self)
+ print_numbers_grammar()
+ : grammar<Iterator>(start)
     {
         start = *( token(lex::min_token_id) [ std::cout << _1 << "\n" ]
                   | token(lex::min_token_id+1)
@@ -90,7 +90,7 @@
     // now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process
     print_numbers_tokens<lexer_type> print_tokens; // Our token definition
- grammar_class<print_numbers_grammar> print; // Our grammar definition
+ print_numbers_grammar<iterator_type> print; // Our grammar definition
 
     // Parsing is done based on the the token stream, not the character
     // stream read from the input.

Modified: branches/proto/v4/libs/spirit/example/lex/static_lexer/word_count_static.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/static_lexer/word_count_static.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/static_lexer/word_count_static.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -44,11 +44,11 @@
 // definition class instance passed to the constructor to allow accessing the
 // embedded token_def<> instances.
 template <typename Iterator>
-struct word_count_grammar : grammar_def<Iterator>
+struct word_count_grammar : grammar<Iterator>
 {
     template <typename TokenDef>
     word_count_grammar(TokenDef const& tok)
- : c(0), w(0), l(0)
+ : grammar<Iterator>(start), c(0), w(0), l(0)
     {
         using boost::spirit::arg_names::_1;
         using boost::phoenix::ref;
@@ -92,8 +92,8 @@
 
     // Now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process.
- word_count_tokens<lexer_type> word_count; // Our token definition
- word_count_grammar<iterator_type> def (word_count); // Our grammar definition
+ word_count_tokens<lexer_type> word_count; // Our token definition
+ word_count_grammar<iterator_type> g (word_count); // Our grammar definition
 
     // Read in the file into memory.
     std::string str (read_from_file(1 == argc ? "word_count.input" : argv[1]));
@@ -101,12 +101,11 @@
     char const* last = &first[str.size()];
     
     // Parsing is done based on the the token stream, not the character stream.
- qi::grammar<word_count_grammar<iterator_type> > g(def);
     bool r = tokenize_and_parse(first, last, make_lexer(word_count), g);
 
     if (r) { // success
- std::cout << "lines: " << def.l << ", words: " << def.w
- << ", characters: " << def.c << "\n";
+ std::cout << "lines: " << g.l << ", words: " << g.w
+ << ", characters: " << g.c << "\n";
     }
     else {
         std::string rest(first, last);

Modified: branches/proto/v4/libs/spirit/example/lex/strip_comments.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/strip_comments.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/strip_comments.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -65,7 +65,7 @@
     void def (Self& self)
     {
         // define tokens and associate them with the lexer
- cppcomment = "//.*\n";
+ cppcomment = "//[^\n]*";
         ccomment = "/\\*";
         endcomment = "\\*/";
         
@@ -95,10 +95,11 @@
 // Grammar definition
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct strip_comments_grammar : grammar_def<Iterator>
+struct strip_comments_grammar : grammar<Iterator>
 {
     template <typename TokenDef>
     strip_comments_grammar(TokenDef const& tok)
+ : grammar<Iterator>(start)
     {
         // The in_state("COMMENT")[...] parser component switches the lexer
         // state to be 'COMMENT' during the matching of the embedded parser.
@@ -110,7 +111,7 @@
                               *token(IDANY) >> tok.endcomment
                           ]
                   | tok.cppcomment
- | token(IDANY)
+ | token(IDANY) [ std::cout << _1 ]
                   )
               ;
     }
@@ -134,15 +135,14 @@
 
     // now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process
- strip_comments_tokens<lexer_type> strip_comments; // Our token definition
- strip_comments_grammar<iterator_type> def (strip_comments); // Our grammar definition
+ strip_comments_tokens<lexer_type> strip_comments; // Our token definition
+ strip_comments_grammar<iterator_type> g (strip_comments); // Our grammar definition
 
     // Parsing is done based on the the token stream, not the character
     // stream read from the input.
     std::string str (read_from_file(1 == argc ? "strip_comments.input" : argv[1]));
     base_iterator_type first = str.begin();
 
- qi::grammar<strip_comments_grammar<iterator_type> > g(def);
     bool r = tokenize_and_parse(first, str.end(), make_lexer(strip_comments), g);
 
     if (r) {

Modified: branches/proto/v4/libs/spirit/example/lex/word_count.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/word_count.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/word_count.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,7 +10,7 @@
         int c = 0, w = 0, l = 0;
     %}
     word [^ \t\n]+
- eol \n
+ eol \n
     %%
     {word} { ++w; c += yyleng; }
     {eol} { ++c; ++l; }
@@ -18,8 +18,8 @@
     %%
     main()
     {
- yylex();
- printf("%d %d %d\n", l, w, c);
+ yylex();
+ printf("%d %d %d\n", l, w, c);
     }
 //]
 */
@@ -99,11 +99,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 //[wcp_grammar_definition
 template <typename Iterator>
-struct word_count_grammar : grammar_def<Iterator>
+struct word_count_grammar : grammar<Iterator>
 {
     template <typename TokenDef>
     word_count_grammar(TokenDef const& tok)
- : c(0), w(0), l(0)
+ : grammar<Iterator>(start), c(0), w(0), l(0)
     {
         using boost::phoenix::ref;
         using boost::phoenix::size;
@@ -144,8 +144,8 @@
 
     // now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process
- word_count_tokens<lexer_type> word_count; // Our token definition
- word_count_grammar<iterator_type> def (word_count); // Our grammar definition
+ word_count_tokens<lexer_type> word_count; // Our token definition
+ word_count_grammar<iterator_type> g (word_count); // Our grammar definition
 
     // read in the file int memory
     std::string str (read_from_file(1 == argc ? "word_count.input" : argv[1]));
@@ -156,12 +156,11 @@
     // stream read from the input. The function `tokenize_and_parse()` wraps
     // the passed iterator range `[first, last)` by the lexical analyzer and
     // uses its exposed iterators to parse the toke stream.
- qi::grammar<word_count_grammar<iterator_type> > g(def);
     bool r = tokenize_and_parse(first, last, make_lexer(word_count), g);
 
     if (r) {
- std::cout << "lines: " << def.l << ", words: " << def.w
- << ", characters: " << def.c << "\n";
+ std::cout << "lines: " << g.l << ", words: " << g.w
+ << ", characters: " << g.c << "\n";
     }
     else {
         std::string rest(first, last);

Modified: branches/proto/v4/libs/spirit/example/lex/word_count_functor.flex
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/word_count_functor.flex (original)
+++ branches/proto/v4/libs/spirit/example/lex/word_count_functor.flex 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,9 @@
 %{
+// Copyright (c) 2001-2008 Hartmut Kaiser
+//
+// Distributed under the 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/timer.hpp>
 #if defined(_WIN32)
     #include <io.h>

Modified: branches/proto/v4/libs/spirit/example/lex/word_count_functor_flex.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/lex/word_count_functor_flex.cpp (original)
+++ branches/proto/v4/libs/spirit/example/lex/word_count_functor_flex.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -33,15 +33,15 @@
 /* The "const" storage-class-modifier is valid. */
 #define YY_USE_CONST
 
-#else /* ! __cplusplus */
+#else /* ! __cplusplus */
 
 #if __STDC__
 
 #define YY_USE_PROTOS
 #define YY_USE_CONST
 
-#endif /* __STDC__ */
-#endif /* ! __cplusplus */
+#endif /* __STDC__ */
+#endif /* ! __cplusplus */
 
 #ifdef __TURBOC__
  #pragma warn -rch
@@ -113,10 +113,10 @@
  * int a single C statement (which needs a semi-colon terminator). This
  * avoids problems with code like:
  *
- * if ( condition_holds )
- * yyless( 5 );
- * else
- * do_something_else();
+ * if ( condition_holds )
+ * yyless( 5 );
+ * else
+ * do_something_else();
  *
  * Prior to using the do-while the compiler would get upset at the
  * "else" because it interpreted the "if" statement as being all
@@ -126,15 +126,15 @@
 /* Return all but the first 'n' matched characters back to the input stream. */
 
 #define yyless(n) \
- do \
- { \
- /* Undo effects of setting up yytext. */ \
- *yy_cp = yy_hold_char; \
- YY_RESTORE_YY_MORE_OFFSET \
- yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
- YY_DO_BEFORE_ACTION; /* set up yytext again */ \
- } \
- while ( 0 )
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ *yy_cp = yy_hold_char; \
+ YY_RESTORE_YY_MORE_OFFSET \
+ yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
 
 #define unput(c) yyunput( c, yytext_ptr )
 
@@ -146,61 +146,61 @@
 
 
 struct yy_buffer_state
- {
- FILE *yy_input_file;
+ {
+ FILE *yy_input_file;
 
- char *yy_ch_buf; /* input buffer */
- char *yy_buf_pos; /* current position in input buffer */
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
 
- /* Size of input buffer in bytes, not including room for EOB
- * characters.
- */
- yy_size_t yy_buf_size;
-
- /* Number of characters read into yy_ch_buf, not including EOB
- * characters.
- */
- int yy_n_chars;
-
- /* Whether we "own" the buffer - i.e., we know we created it,
- * and can realloc() it to grow it, and should free() it to
- * delete it.
- */
- int yy_is_our_buffer;
-
- /* Whether this is an "interactive" input source; if so, and
- * if we're using stdio for input, then we want to use getc()
- * instead of fread(), to make sure we stop fetching input after
- * each newline.
- */
- int yy_is_interactive;
-
- /* Whether we're considered to be at the beginning of a line.
- * If so, '^' rules will be active on the next match, otherwise
- * not.
- */
- int yy_at_bol;
-
- /* Whether to try to fill the input buffer when we reach the
- * end of it.
- */
- int yy_fill_buffer;
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
 
- int yy_buffer_status;
+ int yy_buffer_status;
 #define YY_BUFFER_NEW 0
 #define YY_BUFFER_NORMAL 1
- /* When an EOF's been seen but there's still some text to process
- * then we mark the buffer as YY_EOF_PENDING, to indicate that we
- * shouldn't try reading from the input source any more. We might
- * still have a bunch of tokens to match, though, because of
- * possible backing-up.
- *
- * When we actually see the EOF, we change the status to "new"
- * (via yyrestart()), so that the user can continue scanning by
- * just pointing yyin at a new input file.
- */
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via yyrestart()), so that the user can continue scanning by
+ * just pointing yyin at a new input file.
+ */
 #define YY_BUFFER_EOF_PENDING 2
- };
+ };
 
 static YY_BUFFER_STATE yy_current_buffer = 0;
 
@@ -214,15 +214,15 @@
 /* yy_hold_char holds the character lost when yytext is formed. */
 static char yy_hold_char;
 
-static int yy_n_chars; /* number of characters read into yy_ch_buf */
+static int yy_n_chars; /* number of characters read into yy_ch_buf */
 
 
 int yyleng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 1; /* whether we need to initialize */
-static int yy_start = 0; /* start state number */
+static int yy_init = 1; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
 
 /* Flag which is used to allow yywrap()'s to do buffer switches
  * instead of setting up a fresh yyin. A bit of a hack ...
@@ -250,18 +250,18 @@
 #define yy_new_buffer yy_create_buffer
 
 #define yy_set_interactive(is_interactive) \
- { \
- if ( ! yy_current_buffer ) \
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
- yy_current_buffer->yy_is_interactive = is_interactive; \
- }
+ { \
+ if ( ! yy_current_buffer ) \
+ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ yy_current_buffer->yy_is_interactive = is_interactive; \
+ }
 
 #define yy_set_bol(at_bol) \
- { \
- if ( ! yy_current_buffer ) \
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
- yy_current_buffer->yy_at_bol = at_bol; \
- }
+ { \
+ if ( ! yy_current_buffer ) \
+ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
+ yy_current_buffer->yy_at_bol = at_bol; \
+ }
 
 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
 
@@ -280,11 +280,11 @@
  * corresponding action - sets up yytext.
  */
 #define YY_DO_BEFORE_ACTION \
- yytext_ptr = yy_bp; \
- yyleng = (int) (yy_cp - yy_bp); \
- yy_hold_char = *yy_cp; \
- *yy_cp = '\0'; \
- yy_c_buf_p = yy_cp;
+ yytext_ptr = yy_bp; \
+ yyleng = (int) (yy_cp - yy_bp); \
+ yy_hold_char = *yy_cp; \
+ *yy_cp = '\0'; \
+ yy_c_buf_p = yy_cp;
 
 #define YY_NUM_RULES 4
 #define YY_END_OF_BUFFER 5
@@ -364,6 +364,11 @@
 #line 1 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
 #define INITIAL 0
 #line 2 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
+// Copyright (c) 2001-2008 Hartmut Kaiser
+//
+// Distributed under the 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/timer.hpp>
 #if defined(_WIN32)
     #include <io.h>
@@ -371,7 +376,7 @@
     #define ID_WORD 1000
     #define ID_EOL 1001
     #define ID_CHAR 1002
-#line 375 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor_flex.cpp"
+#line 380 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor_flex.cpp"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -459,32 +464,32 @@
  */
 #ifndef YY_INPUT
 #define YY_INPUT(buf,result,max_size) \
- if ( yy_current_buffer->yy_is_interactive ) \
- { \
- int c = '*', n; \
- for ( n = 0; n < max_size && \
- (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
- buf[n] = (char) c; \
- if ( c == '\n' ) \
- buf[n++] = (char) c; \
- if ( c == EOF && ferror( yyin ) ) \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- result = n; \
- } \
- else \
- { \
- errno=0; \
- while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
- { \
- if( errno != EINTR) \
- { \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- break; \
- } \
- errno=0; \
- clearerr(yyin); \
- } \
- }
+ if ( yy_current_buffer->yy_is_interactive ) \
+ { \
+ int c = '*', n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else \
+ { \
+ errno=0; \
+ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(yyin); \
+ } \
+ }
 #endif
 
 /* No semi-colon after return; correct usage is to write "yyterminate();" -
@@ -525,425 +530,425 @@
 #endif
 
 #define YY_RULE_SETUP \
- YY_USER_ACTION
+ YY_USER_ACTION
 
 YY_DECL
- {
- register yy_state_type yy_current_state;
- register char *yy_cp, *yy_bp;
- register int yy_act;
-
-#line 11 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
-
-#line 539 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor_flex.cpp"
-
- if ( yy_init )
- {
- yy_init = 0;
+ {
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+#line 16 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
+
+#line 544 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor_flex.cpp"
+
+ if ( yy_init )
+ {
+ yy_init = 0;
 
 #ifdef YY_USER_INIT
- YY_USER_INIT;
+ YY_USER_INIT;
 #endif
 
- if ( ! yy_start )
- yy_start = 1; /* first start state */
+ if ( ! yy_start )
+ yy_start = 1; /* first start state */
 
- if ( ! yyin )
- yyin = stdin;
+ if ( ! yyin )
+ yyin = stdin;
 
- if ( ! yyout )
- yyout = stdout;
+ if ( ! yyout )
+ yyout = stdout;
 
- if ( ! yy_current_buffer )
- yy_current_buffer =
- yy_create_buffer( yyin, YY_BUF_SIZE );
+ if ( ! yy_current_buffer )
+ yy_current_buffer =
+ yy_create_buffer( yyin, YY_BUF_SIZE );
 
- yy_load_buffer_state();
- }
+ yy_load_buffer_state();
+ }
 
- while ( 1 ) /* loops until end-of-file is reached */
- {
- yy_cp = yy_c_buf_p;
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = yy_c_buf_p;
 
- /* Support of yytext. */
- *yy_cp = yy_hold_char;
+ /* Support of yytext. */
+ *yy_cp = yy_hold_char;
 
- /* yy_bp points to the position in yy_ch_buf of the start of
- * the current run.
- */
- yy_bp = yy_cp;
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
 
- yy_current_state = yy_start;
+ yy_current_state = yy_start;
 yy_match:
- do
- {
- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
- if ( yy_accept[yy_current_state] )
- {
- yy_last_accepting_state = yy_current_state;
- yy_last_accepting_cpos = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 9 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- ++yy_cp;
- }
- while ( yy_base[yy_current_state] != 6 );
+ do
+ {
+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+ if ( yy_accept[yy_current_state] )
+ {
+ yy_last_accepting_state = yy_current_state;
+ yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 9 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ ++yy_cp;
+ }
+ while ( yy_base[yy_current_state] != 6 );
 
 yy_find_action:
- yy_act = yy_accept[yy_current_state];
- if ( yy_act == 0 )
- { /* have to back up */
- yy_cp = yy_last_accepting_cpos;
- yy_current_state = yy_last_accepting_state;
- yy_act = yy_accept[yy_current_state];
- }
-
- YY_DO_BEFORE_ACTION;
-
-
-do_action: /* This label is used only to access EOF actions. */
-
-
- switch ( yy_act )
- { /* beginning of action switch */
- case 0: /* must back up */
- /* undo the effects of YY_DO_BEFORE_ACTION */
- *yy_cp = yy_hold_char;
- yy_cp = yy_last_accepting_cpos;
- yy_current_state = yy_last_accepting_state;
- goto yy_find_action;
+ yy_act = yy_accept[yy_current_state];
+ if ( yy_act == 0 )
+ { /* have to back up */
+ yy_cp = yy_last_accepting_cpos;
+ yy_current_state = yy_last_accepting_state;
+ yy_act = yy_accept[yy_current_state];
+ }
+
+ YY_DO_BEFORE_ACTION;
+
+
+do_action: /* This label is used only to access EOF actions. */
+
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = yy_hold_char;
+ yy_cp = yy_last_accepting_cpos;
+ yy_current_state = yy_last_accepting_state;
+ goto yy_find_action;
 
 case 1:
 YY_RULE_SETUP
-#line 12 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
+#line 17 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
 { return ID_WORD; }
- YY_BREAK
+ YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 13 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
+#line 18 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
 { return ID_EOL; }
- YY_BREAK
+ YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 14 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
+#line 19 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
 { return ID_CHAR; }
- YY_BREAK
+ YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 15 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
+#line 20 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
 ECHO;
- YY_BREAK
-#line 642 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor_flex.cpp"
+ YY_BREAK
+#line 647 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor_flex.cpp"
 case YY_STATE_EOF(INITIAL):
- yyterminate();
+ yyterminate();
 
- case YY_END_OF_BUFFER:
- {
- /* Amount of text matched not including the EOB char. */
- int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
-
- /* Undo the effects of YY_DO_BEFORE_ACTION. */
- *yy_cp = yy_hold_char;
- YY_RESTORE_YY_MORE_OFFSET
-
- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
- {
- /* We're scanning a new file or input source. It's
- * possible that this happened because the user
- * just pointed yyin at a new source and called
- * yylex(). If so, then we have to assure
- * consistency between yy_current_buffer and our
- * globals. Here is the right place to do so, because
- * this is the first action (other than possibly a
- * back-up) that will match for the new input source.
- */
- yy_n_chars = yy_current_buffer->yy_n_chars;
- yy_current_buffer->yy_input_file = yyin;
- yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
- }
-
- /* Note that here we test for yy_c_buf_p "<=" to the position
- * of the first EOB in the buffer, since yy_c_buf_p will
- * already have been incremented past the NUL character
- * (since all states make transitions on EOB to the
- * end-of-buffer state). Contrast this with the test
- * in input().
- */
- if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
- { /* This was really a NUL. */
- yy_state_type yy_next_state;
-
- yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state();
-
- /* Okay, we're now positioned to make the NUL
- * transition. We couldn't have
- * yy_get_previous_state() go ahead and do it
- * for us because it doesn't know how to deal
- * with the possibility of jamming (and we don't
- * want to build jamming into it because then it
- * will run more slowly).
- */
-
- yy_next_state = yy_try_NUL_trans( yy_current_state );
-
- yy_bp = yytext_ptr + YY_MORE_ADJ;
-
- if ( yy_next_state )
- {
- /* Consume the NUL. */
- yy_cp = ++yy_c_buf_p;
- yy_current_state = yy_next_state;
- goto yy_match;
- }
-
- else
- {
- yy_cp = yy_c_buf_p;
- goto yy_find_action;
- }
- }
-
- else switch ( yy_get_next_buffer() )
- {
- case EOB_ACT_END_OF_FILE:
- {
- yy_did_buffer_switch_on_eof = 0;
-
- if ( yywrap() )
- {
- /* Note: because we've taken care in
- * yy_get_next_buffer() to have set up
- * yytext, we can now set up
- * yy_c_buf_p so that if some total
- * hoser (like flex itself) wants to
- * call the scanner after we return the
- * YY_NULL, it'll still work - another
- * YY_NULL will get returned.
- */
- yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-
- yy_act = YY_STATE_EOF(YY_START);
- goto do_action;
- }
-
- else
- {
- if ( ! yy_did_buffer_switch_on_eof )
- YY_NEW_FILE;
- }
- break;
- }
-
- case EOB_ACT_CONTINUE_SCAN:
- yy_c_buf_p =
- yytext_ptr + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state();
-
- yy_cp = yy_c_buf_p;
- yy_bp = yytext_ptr + YY_MORE_ADJ;
- goto yy_match;
-
- case EOB_ACT_LAST_MATCH:
- yy_c_buf_p =
- &yy_current_buffer->yy_ch_buf[yy_n_chars];
-
- yy_current_state = yy_get_previous_state();
-
- yy_cp = yy_c_buf_p;
- yy_bp = yytext_ptr + YY_MORE_ADJ;
- goto yy_find_action;
- }
- break;
- }
-
- default:
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--no action found" );
- } /* end of action switch */
- } /* end of scanning one token */
- } /* end of yylex */
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = yy_hold_char;
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed yyin at a new source and called
+ * yylex(). If so, then we have to assure
+ * consistency between yy_current_buffer and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ yy_n_chars = yy_current_buffer->yy_n_chars;
+ yy_current_buffer->yy_input_file = yyin;
+ yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state();
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+ yy_bp = yytext_ptr + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++yy_c_buf_p;
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = yy_c_buf_p;
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer() )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ yy_did_buffer_switch_on_eof = 0;
+
+ if ( yywrap() )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * yytext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yy_c_buf_p =
+ yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state();
+
+ yy_cp = yy_c_buf_p;
+ yy_bp = yytext_ptr + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ yy_c_buf_p =
+ &yy_current_buffer->yy_ch_buf[yy_n_chars];
+
+ yy_current_state = yy_get_previous_state();
+
+ yy_cp = yy_c_buf_p;
+ yy_bp = yytext_ptr + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+ } /* end of yylex */
 
 
 /* yy_get_next_buffer - try to read in a new buffer
  *
  * Returns a code representing an action:
- * EOB_ACT_LAST_MATCH -
- * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- * EOB_ACT_END_OF_FILE - end of file
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
  */
 
 static int yy_get_next_buffer()
- {
- register char *dest = yy_current_buffer->yy_ch_buf;
- register char *source = yytext_ptr;
- register int number_to_move, i;
- int ret_val;
-
- if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--end of buffer missed" );
-
- if ( yy_current_buffer->yy_fill_buffer == 0 )
- { /* Don't try to fill the buffer, so this is an EOF. */
- if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
- {
- /* We matched a single character, the EOB, so
- * treat this as a final EOF.
- */
- return EOB_ACT_END_OF_FILE;
- }
-
- else
- {
- /* We matched some text prior to the EOB, first
- * process it.
- */
- return EOB_ACT_LAST_MATCH;
- }
- }
-
- /* Try to read more data. */
-
- /* First move last chars to start of buffer. */
- number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
-
- for ( i = 0; i < number_to_move; ++i )
- *(dest++) = *(source++);
-
- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
- /* don't do the read, it's not guaranteed to return an EOF,
- * just force an EOF
- */
- yy_current_buffer->yy_n_chars = yy_n_chars = 0;
-
- else
- {
- int num_to_read =
- yy_current_buffer->yy_buf_size - number_to_move - 1;
+ {
+ register char *dest = yy_current_buffer->yy_ch_buf;
+ register char *source = yytext_ptr;
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( yy_current_buffer->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+
+ else
+ {
+ int num_to_read =
+ yy_current_buffer->yy_buf_size - number_to_move - 1;
 
- while ( num_to_read <= 0 )
- { /* Not enough room in the buffer - grow it. */
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
 #ifdef YY_USES_REJECT
- YY_FATAL_ERROR(
+ YY_FATAL_ERROR(
 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
 #else
 
- /* just a shorter name for the current buffer */
- YY_BUFFER_STATE b = yy_current_buffer;
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = yy_current_buffer;
 
- int yy_c_buf_p_offset =
- (int) (yy_c_buf_p - b->yy_ch_buf);
+ int yy_c_buf_p_offset =
+ (int) (yy_c_buf_p - b->yy_ch_buf);
 
- if ( b->yy_is_our_buffer )
- {
- int new_size = b->yy_buf_size * 2;
-
- if ( new_size <= 0 )
- b->yy_buf_size += b->yy_buf_size / 8;
- else
- b->yy_buf_size *= 2;
-
- b->yy_ch_buf = (char *)
- /* Include room in for 2 EOB chars. */
- yy_flex_realloc( (void *) b->yy_ch_buf,
- b->yy_buf_size + 2 );
- }
- else
- /* Can't grow it, we don't own it. */
- b->yy_ch_buf = 0;
-
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR(
- "fatal error - scanner input buffer overflow" );
-
- yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
- num_to_read = yy_current_buffer->yy_buf_size -
- number_to_move - 1;
-#endif
- }
-
- if ( num_to_read > YY_READ_BUF_SIZE )
- num_to_read = YY_READ_BUF_SIZE;
-
- /* Read in more data. */
- YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
- yy_n_chars, num_to_read );
-
- yy_current_buffer->yy_n_chars = yy_n_chars;
- }
-
- if ( yy_n_chars == 0 )
- {
- if ( number_to_move == YY_MORE_ADJ )
- {
- ret_val = EOB_ACT_END_OF_FILE;
- yyrestart( yyin );
- }
-
- else
- {
- ret_val = EOB_ACT_LAST_MATCH;
- yy_current_buffer->yy_buffer_status =
- YY_BUFFER_EOF_PENDING;
- }
- }
-
- else
- ret_val = EOB_ACT_CONTINUE_SCAN;
-
- yy_n_chars += number_to_move;
- yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
- yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ yy_flex_realloc( (void *) b->yy_ch_buf,
+ b->yy_buf_size + 2 );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = yy_current_buffer->yy_buf_size -
+ number_to_move - 1;
+#endif
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
+ yy_n_chars, num_to_read );
+
+ yy_current_buffer->yy_n_chars = yy_n_chars;
+ }
+
+ if ( yy_n_chars == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ yyrestart( yyin );
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ yy_current_buffer->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ yy_n_chars += number_to_move;
+ yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
 
- yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+ yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
 
- return ret_val;
- }
+ return ret_val;
+ }
 
 
 /* yy_get_previous_state - get the state just before the EOB char was reached */
 
 static yy_state_type yy_get_previous_state()
- {
- register yy_state_type yy_current_state;
- register char *yy_cp;
-
- yy_current_state = yy_start;
-
- for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
- {
- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
- if ( yy_accept[yy_current_state] )
- {
- yy_last_accepting_state = yy_current_state;
- yy_last_accepting_cpos = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 9 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- }
+ {
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+ yy_current_state = yy_start;
+
+ for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+ {
+ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ if ( yy_accept[yy_current_state] )
+ {
+ yy_last_accepting_state = yy_current_state;
+ yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 9 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ }
 
- return yy_current_state;
- }
+ return yy_current_state;
+ }
 
 
 /* yy_try_NUL_trans - try to make a transition on the NUL character
  *
  * synopsis
- * next_state = yy_try_NUL_trans( current_state );
+ * next_state = yy_try_NUL_trans( current_state );
  */
 
 #ifdef YY_USE_PROTOS
@@ -952,27 +957,27 @@
 static yy_state_type yy_try_NUL_trans( yy_current_state )
 yy_state_type yy_current_state;
 #endif
- {
- register int yy_is_jam;
- register char *yy_cp = yy_c_buf_p;
-
- register YY_CHAR yy_c = 1;
- if ( yy_accept[yy_current_state] )
- {
- yy_last_accepting_state = yy_current_state;
- yy_last_accepting_cpos = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 9 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 8);
+ {
+ register int yy_is_jam;
+ register char *yy_cp = yy_c_buf_p;
+
+ register YY_CHAR yy_c = 1;
+ if ( yy_accept[yy_current_state] )
+ {
+ yy_last_accepting_state = yy_current_state;
+ yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 9 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_is_jam = (yy_current_state == 8);
 
- return yy_is_jam ? 0 : yy_current_state;
- }
+ return yy_is_jam ? 0 : yy_current_state;
+ }
 
 
 #ifndef YY_NO_UNPUT
@@ -983,41 +988,41 @@
 int c;
 register char *yy_bp;
 #endif
- {
- register char *yy_cp = yy_c_buf_p;
+ {
+ register char *yy_cp = yy_c_buf_p;
 
- /* undo effects of setting up yytext */
- *yy_cp = yy_hold_char;
+ /* undo effects of setting up yytext */
+ *yy_cp = yy_hold_char;
 
- if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
- { /* need to shift things up to make room */
- /* +2 for EOB chars. */
- register int number_to_move = yy_n_chars + 2;
- register char *dest = &yy_current_buffer->yy_ch_buf[
- yy_current_buffer->yy_buf_size + 2];
- register char *source =
- &yy_current_buffer->yy_ch_buf[number_to_move];
-
- while ( source > yy_current_buffer->yy_ch_buf )
- *--dest = *--source;
-
- yy_cp += (int) (dest - source);
- yy_bp += (int) (dest - source);
- yy_current_buffer->yy_n_chars =
- yy_n_chars = yy_current_buffer->yy_buf_size;
-
- if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
- YY_FATAL_ERROR( "flex scanner push-back overflow" );
- }
-
- *--yy_cp = (char) c;
-
-
- yytext_ptr = yy_bp;
- yy_hold_char = *yy_cp;
- yy_c_buf_p = yy_cp;
- }
-#endif /* ifndef YY_NO_UNPUT */
+ if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ /* +2 for EOB chars. */
+ register int number_to_move = yy_n_chars + 2;
+ register char *dest = &yy_current_buffer->yy_ch_buf[
+ yy_current_buffer->yy_buf_size + 2];
+ register char *source =
+ &yy_current_buffer->yy_ch_buf[number_to_move];
+
+ while ( source > yy_current_buffer->yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += (int) (dest - source);
+ yy_bp += (int) (dest - source);
+ yy_current_buffer->yy_n_chars =
+ yy_n_chars = yy_current_buffer->yy_buf_size;
+
+ if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+ YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ }
+
+ *--yy_cp = (char) c;
+
+
+ yytext_ptr = yy_bp;
+ yy_hold_char = *yy_cp;
+ yy_c_buf_p = yy_cp;
+ }
+#endif /* ifndef YY_NO_UNPUT */
 
 
 #ifdef __cplusplus
@@ -1025,72 +1030,72 @@
 #else
 static int input()
 #endif
- {
- int c;
+ {
+ int c;
 
- *yy_c_buf_p = yy_hold_char;
+ *yy_c_buf_p = yy_hold_char;
 
- if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
- {
- /* yy_c_buf_p now points to the character we want to return.
- * If this occurs *before* the EOB characters, then it's a
- * valid NUL; if not, then we've hit the end of the buffer.
- */
- if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
- /* This was really a NUL. */
- *yy_c_buf_p = '\0';
-
- else
- { /* need more input */
- int offset = yy_c_buf_p - yytext_ptr;
- ++yy_c_buf_p;
-
- switch ( yy_get_next_buffer() )
- {
- case EOB_ACT_LAST_MATCH:
- /* This happens because yy_g_n_b()
- * sees that we've accumulated a
- * token and flags that we need to
- * try matching the token before
- * proceeding. But for input(),
- * there's no matching to consider.
- * So convert the EOB_ACT_LAST_MATCH
- * to EOB_ACT_END_OF_FILE.
- */
-
- /* Reset buffer status. */
- yyrestart( yyin );
-
- /* fall through */
-
- case EOB_ACT_END_OF_FILE:
- {
- if ( yywrap() )
- return EOF;
+ if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+ /* This was really a NUL. */
+ *yy_c_buf_p = '\0';
+
+ else
+ { /* need more input */
+ int offset = yy_c_buf_p - yytext_ptr;
+ ++yy_c_buf_p;
+
+ switch ( yy_get_next_buffer() )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ yyrestart( yyin );
+
+ /* fall through */
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap() )
+ return EOF;
 
- if ( ! yy_did_buffer_switch_on_eof )
- YY_NEW_FILE;
+ if ( ! yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
 #ifdef __cplusplus
- return yyinput();
+ return yyinput();
 #else
- return input();
+ return input();
 #endif
- }
+ }
 
- case EOB_ACT_CONTINUE_SCAN:
- yy_c_buf_p = yytext_ptr + offset;
- break;
- }
- }
- }
+ case EOB_ACT_CONTINUE_SCAN:
+ yy_c_buf_p = yytext_ptr + offset;
+ break;
+ }
+ }
+ }
 
- c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
- *yy_c_buf_p = '\0'; /* preserve yytext */
- yy_hold_char = *++yy_c_buf_p;
+ c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
+ *yy_c_buf_p = '\0'; /* preserve yytext */
+ yy_hold_char = *++yy_c_buf_p;
 
 
- return c;
- }
+ return c;
+ }
 
 
 #ifdef YY_USE_PROTOS
@@ -1099,13 +1104,13 @@
 void yyrestart( input_file )
 FILE *input_file;
 #endif
- {
- if ( ! yy_current_buffer )
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-
- yy_init_buffer( yy_current_buffer, input_file );
- yy_load_buffer_state();
- }
+ {
+ if ( ! yy_current_buffer )
+ yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+
+ yy_init_buffer( yy_current_buffer, input_file );
+ yy_load_buffer_state();
+ }
 
 
 #ifdef YY_USE_PROTOS
@@ -1114,28 +1119,28 @@
 void yy_switch_to_buffer( new_buffer )
 YY_BUFFER_STATE new_buffer;
 #endif
- {
- if ( yy_current_buffer == new_buffer )
- return;
-
- if ( yy_current_buffer )
- {
- /* Flush out information for old buffer. */
- *yy_c_buf_p = yy_hold_char;
- yy_current_buffer->yy_buf_pos = yy_c_buf_p;
- yy_current_buffer->yy_n_chars = yy_n_chars;
- }
-
- yy_current_buffer = new_buffer;
- yy_load_buffer_state();
-
- /* We don't actually know whether we did this switch during
- * EOF (yywrap()) processing, but the only time this flag
- * is looked at is after yywrap() is called, so it's safe
- * to go ahead and always set it.
- */
- yy_did_buffer_switch_on_eof = 1;
- }
+ {
+ if ( yy_current_buffer == new_buffer )
+ return;
+
+ if ( yy_current_buffer )
+ {
+ /* Flush out information for old buffer. */
+ *yy_c_buf_p = yy_hold_char;
+ yy_current_buffer->yy_buf_pos = yy_c_buf_p;
+ yy_current_buffer->yy_n_chars = yy_n_chars;
+ }
+
+ yy_current_buffer = new_buffer;
+ yy_load_buffer_state();
+
+ /* We don't actually know whether we did this switch during
+ * EOF (yywrap()) processing, but the only time this flag
+ * is looked at is after yywrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ yy_did_buffer_switch_on_eof = 1;
+ }
 
 
 #ifdef YY_USE_PROTOS
@@ -1143,12 +1148,12 @@
 #else
 void yy_load_buffer_state()
 #endif
- {
- yy_n_chars = yy_current_buffer->yy_n_chars;
- yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
- yyin = yy_current_buffer->yy_input_file;
- yy_hold_char = *yy_c_buf_p;
- }
+ {
+ yy_n_chars = yy_current_buffer->yy_n_chars;
+ yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
+ yyin = yy_current_buffer->yy_input_file;
+ yy_hold_char = *yy_c_buf_p;
+ }
 
 
 #ifdef YY_USE_PROTOS
@@ -1158,28 +1163,28 @@
 FILE *file;
 int size;
 #endif
- {
- YY_BUFFER_STATE b;
+ {
+ YY_BUFFER_STATE b;
 
- b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+ b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
- b->yy_buf_size = size;
+ b->yy_buf_size = size;
 
- /* yy_ch_buf has to be 2 characters longer than the size given because
- * we need to put in 2 end-of-buffer characters.
- */
- b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
- b->yy_is_our_buffer = 1;
+ b->yy_is_our_buffer = 1;
 
- yy_init_buffer( b, file );
+ yy_init_buffer( b, file );
 
- return b;
- }
+ return b;
+ }
 
 
 #ifdef YY_USE_PROTOS
@@ -1188,18 +1193,18 @@
 void yy_delete_buffer( b )
 YY_BUFFER_STATE b;
 #endif
- {
- if ( ! b )
- return;
+ {
+ if ( ! b )
+ return;
 
- if ( b == yy_current_buffer )
- yy_current_buffer = (YY_BUFFER_STATE) 0;
+ if ( b == yy_current_buffer )
+ yy_current_buffer = (YY_BUFFER_STATE) 0;
 
- if ( b->yy_is_our_buffer )
- yy_flex_free( (void *) b->yy_ch_buf );
+ if ( b->yy_is_our_buffer )
+ yy_flex_free( (void *) b->yy_ch_buf );
 
- yy_flex_free( (void *) b );
- }
+ yy_flex_free( (void *) b );
+ }
 
 
 #ifndef _WIN32
@@ -1221,22 +1226,22 @@
 #endif
 
 
- {
- yy_flush_buffer( b );
+ {
+ yy_flush_buffer( b );
 
- b->yy_input_file = file;
- b->yy_fill_buffer = 1;
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
 
 #if YY_ALWAYS_INTERACTIVE
- b->yy_is_interactive = 1;
+ b->yy_is_interactive = 1;
 #else
 #if YY_NEVER_INTERACTIVE
- b->yy_is_interactive = 0;
+ b->yy_is_interactive = 0;
 #else
- b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
 #endif
 #endif
- }
+ }
 
 
 #ifdef YY_USE_PROTOS
@@ -1246,27 +1251,27 @@
 YY_BUFFER_STATE b;
 #endif
 
- {
- if ( ! b )
- return;
-
- b->yy_n_chars = 0;
-
- /* We always need two end-of-buffer characters. The first causes
- * a transition to the end-of-buffer state. The second causes
- * a jam in that state.
- */
- b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
- b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
- b->yy_buf_pos = &b->yy_ch_buf[0];
-
- b->yy_at_bol = 1;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- if ( b == yy_current_buffer )
- yy_load_buffer_state();
- }
+ {
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == yy_current_buffer )
+ yy_load_buffer_state();
+ }
 
 
 #ifndef YY_NO_SCAN_BUFFER
@@ -1277,33 +1282,33 @@
 char *base;
 yy_size_t size;
 #endif
- {
- YY_BUFFER_STATE b;
+ {
+ YY_BUFFER_STATE b;
 
- if ( size < 2 ||
- base[size-2] != YY_END_OF_BUFFER_CHAR ||
- base[size-1] != YY_END_OF_BUFFER_CHAR )
- /* They forgot to leave room for the EOB's. */
- return 0;
-
- b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
- b->yy_buf_pos = b->yy_ch_buf = base;
- b->yy_is_our_buffer = 0;
- b->yy_input_file = 0;
- b->yy_n_chars = b->yy_buf_size;
- b->yy_is_interactive = 0;
- b->yy_at_bol = 1;
- b->yy_fill_buffer = 0;
- b->yy_buffer_status = YY_BUFFER_NEW;
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
 
- yy_switch_to_buffer( b );
+ yy_switch_to_buffer( b );
 
- return b;
- }
+ return b;
+ }
 #endif
 
 
@@ -1314,13 +1319,13 @@
 YY_BUFFER_STATE yy_scan_string( yy_str )
 yyconst char *yy_str;
 #endif
- {
- int len;
- for ( len = 0; yy_str[len]; ++len )
- ;
+ {
+ int len;
+ for ( len = 0; yy_str[len]; ++len )
+ ;
 
- return yy_scan_bytes( yy_str, len );
- }
+ return yy_scan_bytes( yy_str, len );
+ }
 #endif
 
 
@@ -1332,34 +1337,34 @@
 yyconst char *bytes;
 int len;
 #endif
- {
- YY_BUFFER_STATE b;
- char *buf;
- yy_size_t n;
- int i;
-
- /* Get memory for full buffer, including space for trailing EOB's. */
- n = len + 2;
- buf = (char *) yy_flex_alloc( n );
- if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
- for ( i = 0; i < len; ++i )
- buf[i] = bytes[i];
-
- buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
- b = yy_scan_buffer( buf, n );
- if ( ! b )
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
- /* It's okay to grow etc. this buffer, and we should throw it
- * away when we're done.
- */
- b->yy_is_our_buffer = 1;
+ {
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = len + 2;
+ buf = (char *) yy_flex_alloc( n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+ for ( i = 0; i < len; ++i )
+ buf[i] = bytes[i];
+
+ buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = yy_scan_buffer( buf, n );
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
 
- return b;
- }
+ return b;
+ }
 #endif
 
 
@@ -1370,49 +1375,49 @@
 static void yy_push_state( new_state )
 int new_state;
 #endif
- {
- if ( yy_start_stack_ptr >= yy_start_stack_depth )
- {
- yy_size_t new_size;
-
- yy_start_stack_depth += YY_START_STACK_INCR;
- new_size = yy_start_stack_depth * sizeof( int );
-
- if ( ! yy_start_stack )
- yy_start_stack = (int *) yy_flex_alloc( new_size );
-
- else
- yy_start_stack = (int *) yy_flex_realloc(
- (void *) yy_start_stack, new_size );
-
- if ( ! yy_start_stack )
- YY_FATAL_ERROR(
- "out of memory expanding start-condition stack" );
- }
+ {
+ if ( yy_start_stack_ptr >= yy_start_stack_depth )
+ {
+ yy_size_t new_size;
+
+ yy_start_stack_depth += YY_START_STACK_INCR;
+ new_size = yy_start_stack_depth * sizeof( int );
 
- yy_start_stack[yy_start_stack_ptr++] = YY_START;
+ if ( ! yy_start_stack )
+ yy_start_stack = (int *) yy_flex_alloc( new_size );
 
- BEGIN(new_state);
- }
+ else
+ yy_start_stack = (int *) yy_flex_realloc(
+ (void *) yy_start_stack, new_size );
+
+ if ( ! yy_start_stack )
+ YY_FATAL_ERROR(
+ "out of memory expanding start-condition stack" );
+ }
+
+ yy_start_stack[yy_start_stack_ptr++] = YY_START;
+
+ BEGIN(new_state);
+ }
 #endif
 
 
 #ifndef YY_NO_POP_STATE
 static void yy_pop_state()
- {
- if ( --yy_start_stack_ptr < 0 )
- YY_FATAL_ERROR( "start-condition stack underflow" );
+ {
+ if ( --yy_start_stack_ptr < 0 )
+ YY_FATAL_ERROR( "start-condition stack underflow" );
 
- BEGIN(yy_start_stack[yy_start_stack_ptr]);
- }
+ BEGIN(yy_start_stack[yy_start_stack_ptr]);
+ }
 #endif
 
 
 #ifndef YY_NO_TOP_STATE
 static int yy_top_state()
- {
- return yy_start_stack[yy_start_stack_ptr - 1];
- }
+ {
+ return yy_start_stack[yy_start_stack_ptr - 1];
+ }
 #endif
 
 #ifndef YY_EXIT_FAILURE
@@ -1425,10 +1430,10 @@
 static void yy_fatal_error( msg )
 char msg[];
 #endif
- {
- (void) fprintf( stderr, "%s\n", msg );
- exit( YY_EXIT_FAILURE );
- }
+ {
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+ }
 
 
 
@@ -1436,16 +1441,16 @@
 
 #undef yyless
 #define yyless(n) \
- do \
- { \
- /* Undo effects of setting up yytext. */ \
- yytext[yyleng] = yy_hold_char; \
- yy_c_buf_p = yytext + n; \
- yy_hold_char = *yy_c_buf_p; \
- *yy_c_buf_p = '\0'; \
- yyleng = n; \
- } \
- while ( 0 )
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ yytext[yyleng] = yy_hold_char; \
+ yy_c_buf_p = yytext + n; \
+ yy_hold_char = *yy_c_buf_p; \
+ *yy_c_buf_p = '\0'; \
+ yyleng = n; \
+ } \
+ while ( 0 )
 
 
 /* Internal utility routines. */
@@ -1459,11 +1464,11 @@
 yyconst char *s2;
 int n;
 #endif
- {
- register int i;
- for ( i = 0; i < n; ++i )
- s1[i] = s2[i];
- }
+ {
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+ }
 #endif
 
 #ifdef YY_NEED_STRLEN
@@ -1473,13 +1478,13 @@
 static int yy_flex_strlen( s )
 yyconst char *s;
 #endif
- {
- register int n;
- for ( n = 0; s[n]; ++n )
- ;
+ {
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
 
- return n;
- }
+ return n;
+ }
 #endif
 
 
@@ -1489,9 +1494,9 @@
 static void *yy_flex_alloc( size )
 yy_size_t size;
 #endif
- {
- return (void *) malloc( size );
- }
+ {
+ return (void *) malloc( size );
+ }
 
 #ifdef YY_USE_PROTOS
 static void *yy_flex_realloc( void *ptr, yy_size_t size )
@@ -1500,16 +1505,16 @@
 void *ptr;
 yy_size_t size;
 #endif
- {
- /* The cast to (char *) in the following accommodates both
- * implementations that use char* generic pointers, and those
- * that use void* generic pointers. It works with the latter
- * because both ANSI C and C++ allow castless assignment from
- * any pointer type to void*, and deal with argument conversions
- * as though doing an assignment.
- */
- return (void *) realloc( (char *) ptr, size );
- }
+ {
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+ }
 
 #ifdef YY_USE_PROTOS
 static void yy_flex_free( void *ptr )
@@ -1517,18 +1522,18 @@
 static void yy_flex_free( ptr )
 void *ptr;
 #endif
- {
- free( ptr );
- }
+ {
+ free( ptr );
+ }
 
 #if YY_MAIN
 int main()
- {
- yylex();
- return 0;
- }
+ {
+ yylex();
+ return 0;
+ }
 #endif
-#line 15 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
+#line 20 "c:\\CVS\\boost\\libs\\spirit\\example\\lex\\word_count_functor.flex"
 
 
 bool count(int tok, int* c, int* w, int* l)

Modified: branches/proto/v4/libs/spirit/example/qi/Jamfile
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/Jamfile (original)
+++ branches/proto/v4/libs/spirit/example/qi/Jamfile 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -4,22 +4,29 @@
 # Distributed under the Boost Software License, Version 1.0. (See accompanying
 # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 #==============================================================================
-project spirit-qi-example ;
+project spirit-qi-example
+ : requirements <toolset>gcc:<cxxflags>-ftemplate-depth-300
+ :
+ :
+ ;
 
-exe actions : actions.cpp ;
+exe actions_ : actions.cpp ;
 exe sum : sum.cpp ;
 exe complex_number : complex_number.cpp ;
-exe employee : employee.cpp ;
+exe employee : employee.cpp ;
 exe roman : roman.cpp ;
 exe mini_xml1 : mini_xml1.cpp ;
 exe mini_xml2 : mini_xml2.cpp ;
-exe num_list : num_list.cpp ;
+exe num_list1 : num_list1.cpp ;
 exe num_list2 : num_list2.cpp ;
 exe num_list3 : num_list3.cpp ;
+exe num_list4 : num_list4.cpp ;
 
 exe calc1 : calc1.cpp ;
 exe calc2 : calc2.cpp ;
+exe calc2_ast : calc2_ast.cpp ;
 exe calc3 : calc3.cpp ;
+exe calc3_lexer : calc3_lexer.cpp ;
 exe calc4 : calc4.cpp ;
 exe calc5 : calc5.cpp ;
 

Modified: branches/proto/v4/libs/spirit/example/qi/actions.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/actions.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/actions.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,16 +15,29 @@
 // Presented are various ways to attach semantic actions
 // * Using plain function pointer
 // * Using simple function object
-// * Using boost.bind
+// * Using boost.bind with a plain function
+// * Using boost.bind with a member function
 // * Using boost.lambda
 
 using namespace boost::spirit;
 
+//[tutorial_semantic_action_functions
+// A plain function
 void write(int const& i)
 {
     std::cout << i << std::endl;
 }
 
+// A member function
+struct writer
+{
+ void print(int const& i) const
+ {
+ std::cout << i << std::endl;
+ }
+};
+
+// A function object
 struct write_action
 {
     void operator()(int const& i, unused_type, unused_type) const
@@ -32,32 +45,51 @@
         std::cout << i << std::endl;
     }
 };
+//]
 
 int main()
 {
     { // example using plain function
 
- char const *s1 = "{42}", *e1 = s1 + std::strlen(s1);
- qi::parse(s1, e1, '{' >> int_[&write] >> '}');
+ char const *first = "{42}", *last = first + std::strlen(first);
+ //[tutorial_attach_actions1
+ qi::parse(first, last, '{' >> int_[&write] >> '}');
+ //]
     }
 
     { // example using simple function object
 
- char const *s1 = "{43}", *e1 = s1 + std::strlen(s1);
- qi::parse(s1, e1, '{' >> int_[write_action()] >> '}');
+ char const *first = "{43}", *last = first + std::strlen(first);
+ //[tutorial_attach_actions2
+ qi::parse(first, last, '{' >> int_[write_action()] >> '}');
+ //]
+ }
+
+ { // example using boost.bind with a plain function
+
+ char const *first = "{44}", *last = first + std::strlen(first);
+ //[tutorial_attach_actions3
+ qi::parse(first, last, '{' >> int_[boost::bind(&write, _1)] >> '}');
+ //]
     }
 
- { // example using boost.bind
+ { // example using boost.bind with a member function
 
- char const *s1 = "{44}", *e1 = s1 + std::strlen(s1);
- qi::parse(s1, e1, '{' >> int_[boost::bind(&write, _1)] >> '}');
+ char const *first = "{44}", *last = first + std::strlen(first);
+ //[tutorial_attach_actions4
+ writer w;
+ qi::parse(first, last, '{' >> int_[boost::bind(&writer::print, &w, _1)] >> '}');
+ //]
     }
 
     { // example using boost.lambda
 
         namespace lambda = boost::lambda;
- char const *s1 = "{45}", *e1 = s1 + std::strlen(s1);
- qi::parse(s1, e1, '{' >> int_[std::cout << lambda::_1 << '\n'] >> '}');
+ char const *first = "{45}", *last = first + std::strlen(first);
+ using lambda::_1;
+ //[tutorial_attach_actions5
+ qi::parse(first, last, '{' >> int_[std::cout << _1 << '\n'] >> '}');
+ //]
     }
 
     return 0;

Modified: branches/proto/v4/libs/spirit/example/qi/calc1.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc1.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -27,9 +27,9 @@
 // Our calculator grammar
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct calculator : grammar_def<Iterator, space_type>
+struct calculator : grammar<Iterator, space_type>
 {
- calculator()
+ calculator() : calculator::base_type(expression)
     {
         expression =
             term
@@ -70,8 +70,7 @@
     typedef std::string::const_iterator iterator_type;
     typedef calculator<iterator_type> calculator;
 
- calculator def; // Our grammar definition
- grammar<calculator> calc(def, def.expression); // Our grammar
+ calculator calc; // Our grammar
 
     std::string str;
     while (std::getline(std::cin, str))

Modified: branches/proto/v4/libs/spirit/example/qi/calc2.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc2.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -42,9 +42,9 @@
 // Our calculator grammar
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct calculator : grammar_def<Iterator, space_type>
+struct calculator : grammar<Iterator, space_type>
 {
- calculator()
+ calculator() : calculator::base_type(expression)
     {
         expression =
             term
@@ -85,8 +85,7 @@
     typedef std::string::const_iterator iterator_type;
     typedef calculator<iterator_type> calculator;
 
- calculator def; // Our grammar definition
- grammar<calculator> calc(def, def.expression); // Our grammar
+ calculator calc; // Our grammar
 
     std::string str;
     while (std::getline(std::cin, str))

Modified: branches/proto/v4/libs/spirit/example/qi/calc2_ast.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc2_ast.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc2_ast.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -130,9 +130,9 @@
 // Our calculator grammar
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct calculator : grammar_def<Iterator, expression_ast(), space_type>
+struct calculator : grammar<Iterator, expression_ast(), space_type>
 {
- calculator()
+ calculator() : calculator::base_type(expression)
     {
         expression =
             term [_val = _1]
@@ -173,8 +173,7 @@
     typedef std::string::const_iterator iterator_type;
     typedef calculator<iterator_type> calculator;
 
- calculator def; // Our grammar definition
- grammar<calculator> calc(def, def.expression); // Our grammar
+ calculator calc; // Our grammar
 
     std::string str;
     while (std::getline(std::cin, str))

Modified: branches/proto/v4/libs/spirit/example/qi/calc3.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc3.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc3.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -31,9 +31,9 @@
 // Our calculator grammar
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct calculator : grammar_def<Iterator, int(), space_type>
+struct calculator : grammar<Iterator, int(), space_type>
 {
- calculator()
+ calculator() : calculator::base_type(expression)
     {
         expression =
             term [_val = _1]
@@ -74,8 +74,7 @@
     typedef std::string::const_iterator iterator_type;
     typedef calculator<iterator_type> calculator;
 
- calculator def; // Our grammar definition
- grammar<calculator> calc(def, def.expression); // Our grammar
+ calculator calc; // Our grammar
 
     std::string str;
     int result;

Modified: branches/proto/v4/libs/spirit/example/qi/calc3_lexer.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc3_lexer.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc3_lexer.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -88,10 +88,11 @@
 // use a defined tokenset from above as the skip parser.
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator, typename Lexer>
-struct calculator : grammar_def<Iterator, int(), typename Lexer::token_set>
+struct calculator : grammar<Iterator, int(), typename Lexer::token_set>
 {
     template <typename TokenDef>
- calculator(TokenDef const& tok)
+ calculator(TokenDef const& tok)
+ : calculator::base_type(expression)
     {
         // grammar
         expression =
@@ -143,7 +144,7 @@
     
     // This is the lexer type to use to tokenize the input.
     // Here we use the lexertl based lexer engine.
- typedef lexertl_lexer<base_iterator_type, token_type> lexer_type;
+ typedef lexertl_lexer<token_type> lexer_type;
     
     // This is the token definition type (derived from the given lexer type).
     typedef calculator_tokens<lexer_type> calculator_tokens;
@@ -157,10 +158,9 @@
     // now we use the types defined above to create the lexer and grammar
     // object instances needed to invoke the parsing process
     calculator_tokens tokens; // Our token definition
- calculator def (tokens); // Our grammar definition
+ calculator calc(tokens); // Our grammar definition
 
     lexer<calculator_tokens> lex(tokens); // Our lexer
- grammar<calculator> calc(def, def.expression); // Our grammar
 
     // get input line by line and feed the parser to evaluate the expressions
     // read in from the input

Modified: branches/proto/v4/libs/spirit/example/qi/calc4.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc4.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc4.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -33,9 +33,9 @@
 // Our calculator grammar
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct calculator : grammar_def<Iterator, int(), space_type>
+struct calculator : grammar<Iterator, int(), space_type>
 {
- calculator()
+ calculator() : calculator::base_type(expression)
     {
         expression =
             term [_val = _1]
@@ -93,7 +93,7 @@
     typedef calculator<iterator_type> calculator;
 
     calculator def; // Our grammar definition
- grammar<calculator> calc(def, def.expression); // Our grammar
+ calculator calc; // Our grammar
 
     std::string str;
     int result;

Modified: branches/proto/v4/libs/spirit/example/qi/calc5.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc5.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc5.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -114,10 +114,11 @@
 // Our calculator grammar and compiler
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct calculator : grammar_def<Iterator, space_type>
+struct calculator : grammar<Iterator, space_type>
 {
     calculator(std::vector<int>& code)
- : code(code)
+ : calculator::base_type(expression)
+ , code(code)
     {
         expression =
             term
@@ -203,9 +204,7 @@
 
     vmachine mach; // Our virtual machine
     std::vector<int> code; // Our VM code
- calculator def(code); // Our grammar definition
- grammar<calculator>
- calc(def, def.expression); // Our grammar
+ calculator calc(code); // Our grammar
 
     std::string str;
     while (std::getline(std::cin, str))

Modified: branches/proto/v4/libs/spirit/example/qi/calc6/calc6.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc6/calc6.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc6/calc6.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -74,8 +74,7 @@
 
     vmachine mach; // Our virtual machine
     std::vector<int> code; // Our VM code
- statement def(code); // Our grammar definition
- grammar<statement> calc(def); // Our grammar
+ statement calc(code); // Our grammar
 
     std::string str;
     std::string program;
@@ -88,10 +87,10 @@
 
     if (::compile(calc, program))
     {
- mach.execute(code, def.nvars);
+ mach.execute(code, calc.nvars);
 
         std::cout << "Results------------------\n\n";
- def.vars.for_each(var_printer(mach.get_stack()));
+ calc.vars.for_each(var_printer(mach.get_stack()));
         std::cout << "-------------------------\n\n";
     }
 

Modified: branches/proto/v4/libs/spirit/example/qi/calc6/calc6.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc6/calc6.hpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc6/calc6.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -125,7 +125,7 @@
 // Our expression grammar and compiler
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct expression : grammar_def<Iterator, space_type>
+struct expression : grammar<Iterator, space_type>
 {
     expression(std::vector<int>& code, symbols<char, int>& vars);
 
@@ -160,7 +160,7 @@
 };
 
 template <typename Iterator>
-struct statement : grammar_def<Iterator, space_type>
+struct statement : grammar<Iterator, space_type>
 {
     statement(std::vector<int>& code);
 
@@ -168,8 +168,7 @@
     symbols<char, int> vars;
     int nvars;
 
- expression<Iterator> expr_def;
- grammar<expression<Iterator> > expr;
+ expression<Iterator> expr;
     rule<Iterator, space_type> start, var_decl;
     rule<Iterator, std::string(), space_type> identifier;
     rule<Iterator, int(), space_type> var_ref;

Modified: branches/proto/v4/libs/spirit/example/qi/calc6/calc6b.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc6/calc6b.hpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc6/calc6b.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
 expression<Iterator>::expression(std::vector<int>& code, symbols<char, int>& vars)
- : code(code)
+ : expression::base_type(expr)
+ , code(code)
   , vars(vars)
   , op(code)
 {

Modified: branches/proto/v4/libs/spirit/example/qi/calc6/calc6c.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc6/calc6c.hpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc6/calc6c.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
 statement<Iterator>::statement(std::vector<int>& code)
- : code(code)
+ : statement::base_type(start)
+ , code(code)
   , nvars(0)
- , expr_def(code, vars)
- , expr(expr_def, expr_def.expr)
+ , expr(code, vars)
   , add_var(vars)
   , op(code)
 {

Modified: branches/proto/v4/libs/spirit/example/qi/calc7/calc7.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc7/calc7.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc7/calc7.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -70,9 +70,7 @@
 
     vmachine mach; // Our virtual machine
     std::vector<int> code; // Our VM code
- statement def(code); // Our grammar definition
- grammar<statement>
- calc(def, def.statement_list); // Our grammar
+ statement calc(code); // Our grammar
 
     std::string str;
     std::string program;
@@ -85,10 +83,10 @@
 
     if (::compile(calc, program))
     {
- mach.execute(code, def.nvars);
+ mach.execute(code, calc.nvars);
 
         std::cout << "Results------------------\n\n";
- def.vars.for_each(var_printer(mach.get_stack()));
+ calc.vars.for_each(var_printer(mach.get_stack()));
         std::cout << "-------------------------\n\n";
     }
 

Modified: branches/proto/v4/libs/spirit/example/qi/calc7/calc7.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc7/calc7.hpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc7/calc7.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -144,7 +144,7 @@
 // Our expression grammar and compiler
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct expression : grammar_def<Iterator, space_type>
+struct expression : grammar<Iterator, space_type>
 {
     expression(std::vector<int>& code, symbols<char, int>& vars);
 
@@ -181,7 +181,7 @@
 };
 
 template <typename Iterator>
-struct statement : grammar_def<Iterator, space_type>
+struct statement : grammar<Iterator, space_type>
 {
     statement(std::vector<int>& code);
 
@@ -189,8 +189,7 @@
     symbols<char, int> vars;
     int nvars;
 
- expression<Iterator> expr_def;
- grammar<expression<Iterator> > expr;
+ expression<Iterator> expr;
     rule<Iterator, space_type>
         statement_, statement_list, var_decl, compound_statement
     ;

Modified: branches/proto/v4/libs/spirit/example/qi/calc7/calc7b.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc7/calc7b.hpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc7/calc7b.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
 expression<Iterator>::expression(std::vector<int>& code, symbols<char, int>& vars)
- : code(code)
+ : expression::base_type(expr)
+ , code(code)
   , vars(vars)
   , op(code)
 {

Modified: branches/proto/v4/libs/spirit/example/qi/calc7/calc7c.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/calc7/calc7c.hpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/calc7/calc7c.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,10 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
 statement<Iterator>::statement(std::vector<int>& code)
- : code(code)
+ : statement::base_type(statement_list)
+ , code(code)
   , nvars(0)
- , expr_def(code, vars)
- , expr(expr_def, expr_def.expr)
+ , expr(code, vars)
   , add_var(vars)
   , op(code)
 {

Modified: branches/proto/v4/libs/spirit/example/qi/complex_number.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/complex_number.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/complex_number.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -31,6 +31,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Our complex number parser/compiler
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_complex_number
 template <typename Iterator>
 bool parse_complex(Iterator first, Iterator last, std::complex<double>& c)
 {
@@ -53,6 +54,7 @@
     c = std::complex<double>(rN, iN);
     return r;
 }
+//]
 
 ////////////////////////////////////////////////////////////////////////////
 // Main program

Modified: branches/proto/v4/libs/spirit/example/qi/employee.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/employee.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/employee.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -34,6 +34,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Our employee struct
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_employee_struct
 struct employee
 {
     int age;
@@ -41,9 +42,11 @@
     std::string forename;
     double salary;
 };
+//]
 
 // We need to tell fusion about our employee struct
 // to make it a first-class fusion citizen
+//[tutorial_employee_adapt_struct
 BOOST_FUSION_ADAPT_STRUCT(
     employee,
     (int, age)
@@ -51,14 +54,16 @@
     (std::string, forename)
     (double, salary)
 )
+//]
 
 ///////////////////////////////////////////////////////////////////////////////
 // Our employee parser
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_employee_parser
 template <typename Iterator>
-struct employee_parser : grammar_def<Iterator, employee(), space_type>
+struct employee_parser : grammar<Iterator, employee(), space_type>
 {
- employee_parser()
+ employee_parser() : employee_parser::base_type(start)
     {
         quoted_string %= lexeme['"' >> +(char_ - '"') >> '"'];
 
@@ -76,6 +81,7 @@
     rule<Iterator, std::string(), space_type> quoted_string;
     rule<Iterator, employee(), space_type> start;
 };
+//]
 
 ////////////////////////////////////////////////////////////////////////////
 // Main program
@@ -95,8 +101,7 @@
     typedef std::string::const_iterator iterator_type;
     typedef employee_parser<iterator_type> employee_parser;
 
- employee_parser def; // Our grammar definition
- grammar<employee_parser> g(def); // Our grammar
+ employee_parser g; // Our grammar
     std::string str;
     while (getline(std::cin, str))
     {

Modified: branches/proto/v4/libs/spirit/example/qi/mini_c/mini_c.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/mini_c/mini_c.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/mini_c/mini_c.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,13 +19,12 @@
 template <typename Grammar>
 bool compile(Grammar const& prog, std::string const& expr)
 {
- typedef white_space_def<std::string::const_iterator> white_space_def;
- white_space_def white_; // Our skipper definition
- grammar<white_space_def> white_space(white_); // Our skipper
+ typedef white_space<std::string::const_iterator> white_space;
+ white_space ws; // Our skipper
 
     std::string::const_iterator iter = expr.begin();
     std::string::const_iterator end = expr.end();
- bool r = phrase_parse(iter, end, prog, white_space);
+ bool r = phrase_parse(iter, end, prog, ws);
 
     if (r && iter == end)
     {
@@ -80,14 +79,13 @@
 
     vmachine mach; // Our virtual machine
     std::vector<int> code; // Our VM code
- program def(code); // Our grammar definition
- grammar<program> prog(def); // Our grammar
+ program prog(code); // Our grammar definition
 
     if (::compile(prog, source_code))
     {
         std::string fmain("main");
         std::string::iterator fbegin = fmain.begin();
- function_info* f = def.functions.lookup()->find(fbegin, fmain.end());
+ function_info* f = prog.functions.lookup()->find(fbegin, fmain.end());
         if (f == 0)
         {
             std::cerr << "Error: main function not defined" << std::endl;

Modified: branches/proto/v4/libs/spirit/example/qi/mini_c/mini_c.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/mini_c/mini_c.hpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/mini_c/mini_c.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -246,9 +246,9 @@
 // White-space and comments grammar definition
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct white_space_def : grammar_def<Iterator>
+struct white_space : grammar<Iterator>
 {
- white_space_def()
+ white_space() : white_space::base_type(start)
     {
         start =
                 space // tab/space/cr/lf
@@ -263,14 +263,14 @@
 // Our expression grammar and compiler
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct expression : grammar_def<Iterator, grammar<white_space_def<Iterator> > >
+struct expression : grammar<Iterator, white_space<Iterator> >
 {
     expression(
         std::vector<int>& code
       , symbols<char, int>& vars
       , symbols<char, function_info>& functions);
 
- typedef grammar<white_space_def<Iterator> > white_space;
+ typedef white_space<Iterator> white_space;
 
     rule<Iterator, white_space>
         expr, equality_expr, relational_expr
@@ -290,11 +290,11 @@
 // Our statement grammar and compiler
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct statement : grammar_def<Iterator, grammar<white_space_def<Iterator> > >
+struct statement : grammar<Iterator, white_space<Iterator> >
 {
     statement(std::vector<int>& code, symbols<char, function_info>& functions);
 
- typedef grammar<white_space_def<Iterator> > white_space;
+ typedef white_space<Iterator> white_space;
 
     std::vector<int>& code;
     symbols<char, int> vars;
@@ -302,8 +302,7 @@
     int nvars;
     bool has_return;
 
- expression<Iterator> expr_def;
- grammar<expression<Iterator> > expr;
+ expression<Iterator> expr;
     rule<Iterator, white_space>
         statement_, statement_list, var_decl, compound_statement
       , return_statement;
@@ -323,11 +322,11 @@
 // Our program grammar and compiler
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
-struct program : grammar_def<Iterator, grammar<white_space_def<Iterator> > >
+struct program : grammar<Iterator, white_space<Iterator> >
 {
     program(std::vector<int>& code);
 
- typedef grammar<white_space_def<Iterator> > white_space;
+ typedef white_space<Iterator> white_space;
 
     std::vector<int>& code;
     rule<Iterator, std::string(), white_space> identifier;
@@ -341,8 +340,7 @@
     function_locals;
 
     symbols<char, function_info> functions;
- statement<Iterator> statement_def;
- grammar<statement<Iterator> > statement;
+ statement<Iterator> statement;
 
     rule<Iterator, function_locals, white_space> function;
     boost::phoenix::function<function_adder> add_function;

Modified: branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cb.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cb.hpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cb.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,7 +17,8 @@
     std::vector<int>& code
   , symbols<char, int>& vars
   , symbols<char, function_info>& functions)
- : code(code)
+ : expression::base_type(expr)
+ , code(code)
   , vars(vars)
   , functions(functions)
   , op(code)

Modified: branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cc.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cc.hpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cc.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,11 +15,11 @@
 template <typename Iterator>
 statement<Iterator>::statement(
     std::vector<int>& code, symbols<char, function_info>& functions)
- : code(code)
+ : statement::base_type(statement_list)
+ , code(code)
   , functions(functions)
   , nvars(0)
- , expr_def(code, vars, functions)
- , expr(expr_def, expr_def.expr)
+ , expr(code, vars, functions)
   , add_var(var_adder(vars, nvars))
   , op(code)
 {

Modified: branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cd.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cd.hpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/mini_c/mini_cd.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,16 +14,16 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Iterator>
 program<Iterator>::program(std::vector<int>& code)
- : code(code)
- , statement_def(code, functions)
- , statement(statement_def, statement_def.statement_list)
+ : program::base_type(start)
+ , code(code)
+ , statement(code, functions)
   , add_function(function_adder(functions))
- , state_reset(function_state_reset(code, statement_def.vars, statement_def.nvars))
+ , state_reset(function_state_reset(code, statement.vars, statement.nvars))
   , op(code)
 {
- bool& has_return = statement_def.has_return;
- int& nvars = statement_def.nvars;
- boost::phoenix::function<var_adder>& add_var = statement_def.add_var;
+ bool& has_return = statement.has_return;
+ int& nvars = statement.nvars;
+ boost::phoenix::function<var_adder>& add_var = statement.add_var;
 
     identifier %=
         raw[lexeme[alpha >> *(alnum | '_')]]

Modified: branches/proto/v4/libs/spirit/example/qi/mini_xml1.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/mini_xml1.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/mini_xml1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -41,6 +41,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Our mini XML tree representation
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_xml1_structures
 struct mini_xml;
 
 typedef
@@ -55,14 +56,17 @@
     std::string name; // tag name
     std::vector<mini_xml_node> children; // children
 };
+//]
 
 // We need to tell fusion about our mini_xml struct
 // to make it a first-class fusion citizen
+//[tutorial_xml1_adapt_structures
 BOOST_FUSION_ADAPT_STRUCT(
     mini_xml,
     (std::string, name)
     (std::vector<mini_xml_node>, children)
 )
+//]
 
 ///////////////////////////////////////////////////////////////////////////////
 // Print out the mini xml tree
@@ -127,16 +131,18 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Our mini XML grammar definition
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_xml1_grammar
 template <typename Iterator>
-struct mini_xml_def : grammar_def<Iterator, mini_xml(), space_type>
+struct mini_xml_grammar : grammar<Iterator, mini_xml(), space_type>
 {
- mini_xml_def()
+ mini_xml_grammar() : mini_xml_grammar::base_type(xml)
     {
         text = lexeme[+(char_ - '<') [_val += _1]];
         node = (xml | text) [_val = _1];
 
         start_tag =
                 '<'
+ >> !char_('/')
>> lexeme[+(char_ - '>') [_val += _1]]
>> '>'
         ;
@@ -160,6 +166,7 @@
     rule<Iterator, std::string(), space_type> start_tag;
     rule<Iterator, void(std::string), space_type> end_tag;
 };
+//]
 
 ///////////////////////////////////////////////////////////////////////////////
 // Main program
@@ -193,9 +200,8 @@
         std::istream_iterator<char>(),
         std::back_inserter(storage));
 
- typedef mini_xml_def<std::string::const_iterator> mini_xml_def;
- mini_xml_def def; // Our grammar definition
- grammar<mini_xml_def> xml(def, def.xml); // Our grammar
+ typedef mini_xml_grammar<std::string::const_iterator> mini_xml_grammar;
+ mini_xml_grammar xml; // Our grammar
     mini_xml ast; // our tree
 
     std::string::const_iterator iter = storage.begin();

Modified: branches/proto/v4/libs/spirit/example/qi/mini_xml2.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/mini_xml2.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/mini_xml2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -127,17 +127,20 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Our mini XML grammar definition
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_xml2_grammar
 template <typename Iterator>
-struct mini_xml_def
- : grammar_def<Iterator, mini_xml(), locals<std::string>, space_type>
+struct mini_xml_grammar
+ : grammar<Iterator, mini_xml(), locals<std::string>, space_type>
 {
- mini_xml_def()
+ mini_xml_grammar()
+ : mini_xml_grammar::base_type(xml)
     {
         text %= lexeme[+(char_ - '<')];
         node %= xml | text;
 
         start_tag %=
                 '<'
+ >> !char_('/')
>> lexeme[+(char_ - '>')]
>> '>'
         ;
@@ -161,6 +164,7 @@
     rule<Iterator, std::string(), space_type> start_tag;
     rule<Iterator, void(std::string), space_type> end_tag;
 };
+//]
 
 ///////////////////////////////////////////////////////////////////////////////
 // Main program
@@ -194,9 +198,8 @@
         std::istream_iterator<char>(),
         std::back_inserter(storage));
 
- typedef mini_xml_def<std::string::const_iterator> mini_xml_def;
- mini_xml_def def; // Our grammar definition
- grammar<mini_xml_def> xml(def, def.xml); // Our grammar
+ typedef mini_xml_grammar<std::string::const_iterator> mini_xml_grammar;
+ mini_xml_grammar xml; // Our grammar
     mini_xml ast; // our tree
 
     std::string::const_iterator iter = storage.begin();

Deleted: branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/1.xml
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/1.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1 +0,0 @@
-<foo></foo>
\ No newline at end of file

Deleted: branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/2.xml
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/2.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1 +0,0 @@
-<foo><bar></bar></foo>
\ No newline at end of file

Deleted: branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/3.xml
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/mini_xml_samples/3.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,5 +0,0 @@
-<foo>
- <bar>bar 1</bar>
- <bar>bar 2</bar>
- <bar>bar 3</bar>
-</foo>
\ No newline at end of file

Deleted: branches/proto/v4/libs/spirit/example/qi/num_list.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/num_list.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,100 +0,0 @@
-/*=============================================================================
- Copyright (c) 2002-2007 Joel de Guzman
-
- Distributed under the 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 sample demontrates a parser for a comma separated list of numbers.
-// The numbers are inserted in a vector using phoenix.
-//
-// [ JDG May 10, 2002 ] spirit1
-// [ JDG March 24, 2007 ] spirit2
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include <boost/config/warning_disable.hpp>
-#include <boost/spirit/include/qi.hpp>
-#include <boost/spirit/include/phoenix_core.hpp>
-#include <boost/spirit/include/phoenix_operator.hpp>
-#include <boost/spirit/include/phoenix_stl.hpp>
-
-#include <iostream>
-#include <string>
-#include <vector>
-
-using namespace boost::phoenix;
-using namespace boost::spirit;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::ascii;
-using namespace boost::spirit::arg_names;
-
-///////////////////////////////////////////////////////////////////////////////
-// Our number list compiler
-///////////////////////////////////////////////////////////////////////////////
-template <typename Iterator>
-bool parse_numbers(Iterator first, Iterator last, std::vector<double>& v)
-{
- bool r = phrase_parse(first, last,
-
- // Begin grammar
- (
- double_[push_back(ref(v), _1)]
- >> *(',' >> double_[push_back(ref(v), _1)])
- )
- ,
- // End grammar
-
- space);
-
- if (first != last) // fail if we did not get a full match
- return false;
- return r;
-}
-
-////////////////////////////////////////////////////////////////////////////
-// Main program
-////////////////////////////////////////////////////////////////////////////
-int
-main()
-{
- std::cout << "/////////////////////////////////////////////////////////\n\n";
- std::cout << "\t\tA comma separated list parser for Spirit...\n\n";
- std::cout << "/////////////////////////////////////////////////////////\n\n";
-
- std::cout << "Give me a comma separated list of numbers.\n";
- std::cout << "The numbers will be inserted in a vector of numbers\n";
- std::cout << "Type [q or Q] to quit\n\n";
-
- std::string str;
- while (getline(std::cin, str))
- {
- if (str.empty() || str[0] == 'q' || str[0] == 'Q')
- break;
-
- std::vector<double> v;
- if (parse_numbers(str.begin(), str.end(), v))
- {
- std::cout << "-------------------------\n";
- std::cout << "Parsing succeeded\n";
- std::cout << str << " Parses OK: " << std::endl;
-
- for (std::vector<double>::size_type i = 0; i < v.size(); ++i)
- std::cout << i << ": " << v[i] << std::endl;
-
- std::cout << "\n-------------------------\n";
- }
- else
- {
- std::cout << "-------------------------\n";
- std::cout << "Parsing failed\n";
- std::cout << "-------------------------\n";
- }
- }
-
- std::cout << "Bye... :-) \n\n";
- return 0;
-}
-
-

Modified: branches/proto/v4/libs/spirit/example/qi/num_list2.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/num_list2.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/num_list2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -33,6 +33,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Our number list compiler
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_numlist2
 template <typename Iterator>
 bool parse_numbers(Iterator first, Iterator last, std::vector<double>& v)
 {
@@ -40,7 +41,8 @@
 
         // Begin grammar
         (
- double_[push_back(ref(v), _1)] % ','
+ double_[push_back(ref(v), _1)]
+ >> *(',' >> double_[push_back(ref(v), _1)])
         )
         ,
         // End grammar
@@ -51,6 +53,7 @@
         return false;
     return r;
 }
+//]
 
 ////////////////////////////////////////////////////////////////////////////
 // Main program

Modified: branches/proto/v4/libs/spirit/example/qi/num_list3.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/num_list3.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/num_list3.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -33,6 +33,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Our number list compiler
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_numlist3
 template <typename Iterator>
 bool parse_numbers(Iterator first, Iterator last, std::vector<double>& v)
 {
@@ -40,17 +41,18 @@
 
         // Begin grammar
         (
- double_ % ','
+ double_[push_back(ref(v), _1)] % ','
         )
         ,
         // End grammar
 
- v, space);
+ space);
 
     if (first != last) // fail if we did not get a full match
         return false;
     return r;
 }
+//]
 
 ////////////////////////////////////////////////////////////////////////////
 // Main program

Modified: branches/proto/v4/libs/spirit/example/qi/roman.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/roman.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/roman.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -29,9 +29,10 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 // Parse roman hundreds (100..900) numerals using the symbol table.
-// Notice that the data associated with each slot is passed
-// to attached semantic actions.
+// Notice that the data associated with each slot is the parser's attribute
+// (which is passed to attached semantic actions).
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_roman_hundreds
 struct hundreds_ : symbols<char, unsigned>
 {
     hundreds_()
@@ -50,10 +51,12 @@
     }
 
 } hundreds;
+//]
 
 ///////////////////////////////////////////////////////////////////////////////
 // Parse roman tens (10..90) numerals using the symbol table.
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_roman_tens
 struct tens_ : symbols<char, unsigned>
 {
     tens_()
@@ -72,10 +75,12 @@
     }
 
 } tens;
+//]
 
 ///////////////////////////////////////////////////////////////////////////////
 // Parse roman ones (1..9) numerals using the symbol table.
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_roman_ones
 struct ones_ : symbols<char, unsigned>
 {
     ones_()
@@ -94,29 +99,35 @@
     }
 
 } ones;
+//]
 
 ///////////////////////////////////////////////////////////////////////////////
 // roman (numerals) grammar
+//
+// Note the use of the || operator. The expression
+// a || b reads match a or b and in sequence. Try
+// defining the roman numerals grammar in YACC or
+// PCCTS. Spirit rules! :-)
 ///////////////////////////////////////////////////////////////////////////////
+//[tutorial_roman_grammar
 template <typename Iterator>
-struct roman : grammar_def<Iterator, unsigned()>
+struct roman : grammar<Iterator, unsigned()>
 {
- roman()
+ roman() : roman::base_type(start)
     {
- start
- = +char_('M') [_val += 1000]
- || hundreds [_val += _1]
- || tens [_val += _1]
- || ones [_val += _1];
-
- // Note the use of the || operator. The expression
- // a || b reads match a or b and in sequence. Try
- // defining the roman numerals grammar in YACC or
- // PCCTS. Spirit rules! :-)
+ start = eps [_val = 0] >>
+ (
+ +char_('M') [_val += 1000]
+ || hundreds [_val += _1]
+ || tens [_val += _1]
+ || ones [_val += _1]
+ )
+ ;
     }
 
     rule<Iterator, unsigned()> start;
 };
+//]
 
 ///////////////////////////////////////////////////////////////////////////////
 // Main program
@@ -132,8 +143,7 @@
     typedef std::string::const_iterator iterator_type;
     typedef roman<iterator_type> roman;
 
- roman def; // Our grammar definition
- grammar<roman> roman_parser(def); // Our grammar
+ roman roman_parser; // Our grammar
 
     std::string str;
     unsigned result;
@@ -144,7 +154,8 @@
 
         std::string::const_iterator iter = str.begin();
         std::string::const_iterator end = str.end();
- bool r = parse(iter, end, roman_parser[ref(result) = _1]);
+ //[tutorial_roman_grammar_parse
+ bool r = parse(iter, end, roman_parser, result);
 
         if (r && iter == end)
         {
@@ -161,6 +172,7 @@
             std::cout << "stopped at: \": " << rest << "\"\n";
             std::cout << "-------------------------\n";
         }
+ //]
     }
 
     std::cout << "Bye... :-) \n\n";

Modified: branches/proto/v4/libs/spirit/example/qi/sum.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/example/qi/sum.cpp (original)
+++ branches/proto/v4/libs/spirit/example/qi/sum.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,22 +14,27 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include <boost/config/warning_disable.hpp>
+//[tutorial_adder_includes
 #include <boost/spirit/include/qi.hpp>
 #include <boost/spirit/include/phoenix_core.hpp>
 #include <boost/spirit/include/phoenix_operator.hpp>
-
 #include <iostream>
 #include <string>
+//]
 
+//[tutorial_adder_using
 using namespace boost::phoenix;
 using namespace boost::spirit;
 using namespace boost::spirit::qi;
 using namespace boost::spirit::ascii;
 using namespace boost::spirit::arg_names;
+//]
 
 ///////////////////////////////////////////////////////////////////////////////
 // Our adder
 ///////////////////////////////////////////////////////////////////////////////
+
+//[tutorial_adder
 template <typename Iterator>
 bool adder(Iterator first, Iterator last, double& n)
 {
@@ -48,6 +53,7 @@
         return false;
     return r;
 }
+//]
 
 ////////////////////////////////////////////////////////////////////////////
 // Main program

Modified: branches/proto/v4/libs/spirit/phoenix/doc/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/Jamfile.v2 (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,11 @@
+#==============================================================================
+# Copyright (c) 2003, 2005 Joel de Guzman
+#
+# 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)
+#==============================================================================
+
 project boost/libs/spirit/doc/phoenix/doc ;
 import boostbook : boostbook ;
 using quickbook ;
@@ -8,5 +16,6 @@
     :
         <xsl:param>boost.root=../../../../..
         <xsl:param>boost.libraries=../../../../libraries.htm
+ <xsl:param>html.stylesheet=../../../../../doc/html/boostbook.css
     ;
 

Deleted: branches/proto/v4/libs/spirit/phoenix/doc/html/boostbook.css
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/boostbook.css 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,511 +0,0 @@
-/*=============================================================================
- Copyright (c) 2004 Joel de Guzman
- http://spirit.sourceforge.net/
-
- 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)
-=============================================================================*/
-
-/*=============================================================================
- Body defaults
-=============================================================================*/
-
- body
- {
- margin: 1em;
- font-family: sans-serif;
- }
-
-/*=============================================================================
- Paragraphs
-=============================================================================*/
-
- p
- {
- text-align: left;
- font-size: 10pt;
- line-height: 1.15;
- }
-
-/*=============================================================================
- Program listings
-=============================================================================*/
-
- /* Code on paragraphs */
- p tt.computeroutput
- {
- font-size: 9pt;
- }
-
- pre.synopsis
- {
- font-size: 90%;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.5pc 0.5pc;
- }
-
- .programlisting,
- .screen
- {
- font-size: 9pt;
- display: block;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.5pc 0.5pc;
- }
-
- /* Program listings in tables don't get borders */
- td .programlisting,
- td .screen
- {
- margin: 0pc 0pc 0pc 0pc;
- padding: 0pc 0pc 0pc 0pc;
- }
-
-/*=============================================================================
- Headings
-=============================================================================*/
-
- h1, h2, h3, h4, h5, h6
- {
- text-align: left;
- margin: 1em 0em 0.5em 0em;
- font-weight: bold;
- }
-
- h1 { font: 140% }
- h2 { font: bold 140% }
- h3 { font: bold 130% }
- h4 { font: bold 120% }
- h5 { font: italic 110% }
- h6 { font: italic 100% }
-
- /* Top page titles */
- title,
- h1.title,
- h2.title
- h3.title,
- h4.title,
- h5.title,
- h6.title,
- .refentrytitle
- {
- font-weight: bold;
- margin-bottom: 1pc;
- }
-
- h1.title { font-size: 140% }
- h2.title { font-size: 140% }
- h3.title { font-size: 130% }
- h4.title { font-size: 120% }
- h5.title { font-size: 110% }
- h6.title { font-size: 100% }
-
- .section h1
- {
- margin: 0em 0em 0.5em 0em;
- font-size: 140%;
- }
-
- .section h2 { font-size: 140% }
- .section h3 { font-size: 130% }
- .section h4 { font-size: 120% }
- .section h5 { font-size: 110% }
- .section h6 { font-size: 100% }
-
- /* Code on titles */
- h1 tt.computeroutput { font-size: 140% }
- h2 tt.computeroutput { font-size: 140% }
- h3 tt.computeroutput { font-size: 130% }
- h4 tt.computeroutput { font-size: 120% }
- h5 tt.computeroutput { font-size: 110% }
- h6 tt.computeroutput { font-size: 100% }
-
-/*=============================================================================
- Author
-=============================================================================*/
-
- h3.author
- {
- font-size: 100%
- }
-
-/*=============================================================================
- Lists
-=============================================================================*/
-
- li
- {
- font-size: 10pt;
- line-height: 1.3;
- }
-
- /* Unordered lists */
- ul
- {
- text-align: left;
- }
-
- /* Ordered lists */
- ol
- {
- text-align: left;
- }
-
-/*=============================================================================
- Links
-=============================================================================*/
-
- a
- {
- text-decoration: none; /* no underline */
- }
-
- a:hover
- {
- text-decoration: underline;
- }
-
-/*=============================================================================
- Spirit style navigation
-=============================================================================*/
-
- .spirit-nav
- {
- text-align: right;
- }
-
- .spirit-nav a
- {
- color: white;
- padding-left: 0.5em;
- }
-
- .spirit-nav img
- {
- border-width: 0px;
- }
-
-/*=============================================================================
- Table of contents
-=============================================================================*/
-
- .toc
- {
- margin: 1pc 4% 0pc 4%;
- padding: 0.1pc 1pc 0.1pc 1pc;
- font-size: 80%;
- line-height: 1.15;
- }
-
- .boost-toc
- {
- float: right;
- padding: 0.5pc;
- }
-
-/*=============================================================================
- Tables
-=============================================================================*/
-
- .table-title,
- div.table p.title
- {
- margin-left: 4%;
- padding-right: 0.5em;
- padding-left: 0.5em;
- }
-
- .informaltable table,
- .table table
- {
- width: 92%;
- margin-left: 4%;
- margin-right: 4%;
- }
-
- div.informaltable table,
- div.table table
- {
- padding: 4px;
- }
-
- /* Table Cells */
- div.informaltable table tr td,
- div.table table tr td
- {
- padding: 0.5em;
- text-align: left;
- font-size: 9pt;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- padding: 0.5em 0.5em 0.5em 0.5em;
- border: 1pt solid white;
- font-size: 80%;
- }
-
-/*=============================================================================
- Blurbs
-=============================================================================*/
-
- div.note,
- div.tip,
- div.important,
- div.caution,
- div.warning,
- p.blurb
- {
- font-size: 9pt; /* A little bit smaller than the main text */
- line-height: 1.2;
- display: block;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.5pc 0.5pc;
- }
-
- p.blurb img
- {
- padding: 1pt;
- }
-
-/*=============================================================================
- Variable Lists
-=============================================================================*/
-
- /* Make the terms in definition lists bold */
- div.variablelist dl dt,
- span.term
- {
- font-weight: bold;
- font-size: 10pt;
- }
-
- div.variablelist table tbody tr td
- {
- text-align: left;
- vertical-align: top;
- padding: 0em 2em 0em 0em;
- font-size: 10pt;
- margin: 0em 0em 0.5em 0em;
- line-height: 1;
- }
-
- div.variablelist dl dt
- {
- margin-bottom: 0.2em;
- }
-
- div.variablelist dl dd
- {
- margin: 0em 0em 0.5em 2em;
- font-size: 10pt;
- }
-
- div.variablelist table tbody tr td p,
- div.variablelist dl dd p
- {
- margin: 0em 0em 0.5em 0em;
- line-height: 1;
- }
-
-/*=============================================================================
- Misc
-=============================================================================*/
-
- /* Title of books and articles in bibliographies */
- span.title
- {
- font-style: italic;
- }
-
- span.underline
- {
- text-decoration: underline;
- }
-
- span.strikethrough
- {
- text-decoration: line-through;
- }
-
- /* Copyright, Legal Notice */
- div div.legalnotice p
- {
- text-align: left
- }
-
-/*=============================================================================
- Colors
-=============================================================================*/
-
- @media screen
- {
- /* Links */
- a
- {
- color: #005a9c;
- }
-
- a:visited
- {
- color: #9c5a9c;
- }
-
- h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
- h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
- h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
- {
- text-decoration: none; /* no underline */
- color: #000000;
- }
-
- /* Syntax Highlighting */
- .keyword { color: #0000AA; }
- .identifier { color: #000000; }
- .special { color: #707070; }
- .preprocessor { color: #402080; }
- .char { color: teal; }
- .comment { color: #800000; }
- .string { color: teal; }
- .number { color: teal; }
- .white_bkd { background-color: #FFFFFF; }
- .dk_grey_bkd { background-color: #999999; }
-
- /* Copyright, Legal Notice */
- .copyright
- {
- color: #666666;
- font-size: small;
- }
-
- div div.legalnotice p
- {
- color: #666666;
- }
-
- /* Program listing */
- pre.synopsis
- {
- border: 1px solid #DCDCDC;
- }
-
- .programlisting,
- .screen
- {
- border: 1px solid #DCDCDC;
- }
-
- td .programlisting,
- td .screen
- {
- border: 0px solid #DCDCDC;
- }
-
- /* Blurbs */
- div.note,
- div.tip,
- div.important,
- div.caution,
- div.warning,
- p.blurb
- {
- border: 1px solid #DCDCDC;
- }
-
- /* Table of contents */
- .toc
- {
- border: 1px solid #DCDCDC;
- }
-
- /* Tables */
- div.informaltable table tr td,
- div.table table tr td
- {
- border: 1px solid #DCDCDC;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- background-color: #F0F0F0;
- border: 1px solid #DCDCDC;
- }
-
- /* Misc */
- span.highlight
- {
- color: #00A000;
- }
- }
-
- @media print
- {
- /* Links */
- a
- {
- color: black;
- }
-
- a:visited
- {
- color: black;
- }
-
- .spirit-nav
- {
- display: none;
- }
-
- /* Program listing */
- pre.synopsis
- {
- border: 1px solid gray;
- }
-
- .programlisting,
- .screen
- {
- border: 1px solid gray;
- }
-
- td .programlisting,
- td .screen
- {
- border: 0px solid #DCDCDC;
- }
-
- /* Table of contents */
- .toc
- {
- border: 1px solid gray;
- }
-
- .informaltable table,
- .table table
- {
- border: 1px solid gray;
- border-collapse: collapse;
- }
-
- /* Tables */
- div.informaltable table tr td,
- div.table table tr td
- {
- border: 1px solid gray;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- border: 1px solid gray;
- }
-
- /* Misc */
- span.highlight
- {
- font-weight: bold;
- }
- }

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/index.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/index.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,22 +2,22 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Chapter 1. Phoenix 2.0</title>
-<link rel="stylesheet" href="boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="next" href="phoenix/introduction.html" title="Introduction">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
-<div class="spirit-nav"><a accesskey="n" href="phoenix/introduction.html"><img src="images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="phoenix/introduction.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a></div>
 <div class="chapter" lang="en">
 <div class="titlepage"><div>
 <div><h2 class="title">
@@ -31,7 +31,7 @@
 <div><p class="copyright">Copyright © 2002-2005 Joel
       de Guzman, Dan Marsden</p></div>
 <div><div class="legalnotice">
-<a name="id442840"></a><p>
+<a name="id385274"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -50,7 +50,8 @@
 <dt><span class="section">Composites</span></dt>
 <dt><span class="section">Lazy Operators</span></dt>
 <dt><span class="section">Lazy Statements</span></dt>
-<dt><span class="section">Construct, New, Delete, Casts</span></dt>
+<dt><span class="section"><a href="phoenix/starter_kit.html#phoenix.starter_kit.construct__new__delete__casts">Construct,
+ New, Delete, Casts</a></span></dt>
 <dt><span class="section">Lazy Functions</span></dt>
 <dt><span class="section">More</span></dt>
 </dl></dd>
@@ -80,7 +81,8 @@
 <dd><dl>
 <dt><span class="section">Actors In Detail</span></dt>
 <dt><span class="section">Actor Example</span></dt>
-<dt><span class="section">Composites In Detail</span></dt>
+<dt><span class="section"><a href="phoenix/inside_phoenix.html#phoenix.inside_phoenix.composites_in_detail">Composites
+ In Detail</a></span></dt>
 <dt><span class="section">Composing</span></dt>
 <dt><span class="section">Extending</span></dt>
 </dl></dd>
@@ -91,25 +93,37 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.preface"></a>Preface</h2></div></div></div>
-<div class="blockquote"><blockquote class="blockquote"><p>
- <span class="emphasis"><em>Functional programming is so called because a program consists
- entirely of functions. The main program itself is written as a function which
- receives the program's input as its argument and delivers the program's output
- as its result. Typically the main function is defined in terms of other functions,
- which in turn are defined in terms of still more functions until at the bottom
- level the functions are language primitives.</em></span>
- </p></blockquote></div>
-<div class="blockquote"><blockquote class="blockquote"><p>
- <span class="bold"><b>John Hughes</b></span>-- <span class="emphasis"><em>Why Functional Programming
- Matters</em></span>
- </p></blockquote></div>
+<a name="phoenix.preface"></a>Preface</h2></div></div></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <span class="emphasis"><em>Functional programming is so called because a program consists
+ entirely of functions. The main program itself is written as a function
+ which receives the program's input as its argument and delivers the program's
+ output as its result. Typically the main function is defined in terms of
+ other functions, which in turn are defined in terms of still more functions
+ until at the bottom level the functions are language primitives.</em></span>
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <span class="bold"><b>John Hughes</b></span>-- <span class="emphasis"><em>Why Functional
+ Programming Matters</em></span>
+ </p>
+<p>
+ </p>
+</blockquote></div>
 <p>
       <span class="inlinemediaobject"><img src="images/lambda_cpp.png" alt="lambda_cpp"></span>
     </p>
 <a name="phoenix.preface.description"></a><h2>
-<a name="id372685"></a>
- Description
+<a name="id385804"></a>
+ Description
     </h2>
 <p>
       Phoenix enables Functional Programming (FP) in C++. The design and implementation
@@ -128,8 +142,8 @@
       The library is organized in highly independent modules and layers.
     </p>
 <a name="phoenix.preface.how_to_use_this_manual"></a><h2>
-<a name="id372541"></a>
- How to use this manual
+<a name="id455895"></a>
+ How to use this manual
     </h2>
 <p>
       The Phoenix library is organized in logical modules. This documentation provides
@@ -150,41 +164,83 @@
       Some icons are used to mark certain topics indicative of their relevance. These
       icons precede some text to indicate:
     </p>
-<div class="informaltable">
-<h4>
-<a name="id372571"></a>
- <span class="table-title">Icons</span>
- </h4>
-<table class="table">
+<div class="table">
+<a name="id455925"></a><p class="title"><b>Table 1.1. Icons</b></p>
+<table class="table" summary="Icons">
 <colgroup>
 <col>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Icon</th>
-<th>Name</th>
-<th>Meaning</th>
+<th>
+ <p>
+ Icon
+ </p>
+ </th>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Meaning
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
-<td><span class="inlinemediaobject"><img src="images/note.png" alt="note"></span></td>
-<td>Note</td>
-<td>Information provided
- is auxiliary but will give the reader a deeper insight into a specific
- topic. May be skipped.</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="images/note.png" alt="note"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Note
+ </p>
+ </td>
+<td>
+ <p>
+ Information provided is auxiliary but will give the reader a deeper insight
+ into a specific topic. May be skipped.
+ </p>
+ </td>
 </tr>
 <tr>
-<td><span class="inlinemediaobject"><img src="images/alert.png" alt="alert"></span></td>
-<td>Alert</td>
-<td>Information provided
- is of utmost importance.</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="images/alert.png" alt="alert"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Alert
+ </p>
+ </td>
+<td>
+ <p>
+ Information provided is of utmost importance.
+ </p>
+ </td>
 </tr>
 <tr>
-<td><span class="inlinemediaobject"><img src="images/tip.png" alt="tip"></span></td>
-<td>Tip</td>
-<td>A potentially useful
- and helpful piece of information.</td>
+<td>
+ <p>
+ <span class="inlinemediaobject"><img src="images/tip.png" alt="tip"></span>
+ </p>
+ </td>
+<td>
+ <p>
+ Tip
+ </p>
+ </td>
+<td>
+ <p>
+ A potentially useful and helpful piece of information.
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
@@ -195,8 +251,8 @@
       Repository</a>.
     </p>
 <a name="phoenix.preface.support"></a><h2>
-<a name="id374497"></a>
- Support
+<a name="id387296"></a>
+ Support
     </h2>
 <p>
       Please direct all questions to Spirit's mailing list. You can subscribe to
@@ -209,16 +265,16 @@
       The news group mirrors the mailing list. Here is a link to the archives: http://news.gmane.org/gmane.comp.parsers.spirit.general.
     </p>
 <a name="phoenix.preface._emphasis_role__bold___emphasis____to_my_dear_daughter__phoenix__emphasis___emphasis_"></a><h2>
-<a name="id374555"></a>
- <span class="bold"><b><span class="emphasis"><em>...To my dear daughter, Phoenix</em></span></b></span>
+<a name="id387363"></a>
+ ...To my dear daughter, Phoenix
     </h2>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><small><p>Last revised: June 09, 2006 at 13:58:55 GMT</p></small></td>
-<td align="right"><small></small></td>
+<td align="left"><p><small>Last revised: July 23, 2008 at 17:24:10 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
-<div class="spirit-nav"><a accesskey="n" href="phoenix/introduction.html"><img src="images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="phoenix/introduction.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a></div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/acknowledgement.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/acknowledgement.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/acknowledgement.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Acknowledgement</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,21 +10,21 @@
 <link rel="next" href="references.html" title="References">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="wrap_up.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="references.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="wrap_up.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="references.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.acknowledgement"></a>Acknowledgement</h2></div></div></div>
+<a name="phoenix.acknowledgement"></a>Acknowledgement</h2></div></div></div>
 <div class="orderedlist"><ol type="1">
 <li>
         Hartmut Kaiser implemented the original lazy casts and constructors based
@@ -76,12 +76,16 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="wrap_up.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="references.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="wrap_up.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="references.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/actors.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/actors.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/actors.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Actors</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,30 +10,35 @@
 <link rel="next" href="primitives.html" title="Primitives">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="organization.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="primitives.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="organization.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitives.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.actors"></a>Actors</h2></div></div></div>
+<a name="phoenix.actors"></a>Actors</h2></div></div></div>
 <p>
       The <tt class="computeroutput"><span class="identifier">Actor</span></tt> is the main concept
       behind the library. Actors are function objects. An actor can accept 0 to
       <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt> arguments.
     </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> You can set <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>,
- the predefined maximum arity an actor can take. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt> is set to 10.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ You can set <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>,
+ the predefined maximum arity an actor can take. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt> is set to 10.
+ </p></td></tr>
 </table></div>
 <p>
       Phoenix supplies an <tt class="computeroutput"><span class="identifier">actor</span></tt> class
@@ -71,12 +76,16 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="organization.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="primitives.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="organization.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitives.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/algorithm.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/algorithm.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/algorithm.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Algorithm</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,23 +10,23 @@
 <link rel="next" href="inside_phoenix.html" title="Inside Phoenix">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="container.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="inside_phoenix.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="container.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="inside_phoenix.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.algorithm"></a>Algorithm</h2></div></div></div>
+<a name="phoenix.algorithm"></a>Algorithm</h2></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
       The algorithm module provides wrappers for the standard algorithms in the
@@ -39,9 +39,9 @@
       library. The different algorithm classes can be included using the headers:
     </p>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">stl</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">iteration</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">stl</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">transformation</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">stl</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">querying</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">stl</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">iteration</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">stl</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">transformation</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">stl</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">querying</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
       The functions of the algorithm module take ranges as arguments where appropriate.
@@ -55,7 +55,7 @@
 <pre class="programlisting">
 <span class="keyword">int</span> <span class="identifier">array</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">};</span>
 <span class="keyword">int</span> <span class="identifier">output</span><span class="special">[</span><span class="number">3</span><span class="special">];</span>
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span><span class="identifier">array</span><span class="special">,</span> <span class="identifier">array</span> <span class="special">+</span> <span class="number">3</span><span class="special">,</span> <span class="identifier">output</span><span class="special">);</span> <span class="comment">// We have to provide iterators
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">copy</span><span class="special">(</span><span class="identifier">array</span><span class="special">,</span> <span class="identifier">array</span> <span class="special">+</span> <span class="number">3</span><span class="special">,</span> <span class="identifier">output</span><span class="special">);</span> <span class="comment">// We have to provide iterators
 </span> <span class="comment">// to both the start and end of array
 </span></pre>
 <p>
@@ -64,7 +64,7 @@
 <pre class="programlisting">
 <span class="keyword">int</span> <span class="identifier">array</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">};</span>
 <span class="keyword">int</span> <span class="identifier">output</span><span class="special">[</span><span class="number">3</span><span class="special">];</span>
-<span class="identifier">copy</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">)(</span><span class="identifier">array</span><span class="special">,</span> <span class="identifier">output</span><span class="special">);</span> <span class="comment">// Notice only 2 arguments, the end of
+<span class="identifier">copy</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">)(</span><span class="identifier">array</span><span class="special">,</span> <span class="identifier">output</span><span class="special">);</span> <span class="comment">// Notice only 2 arguments, the end of
 </span> <span class="comment">// array is established automatically
 </span></pre>
 <p>
@@ -76,320 +76,866 @@
       The following tables describe the different categories of algorithms, and their
       semantics.
     </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Arguments in brackets denote optional parameters.</td></tr></tbody>
-</table></div>
-<div class="informaltable">
-<h4>
-<a name="id471284"></a>
- <span class="table-title">Iteration Algorithms</span>
- </h4>
-<table class="table">
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Arguments in brackets denote optional parameters.
+ </p></div>
+<div class="table">
+<a name="id486434"></a><p class="title"><b>Table 1.7. Iteration Algorithms</b></p>
+<table class="table" summary="Iteration Algorithms">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Function</th>
-<th>stl Semantics</th>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ stl Semantics
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
-<td><tt class="computeroutput"><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">accumulate</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">accumulate</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">c</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">accumulate</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">accumulate</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
 </div>
-<div class="informaltable">
-<h4>
-<a name="id471564"></a>
- <span class="table-title">Querying Algorithms</span>
- </h4>
-<table class="table">
+<div class="table">
+<a name="id486741"></a><p class="title"><b>Table 1.8. Querying Algorithms</b></p>
+<table class="table" summary="Querying Algorithms">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Function</th>
-<th>stl Semantics</th>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ stl Semantics
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
-<td><tt class="computeroutput"><span class="identifier">find</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">find</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">find_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">find_if</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">find_end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">find_end</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">find_first_of</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">find_first_of</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">adjacent_find</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">adjacent_find</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">count</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">count</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">count_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">count_if</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">mismatch</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">i</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">mismatch</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">i</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">equal</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">i</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">equal</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">i</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">search</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">search</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">lower_bound</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">lower_bound</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">upper_bound</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">upper_bound</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">equal_range</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">equal_range</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">binary_search</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">binary_search</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">includes</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">includes</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">min_element</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">min_element</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">max_element</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">max_element</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">lexicographical_compare</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">lexicographical_compare</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">find</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">find</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">find_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">find_if</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">find_end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">find_end</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">find_first_of</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">find_first_of</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">adjacent_find</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">adjacent_find</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">count</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">count</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">count_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">count_if</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">distance</span><span class="special">(</span><span class="identifier">r</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">distance</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">))</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">mismatch</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">i</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">mismatch</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">i</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">equal</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">i</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">equal</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">i</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">search</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">search</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">lower_bound</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">lower_bound</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">upper_bound</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">upper_bound</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">equal_range</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">equal_range</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">binary_search</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">binary_search</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">includes</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">includes</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">min_element</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">min_element</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">max_element</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">max_element</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">lexicographical_compare</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">lexicographical_compare</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
 </div>
-<div class="informaltable">
-<h4>
-<a name="id473941"></a>
- <span class="table-title">Transformation Algorithms</span>
- </h4>
-<table class="table">
+<div class="table">
+<a name="id489465"></a><p class="title"><b>Table 1.9. Transformation Algorithms</b></p>
+<table class="table" summary="Transformation Algorithms">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Function</th>
-<th>stl Semantics</th>
+<th>
+ <p>
+ Function
+ </p>
+ </th>
+<th>
+ <p>
+ stl Semantics
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
-<td><tt class="computeroutput"><span class="identifier">copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">copy_backward</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">copy_backward</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">transform</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">transform</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">transform</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">transform</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">replace</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">replace</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">replace_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">replace</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">replace_copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">replace_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">replace_copy_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">replace_copy_if</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">fill</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">fill</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">fill_n</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">fill_n</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">generate</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">generate</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">generate_n</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">generate_n</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">remove</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">remove</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">remove_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">remove_if</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">remove_copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">remove_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">remove_copy_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">remove_copy_if</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">unique</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">unique</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">unique_copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">unique_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">reverse</span><span class="special">(</span><span class="identifier">r</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">reverse</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">))</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">reverse_copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">reverse_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">rotate</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">m</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">rotate</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">))</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">rotate_copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">o</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">rotate_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">random_shuffle</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">random_shuffle</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">partition</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">partition</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">stable_partition</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">stable_partition</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">sort</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">sort</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">stable_sort</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">stable_sort</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">partial_sort</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">m</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">partial_sort</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">partial_sort_copy</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">partial_sort_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">nth_element</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">n</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">nth_element</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">merge</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">merge</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">inplace_merge</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">m</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">inplace_merge</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">set_union</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">set_union</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">set_intersection</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">set_intersection</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">set_difference</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">set_difference</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">set_symmetric_difference</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">set_symmetric_difference</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">push_heap</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">push_heap</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">pop_heap</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">pop_heap</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">make_heap</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">make_heap</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">sort_heap</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">sort_heap</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">next_permutation</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">next_permutation</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">prev_permutation</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">prev_permutation</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">inner_product</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f1</span><span class="special">,</span> <span class="identifier">f2</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">inner_product</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f1</span><span class="special">,</span> <span class="identifier">f2</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">partial_sum</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">partial_sum</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">adjacent_difference</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">adjacent_difference</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt></td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">copy_backward</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">copy_backward</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">transform</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">transform</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">transform</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">transform</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">replace</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">replace</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">replace_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">replace</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">replace_copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">replace_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">replace_copy_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">replace_copy_if</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">fill</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">fill</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">fill_n</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">fill_n</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">generate</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">generate</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">generate_n</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">generate_n</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">remove</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">remove</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">remove_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">remove_if</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">remove_copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">remove_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">remove_copy_if</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">remove_copy_if</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">unique</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">unique</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">unique_copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">unique_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">reverse</span><span class="special">(</span><span class="identifier">r</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">reverse</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">))</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">reverse_copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">reverse_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">rotate</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">m</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">rotate</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">))</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">rotate_copy</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">o</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">rotate_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">random_shuffle</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">random_shuffle</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">partition</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">partition</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">stable_partition</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">stable_partition</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">f</span><span class="special">)</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">sort</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">sort</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">stable_sort</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">stable_sort</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">partial_sort</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">m</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">partial_sort</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">partial_sort_copy</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">partial_sort_copy</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">nth_element</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">n</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">nth_element</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">merge</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">merge</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">inplace_merge</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">m</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">inplace_merge</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">m</span><span class="special">,</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">set_union</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">set_union</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">set_intersection</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">set_intersection</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">set_difference</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">set_difference</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">set_symmetric_difference</span><span class="special">(</span><span class="identifier">r1</span><span class="special">,</span> <span class="identifier">r2</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">set_symmetric_difference</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r1</span><span class="special">),</span> <span class="identifier">begin</span><span class="special">(</span><span class="identifier">r2</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r2</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">push_heap</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">push_heap</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">pop_heap</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">pop_heap</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">make_heap</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">make_heap</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">sort_heap</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">sort_heap</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">next_permutation</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">next_permutation</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">prev_permutation</span><span class="special">(</span><span class="identifier">r</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">prev_permutation</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">)[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">inner_product</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">,</span> <span class="identifier">a</span><span class="special">[,</span> <span class="identifier">f1</span><span class="special">,</span> <span class="identifier">f2</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">inner_product</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f1</span><span class="special">,</span> <span class="identifier">f2</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">partial_sum</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">partial_sum</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">adjacent_difference</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">adjacent_difference</span><span class="special">(</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">end</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">o</span><span class="special">[,</span> <span class="identifier">f</span><span class="special">])</span></tt>
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
@@ -397,12 +943,16 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="container.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="inside_phoenix.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="container.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="inside_phoenix.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/basics.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/basics.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/basics.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Basics</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,36 +10,47 @@
 <link rel="next" href="organization.html" title="Organization">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="starter_kit.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="organization.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="starter_kit.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="organization.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.basics"></a>Basics</h2></div></div></div>
+<a name="phoenix.basics"></a>Basics</h2></div></div></div>
 <p>
       Almost everything is a function in the Phoenix library that can be evaluated
- as <tt class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">a1</span><span class="special">,</span> <span class="identifier">a2</span><span class="special">,</span> <span class="special">...,</span> a<span class="emphasis"><em>n</em></span><span class="special">)</span></tt>,
- where <span class="emphasis"><em>n</em></span> is the function's arity, or number of arguments
- that the function expects. Operators are also functions. For example, <tt class="computeroutput"><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">b</span></tt> is just a function with arity == 2 (or
- binary). <tt class="computeroutput"><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">b</span></tt> is the same as <tt class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt>, <tt class="computeroutput"><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">b</span> <span class="special">+</span> <span class="identifier">c</span></tt> is the same as <tt class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">),</span> <span class="identifier">c</span><span class="special">)</span></tt>.
- </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> Amusingly, functions may even return functions.
- We shall see what this means in a short while.</td></tr></tbody>
+ as <tt class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">a1</span><span class="special">,</span> <span class="identifier">a2</span><span class="special">,</span> <span class="special">...,</span> a<span class="emphasis"><em>n</em></span><span class="special">)</span></tt>, where <span class="emphasis"><em>n</em></span> is the function's
+ arity, or number of arguments that the function expects. Operators are also
+ functions. For example, <tt class="computeroutput"><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">b</span></tt> is just
+ a function with arity == 2 (or binary). <tt class="computeroutput"><span class="identifier">a</span>
+ <span class="special">+</span> <span class="identifier">b</span></tt>
+ is the same as <tt class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt>, <tt class="computeroutput"><span class="identifier">a</span>
+ <span class="special">+</span> <span class="identifier">b</span> <span class="special">+</span> <span class="identifier">c</span></tt> is the
+ same as <tt class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">),</span>
+ <span class="identifier">c</span><span class="special">)</span></tt>.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ Amusingly, functions may even return functions. We shall see what this means
+ in a short while.
+ </p></td></tr>
 </table></div>
 <a name="phoenix.basics.partial_function_application"></a><h2>
-<a name="id446467"></a>
- Partial Function Application
+<a name="id459690"></a>
+ <a href="basics.html#phoenix.basics.partial_function_application">Partial Function
+ Application</a>
     </h2>
 <p>
       Think of a function as a black box. You pass arguments and it returns something
@@ -51,9 +62,9 @@
 <p>
       A fully evaluated function is one in which all the arguments are given. All
       functions in plain C++ are fully evaluated. When you call the <tt class="computeroutput"><span class="identifier">sin</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></tt> function, you have to pass a number x. The
- function will return a result in return: the sin of x. When you call the <tt class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">)</span></tt> function, you have to pass two numbers x and
- y. The function will return the sum of the two numbers. The figure below is
- a fully evaluated <tt class="computeroutput"><span class="identifier">add</span></tt> function.
+ function will return a result in return: the sin of x. When you call the <tt class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">)</span></tt>
+ function, you have to pass two numbers x and y. The function will return the
+ sum of the two numbers. The figure below is a fully evaluated <tt class="computeroutput"><span class="identifier">add</span></tt> function.
     </p>
 <p>
       <span class="inlinemediaobject"><img src="../images/adder.png" alt="adder"></span>
@@ -89,8 +100,9 @@
       application.
     </p>
 <a name="phoenix.basics.stl_and_higher_order_functions"></a><h2>
-<a name="id446722"></a>
- STL and higher order functions
+<a name="id459960"></a>
+ <a href="basics.html#phoenix.basics.stl_and_higher_order_functions">STL and higher
+ order functions</a>
     </h2>
 <p>
       So, what's all the fuss? What makes partial function application so useful?
@@ -101,22 +113,28 @@
 <span class="identifier">find_if</span><span class="special">(</span><span class="identifier">c</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">c</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span><span class="special">)</span>
 </pre>
 <p>
- The expression <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span></tt> evaluates to a lambda function. <tt class="computeroutput"><span class="identifier">arg1</span></tt> is a placeholder for an argument to
+ The expression <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">%</span>
+ <span class="number">2</span> <span class="special">==</span> <span class="number">1</span></tt> evaluates to a lambda function. <tt class="computeroutput"><span class="identifier">arg1</span></tt> is a placeholder for an argument to
       be supplied later. Hence, since there's only one unsupplied argument, the lambda
       function has an arity 1. It just so happens that <tt class="computeroutput"><span class="identifier">find_if</span></tt>
       supplies the unsupplied argument as it loops from <tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span></tt>
       to <tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span></tt>.
     </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> Higher order functions are functions which can take
- other functions as arguments, and may also return functions as results.
- Higher order functions are functions that are treated like any other
- objects and can be used as arguments and return values from functions.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ Higher order functions are functions which can take other functions as arguments,
+ and may also return functions as results. Higher order functions are functions
+ that are treated like any other objects and can be used as arguments and
+ return values from functions.
+ </p></td></tr>
 </table></div>
 <a name="phoenix.basics.lazy_evaluation"></a><h2>
-<a name="id446996"></a>
- Lazy Evaluation
+<a name="id460216"></a>
+ Lazy Evaluation
     </h2>
 <p>
       In Phoenix, to put it more accurately, function evaluation has two stages:
@@ -173,8 +191,9 @@
 </span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span><span class="special">)(</span><span class="identifier">y</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">endl</span><span class="special">;</span> <span class="comment">// prints 0 or false
 </span></pre>
 <a name="phoenix.basics.forwarding_function_problem"></a><h2>
-<a name="id447608"></a>
- Forwarding Function Problem
+<a name="id460845"></a>
+ <a href="basics.html#phoenix.basics.forwarding_function_problem">Forwarding Function
+ Problem</a>
     </h2>
 <p>
       Usually, we, as clients, write the call-back functions while libraries (such
@@ -204,8 +223,8 @@
       Function Problem</a>" but prohibits code like above.
     </p>
 <a name="phoenix.basics.polymorphic_functions"></a><h2>
-<a name="id447803"></a>
- Polymorphic Functions
+<a name="id461055"></a>
+ Polymorphic Functions
     </h2>
 <p>
       Unless otherwise noted, Phoenix generated functions are fully polymorphic.
@@ -224,20 +243,25 @@
       reader might notice that this function call in fact takes in heterogeneous
       arguments where <tt class="computeroutput"><span class="identifier">arg1</span></tt> is of
       type <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></tt> and <tt class="computeroutput"><span class="identifier">arg2</span></tt>
- is of type <tt class="computeroutput"><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span></tt>. <tt class="computeroutput"><span class="identifier">add</span></tt>
- still works because the C++ standard library allows the expression <tt class="computeroutput"><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">b</span></tt> where <tt class="computeroutput"><span class="identifier">a</span></tt>
- is a <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></tt> and <tt class="computeroutput"><span class="identifier">b</span></tt>
- is a <tt class="computeroutput"><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span></tt>.
+ is of type <tt class="computeroutput"><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span></tt>. <tt class="computeroutput"><span class="identifier">add</span></tt>
+ still works because the C++ standard library allows the expression <tt class="computeroutput"><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">b</span></tt>
+ where <tt class="computeroutput"><span class="identifier">a</span></tt> is a <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></tt>
+ and <tt class="computeroutput"><span class="identifier">b</span></tt> is a <tt class="computeroutput"><span class="keyword">char</span>
+ <span class="keyword">const</span><span class="special">*</span></tt>.
     </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="starter_kit.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="organization.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="starter_kit.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="organization.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/composite.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/composite.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/composite.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Composite</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,21 +10,21 @@
 <link rel="next" href="container.html" title="Container">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="primitives.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="container.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="primitives.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="container.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.composite"></a>Composite</h2></div></div></div>
+<a name="phoenix.composite"></a>Composite</h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">Function</span></dt>
 <dt><span class="section">Operator</span></dt>
@@ -44,11 +44,15 @@
       A composite is-a tuple of 0..N actors. N is the predefined maximum actors a
       composite can take.
     </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> You can set <tt class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></tt>,
- the predefined maximum actors a composite can take. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></tt> is set to
- <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt> (See Actors).</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ You can set <tt class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></tt>,
+ the predefined maximum actors a composite can take. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></tt> is set to <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt> (See Actors).
+ </p></td></tr>
 </table></div>
 <p>
       As mentioned, each of the actors A0..AN can, in turn, be another composite,
@@ -57,9 +61,9 @@
     </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.composite.function"></a>Function</h3></div></div></div>
+<a name="phoenix.composite.function"></a>Function</h3></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">function</span><span class="special">/</span><span class="identifier">function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">function</span><span class="special">/</span><span class="identifier">function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         The <tt class="computeroutput"><span class="identifier">function</span></tt> class template
@@ -85,12 +89,11 @@
           arguments, and implements the function logic.
         </li>
 <li>
- A nested metafunction <tt class="computeroutput"><span class="identifier">result</span><span class="special">&lt;</span><span class="identifier">A1</span><span class="special">,</span> <span class="special">...</span> <span class="identifier">AN</span><span class="special">&gt;</span></tt>
- that takes the types of the <tt class="computeroutput"><span class="identifier">N</span></tt>
- arguments to the function and returns the result type of the function.
- (There is a special case for function objects that accept no arguments.
- Such nullary functors are only required to define a typedef <tt class="computeroutput"><span class="identifier">result_type</span></tt> that reflects the return
- type of its <tt class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></tt>).
+ A nested metafunction <tt class="computeroutput"><span class="identifier">result</span><span class="special">&lt;</span><span class="identifier">A1</span><span class="special">,</span> <span class="special">...</span> <span class="identifier">AN</span><span class="special">&gt;</span></tt> that takes the types of the <tt class="computeroutput"><span class="identifier">N</span></tt> arguments to the function and returns
+ the result type of the function. (There is a special case for function
+ objects that accept no arguments. Such nullary functors are only required
+ to define a typedef <tt class="computeroutput"><span class="identifier">result_type</span></tt>
+ that reflects the return type of its <tt class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></tt>).
         </li>
 </ul></div>
 <p>
@@ -157,16 +160,15 @@
         case as <tt class="computeroutput"><span class="identifier">factorial_impl</span></tt> does
         not require any state).
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/alert.png" alt="alert"></span> Take care though when using function objects with
- state because they are often copied repeatedly, and state may change
- in one of the copies, rather than the original.</td></tr></tbody>
-</table></div>
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/alert.png" alt="alert"></span> Take care though when using function objects with state
+ because they are often copied repeatedly, and state may change in one of
+ the copies, rather than the original.
+ </p></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.composite.operator"></a>Operator</h3></div></div></div>
+<a name="phoenix.composite.operator"></a>Operator</h3></div></div></div>
 <p>
         This facility provides a mechanism for lazily evaluating operators. Syntactically,
         a lazy operator looks and feels like an ordinary C/C++ infix, prefix or postfix
@@ -187,14 +189,16 @@
 <span class="identifier">find_if</span><span class="special">(</span><span class="identifier">c</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">c</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span><span class="special">)</span>
 </pre>
 <p>
- Through operator overloading, the expression <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span></tt> actually
+ Through operator overloading, the expression <tt class="computeroutput"><span class="identifier">arg1</span>
+ <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span></tt> actually
         generates an actor. This actor object is passed on to STL's <tt class="computeroutput"><span class="identifier">find_if</span></tt> function. From the viewpoint of
         STL, the composite is simply a function object expecting a single argument
         of the containers value_type. For each element in <tt class="computeroutput"><span class="identifier">c</span></tt>,
         the element is passed on as an argument <tt class="computeroutput"><span class="identifier">arg1</span></tt>
         to the actor (function object). The actor checks if this is an odd value
- based on the expression <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span></tt> where
- arg1 is replaced by the container's element.
+ based on the expression <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span>
+ <span class="number">1</span></tt> where arg1 is replaced by the container's
+ element.
       </p>
 <p>
         Like lazy functions (see function),
@@ -245,25 +249,26 @@
 </pre>
 <div class="orderedlist"><ol type="1">
 <li>
- Following rule 1, <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span></tt>
- is lazily evaluated since <tt class="computeroutput"><span class="identifier">arg1</span></tt>
- is an actor (see primitives).
+ Following rule 1, <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span></tt> is lazily
+ evaluated since <tt class="computeroutput"><span class="identifier">arg1</span></tt> is
+ an actor (see primitives).
         </li>
 <li>
- The result of this <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span></tt>
- expression is an actor object, following rule 4.
+ The result of this <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span></tt> expression
+ is an actor object, following rule 4.
         </li>
 <li>
- Continuing, <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span> <span class="special">+</span> <span class="number">6</span></tt>
- is again lazily evaluated. Rule 2.
+ Continuing, <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span>
+ <span class="number">3</span> <span class="special">+</span> <span class="number">6</span></tt> is again lazily evaluated. Rule 2.
         </li>
 <li>
- By rule 4 again, the result of <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span> <span class="special">+</span> <span class="number">6</span></tt>
- is an actor object.
+ By rule 4 again, the result of <tt class="computeroutput"><span class="identifier">arg1</span>
+ <span class="special">+</span> <span class="number">3</span> <span class="special">+</span> <span class="number">6</span></tt> is an
+ actor object.
         </li>
 <li>
- As <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span> <span class="special">+</span> <span class="number">6</span></tt> is an actor, <tt class="computeroutput"><span class="special">-(</span><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span> <span class="special">+</span> <span class="number">6</span><span class="special">)</span></tt> is lazily
- evaluated. Rule 2.
+ As <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">+</span>
+ <span class="number">3</span> <span class="special">+</span> <span class="number">6</span></tt> is an actor, <tt class="computeroutput"><span class="special">-(</span><span class="identifier">arg1</span> <span class="special">+</span> <span class="number">3</span> <span class="special">+</span> <span class="number">6</span><span class="special">)</span></tt> is lazily evaluated. Rule 2.
         </li>
 </ol></div>
 <p>
@@ -283,20 +288,21 @@
 </span><span class="identifier">val</span><span class="special">(</span><span class="number">1</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="number">3</span><span class="special">;</span> <span class="comment">// Lazily evaluated
 </span></pre>
 <a name="phoenix.composite.operator.supported_operators"></a><h2>
-<a name="id455378"></a>
- Supported operators
+<a name="id469184"></a>
+ <a href="composite.html#phoenix.composite.operator.supported_operators">Supported
+ operators</a>
       </h2>
 <a name="phoenix.composite.operator.unary_operators"></a><h3>
-<a name="id455393"></a>
- Unary operators
+<a name="id469209"></a>
+ Unary operators
       </h3>
 <pre class="programlisting">
 <span class="identifier">prefix</span><span class="special">:</span> <span class="special">~,</span> <span class="special">!,</span> <span class="special">-,</span> <span class="special">+,</span> <span class="special">++,</span> <span class="special">--,</span> <span class="special">&amp;</span> <span class="special">(</span><span class="identifier">reference</span><span class="special">),</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">dereference</span><span class="special">)</span>
 <span class="identifier">postfix</span><span class="special">:</span> <span class="special">++,</span> <span class="special">--</span>
 </pre>
 <a name="phoenix.composite.operator.binary_operators"></a><h3>
-<a name="id455528"></a>
- Binary operators
+<a name="id469357"></a>
+ Binary operators
       </h3>
 <pre class="programlisting">
 <span class="special">=,</span> <span class="special">[],</span> <span class="special">+=,</span> <span class="special">-=,</span> <span class="special">*=,</span> <span class="special">/=,</span> <span class="special">%=,</span> <span class="special">&amp;=,</span> <span class="special">|=,</span> <span class="special">^=,</span> <span class="special">&lt;&lt;=,</span> <span class="special">&gt;&gt;=</span>
@@ -305,21 +311,23 @@
 <span class="special">&amp;&amp;,</span> <span class="special">||,</span> <span class="special">-&gt;*</span>
 </pre>
 <a name="phoenix.composite.operator.ternary_operator"></a><h3>
-<a name="id455740"></a>
- Ternary operator
+<a name="id469580"></a>
+ Ternary operator
       </h3>
 <pre class="programlisting">
 <span class="identifier">if_else</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span>
 </pre>
 <p>
         The ternary operator deserves special mention. Since C++ does not allow us
- to overload the conditional expression: <tt class="computeroutput"><span class="identifier">c</span> <span class="special">?</span> <span class="identifier">a</span> <span class="special">:</span> <span class="identifier">b</span></tt>,
- the if_else pseudo function is provided for this purpose. The behavior is
- identical, albeit in a lazy manner.
+ to overload the conditional expression: <tt class="computeroutput"><span class="identifier">c</span>
+ <span class="special">?</span> <span class="identifier">a</span> <span class="special">:</span> <span class="identifier">b</span></tt>, the
+ if_else pseudo function is provided for this purpose. The behavior is identical,
+ albeit in a lazy manner.
       </p>
 <a name="phoenix.composite.operator.member_pointer_operator"></a><h3>
-<a name="id455848"></a>
- Member pointer operator
+<a name="id469700"></a>
+ <a href="composite.html#phoenix.composite.operator.member_pointer_operator">Member
+ pointer operator</a>
       </h3>
 <pre class="programlisting">
 <span class="identifier">a</span><span class="special">-&gt;*</span><span class="identifier">member_object_pointer</span>
@@ -360,77 +368,133 @@
 
 <span class="special">(</span><span class="identifier">arg1</span><span class="special">-&gt;*&amp;</span><span class="identifier">A</span><span class="special">::</span><span class="identifier">func</span><span class="special">)(</span><span class="identifier">arg2</span><span class="special">)(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">i</span><span class="special">);</span> <span class="comment">// returns a-&gt;func(i)
 </span></pre>
-<div class="informaltable">
-<h4>
-<a name="id456264"></a>
- <span class="table-title">Include Files</span>
- </h4>
-<table class="table">
+<div class="table">
+<a name="id470127"></a><p class="title"><b>Table 1.4. Include Files</b></p>
+<table class="table" summary="Include Files">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Operators</th>
-<th>File</th>
+<th>
+ <p>
+ Operators
+ </p>
+ </th>
+<th>
+ <p>
+ File
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
 <td>
-<tt class="computeroutput"><span class="special">-</span></tt>, <tt class="computeroutput"><span class="special">+</span></tt>, <tt class="computeroutput"><span class="special">++</span></tt>,
- <tt class="computeroutput"><span class="special">--</span></tt>, <tt class="computeroutput"><span class="special">+=</span></tt>,
- <tt class="computeroutput"><span class="special">-=</span></tt>, <tt class="computeroutput"><span class="special">*=</span></tt>,
- <tt class="computeroutput"><span class="special">/=</span></tt>, <tt class="computeroutput"><span class="special">%=</span></tt>,
- <tt class="computeroutput"><span class="special">*</span></tt>, <tt class="computeroutput"><span class="special">/</span></tt>,
- <tt class="computeroutput"><span class="special">%</span></tt>
-</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">arithmetic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
+ <p>
+ <tt class="computeroutput"><span class="special">-</span></tt>, <tt class="computeroutput"><span class="special">+</span></tt>,
+ <tt class="computeroutput"><span class="special">++</span></tt>, <tt class="computeroutput"><span class="special">--</span></tt>,
+ <tt class="computeroutput"><span class="special">+=</span></tt>, <tt class="computeroutput"><span class="special">-=</span></tt>,
+ <tt class="computeroutput"><span class="special">*=</span></tt>, <tt class="computeroutput"><span class="special">/=</span></tt>,
+ <tt class="computeroutput"><span class="special">%=</span></tt>, <tt class="computeroutput"><span class="special">*</span></tt>,
+ <tt class="computeroutput"><span class="special">/</span></tt>, <tt class="computeroutput"><span class="special">%</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">arithmetic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
-<tt class="computeroutput"><span class="special">&amp;=</span></tt>, <tt class="computeroutput"><span class="special">|=</span></tt>, <tt class="computeroutput"><span class="special">^=</span></tt>,
+ <p>
+ <tt class="computeroutput"><span class="special">&amp;=</span></tt>, <tt class="computeroutput"><span class="special">|=</span></tt>, <tt class="computeroutput"><span class="special">^=</span></tt>,
               <tt class="computeroutput"><span class="special">&lt;&lt;=</span></tt>, <tt class="computeroutput"><span class="special">&gt;&gt;=</span></tt>, <tt class="computeroutput"><span class="special">&amp;</span></tt>,
               <tt class="computeroutput"><span class="special">|</span></tt>, <tt class="computeroutput"><span class="special">^</span></tt>,
               <tt class="computeroutput"><span class="special">&lt;&lt;</span></tt>, <tt class="computeroutput"><span class="special">&gt;&gt;</span></tt>
-</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">bitwise</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">bitwise</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
-<tt class="computeroutput"><span class="special">==</span></tt>, <tt class="computeroutput"><span class="special">!=</span></tt>, <tt class="computeroutput"><span class="special">&lt;</span></tt>,
- <tt class="computeroutput"><span class="special">&lt;=</span></tt>, <tt class="computeroutput"><span class="special">&gt;</span></tt>,
- <tt class="computeroutput"><span class="special">&gt;=</span></tt>
-</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">comparison</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
+ <p>
+ <tt class="computeroutput"><span class="special">==</span></tt>, <tt class="computeroutput"><span class="special">!=</span></tt>,
+ <tt class="computeroutput"><span class="special">&lt;</span></tt>, <tt class="computeroutput"><span class="special">&lt;=</span></tt>,
+ <tt class="computeroutput"><span class="special">&gt;</span></tt>, <tt class="computeroutput"><span class="special">&gt;=</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">comparison</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
-<tt class="computeroutput"><span class="special">&lt;&lt;</span></tt>, <tt class="computeroutput"><span class="special">&gt;&gt;</span></tt>
-</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">io</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
+ <p>
+ <tt class="computeroutput"><span class="special">&lt;&lt;</span></tt>, <tt class="computeroutput"><span class="special">&gt;&gt;</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">io</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
-<tt class="computeroutput"><span class="special">!</span></tt>, &amp;&amp;,
- <tt class="computeroutput"><span class="special">||</span></tt>
-</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">logical</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
+ <p>
+ <tt class="computeroutput"><span class="special">!</span></tt>, &amp;&amp;, <tt class="computeroutput"><span class="special">||</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">logical</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
 </tr>
 <tr>
 <td>
-<tt class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span></tt>,
+ <p>
+ <tt class="computeroutput"><span class="special">&amp;</span><span class="identifier">x</span></tt>,
               <tt class="computeroutput"><span class="special">*</span><span class="identifier">p</span></tt>,
               <tt class="computeroutput"><span class="special">=</span></tt>, <tt class="computeroutput"><span class="special">[]</span></tt>
-</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">self</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">self</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
 </tr>
 <tr>
-<td><tt class="computeroutput"><span class="identifier">if_else</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">if_else</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">if_else</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">if_else</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
 </tr>
 <tr>
-<td><tt class="computeroutput"><span class="special">-&gt;*</span></tt></td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">member</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="special">-&gt;*</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">/</span><span class="identifier">member</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
@@ -438,16 +502,20 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.composite.statement"></a>Statement</h3></div></div></div>
+<a name="phoenix.composite.statement"></a>Statement</h3></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section">Block Statement</span></dt>
+<dt><span class="section"><a href="composite.html#phoenix.composite.statement.block_statement">Block
+ Statement</a></span></dt>
 <dt><span class="section">if_ Statement</span></dt>
 <dt><span class="section">ifelse statement</span></dt>
-<dt><span class="section">switch_ statement</span></dt>
-<dt><span class="section">while_ Statement</span></dt>
+<dt><span class="section"><a href="composite.html#phoenix.composite.statement.switch__statement">switch_
+ statement</a></span></dt>
+<dt><span class="section"><a href="composite.html#phoenix.composite.statement.while__statement">while_
+ Statement</a></span></dt>
 <dt><span class="section">dowhile Statement</span></dt>
 <dt><span class="section">for_ Statement</span></dt>
-<dt><span class="section">try_ catch_ Statement</span></dt>
+<dt><span class="section"><a href="composite.html#phoenix.composite.statement.try__catch__statement">try_
+ catch_ Statement</a></span></dt>
 <dt><span class="section">throw_</span></dt>
 </dl></div>
 <p>
@@ -480,21 +548,31 @@
         underscore. Second, the block uses square brackets instead of the familiar
         curly braces {}.
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> <span class="bold"><b>C++ in C++?</b></span><br>
- <br> In as much as Spirit
- attempts to mimic EBNF in C++, Phoenix attempts to mimic C++ in C++!!!
- </td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top">
+<p>
+ <span class="bold"><b>C++ in C++?</b></span>
+ </p>
+<p>
+ In as much as Spirit
+ attempts to mimic EBNF in C++, Phoenix attempts to mimic C++ in C++!!!
+ </p>
+</td></tr>
 </table></div>
 <p>
         Here are more examples with annotations. The code almost speaks for itself.
       </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.composite.statement.block_statement"></a>Block Statement</h4></div></div></div>
+<a name="phoenix.composite.statement.block_statement"></a><a href="composite.html#phoenix.composite.statement.block_statement" title="Block
+ Statement">Block
+ Statement</a></h4></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="identifier">sequence</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="identifier">sequence</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
           Syntax:
@@ -551,9 +629,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.composite.statement.if__statement"></a>if_ Statement</h4></div></div></div>
+<a name="phoenix.composite.statement.if__statement"></a>if_ Statement</h4></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">if</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">if</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
           We have seen the <tt class="computeroutput"><span class="identifier">if_</span></tt> statement.
@@ -568,9 +646,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.composite.statement.if_else__statement"></a>if<span class="underline">else</span> statement</h4></div></div></div>
+<a name="phoenix.composite.statement.if_else__statement"></a>ifelse statement</h4></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">if</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">if</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
           The syntax is
@@ -620,9 +698,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.composite.statement.switch__statement"></a>switch_ statement</h4></div></div></div>
+<a name="phoenix.composite.statement.switch__statement"></a><a href="composite.html#phoenix.composite.statement.switch__statement" title="switch_
+ statement">switch_
+ statement</a></h4></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">switch</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">switch</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
           The syntax is:
@@ -657,9 +737,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.composite.statement.while__statement"></a>while_ Statement</h4></div></div></div>
+<a name="phoenix.composite.statement.while__statement"></a><a href="composite.html#phoenix.composite.statement.while__statement" title="while_
+ Statement">while_
+ Statement</a></h4></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">while</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">while</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
           The syntax is:
@@ -689,9 +771,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.composite.statement.do_while__statement"></a>do<span class="underline">while</span> Statement</h4></div></div></div>
+<a name="phoenix.composite.statement.do_while__statement"></a>dowhile Statement</h4></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="identifier">do_while</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="identifier">do_while</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
           The syntax is:
@@ -726,9 +808,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.composite.statement.for__statement"></a>for_ Statement</h4></div></div></div>
+<a name="phoenix.composite.statement.for__statement"></a>for_ Statement</h4></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">for</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">for</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
           The syntax is:
@@ -741,10 +823,9 @@
 </pre>
 <p>
           It is again very similar to the C++ for statement. Take note that the init_statement,
- conditional_expression and step_statement are separated by the comma instead
- of the semi-colon and each must be present (i.e. <tt class="computeroutput"><span class="identifier">for_</span><span class="special">(,,)</span></tt> is invalid). This is a case where the
- nothing actor can be
- useful.
+ conditional_expression and step<span class="underline">statement are
+ separated by the comma instead of the semi-colon and each must be present
+ (i.e. `for</span>(,,)` is invalid). This is a case where the nothing actor can be useful.
         </p>
 <p>
           Example: This code prints each element N times where N is the element's
@@ -768,17 +849,24 @@
           the viewpoint of <tt class="computeroutput"><span class="identifier">for_each</span></tt>,
           what was passed is just a functor, no more, no less.
         </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> Unlike lazy functions and lazy operators, lazy
- statements always return void.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ Unlike lazy functions and lazy operators, lazy statements always return
+ void.
+ </p></td></tr>
 </table></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.composite.statement.try__catch__statement"></a>try_ catch_ Statement</h4></div></div></div>
+<a name="phoenix.composite.statement.try__catch__statement"></a><a href="composite.html#phoenix.composite.statement.try__catch__statement" title="try_
+ catch_ Statement">try_
+ catch_ Statement</a></h4></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="identifier">try_catch</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="identifier">try_catch</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
           The syntax is:
@@ -828,9 +916,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.composite.statement.throw_"></a>throw_</h4></div></div></div>
+<a name="phoenix.composite.statement.throw_"></a>throw_</h4></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">throw</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">/</span><span class="keyword">throw</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
           As a natural companion to the try/catch support, the statement module provides
@@ -878,7 +966,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.composite.object"></a>Object</h3></div></div></div>
+<a name="phoenix.composite.object"></a>Object</h3></div></div></div>
 <p>
         The Object module deals with object construction, destruction and conversion.
         The module provides <span class="emphasis"><em>"lazy"</em></span> versions of C++'s
@@ -886,14 +974,14 @@
         <tt class="computeroutput"><span class="keyword">dynamic_cast</span></tt>, <tt class="computeroutput"><span class="keyword">const_cast</span></tt> and <tt class="computeroutput"><span class="keyword">reinterpret_cast</span></tt>.
       </p>
 <a name="phoenix.composite.object.construction"></a><h2>
-<a name="id461627"></a>
- Construction
+<a name="id475908"></a>
+ Construction
       </h2>
 <p>
         <span class="bold"><b><span class="emphasis"><em>Lazy constructors...</em></span></b></span>
       </p>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="identifier">construct</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="identifier">construct</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         Lazily construct an object from an arbitrary set of arguments:
@@ -916,24 +1004,28 @@
         Constructs a <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></tt> from <tt class="computeroutput"><span class="identifier">arg1</span></tt>
         and <tt class="computeroutput"><span class="identifier">arg2</span></tt>.
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> The maximum number of actual parameters is limited
- by the preprocessor constant PHOENIX_COMPOSITE_LIMIT. Note though,
- that this limit should not be greater than PHOENIX_LIMIT. By default,
- <tt class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></tt>
- is set to <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>
- (See Actors).</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ The maximum number of actual parameters is limited by the preprocessor
+ constant PHOENIX_COMPOSITE_LIMIT. Note though, that this limit should not
+ be greater than PHOENIX_LIMIT. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></tt>
+ is set to <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>
+ (See Actors).
+ </p></td></tr>
 </table></div>
 <a name="phoenix.composite.object.new"></a><h2>
-<a name="id461989"></a>
- New
+<a name="id476272"></a>
+ New
       </h2>
 <p>
         <span class="bold"><b><span class="emphasis"><em>Lazy new...</em></span></b></span>
       </p>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">new</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">new</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         Lazily construct an object, on the heap, from an arbitrary set of arguments:
@@ -956,21 +1048,25 @@
         Creates a <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></tt> from <tt class="computeroutput"><span class="identifier">arg1</span></tt>
         and <tt class="computeroutput"><span class="identifier">arg2</span></tt> on the heap.
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> Again, the maximum number of actual parameters
- is limited by the preprocessor constant PHOENIX_COMPOSITE_LIMIT. See
- the note above.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ Again, the maximum number of actual parameters is limited by the preprocessor
+ constant PHOENIX_COMPOSITE_LIMIT. See the note above.
+ </p></td></tr>
 </table></div>
 <a name="phoenix.composite.object.delete"></a><h2>
-<a name="id462327"></a>
- Delete
+<a name="id476608"></a>
+ Delete
       </h2>
 <p>
         <span class="bold"><b><span class="emphasis"><em>Lazy delete...</em></span></b></span>
       </p>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">delete</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">delete</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         Lazily delete an object, from the heap:
@@ -988,17 +1084,17 @@
 <span class="identifier">delete_</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;(</span><span class="identifier">arg1</span><span class="special">)</span> <span class="comment">// note the spelling of delete_ (with trailing underscore)
 </span></pre>
 <a name="phoenix.composite.object.casts"></a><h2>
-<a name="id462522"></a>
- Casts
+<a name="id476828"></a>
+ Casts
       </h2>
 <p>
         <span class="bold"><b><span class="emphasis"><em>Lazy casts...</em></span></b></span>
       </p>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">static_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">dynamic_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">const_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">reinterpret_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">static_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">dynamic_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">const_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">/</span><span class="keyword">reinterpret_cast</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         The set of lazy C++ cast template functions provide a way of lazily casting
@@ -1025,7 +1121,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.composite.scope"></a>Scope</h3></div></div></div>
+<a name="phoenix.composite.scope"></a>Scope</h3></div></div></div>
 <p>
         Up until now, the most basic ingredient is missing: creation of and access
         to local variables in the stack. When recursion comes into play, you will
@@ -1045,11 +1141,11 @@
         This section deals with local variables and nested lambda scopes.
       </p>
 <a name="phoenix.composite.scope.local_variables"></a><h2>
-<a name="id463114"></a>
- Local Variables
+<a name="id477747"></a>
+ Local Variables
       </h2>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">scope</span><span class="special">/</span><span class="identifier">local_variable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">scope</span><span class="special">/</span><span class="identifier">local_variable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         We use an instance of:
@@ -1067,23 +1163,24 @@
 <span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">local_variable</span><span class="special">&lt;</span><span class="identifier">size_key</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">size</span><span class="special">;</span>
 </pre>
 <a name="phoenix.composite.scope.predefined_local_variables"></a><h2>
-<a name="id463348"></a>
- Predefined Local Variables
+<a name="id477871"></a>
+ <a href="composite.html#phoenix.composite.scope.predefined_local_variables">Predefined
+ Local Variables</a>
       </h2>
 <p>
- There are a few predefined instances of <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">local_variable</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt>
+ There are a few predefined instances of <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">local_variable</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt>
         named <tt class="computeroutput"><span class="identifier">_a</span></tt>..<tt class="computeroutput"><span class="identifier">_z</span></tt>
- that you can already use. To make use of them, simply use the <tt class="computeroutput"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">local_names</span></tt>:
+ that you can already use. To make use of them, simply use the <tt class="computeroutput"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">local_names</span></tt>:
       </p>
 <pre class="programlisting">
 <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">local_names</span><span class="special">;</span>
 </pre>
 <a name="phoenix.composite.scope.let"></a><h2>
-<a name="id463515"></a>
- let
+<a name="id478058"></a>
+ let
       </h2>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">scope</span><span class="special">/</span><span class="identifier">let</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">scope</span><span class="special">/</span><span class="identifier">let</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         You declare local variables using the syntax:
@@ -1102,12 +1199,17 @@
 <pre class="programlisting">
 <span class="identifier">local</span><span class="special">-</span><span class="identifier">id</span> <span class="special">=</span> <span class="identifier">lambda</span><span class="special">-</span><span class="identifier">expression</span>
 </pre>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> You can set <tt class="computeroutput"><span class="identifier">PHOENIX_LOCAL_LIMIT</span></tt>,
- the predefined maximum local variable declarations in a let expression.
- By default, <tt class="computeroutput"><span class="identifier">PHOENIX_LOCAL_LIMIT</span></tt>
- is set to <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ You can set <tt class="computeroutput"><span class="identifier">PHOENIX_LOCAL_LIMIT</span></tt>,
+ the predefined maximum local variable declarations in a let expression.
+ By default, <tt class="computeroutput"><span class="identifier">PHOENIX_LOCAL_LIMIT</span></tt>
+ is set to <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>.
+ </p></td></tr>
 </table></div>
 <p>
         Example:
@@ -1119,8 +1221,9 @@
 <span class="special">]</span>
 </pre>
 <a name="phoenix.composite.scope.reference_preservation"></a><h2>
-<a name="id463919"></a>
- Reference Preservation
+<a name="id478463"></a>
+ <a href="composite.html#phoenix.composite.scope.reference_preservation">Reference
+ Preservation</a>
       </h2>
 <p>
         The type of the local variable assumes the type of the lambda- expression.
@@ -1173,8 +1276,8 @@
         and <tt class="computeroutput"><span class="identifier">ref</span></tt>s are L-values. <tt class="computeroutput"><span class="identifier">val</span></tt>s are R-values.
       </p>
 <a name="phoenix.composite.scope.visibility"></a><h2>
-<a name="id464447"></a>
- Visibility
+<a name="id479015"></a>
+ Visibility
       </h2>
 <p>
         The scope and lifetimes of the local variables is limited within the let-body.
@@ -1226,11 +1329,11 @@
 <span class="special">]</span>
 </pre>
 <a name="phoenix.composite.scope.lambda"></a><h2>
-<a name="id464895"></a>
- lambda
+<a name="id479480"></a>
+ lambda
       </h2>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">scope</span><span class="special">/</span><span class="identifier">lambda</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">scope</span><span class="special">/</span><span class="identifier">lambda</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         A lot of times, you'd want to write a lazy function that accepts one or more
@@ -1321,12 +1424,16 @@
         information from outer <tt class="computeroutput"><span class="identifier">lambda</span></tt>
         scopes through the local variables.
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> This is a crucial difference between <tt class="computeroutput"><span class="identifier">let</span></tt> and <tt class="computeroutput"><span class="identifier">lambda</span></tt>:
- <tt class="computeroutput"><span class="identifier">let</span></tt> does not introduce
- new arguments; <tt class="computeroutput"><span class="identifier">lambda</span></tt>
- does.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ This is a crucial difference between <tt class="computeroutput"><span class="identifier">let</span></tt>
+ and <tt class="computeroutput"><span class="identifier">lambda</span></tt>: <tt class="computeroutput"><span class="identifier">let</span></tt> does not introduce new arguments;
+ <tt class="computeroutput"><span class="identifier">lambda</span></tt> does.
+ </p></td></tr>
 </table></div>
 <p>
         Another example: Using our lazy <tt class="computeroutput"><span class="identifier">for_each</span></tt>,
@@ -1355,7 +1462,7 @@
       </p>
 <div class="orderedlist"><ol type="1">
 <li>
- a 2-dimensional container (e.g. <tt class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt>)
+ a 2-dimensional container (e.g. <tt class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt>)
         </li>
 <li>
           a container element (e.g. <tt class="computeroutput"><span class="keyword">int</span></tt>)
@@ -1368,7 +1475,7 @@
         Solution:
       </p>
 <pre class="programlisting">
-<span class="identifier">for_each</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span>
+<span class="identifier">for_each</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span>
     <span class="identifier">lambda</span><span class="special">(</span><span class="identifier">_a</span> <span class="special">=</span> <span class="identifier">arg2</span><span class="special">)</span>
     <span class="special">[</span>
         <span class="identifier">push_back</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">_a</span><span class="special">)</span>
@@ -1387,7 +1494,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.composite.bind"></a>Bind</h3></div></div></div>
+<a name="phoenix.composite.bind"></a>Bind</h3></div></div></div>
 <p>
         <span class="emphasis"><em>Binding</em></span> is the act of tying together a function to some
         arguments for deferred (lazy) evaluation. Named <a href="composite.html#phoenix.composite.function" title="Function">Lazy
@@ -1397,13 +1504,17 @@
         to a lambda expression, <tt class="computeroutput"><span class="identifier">bind</span></tt>
         is your friend.
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> Take note that binders are monomorphic. Rather
- than binding functions, the preferred way is to write true generic
- and polymorphic lazy-functions.
- However, since most of the time we are dealing with adaptation of exisiting
- code, binders get the job done faster.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ Take note that binders are monomorphic. Rather than binding functions,
+ the preferred way is to write true generic and polymorphic lazy-functions.
+ However, since most of the time we are dealing with adaptation of exisiting
+ code, binders get the job done faster.
+ </p></td></tr>
 </table></div>
 <p>
         There is a set of overloaded <tt class="computeroutput"><span class="identifier">bind</span></tt>
@@ -1411,19 +1522,19 @@
         function generates a suitable binder object, a composite.
       </p>
 <a name="phoenix.composite.bind.binding_functions"></a><h2>
-<a name="id466754"></a>
- Binding Functions
+<a name="id481353"></a>
+ Binding Functions
       </h2>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">bind</span><span class="special">/</span><span class="identifier">bind_function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">bind</span><span class="special">/</span><span class="identifier">bind_function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         Example, given a function <tt class="computeroutput"><span class="identifier">foo</span></tt>:
       </p>
 <pre class="programlisting">
-<span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">)</span>
-<span class="special">{</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">n</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">n</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
 <p>
@@ -1447,11 +1558,12 @@
         will print out "4".
       </p>
 <a name="phoenix.composite.bind.binding_member_functions"></a><h2>
-<a name="id467129"></a>
- Binding Member Functions
+<a name="id481759"></a>
+ <a href="composite.html#phoenix.composite.bind.binding_member_functions">Binding Member
+ Functions</a>
       </h2>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">bind</span><span class="special">/</span><span class="identifier">bind_member_function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">bind</span><span class="special">/</span><span class="identifier">bind_member_function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         Binding member functions can be done similarly. A bound member function takes
@@ -1459,9 +1571,9 @@
         given:
       </p>
 <pre class="programlisting">
-<span class="keyword">struct</span> <span class="identifier">xyz</span>
-<span class="special">{</span>
- <span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">struct</span> <span class="identifier">xyz</span>
+<span class="special">{</span>
+ <span class="keyword">void</span> <span class="identifier">foo</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
 <span class="special">};</span>
 </pre>
 <p>
@@ -1483,11 +1595,12 @@
 </span><span class="identifier">bind</span><span class="special">(&amp;</span><span class="identifier">xyz</span><span class="special">::</span><span class="identifier">foo</span><span class="special">,</span> <span class="identifier">obj</span><span class="special">,</span> <span class="number">100</span><span class="special">)</span> <span class="comment">// obj.foo(100)
 </span></pre>
 <a name="phoenix.composite.bind.binding_member_variables"></a><h2>
-<a name="id467594"></a>
- Binding Member Variables
+<a name="id482250"></a>
+ <a href="composite.html#phoenix.composite.bind.binding_member_variables">Binding Member
+ Variables</a>
       </h2>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">bind</span><span class="special">/</span><span class="identifier">bind_member_variable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">bind</span><span class="special">/</span><span class="identifier">bind_member_variable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         Member variables can also be bound much like member functions. Member variables
@@ -1497,9 +1610,9 @@
         and returning a reference to the bound member variable. For instance, given:
       </p>
 <pre class="programlisting">
-<span class="keyword">struct</span> <span class="identifier">xyz</span>
-<span class="special">{</span>
- <span class="keyword">int</span> <span class="identifier">v</span><span class="special">;</span>
+<span class="keyword">struct</span> <span class="identifier">xyz</span>
+<span class="special">{</span>
+ <span class="keyword">int</span> <span class="identifier">v</span><span class="special">;</span>
 <span class="special">};</span>
 </pre>
 <p>
@@ -1515,20 +1628,24 @@
       </p>
 <pre class="programlisting">
 <span class="identifier">xyz</span> <span class="identifier">obj</span><span class="special">;</span>
-<span class="identifier">bind</span><span class="special">(&amp;</span><span class="identifier">xyz</span><span class="special">::</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">)</span> <span class="comment">// arg1.v
-</span><span class="identifier">bind</span><span class="special">(&amp;</span><span class="identifier">xyz</span><span class="special">::</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">obj</span><span class="special">)</span> <span class="comment">// obj.v
+<span class="identifier">bind</span><span class="special">(&amp;</span><span class="identifier">xyz</span><span class="special">::</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">)</span> <span class="comment">// arg1.v
+</span><span class="identifier">bind</span><span class="special">(&amp;</span><span class="identifier">xyz</span><span class="special">::</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">obj</span><span class="special">)</span> <span class="comment">// obj.v
 </span><span class="identifier">bind</span><span class="special">(&amp;</span><span class="identifier">xyz</span><span class="special">::</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">)(</span><span class="identifier">obj</span><span class="special">)</span> <span class="special">=</span> <span class="number">4</span> <span class="comment">// obj.v = 4
 </span></pre>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="primitives.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="container.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="primitives.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="container.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/inside_phoenix.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/inside_phoenix.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/inside_phoenix.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Inside Phoenix</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,25 +10,26 @@
 <link rel="next" href="wrap_up.html" title="Wrap Up">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="algorithm.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="wrap_up.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="algorithm.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="wrap_up.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.inside_phoenix"></a>Inside Phoenix</h2></div></div></div>
+<a name="phoenix.inside_phoenix"></a>Inside Phoenix</h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">Actors In Detail</span></dt>
 <dt><span class="section">Actor Example</span></dt>
-<dt><span class="section">Composites In Detail</span></dt>
+<dt><span class="section"><a href="inside_phoenix.html#phoenix.inside_phoenix.composites_in_detail">Composites
+ In Detail</a></span></dt>
 <dt><span class="section">Composing</span></dt>
 <dt><span class="section">Extending</span></dt>
 </dl></div>
@@ -40,24 +41,31 @@
     </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.inside_phoenix.actors_in_detail"></a>Actors In Detail</h3></div></div></div>
+<a name="phoenix.inside_phoenix.actors_in_detail"></a>Actors In Detail</h3></div></div></div>
 <a name="phoenix.inside_phoenix.actors_in_detail.actor_concept"></a><h3>
-<a name="id479686"></a>
- Actor Concept
+<a name="id495846"></a>
+ <a href="inside_phoenix.html#phoenix.inside_phoenix.actors_in_detail.actor_concept">Actor
+ Concept</a>
       </h3>
 <p>
         The main concept is the <tt class="computeroutput"><span class="identifier">Actor</span></tt>.
         Actors are function objects (that can accept 0 to N arguments (where N is
         a predefined maximum).
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> You can set <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>,
- the predefined maximum arity an actor can take. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt> is set to 10.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ You can set <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>,
+ the predefined maximum arity an actor can take. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt> is set to 10.
+ </p></td></tr>
 </table></div>
 <a name="phoenix.inside_phoenix.actors_in_detail.actor_template_class"></a><h3>
-<a name="id479780"></a>
- actor template class
+<a name="id495923"></a>
+ <a href="inside_phoenix.html#phoenix.inside_phoenix.actors_in_detail.actor_template_class">actor
+ template class</a>
       </h3>
 <p>
         The <tt class="computeroutput"><span class="identifier">actor</span></tt> template class
@@ -77,7 +85,7 @@
 
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">&gt;</span>
     <span class="identifier">actor</span><span class="special">(</span><span class="identifier">T0</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">_0</span><span class="special">,</span> <span class="identifier">T1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">_1</span><span class="special">);</span>
-
+
     <span class="comment">// more constructors
 </span>
     <span class="keyword">typename</span> <span class="identifier">apply_actor</span><span class="special">&lt;</span><span class="identifier">eval_type</span><span class="special">,</span> <span class="identifier">basic_environment</span><span class="special">&lt;&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span>
@@ -94,50 +102,93 @@
     <span class="comment">// function call operators
 </span><span class="special">};</span>
 </pre>
-<div class="informaltable">
-<h4>
-<a name="id480555"></a>
- <span class="table-title">Actor Concept Requirements</span>
- </h4>
-<table class="table">
+<div class="table">
+<a name="id496708"></a><p class="title"><b>Table 1.10. Actor Concept Requirements</b></p>
+<table class="table" summary="Actor Concept Requirements">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Expression</th>
-<th>Result/Semantics</th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result/Semantics
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
-<td><tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">eval_type</span></tt></td>
-<td>The actor's
- Eval type</td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">T</span><span class="special">()</span></tt></td>
-<td>Default
- Constructor</td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">T</span><span class="special">(</span><span class="identifier">base</span><span class="special">)</span></tt></td>
-<td>Constructor
- from Eval</td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">T</span><span class="special">(</span><span class="identifier">arg0</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">argN</span><span class="special">)</span></tt></td>
-<td>Pass through constructors</td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">x</span><span class="special">(</span><span class="identifier">arg0</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">argN</span><span class="special">)</span></tt></td>
-<td>Function call operators</td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">eval_type</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ The actor's Eval type
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">T</span><span class="special">()</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructor
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">T</span><span class="special">(</span><span class="identifier">base</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructor from Eval
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">T</span><span class="special">(</span><span class="identifier">arg0</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">argN</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ Pass through constructors
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">x</span><span class="special">(</span><span class="identifier">arg0</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">argN</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ Function call operators
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
 </div>
 <a name="phoenix.inside_phoenix.actors_in_detail.eval_concept"></a><h3>
-<a name="id480807"></a>
- Eval Concept
+<a name="id497020"></a>
+ <a href="inside_phoenix.html#phoenix.inside_phoenix.actors_in_detail.eval_concept">Eval
+ Concept</a>
       </h3>
 <p>
         The <tt class="computeroutput"><span class="identifier">actor</span></tt> template class
@@ -148,37 +199,56 @@
         make it easy to write models of the concept. We shall see an example in the
         <a href="inside_phoenix.html#phoenix.inside_phoenix.actor_example" title="Actor Example">next section</a>.
       </p>
-<div class="informaltable">
-<h4>
-<a name="id480890"></a>
- <span class="table-title">Eval Concept Requirements</span>
- </h4>
-<table class="table">
+<div class="table">
+<a name="id497115"></a><p class="title"><b>Table 1.11. Eval Concept Requirements</b></p>
+<table class="table" summary="Eval Concept Requirements">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Expression</th>
-<th>Result/Semantics</th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result/Semantics
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
-<td><tt class="computeroutput"><span class="keyword">return</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">eval</span><span class="special">(</span><span class="identifier">env</span><span class="special">)</span></tt></td>
-<td>Evaluates the function
- (see Environment below)</td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">result</span><span class="special">&lt;</span><span class="identifier">Env</span><span class="special">&gt;::</span><span class="identifier">type</span></tt></td>
-<td>The return type
- of eval (see Environment below)</td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="keyword">return</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">eval</span><span class="special">(</span><span class="identifier">env</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ Evaluates the function (see Environment below)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">result</span><span class="special">&lt;</span><span class="identifier">Env</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ The return type of eval (see Environment below)
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
 </div>
 <a name="phoenix.inside_phoenix.actors_in_detail.constructors"></a><h3>
-<a name="id481035"></a>
- Constructors
+<a name="id497287"></a>
+ Constructors
       </h3>
 <p>
         In addition to a default constructor and an constructor from a Eval object,
@@ -186,44 +256,60 @@
         <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>). These constructors
         simply forward the arguments to the <tt class="computeroutput"><span class="identifier">base</span></tt>.
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> <span class="bold"><b>Parametric Base Class
- Pattern</b></span><br> <br> Notice that actor derives from its
- template argument Eval. This is the inverse of the curiously recurring
- template pattern (CRTP). With the CRTP, a class, T, has a Derived template
- parameter that is assumed to be its subclass. The "parametric
- base class pattern" (PBCP), on the other hand, inverses the inheritance
- and makes a class, T, the derived class. Both CRTP and PBCP techniques
- have its pros and cons, which is outside the scope of this document.
- CRTP should really be renamed "parametric subclass pattern (PSCP),
- but again, that's another story. </td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top">
+<p>
+ <span class="bold"><b>Parametric Base Class Pattern</b></span>
+ </p>
+<p>
+ Notice that actor derives from its template argument Eval. This is the
+ inverse of the curiously recurring template pattern (CRTP). With the CRTP,
+ a class, T, has a Derived template parameter that is assumed to be its
+ subclass. The "parametric base class pattern" (PBCP), on the
+ other hand, inverses the inheritance and makes a class, T, the derived
+ class. Both CRTP and PBCP techniques have its pros and cons, which is outside
+ the scope of this document. CRTP should really be renamed "parametric
+ subclass pattern (PSCP), but again, that's another story.
+ </p>
+</td></tr>
 </table></div>
 <a name="phoenix.inside_phoenix.actors_in_detail.function_call_operators"></a><h3>
-<a name="id481142"></a>
- Function Call Operators
+<a name="id497372"></a>
+ <a href="inside_phoenix.html#phoenix.inside_phoenix.actors_in_detail.function_call_operators">Function
+ Call Operators</a>
       </h3>
 <p>
         There are N function call operators for 0 to N arguments (N == <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>). The actor class accepts
         the arguments and forwards the arguments to the actor's base <tt class="computeroutput"><span class="identifier">Eval</span></tt> for evaluation.
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> <span class="bold"><b>Forwarding Function
- Problem</b></span><br> <br> The function call operators cannot
- accept non-const temporaries and literal constants. There is a known
- issue with current C++ called the "<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm" target="_top">Forwarding
- Function Problem</a>". The problem is that given an arbitrary
- function <tt class="computeroutput"><span class="identifier">F</span></tt>, using current
- C++ language rules, one cannot create a forwarding function <tt class="computeroutput"><span class="identifier">FF</span></tt> that transparently assumes the
- arguments of <tt class="computeroutput"><span class="identifier">F</span></tt>. Disallowing
- non-const rvalues arguments partially solves the problem but prohibits
- code such as <tt class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">);</span></tt>.
- </td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top">
+<p>
+ <span class="bold"><b>Forwarding Function Problem</b></span>
+ </p>
+<p>
+ The function call operators cannot accept non-const temporaries and literal
+ constants. There is a known issue with current C++ called the "<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm" target="_top">Forwarding
+ Function Problem</a>". The problem is that given an arbitrary
+ function <tt class="computeroutput"><span class="identifier">F</span></tt>, using current
+ C++ language rules, one cannot create a forwarding function <tt class="computeroutput"><span class="identifier">FF</span></tt> that transparently assumes the arguments
+ of <tt class="computeroutput"><span class="identifier">F</span></tt>. Disallowing non-const
+ rvalues arguments partially solves the problem but prohibits code such
+ as <tt class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">);</span></tt>.
+ </p>
+</td></tr>
 </table></div>
 <a name="phoenix.inside_phoenix.actors_in_detail.environment"></a><h3>
-<a name="id481329"></a>
- Environment
+<a name="id497544"></a>
+ Environment
       </h3>
 <p>
         On an actor function call, before calling the actor's <tt class="computeroutput"><span class="identifier">Eval</span><span class="special">::</span><span class="identifier">eval</span></tt>
@@ -232,35 +318,61 @@
         <tt class="computeroutput"><span class="identifier">basic_environment</span></tt> template
         class is a model of.
       </p>
-<div class="informaltable">
-<h4>
-<a name="id481397"></a>
- <span class="table-title">Environment Concept Requirements</span>
- </h4>
-<table class="table">
+<div class="table">
+<a name="id497623"></a><p class="title"><b>Table 1.12. Environment Concept Requirements</b></p>
+<table class="table" summary="Environment Concept Requirements">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Expression</th>
-<th>Result/Semantics</th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result/Semantics
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
-<td><tt class="computeroutput"><span class="identifier">x</span><span class="special">.</span><span class="identifier">args</span><span class="special">()</span></tt></td>
-<td>The
- arguments in a tie (a tuple of references)</td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">args_type</span></tt></td>
-<td>The arguments'
- types in an MPL sequence</td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">tie_type</span></tt></td>
-<td>The tie (tuple
- of references) type</td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">x</span><span class="special">.</span><span class="identifier">args</span><span class="special">()</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ The arguments in a tie (a tuple of references)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">args_type</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ The arguments' types in an MPL sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">tie_type</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ The tie (tuple of references) type
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
@@ -276,8 +388,8 @@
         such as local variables, etc.
       </p>
 <a name="phoenix.inside_phoenix.actors_in_detail.apply_actor"></a><h3>
-<a name="id481574"></a>
- apply_actor
+<a name="id497839"></a>
+ apply_actor
       </h3>
 <p>
         <tt class="computeroutput"><span class="identifier">apply_actor</span></tt> is a standard
@@ -320,8 +432,8 @@
 <span class="special">}</span>
 </pre>
 <a name="phoenix.inside_phoenix.actors_in_detail.actor_result"></a><h3>
-<a name="id482224"></a>
- actor_result
+<a name="id498520"></a>
+ actor_result
       </h3>
 <p>
         For reasons of symmetry to the family of <tt class="computeroutput"><span class="identifier">actor</span><span class="special">::</span><span class="keyword">operator</span><span class="special">()</span></tt> there is a special metafunction usable
@@ -340,7 +452,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.inside_phoenix.actor_example"></a>Actor Example</h3></div></div></div>
+<a name="phoenix.inside_phoenix.actor_example"></a>Actor Example</h3></div></div></div>
 <p>
         Let us see a very simple prototypical example of an actor. This is not a
         toy example. This is actually part of the library. Remember the reference?.
@@ -401,7 +513,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.inside_phoenix.composites_in_detail"></a>Composites In Detail</h3></div></div></div>
+<a name="phoenix.inside_phoenix.composites_in_detail"></a><a href="inside_phoenix.html#phoenix.inside_phoenix.composites_in_detail" title="Composites
+ In Detail">Composites
+ In Detail</a></h3></div></div></div>
 <p>
         We stated before that composites are actors that are composed of zero or
         more actors (see Composite). This
@@ -415,25 +529,36 @@
         <a href="inside_phoenix.html#phoenix.inside_phoenix.actors_in_detail.eval_concept"><tt class="computeroutput"><span class="identifier">Eval</span></tt></a> instances and an eval policy.
         The individual Eval instances are stored in a tuple.
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> In a sense, the original definition of "composite",
- more or less, will do just fine because Eval instances never exist
- alone and are always wrapped in an <tt class="computeroutput"><span class="identifier">actor</span></tt>
- template class which inherits from it anyway. The resulting actor IS-AN
- Eval.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ In a sense, the original definition of "composite", more or less,
+ will do just fine because Eval instances never exist alone
+ and are always wrapped in an <tt class="computeroutput"><span class="identifier">actor</span></tt>
+ template class which inherits from it anyway. The resulting actor IS-AN
+ Eval.
+ </p></td></tr>
 </table></div>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> You can set <tt class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></tt>,
- the predefined maximum <tt class="computeroutput"><span class="identifier">Eval</span></tt>s
- (actors) a composite can take. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></tt>
- is set to <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>
- (See Actors).</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ You can set <tt class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></tt>,
+ the predefined maximum <tt class="computeroutput"><span class="identifier">Eval</span></tt>s
+ (actors) a composite can take. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></tt>
+ is set to <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>
+ (See Actors).
+ </p></td></tr>
 </table></div>
 <a name="phoenix.inside_phoenix.composites_in_detail.composite_template_class"></a><h2>
-<a name="id483520"></a>
- composite template class
+<a name="id499816"></a>
+ <a href="inside_phoenix.html#phoenix.inside_phoenix.composites_in_detail.composite_template_class">composite
+ template class</a>
       </h2>
 <pre class="programlisting">
 <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">EvalPolicy</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">EvalTuple</span><span class="special">&gt;</span>
@@ -456,7 +581,7 @@
 
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">U0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">U1</span><span class="special">&gt;</span>
     <span class="identifier">composite</span><span class="special">(</span><span class="identifier">U0</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">_0</span><span class="special">,</span> <span class="identifier">U1</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">_1</span><span class="special">);</span>
-
+
     <span class="comment">// more constructors
 </span>
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Env</span><span class="special">&gt;</span>
@@ -465,8 +590,8 @@
 <span class="special">};</span>
 </pre>
 <a name="phoenix.inside_phoenix.composites_in_detail.evaltuple"></a><h2>
-<a name="id484112"></a>
- EvalTuple
+<a name="id500422"></a>
+ EvalTuple
       </h2>
 <p>
         <tt class="computeroutput"><span class="identifier">EvalTuple</span></tt>, holds all the
@@ -477,8 +602,8 @@
         base class.
       </p>
 <a name="phoenix.inside_phoenix.composites_in_detail.evalpolicy"></a><h2>
-<a name="id484203"></a>
- EvalPolicy
+<a name="id500533"></a>
+ EvalPolicy
       </h2>
 <p>
         The composite's <tt class="computeroutput"><span class="identifier">eval</span></tt> member
@@ -491,29 +616,54 @@
 <p>
         <span class="inlinemediaobject"><img src="../images/funnel_out.png" alt="funnel_out"></span>
       </p>
-<div class="informaltable">
-<h4>
-<a name="id484285"></a>
- <span class="table-title">EvalPolicy Requirements</span>
- </h4>
-<table class="table">
+<div class="table">
+<a name="id500623"></a><p class="title"><b>Table 1.13. EvalPolicy Requirements</b></p>
+<table class="table" summary="EvalPolicy Requirements">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Expression</th>
-<th>Result/Semantics</th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Result/Semantics
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
-<td><tt class="computeroutput"><span class="identifier">x</span><span class="special">.</span><span class="identifier">eval</span><span class="special">&lt;</span><span class="identifier">RT</span><span class="special">&gt;(</span><span class="identifier">env</span><span class="special">,</span> <span class="identifier">eval0</span><span class="special">,</span> <span class="identifier">eval1</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">evalN</span><span class="special">)</span></tt></td>
-<td>Evaluate the composite</td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">result</span><span class="special">&lt;</span><span class="identifier">Env</span><span class="special">,</span> <span class="identifier">Eval0</span><span class="special">,</span> <span class="identifier">Eval1</span><span class="special">,</span> <span class="identifier">Eval2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">EvalN</span><span class="special">&gt;::</span><span class="identifier">type</span></tt></td>
-<td>The
- return type of eval</td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">x</span><span class="special">.</span><span class="identifier">eval</span><span class="special">&lt;</span><span class="identifier">RT</span><span class="special">&gt;(</span><span class="identifier">env</span><span class="special">,</span> <span class="identifier">eval0</span><span class="special">,</span>
+ <span class="identifier">eval1</span><span class="special">,</span>
+ <span class="special">...,</span> <span class="identifier">evalN</span><span class="special">)</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ Evaluate the composite
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="identifier">T</span><span class="special">::</span><span class="identifier">result</span><span class="special">&lt;</span><span class="identifier">Env</span><span class="special">,</span> <span class="identifier">Eval0</span><span class="special">,</span>
+ <span class="identifier">Eval1</span><span class="special">,</span>
+ <span class="identifier">Eval2</span><span class="special">,</span>
+ <span class="special">...,</span> <span class="identifier">EvalN</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
+ </p>
+ </td>
+<td>
+ <p>
+ The return type of eval
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
@@ -532,21 +682,22 @@
 <span class="identifier">eval</span><span class="special">(</span><span class="identifier">Env</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">env</span><span class="special">)</span> <span class="keyword">const</span>
 <span class="special">{</span>
     <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">result</span><span class="special">&lt;</span><span class="identifier">Env</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">return_type</span><span class="special">;</span>
- <span class="keyword">return</span> <span class="identifier">EvalPolicy</span><span class="special">::</span><span class="keyword">template</span>
+ <span class="keyword">return</span> <span class="identifier">EvalPolicy</span><span class="special">::</span><span class="keyword">template</span>
         <span class="identifier">eval</span><span class="special">&lt;</span><span class="identifier">return_type</span><span class="special">&gt;(</span>
             <span class="identifier">env</span>
           <span class="special">,</span> <span class="identifier">get</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;(*</span><span class="keyword">this</span><span class="special">)</span> <span class="comment">// gets the 0th element from EvalTuple
-</span> <span class="special">,</span> <span class="identifier">get</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(*</span><span class="keyword">this</span><span class="special">));</span> <span class="comment">// gets the 1st element from EvalTuple
+</span> <span class="special">,</span> <span class="identifier">get</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;(*</span><span class="keyword">this</span><span class="special">));</span> <span class="comment">// gets the 1st element from EvalTuple
 </span><span class="special">}</span>
 </pre>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.inside_phoenix.composing"></a>Composing</h3></div></div></div>
+<a name="phoenix.inside_phoenix.composing"></a>Composing</h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">compose</span></dt>
 <dt><span class="section">as_composite</span></dt>
-<dt><span class="section">Composite Example</span></dt>
+<dt><span class="section"><a href="inside_phoenix.html#phoenix.inside_phoenix.composing.composite_example">Composite
+ Example</a></span></dt>
 </dl></div>
 <p>
         Composites are never instantiated directly. Front end expression templates
@@ -560,12 +711,13 @@
         easier. We have a set of overloaded <tt class="computeroutput"><span class="identifier">compose</span></tt>
         functions and an <tt class="computeroutput"><span class="identifier">as_composite</span></tt>
         metafunction. Together, these helpers make composing a breeze. We'll provide
- an <a href="inside_phoenix.html#phoenix.inside_phoenix.composing.composite_example" title="Composite Example">example
+ an <a href="inside_phoenix.html#phoenix.inside_phoenix.composing.composite_example" title="Composite
+ Example">example
         of a composite</a> later to see why.
       </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.inside_phoenix.composing.compose"></a>compose</h4></div></div></div>
+<a name="phoenix.inside_phoenix.composing.compose"></a>compose</h4></div></div></div>
 <pre class="programlisting">
 <span class="identifier">compose</span><span class="special">&lt;</span><span class="identifier">EvalPolicy</span><span class="special">&gt;(</span><span class="identifier">arg0</span><span class="special">,</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">argN</span><span class="special">);</span>
 </pre>
@@ -581,12 +733,12 @@
 </pre>
 <p>
           converts the argument <tt class="computeroutput"><span class="number">3</span></tt> to
- an <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="number">3</span><span class="special">)</span></tt>.
+ an <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="number">3</span><span class="special">)</span></tt>.
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.inside_phoenix.composing.as_composite"></a>as_composite</h4></div></div></div>
+<a name="phoenix.inside_phoenix.composing.as_composite"></a>as_composite</h4></div></div></div>
 <pre class="programlisting">
 <span class="identifier">as_composite</span><span class="special">&lt;</span><span class="identifier">EvalPolicy</span><span class="special">,</span> <span class="identifier">Arg0</span><span class="special">,</span> <span class="identifier">Arg1</span><span class="special">,</span> <span class="identifier">Arg2</span><span class="special">,</span> <span class="special">...,</span> <span class="identifier">ArgN</span><span class="special">&gt;::</span><span class="identifier">type</span>
 </pre>
@@ -607,10 +759,13 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.inside_phoenix.composing.composite_example"></a>Composite Example</h4></div></div></div>
+<a name="phoenix.inside_phoenix.composing.composite_example"></a><a href="inside_phoenix.html#phoenix.inside_phoenix.composing.composite_example" title="Composite
+ Example">Composite
+ Example</a></h4></div></div></div>
 <p>
           Now, let's examine an example. Again, this is not a toy example. This is
- actually part of the library. Remember the while_ lazy statement? Putting
+ actually part of the library. Remember the <a href="composite.html#phoenix.composite.statement.while__statement" title="while_
+ Statement"><tt class="computeroutput"><span class="identifier">while_</span></tt></a> lazy statement? Putting
           together everything we've learned so far, we will present it here in its
           entirety (verbatim):
         </p>
@@ -719,7 +874,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.inside_phoenix.extending"></a>Extending</h3></div></div></div>
+<a name="phoenix.inside_phoenix.extending"></a>Extending</h3></div></div></div>
 <p>
         We've shown how it is very easy to extend phoenix by writing new primitives
         and composites. The modular design of Phoenix makes it extremely extensible.
@@ -739,12 +894,16 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="algorithm.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="wrap_up.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="algorithm.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="wrap_up.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Deleted: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/intrinsic.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/intrinsic.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,320 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Intrinsic</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
-<link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
-<link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
-<link rel="prev" href="composite.html" title="Composite">
-<link rel="next" href="algorithm.html" title="Algorithm">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
-<td valign="top"><img alt="boost.png (6897 bytes)" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
-<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
-<td align="center">More</td>
-</table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="composite.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="algorithm.html"><img src="../images/next.png" alt="Next"></a>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.intrinsic"></a>Intrinsic</h2></div></div></div>
-<pre class="programlisting">
-<tt class="literal"><span class="preprocessor">#include</span><span class="special"> &lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">intrinsic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
-</pre>
-<p>
- The intrinsic module predefines a set of lazy functions that work on STL sequences.
- These functions provide a mechanism for the lazy evaluation of the public member
- functions of the STL containers. The lazy functions are thin wrappers that
- simply forward to their respective counterparts in the STL library.
- </p>
-<p>
- Lazy functions are provided for all of the member functions of the following
- containers:
- </p>
-<div class="itemizedlist"><ul type="disc">
-<li>
- deque
- </li>
-<li>
- list
- </li>
-<li>
- map
- </li>
-<li>
- multimap
- </li>
-<li>
- vector
- </li>
-</ul></div>
-<p>
- Indeed, should your class have member functions with the same names and signatures
- as those listed below, then it will automatically be supported. To summarize,
- lazy functions are provided for member functions:
- </p>
-<div class="itemizedlist"><ul type="disc">
-<li>
- assign
- </li>
-<li>
- at
- </li>
-<li>
- back
- </li>
-<li>
- begin
- </li>
-<li>
- capacity
- </li>
-<li>
- clear
- </li>
-<li>
- empty
- </li>
-<li>
- end
- </li>
-<li>
- erase
- </li>
-<li>
- front
- </li>
-<li>
- get_allocator
- </li>
-<li>
- insert
- </li>
-<li>
- key_comp
- </li>
-<li>
- max_size
- </li>
-<li>
- pop_back
- </li>
-<li>
- pop_front
- </li>
-<li>
- push_back
- </li>
-<li>
- push_front
- </li>
-<li>
- rbegin
- </li>
-<li>
- rend
- </li>
-<li>
- reserve
- </li>
-<li>
- resize
- </li>
-<li>
- size
- </li>
-<li>
- splice
- </li>
-<li>
- value_comp
- </li>
-</ul></div>
-<p>
- The lazy functions' names are the same as the corresponding member function.
- The difference is that the lazy functions are free functions and therefore
- does not use the member "dot" syntax.
- </p>
-<div class="informaltable">
-<h4>
-<a name="id465703"></a><span class="table-title">Sample usage</span>
-</h4>
-<table class="table">
-<colgroup>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>"Normal" version</th>
-<th>"Lazy" version</th>
-</tr></thead>
-<tbody>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">my_vector</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="number">5</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">at</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span><span class="number"> 5</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">my_list</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">size</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">my_vector1</span><span class="special">.</span><span class="identifier">swap</span><span class="special">(</span><span class="identifier">my_vector2</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">swap</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span><span class="identifier"> arg2</span><span class="special">)</span></tt></td>
-</tr>
-</tbody>
-</table>
-</div>
-<p>
- Notice that member functions with names that clash with stl algorithms are
- absent. This will be provided in Phoenix's algorithm module.
- </p>
-<p>
- No support is provided here for lazy versions of <tt class="computeroutput"><span class="keyword">operator</span><span class="special">+=</span></tt>, <tt class="computeroutput"><span class="keyword">operator</span><span class="special">[]</span></tt> etc. Such operators are not specific to STL
- containers and lazy versions can therefore be found in operators.
- </p>
-<div class="informaltable">
-<h4>
-<a name="id465969"></a><span class="table-title">Lazy STL Intrinsic Functions</span>
-</h4>
-<table class="table">
-<colgroup>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>Function</th>
-<th>Semantics</th>
-</tr></thead>
-<tbody>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">assign</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span><span class="identifier"> a</span><span class="special">[,</span><span class="identifier"> b</span><span class="special">,</span><span class="identifier"> c</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="identifier">a</span><span class="special">[,</span><span class="identifier"> b</span><span class="special">,</span><span class="identifier"> c</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">at</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span><span class="identifier"> i</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="identifier">i</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">back</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">back</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">begin</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">capacity</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">capacity</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">clear</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">clear</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">empty</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">empty</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">end</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">erase</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span><span class="identifier"> a</span><span class="special">[,</span><span class="identifier"> b</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">erase</span><span class="special">(</span><span class="identifier">a</span><span class="special">[,</span><span class="identifier"> b</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">front</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">front</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">get_allocator</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">get_allocator</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">insert</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span><span class="identifier"> a</span><span class="special">[,</span><span class="identifier"> b</span><span class="special">,</span><span class="identifier"> c</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">a</span><span class="special">[,</span><span class="identifier"> b</span><span class="special">,</span><span class="identifier"> c</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">key_comp</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">key_comp</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">max_size</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">max_size</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">pop_back</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">pop_front</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">pop_front</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span><span class="identifier"> d</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">d</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">push_front</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span><span class="identifier"> d</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">push_front</span><span class="special">(</span><span class="identifier">d</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">pop_front</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">pop_front</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">rbegin</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">rbegin</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">rend</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">rend</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">reserve</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span><span class="identifier"> n</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">reserve</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">resize</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span><span class="identifier"> a</span><span class="special">[,</span><span class="identifier"> b</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">resize</span><span class="special">(</span><span class="identifier">a</span><span class="special">[,</span><span class="identifier"> b</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">size</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">splice</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span><span class="identifier"> a</span><span class="special">[,</span><span class="identifier"> b</span><span class="special">,</span><span class="identifier"> c</span><span class="special">,</span><span class="identifier"> d</span><span class="special">])</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">splice</span><span class="special">(</span><span class="identifier">a</span><span class="special">[,</span><span class="identifier"> b</span><span class="special">,</span><span class="identifier"> c</span><span class="special">,</span><span class="identifier"> d</span><span class="special">])</span></tt></td>
-</tr>
-<tr>
-<td><tt class="computeroutput"><span class="identifier">value_comp</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt></td>
-<td><tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">value_comp</span><span class="special">()</span></tt></td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb">
-<span class="inlinemediaobject"><img src="../images/tip.png"></span>
- Arguments in brackets denote optional parameters.</td></tr></tbody>
-</table></div>
-</div>
-<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="composite.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="algorithm.html"><img src="../images/next.png" alt="Next"></a>
-</div>
-</body>
-</html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/introduction.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/introduction.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/introduction.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Introduction</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,21 +10,21 @@
 <link rel="next" href="starter_kit.html" title="Starter Kit">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="starter_kit.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../index.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="starter_kit.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.introduction"></a>Introduction</h2></div></div></div>
+<a name="phoenix.introduction"></a>Introduction</h2></div></div></div>
 <p>
       <span class="inlinemediaobject"><img src="../images/banner.png" alt="banner"></span>
     </p>
@@ -55,12 +55,16 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../index.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="starter_kit.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../index.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="starter_kit.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/organization.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/organization.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/organization.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Organization</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,21 +10,21 @@
 <link rel="next" href="actors.html" title="Actors">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="basics.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="actors.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="basics.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="actors.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.organization"></a>Organization</h2></div></div></div>
+<a name="phoenix.organization"></a>Organization</h2></div></div></div>
 <p>
       Care and attention to detail was given, painstakingly, to the design and implementation
       of Phoenix.
@@ -47,8 +47,8 @@
       files. There are no object files to link against.
     </p>
 <a name="phoenix.organization.core"></a><h2>
-<a name="id448254"></a>
- Core
+<a name="id461546"></a>
+ Core
     </h2>
 <p>
       The lowest two layers comprise the core.
@@ -75,134 +75,282 @@
       Composites are composed of zero or more actors. Each actor in a composite can
       again be another composite.
     </p>
-<div class="informaltable">
-<h4>
-<a name="id448312"></a>
- <span class="table-title">Modules</span>
- </h4>
-<table class="table">
+<div class="table">
+<a name="id461610"></a><p class="title"><b>Table 1.2. Modules</b></p>
+<table class="table" summary="Modules">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Module</th>
-<th>Description</th>
+<th>
+ <p>
+ Module
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
-<td>Function</td>
-<td>Lazy functions support (e.g. <tt class="computeroutput"><span class="identifier">add</span></tt>)</td>
-</tr>
-<tr>
-<td>Operator</td>
-<td>Lazy operators support (e.g. <tt class="computeroutput"><span class="special">+</span></tt>)</td>
-</tr>
-<tr>
-<td>Statement</td>
-<td>Lazy statments (e.g. <tt class="computeroutput"><span class="identifier">if_</span></tt>,
- <tt class="computeroutput"><span class="identifier">while_</span></tt>)</td>
-</tr>
-<tr>
-<td>Object</td>
-<td>Lazy casts (e.g. <tt class="computeroutput"><span class="identifier">static_cast_</span></tt>),
+<td>
+ <p>
+ Function
+ </p>
+ </td>
+<td>
+ <p>
+ Lazy functions support (e.g. <tt class="computeroutput"><span class="identifier">add</span></tt>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Operator
+ </p>
+ </td>
+<td>
+ <p>
+ Lazy operators support (e.g. <tt class="computeroutput"><span class="special">+</span></tt>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Statement
+ </p>
+ </td>
+<td>
+ <p>
+ Lazy statments (e.g. <tt class="computeroutput"><span class="identifier">if_</span></tt>,
+ <tt class="computeroutput"><span class="identifier">while_</span></tt>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Object
+ </p>
+ </td>
+<td>
+ <p>
+ Lazy casts (e.g. <tt class="computeroutput"><span class="identifier">static_cast_</span></tt>),
             object creation destruction (e.g. <tt class="computeroutput"><span class="identifier">new_</span></tt>,
- <tt class="computeroutput"><span class="identifier">delete_</span></tt>)</td>
-</tr>
-<tr>
-<td>Scope</td>
-<td>Support for scopes, local variables and lambda-lambda</td>
-</tr>
-<tr>
-<td>Bind</td>
-<td>Lazy functions from free functions, member
- functions or member variables.</td>
-</tr>
-<tr>
-<td>Container</td>
-<td>Set of predefined "lazy" functions
- that work on STL containers and sequences (e.g. <tt class="computeroutput"><span class="identifier">push_back</span></tt>).</td>
-</tr>
-<tr>
-<td>Algorithm</td>
-<td>Set of predefined "lazy" versions
- of the STL algorithms (e.g. <tt class="computeroutput"><span class="identifier">find_if</span></tt>).</td>
+ <tt class="computeroutput"><span class="identifier">delete_</span></tt>)
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Scope
+ </p>
+ </td>
+<td>
+ <p>
+ Support for scopes, local variables and lambda-lambda
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Bind
+ </p>
+ </td>
+<td>
+ <p>
+ Lazy functions from free functions, member functions or member variables.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+<td>
+ <p>
+ Set of predefined "lazy" functions that work on STL containers
+ and sequences (e.g. <tt class="computeroutput"><span class="identifier">push_back</span></tt>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Algorithm
+ </p>
+ </td>
+<td>
+ <p>
+ Set of predefined "lazy" versions of the STL algorithms (e.g.
+ <tt class="computeroutput"><span class="identifier">find_if</span></tt>).
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
 </div>
 <p>
       Each module is defined in a header file with the same name. For example, the
- core module is defined in <tt class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>.
+ core module is defined in <tt class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>.
     </p>
-<div class="informaltable">
-<h4>
-<a name="id448597"></a>
- <span class="table-title">Includes</span>
- </h4>
-<table class="table">
+<div class="table">
+<a name="id461986"></a><p class="title"><b>Table 1.3. Includes</b></p>
+<table class="table" summary="Includes">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>Module</th>
-<th>File</th>
+<th>
+ <p>
+ Module
+ </p>
+ </th>
+<th>
+ <p>
+ File
+ </p>
+ </th>
 </tr></thead>
 <tbody>
 <tr>
-<td>Core</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
-</tr>
-<tr>
-<td>Function</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
-</tr>
-<tr>
-<td>Operator</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
-</tr>
-<tr>
-<td>Statement</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
-</tr>
-<tr>
-<td>Object</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
-</tr>
-<tr>
-<td>Scope</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">scope</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
-</tr>
-<tr>
-<td>Bind</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">bind</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
-</tr>
-<tr>
-<td>Container</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
-</tr>
-<tr>
-<td>Algorithm</td>
-<td><tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt></td>
+<td>
+ <p>
+ Core
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Function
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Operator
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="keyword">operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Statement
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">statement</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Object
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">object</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Scope
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">scope</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Bind
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">bind</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Algorithm
+ </p>
+ </td>
+<td>
+ <p>
+ <tt class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></tt>
+ </p>
+ </td>
 </tr>
 </tbody>
 </table>
 </div>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Finer grained include files are available per feature;
- see the succeeding sections.</td></tr></tbody>
-</table></div>
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Finer grained include files are available per feature;
+ see the succeeding sections.
+ </p></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="basics.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="actors.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="basics.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="actors.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/primitives.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/primitives.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/primitives.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Primitives</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,21 +10,21 @@
 <link rel="next" href="composite.html" title="Composite">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="actors.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="composite.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="actors.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="composite.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.primitives"></a>Primitives</h2></div></div></div>
+<a name="phoenix.primitives"></a>Primitives</h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">Arguments</span></dt>
 <dt><span class="section">Values</span></dt>
@@ -40,9 +40,9 @@
     </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.primitives.arguments"></a>Arguments</h3></div></div></div>
+<a name="phoenix.primitives.arguments"></a>Arguments</h3></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">argument</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">argument</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         We use an instance of:
@@ -55,11 +55,13 @@
         an imaginary data-bin where a function argument will be placed.
       </p>
 <a name="phoenix.primitives.arguments.predefined_arguments"></a><h2>
-<a name="id450010"></a>
- Predefined Arguments
+<a name="id463599"></a>
+ <a href="primitives.html#phoenix.primitives.arguments.predefined_arguments">Predefined
+ Arguments</a>
       </h2>
 <p>
- There are a few predefined instances of <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">argument</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt> named <tt class="computeroutput"><span class="identifier">arg1</span></tt>..<tt class="computeroutput"><span class="identifier">argN</span></tt>, and its BLL
+ There are a few predefined instances of <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">argument</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span></tt> named <tt class="computeroutput"><span class="identifier">arg1</span></tt>..<tt class="computeroutput"><span class="identifier">argN</span></tt>, and its BLL
         counterpart <tt class="computeroutput"><span class="identifier">_1</span></tt>..<tt class="computeroutput"><span class="identifier">_N</span></tt>. (where N is a predefined maximum).
       </p>
 <p>
@@ -71,7 +73,8 @@
 <span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">argument</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="keyword">const</span> <span class="identifier">arg3</span> <span class="special">=</span> <span class="identifier">argument</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;();</span>
 </pre>
 <p>
- and its BLL <tt class="computeroutput"><span class="identifier">_1</span></tt>..<tt class="computeroutput"><span class="identifier">_N</span></tt>
+ and its BLL
+ <tt class="computeroutput"><span class="identifier">_1</span></tt>..<tt class="computeroutput"><span class="identifier">_N</span></tt>
         style counterparts:
       </p>
 <pre class="programlisting">
@@ -79,14 +82,22 @@
 <span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">argument</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="keyword">const</span> <span class="identifier">_2</span> <span class="special">=</span> <span class="identifier">argument</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;();</span>
 <span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">argument</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="keyword">const</span> <span class="identifier">_3</span> <span class="special">=</span> <span class="identifier">argument</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;();</span>
 </pre>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> You can set <tt class="computeroutput"><span class="identifier">PHOENIX_ARG_LIMIT</span></tt>,
- the predefined maximum placeholder index. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_ARG_LIMIT</span></tt> is set to <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt> (See Actors).</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ You can set <tt class="computeroutput"><span class="identifier">PHOENIX_ARG_LIMIT</span></tt>,
+ the predefined maximum placeholder index. By default, <tt class="computeroutput"><span class="identifier">PHOENIX_ARG_LIMIT</span></tt>
+ is set to <tt class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></tt>
+ (See Actors).
+ </p></td></tr>
 </table></div>
 <a name="phoenix.primitives.arguments.user_defined_arguments"></a><h2>
-<a name="id450741"></a>
- User Defined Arguments
+<a name="id464325"></a>
+ <a href="primitives.html#phoenix.primitives.arguments.user_defined_arguments">User
+ Defined Arguments</a>
       </h2>
 <p>
         When appropriate, you can define your own <tt class="computeroutput"><span class="identifier">argument</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span></tt>
@@ -109,8 +120,9 @@
 <span class="identifier">add</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="number">6</span><span class="special">)</span>
 </pre>
 <a name="phoenix.primitives.arguments.evaluating_an_argument"></a><h2>
-<a name="id450940"></a>
- Evaluating an Argument
+<a name="id464544"></a>
+ <a href="primitives.html#phoenix.primitives.arguments.evaluating_an_argument">Evaluating
+ an Argument</a>
       </h2>
 <p>
         An argument, when evaluated, selects the Nth argument from the those passed
@@ -137,8 +149,8 @@
 <span class="identifier">Hello</span> <span class="identifier">World</span>
 </pre>
 <a name="phoenix.primitives.arguments.extra_arguments"></a><h2>
-<a name="id451295"></a>
- Extra Arguments
+<a name="id464915"></a>
+ Extra Arguments
       </h2>
 <p>
         In C and C++, a function can have extra arguments that are not at all used
@@ -172,25 +184,30 @@
         takes in the first argument (<tt class="computeroutput"><span class="identifier">arg1</span></tt>)
         and the fifth argument (<tt class="computeroutput"><span class="identifier">arg5</span></tt>).
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> There are a few reasons why enforcing strict arity
- is not desireable. A case in point is the callback function. Typical
- callback functions provide more information than is actually needed.
- Lambda functions are often used as callbacks.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ There are a few reasons why enforcing strict arity is not desireable. A
+ case in point is the callback function. Typical callback functions provide
+ more information than is actually needed. Lambda functions are often used
+ as callbacks.
+ </p></td></tr>
 </table></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.primitives.values"></a>Values</h3></div></div></div>
+<a name="phoenix.primitives.values"></a>Values</h3></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">value</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">value</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         Whenever we see a constant in a partially applied function, an
       </p>
 <pre class="programlisting">
-<span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span>
 </pre>
 <p>
         (where T is the type of the constant) is automatically created for us. For
@@ -201,22 +218,23 @@
 </pre>
 <p>
         Passing a second argument, <tt class="computeroutput"><span class="number">6</span></tt>,
- an <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt> is implicitly created behind the scenes.
- This is also equivalent to:
+ an <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt>
+ is implicitly created behind the scenes. This is also equivalent to:
       </p>
 <pre class="programlisting">
 <span class="identifier">add</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">val</span><span class="special">(</span><span class="number">6</span><span class="special">))</span>
 </pre>
 <p>
         <tt class="computeroutput"><span class="identifier">val</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></tt> generates
- an <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt> where <tt class="computeroutput"><span class="identifier">T</span></tt>
+ an <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt> where <tt class="computeroutput"><span class="identifier">T</span></tt>
         is the type of <tt class="computeroutput"><span class="identifier">x</span></tt>. In most
         cases, there's no need to explicitly use <tt class="computeroutput"><span class="identifier">val</span></tt>,
         but, as we'll see later on, there are situations where this is unavoidable.
       </p>
 <a name="phoenix.primitives.values.evaluating_a_value"></a><h2>
-<a name="id452041"></a>
- Evaluating a Value
+<a name="id465687"></a>
+ <a href="primitives.html#phoenix.primitives.values.evaluating_a_value">Evaluating a
+ Value</a>
       </h2>
 <p>
         Like arguments, values are also actors. As such, values can be evaluated.
@@ -231,9 +249,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.primitives.references"></a>References</h3></div></div></div>
+<a name="phoenix.primitives.references"></a>References</h3></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         Values are immutable constants. Attempting to modify a value will result
@@ -260,19 +278,24 @@
 <span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">reference</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span>
 </pre>
 <p>
- This is similar to <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt> above but instead holds a reference to
- a variable.
+ This is similar to <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span></tt> above but instead holds a reference
+ to a variable.
       </p>
 <p>
- We normally don't instantiate <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">reference</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt> objects directly. Instead we use <tt class="computeroutput"><span class="identifier">ref</span></tt>. For example (where <tt class="computeroutput"><span class="identifier">i</span></tt>
- is an <tt class="computeroutput"><span class="keyword">int</span></tt> variable):
+ We normally don't instantiate <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">reference</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span></tt> objects directly. Instead we
+ use <tt class="computeroutput"><span class="identifier">ref</span></tt>. For example (where
+ <tt class="computeroutput"><span class="identifier">i</span></tt> is an <tt class="computeroutput"><span class="keyword">int</span></tt>
+ variable):
       </p>
 <pre class="programlisting">
 <span class="identifier">add_assign</span><span class="special">(</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">i</span><span class="special">),</span> <span class="number">2</span><span class="special">)</span>
 </pre>
 <a name="phoenix.primitives.references.evaluating_a_reference"></a><h2>
-<a name="id452625"></a>
- Evaluating a Reference
+<a name="id466317"></a>
+ <a href="primitives.html#phoenix.primitives.references.evaluating_a_reference">Evaluating
+ a Reference</a>
       </h2>
 <p>
         References are actors. Hence, references can be evaluated. Such invocation
@@ -289,23 +312,24 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.primitives.constant_references"></a>Constant References</h3></div></div></div>
+<a name="phoenix.primitives.constant_references"></a>Constant References</h3></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         Another free function <tt class="computeroutput"><span class="identifier">cref</span><span class="special">(</span><span class="identifier">cv</span><span class="special">)</span></tt>
         may also be used. <tt class="computeroutput"><span class="identifier">cref</span><span class="special">(</span><span class="identifier">cv</span><span class="special">)</span></tt> creates
- an <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">reference</span><span class="special">&lt;</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;&gt;</span> <span class="special">&gt;</span></tt>
- object. This is similar to <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;</span></tt> but when the data to be passed as argument
- to a function is heavy and expensive to copy by value, the <tt class="computeroutput"><span class="identifier">cref</span><span class="special">(</span><span class="identifier">cv</span><span class="special">)</span></tt> offers a lighter alternative.
+ an <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">reference</span><span class="special">&lt;</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;&gt;</span> <span class="special">&gt;</span></tt>
+ object. This is similar to <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">value</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span></tt> but when the data to be passed
+ as argument to a function is heavy and expensive to copy by value, the <tt class="computeroutput"><span class="identifier">cref</span><span class="special">(</span><span class="identifier">cv</span><span class="special">)</span></tt> offers a lighter alternative.
       </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.primitives.nothing"></a>Nothing</h3></div></div></div>
+<a name="phoenix.primitives.nothing"></a>Nothing</h3></div></div></div>
 <pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">nothing</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">nothing</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
 </pre>
 <p>
         Finally, the <tt class="computeroutput"><span class="identifier">actor</span><span class="special">&lt;</span><span class="identifier">null_actor</span><span class="special">&gt;</span></tt>
@@ -318,12 +342,16 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="actors.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="composite.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="actors.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="composite.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/references.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/references.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/references.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,28 +2,28 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>References</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="prev" href="acknowledgement.html" title="Acknowledgement">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="acknowledgement.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
+<a accesskey="p" href="acknowledgement.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.references"></a>References</h2></div></div></div>
+<a name="phoenix.references"></a>References</h2></div></div></div>
 <div class="orderedlist"><ol type="1">
 <li>
         Why Functional Programming Matters, John Hughes, 1989. Available online at
@@ -75,12 +75,16 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="acknowledgement.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a>
+<a accesskey="p" href="acknowledgement.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/starter_kit.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/starter_kit.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/starter_kit.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Starter Kit</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,21 +10,21 @@
 <link rel="next" href="basics.html" title="Basics">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="introduction.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="basics.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="introduction.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basics.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.starter_kit"></a>Starter Kit</h2></div></div></div>
+<a name="phoenix.starter_kit"></a>Starter Kit</h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">Values</span></dt>
 <dt><span class="section">References</span></dt>
@@ -32,7 +32,8 @@
 <dt><span class="section">Composites</span></dt>
 <dt><span class="section">Lazy Operators</span></dt>
 <dt><span class="section">Lazy Statements</span></dt>
-<dt><span class="section">Construct, New, Delete, Casts</span></dt>
+<dt><span class="section"><a href="starter_kit.html#phoenix.starter_kit.construct__new__delete__casts">Construct,
+ New, Delete, Casts</a></span></dt>
 <dt><span class="section">Lazy Functions</span></dt>
 <dt><span class="section">More</span></dt>
 </dl></div>
@@ -58,23 +59,27 @@
       into high gear quickly.
     </p>
 <a name="phoenix.starter_kit.functors_everywhere"></a><h2>
-<a name="id373131"></a>
- Functors everywhere
+<a name="id387510"></a>
+ Functors everywhere
     </h2>
 <p>
       Phoenix is built on function objects (functors). The functor is the main building
       block. We compose functors to build more complex functors... to build more
       complex functors... and so on. Almost everything is a functor.
     </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> Functors are so ubiquitous in Phoenix that, in the
- manual, the words <span class="emphasis"><em>"functor"</em></span> and <span class="emphasis"><em>"function"</em></span>
- are used interchangeably.</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ Functors are so ubiquitous in Phoenix that, in the manual, the words <span class="emphasis"><em>"functor"</em></span>
+ and <span class="emphasis"><em>"function"</em></span> are used interchangeably.
+ </p></td></tr>
 </table></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.starter_kit.values"></a>Values</h3></div></div></div>
+<a name="phoenix.starter_kit.values"></a>Values</h3></div></div></div>
 <p>
         Values are functions! Examples:
       </p>
@@ -85,12 +90,12 @@
 <p>
         The first evaluates to a nullary function (a function taking no arguments)
         that returns an <tt class="computeroutput"><span class="keyword">int</span></tt>, <tt class="computeroutput"><span class="number">3</span></tt>. The second evaluates to a nullary function
- that returns a <tt class="computeroutput"><span class="keyword">char</span> <span class="keyword">const</span><span class="special">(&amp;)[</span><span class="number">13</span><span class="special">]</span></tt>, <tt class="computeroutput"><span class="string">"Hello,
+ that returns a <tt class="computeroutput"><span class="keyword">char</span> <span class="keyword">const</span><span class="special">(&amp;)[</span><span class="number">13</span><span class="special">]</span></tt>, <tt class="computeroutput"><span class="string">"Hello,
         World"</span></tt>.
       </p>
 <a name="phoenix.starter_kit.values.lazy_evaluation"></a><h2>
-<a name="id373334"></a>
- Lazy Evaluation
+<a name="id385403"></a>
+ Lazy Evaluation
       </h2>
 <p>
         Confused? <tt class="computeroutput"><span class="identifier">val</span><span class="special">(</span><span class="number">3</span><span class="special">)</span></tt> is a unary
@@ -106,11 +111,9 @@
 <p>
         (See values.cpp)
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about values here.
-</td></tr></tbody>
-</table></div>
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about values here.
+ </p></div>
 <p>
         The second function call (the one with no arguments) calls the nullary function
         which then returns <tt class="computeroutput"><span class="number">3</span></tt>. The need
@@ -121,8 +124,8 @@
         anything and defers the evaluation for later.
       </p>
 <a name="phoenix.starter_kit.values.callbacks"></a><h2>
-<a name="id372414"></a>
- Callbacks
+<a name="id456050"></a>
+ Callbacks
       </h2>
 <p>
         It may not be immediately apparent how lazy evaluation can be useful by just
@@ -151,7 +154,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.starter_kit.references"></a>References</h3></div></div></div>
+<a name="phoenix.starter_kit.references"></a>References</h3></div></div></div>
 <p>
         References are functions. They hold a reference to a value stored somehere.
         For example, given:
@@ -172,20 +175,19 @@
 <p>
         Like <tt class="computeroutput"><span class="identifier">val</span></tt>, the expressions
         above evaluates to a nullary function; the first one returning an <tt class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></tt>,
- and the second one returning a <tt class="computeroutput"><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*&amp;</span></tt>.
+ and the second one returning a <tt class="computeroutput"><span class="keyword">char</span>
+ <span class="keyword">const</span><span class="special">*&amp;</span></tt>.
       </p>
 <p>
         (See references.cpp)
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about references here.
-</td></tr></tbody>
-</table></div>
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about references here.
+ </p></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.starter_kit.arguments"></a>Arguments</h3></div></div></div>
+<a name="phoenix.starter_kit.arguments"></a>Arguments</h3></div></div></div>
 <p>
         Arguments are also functions? You bet!
       </p>
@@ -214,15 +216,13 @@
 <p>
         (See arguments.cpp)
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about arguments here.
-</td></tr></tbody>
-</table></div>
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about arguments here.
+ </p></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.starter_kit.composites"></a>Composites</h3></div></div></div>
+<a name="phoenix.starter_kit.composites"></a>Composites</h3></div></div></div>
 <p>
         What we have seen so far, are what are called <span class="bold"><b>primitives</b></span>.
         You can think of primitives (such as values, references and arguments) as
@@ -236,7 +236,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.starter_kit.lazy_operators"></a>Lazy Operators</h3></div></div></div>
+<a name="phoenix.starter_kit.lazy_operators"></a>Lazy Operators</h3></div></div></div>
 <p>
         You can use the usual set of operators to form composites. Examples:
       </p>
@@ -247,15 +247,17 @@
 <span class="identifier">ref</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">arg1</span><span class="special">[</span><span class="identifier">arg2</span><span class="special">]</span> <span class="comment">// assuming arg1 is indexable and arg2 is a valid index
 </span></pre>
 <p>
- Note the expression: <tt class="computeroutput"><span class="number">3</span> <span class="special">*</span> <span class="identifier">arg3</span></tt>.
- This expression is actually a short-hand equivalent to: <tt class="computeroutput"><span class="identifier">val</span><span class="special">(</span><span class="number">3</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">arg3</span></tt>.
+ Note the expression: <tt class="computeroutput"><span class="number">3</span> <span class="special">*</span>
+ <span class="identifier">arg3</span></tt>. This expression is actually
+ a short-hand equivalent to: <tt class="computeroutput"><span class="identifier">val</span><span class="special">(</span><span class="number">3</span><span class="special">)</span>
+ <span class="special">*</span> <span class="identifier">arg3</span></tt>.
         In most cases, like above, you can get away with it. But in some cases, you
         will have to explicitly wrap your values in <tt class="computeroutput"><span class="identifier">val</span></tt>.
         Rules of thumb:
       </p>
 <div class="itemizedlist"><ul type="disc">
 <li>
- In a binary expression (e.g. <tt class="computeroutput"><span class="number">3</span> <span class="special">*</span> <span class="identifier">arg3</span></tt>),
+ In a binary expression (e.g. <tt class="computeroutput"><span class="number">3</span> <span class="special">*</span> <span class="identifier">arg3</span></tt>),
           at least one of the operands must be a phoenix primitive or composite.
         </li>
 <li>
@@ -279,14 +281,13 @@
 </span><span class="identifier">x</span><span class="special">[</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">i</span><span class="special">)]</span> <span class="comment">// illegal (x is not a phoenix primitive or composite)
 </span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">x</span><span class="special">[</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">i</span><span class="special">)])</span> <span class="comment">// illegal (x is not a phoenix primitive or composite)
 </span></pre>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about operators here.
-</td></tr></tbody>
-</table></div>
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about operators here.
+ </p></div>
 <a name="phoenix.starter_kit.lazy_operators.first_practical_example"></a><h2>
-<a name="id444445"></a>
- First Practical Example
+<a name="id457702"></a>
+ <a href="starter_kit.html#phoenix.starter_kit.lazy_operators.first_practical_example">First
+ Practical Example</a>
       </h2>
 <p>
         We've covered enough ground to present a real world example. We want to find
@@ -318,25 +319,26 @@
 <span class="identifier">find_if</span><span class="special">(</span><span class="identifier">c</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">c</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span><span class="special">)</span>
 </pre>
 <p>
- The expression <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span></tt> automagically
- creates a functor with the expected behavior. In FP, this unnamed function
- is called a lambda function. Unlike the function pointer version, which is
- monomorphic (expects and works only with a fixed type int argument), the
- Phoenix version is fully polymorphic and works with any container (of ints,
- of longs, of bignum, etc.) as long as its elements can handle the <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span></tt> expression.
+ The expression <tt class="computeroutput"><span class="identifier">arg1</span> <span class="special">%</span>
+ <span class="number">2</span> <span class="special">==</span> <span class="number">1</span></tt> automagically creates a functor with the
+ expected behavior. In FP, this unnamed function is called a lambda function.
+ Unlike the function pointer version, which is monomorphic (expects and works
+ only with a fixed type int argument), the Phoenix version is fully polymorphic
+ and works with any container (of ints, of longs, of bignum, etc.) as long
+ as its elements can handle the <tt class="computeroutput"><span class="identifier">arg1</span>
+ <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span></tt> expression.
       </p>
 <p>
         (See find_if.cpp)
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> ...<span class="bold"><b>That's it, we're done</b></span>.
- Well if you wish to know a little bit more, read on...</td></tr></tbody>
-</table></div>
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> ...<span class="bold"><b>That's it, we're done</b></span>.
+ Well if you wish to know a little bit more, read on...
+ </p></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.starter_kit.lazy_statements"></a>Lazy Statements</h3></div></div></div>
+<a name="phoenix.starter_kit.lazy_statements"></a>Lazy Statements</h3></div></div></div>
 <p>
         Lazy statements? Sure. There are lazy versions of the C++ statements we all
         know and love. For example:
@@ -360,15 +362,15 @@
 <p>
         (See if.cpp)
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about statements here.
-</td></tr></tbody>
-</table></div>
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about statements here.
+ </p></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.starter_kit.construct__new__delete__casts"></a>Construct, New, Delete, Casts</h3></div></div></div>
+<a name="phoenix.starter_kit.construct__new__delete__casts"></a><a href="starter_kit.html#phoenix.starter_kit.construct__new__delete__casts" title="Construct,
+ New, Delete, Casts">Construct,
+ New, Delete, Casts</a></h3></div></div></div>
 <p>
         You'll probably want to work with objects. There are lazy versions of constructor
         calls, <tt class="computeroutput"><span class="keyword">new</span></tt>, <tt class="computeroutput"><span class="keyword">delete</span></tt>
@@ -380,22 +382,23 @@
 </span><span class="identifier">delete_</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">)</span> <span class="comment">// deletes arg1 (assumed to be a pointer)
 </span><span class="identifier">static_cast_</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">*&gt;(</span><span class="identifier">arg1</span><span class="special">)</span> <span class="comment">// static_cast's arg1 to an int*
 </span></pre>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> Take note that, by convention, names that conflict
- with C++ reserved words are appended with a single trailing underscore
- <tt class="computeroutput"><span class="char">'_'</span></tt>
-</td></tr></tbody>
-</table></div>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about this here.
-</td></tr></tbody>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ Take note that, by convention, names that conflict with C++ reserved words
+ are appended with a single trailing underscore <tt class="computeroutput"><span class="char">'_'</span></tt>
+ </p></td></tr>
 </table></div>
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> Learn more about this here.
+ </p></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.starter_kit.lazy_functions"></a>Lazy Functions</h3></div></div></div>
+<a name="phoenix.starter_kit.lazy_functions"></a>Lazy Functions</h3></div></div></div>
 <p>
         As you write more lambda functions, you'll notice certain patterns that you
         wish to refactor as reusable functions. When you reach that point, you'll
@@ -412,23 +415,24 @@
 <span class="keyword">struct</span> <span class="identifier">is_odd_impl</span>
 <span class="special">{</span>
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Arg</span><span class="special">&gt;</span>
- <span class="keyword">struct</span> <span class="identifier">result</span>
- <span class="special">{</span>
- <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="keyword">struct</span> <span class="identifier">result</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">type</span><span class="special">;</span>
     <span class="special">};</span>
 
     <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Arg</span><span class="special">&gt;</span>
     <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Arg</span> <span class="identifier">arg1</span><span class="special">)</span> <span class="keyword">const</span>
- <span class="special">{</span>
- <span class="keyword">return</span> <span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span><span class="special">;</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span><span class="special">;</span>
     <span class="special">}</span>
 <span class="special">};</span>
 
 <span class="identifier">function</span><span class="special">&lt;</span><span class="identifier">is_odd_impl</span><span class="special">&gt;</span> <span class="identifier">is_odd</span><span class="special">;</span>
 </pre>
 <a name="phoenix.starter_kit.lazy_functions.things_to_note_"></a><h2>
-<a name="id445824"></a>
- Things to note:
+<a name="id459051"></a>
+ <a href="starter_kit.html#phoenix.starter_kit.lazy_functions.things_to_note_">Things
+ to note:</a>
       </h2>
 <div class="itemizedlist"><ul type="disc">
 <li>
@@ -461,8 +465,9 @@
         (See function.cpp)
       </p>
 <a name="phoenix.starter_kit.lazy_functions.predefined_lazy_functions"></a><h2>
-<a name="id446061"></a>
- Predefined Lazy Functions
+<a name="id459305"></a>
+ <a href="starter_kit.html#phoenix.starter_kit.lazy_functions.predefined_lazy_functions">Predefined
+ Lazy Functions</a>
       </h2>
 <p>
         The library is chock full of STL savvy, predefined lazy functions covering
@@ -473,7 +478,7 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="phoenix.starter_kit.more"></a>More</h3></div></div></div>
+<a name="phoenix.starter_kit.more"></a>More</h3></div></div></div>
 <p>
         As mentioned earlier, this chapter is not a thorough discourse of the library.
         It is meant only to cover enough ground to get you into high gear as quickly
@@ -482,22 +487,24 @@
         things (e.g. Bind vs. Lazy
         Functions).
       </p>
-<div class="informaltable"><table class="table">
-<colgroup><col></colgroup>
-<tbody><tr><td class="blurb"> <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> ...<span class="bold"><b>If you still wish to
- learn more, the read on...</b></span>
-</td></tr></tbody>
-</table></div>
+<div class="sidebar"><p>
+ <span class="inlinemediaobject"><img src="../images/tip.png" alt="tip"></span> ...<span class="bold"><b>If you still wish to learn
+ more, the read on...</b></span>
+ </p></div>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="introduction.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="basics.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="introduction.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="basics.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/wrap_up.html
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/wrap_up.html (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/html/phoenix/wrap_up.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Wrap Up</title>
-<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
 <link rel="start" href="../index.html" title="Chapter 1. Phoenix 2.0">
 <link rel="up" href="../index.html" title="Chapter 1. Phoenix 2.0">
@@ -10,21 +10,21 @@
 <link rel="next" href="acknowledgement.html" title="Acknowledgement">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%">
+<table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
-<td align="center">Home</td>
+<td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
-</table>
+</tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="inside_phoenix.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgement.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="inside_phoenix.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgement.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="phoenix.wrap_up"></a>Wrap Up</h2></div></div></div>
+<a name="phoenix.wrap_up"></a>Wrap Up</h2></div></div></div>
 <p>
       Sooner or later more FP techniques become standard practice as people find
       the true value of this programming discipline outside the academe and into
@@ -37,15 +37,21 @@
 <p>
       Let me quote Doug Gregor of Boost.org. About functional style programming libraries:
     </p>
-<div class="blockquote"><blockquote class="blockquote"><p>
- <span class="emphasis"><em>They're gaining acceptance, but are somewhat stunted by the ubiquitousness
- of broken compilers. The C++ community is moving deeper into the so-called
- "STL- style" programming paradigm, which brings many aspects of
- functional programming into the fold. Look at, for instance, the Spirit parser
- to see how such function objects can be used to build Yacc-like grammars
- with semantic actions that can build abstract syntax trees on the fly. This
- type of functional composition is gaining momentum.</em></span>
- </p></blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <span class="emphasis"><em>They're gaining acceptance, but are somewhat stunted by the ubiquitousness
+ of broken compilers. The C++ community is moving deeper into the so-called
+ "STL- style" programming paradigm, which brings many aspects
+ of functional programming into the fold. Look at, for instance, the Spirit
+ parser to see how such function objects can be used to build Yacc-like
+ grammars with semantic actions that can build abstract syntax trees on
+ the fly. This type of functional composition is gaining momentum.</em></span>
+ </p>
+<p>
+ </p>
+</blockquote></div>
 <p>
       Indeed. Phoenix is another attempt to introduce more FP techniques into the
       mainstream. Not only is it a tool that will make life easier for the programmer.
@@ -61,12 +67,16 @@
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>
-<td align="right"><small>Copyright © 2002-2005 Joel
- de Guzman, Dan Marsden</small></td>
+<td align="right"><div class="copyright-footer">Copyright © 2002-2005 Joel
+ de Guzman, Dan Marsden<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="inside_phoenix.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgement.html"><img src="../images/next.png" alt="Next"></a>
+<a accesskey="p" href="inside_phoenix.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgement.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: branches/proto/v4/libs/spirit/phoenix/doc/users_manual.qbk
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/doc/users_manual.qbk (original)
+++ branches/proto/v4/libs/spirit/phoenix/doc/users_manual.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -38,11 +38,11 @@
 
 [section Preface]
 
-[:['Functional programming is so called because a program consists entirely of
-functions. The main program itself is written as a function which receives the
-program's input as its argument and delivers the program's output as its result.
-Typically the main function is defined in terms of other functions, which in
-turn are defined in terms of still more functions until at the bottom level the
+[:['Functional programming is so called because a program consists entirely of
+functions. The main program itself is written as a function which receives the
+program's input as its argument and delivers the program's output as its result.
+Typically the main function is defined in terms of other functions, which in
+turn are defined in terms of still more functions until at the bottom level the
 functions are language primitives.]]
 
 [:*John Hughes*-- /Why Functional Programming Matters/]
@@ -59,9 +59,9 @@
 version, will probably be the last release of the library. Phoenix v2 will be
 the basis of the Phoenix and __bll__ merger.
 
-Phoenix is a header only library. It is extremely modular by design. One can
-extract and use only a small subset of the full library, literally tearing the
-library into small pieces, without fear that the pieces won't work anymore. The
+Phoenix is a header only library. It is extremely modular by design. One can
+extract and use only a small subset of the full library, literally tearing the
+library into small pieces, without fear that the pieces won't work anymore. The
 library is organized in highly independent modules and layers.
 
 [h2 How to use this manual]
@@ -117,14 +117,14 @@
 evaluation in C++. The focus is more on usefulness and practicality than purity,
 elegance and strict adherence to FP principles.
 
-FP is a programming discipline that is not at all tied to a specific language.
-FP as a programming discipline can, in fact, be applied to many programming
-languages. In the realm of C++ for instance, we are seeing more FP techniques
-being applied. C++ is sufficiently rich to support at least some of the most
-important facets of FP. C++ is a multiparadigm programming language. It is not
-only procedural. It is not only object oriented. Beneath the core of the
-standard C++ library, a closer look into STL gives us a glimpse of FP already in
-place. It is obvious that the authors of STL know and practice FP. In the near
+FP is a programming discipline that is not at all tied to a specific language.
+FP as a programming discipline can, in fact, be applied to many programming
+languages. In the realm of C++ for instance, we are seeing more FP techniques
+being applied. C++ is sufficiently rich to support at least some of the most
+important facets of FP. C++ is a multiparadigm programming language. It is not
+only procedural. It is not only object oriented. Beneath the core of the
+standard C++ library, a closer look into STL gives us a glimpse of FP already in
+place. It is obvious that the authors of STL know and practice FP. In the near
 future, we shall surely see more FP trickle down into the mainstream.
 
 The truth is, most of the FP techniques can coexist quite well with the standard
@@ -136,30 +136,30 @@
 
 [section Starter Kit]
 
-Most "quick starts" only get you a few blocks from where you are. From there,
-you are on your own. Yet, typically, you'd want to get to the next city. This
-starter kit shall be as minimal as possible, yet packed as much power as
+Most "quick starts" only get you a few blocks from where you are. From there,
+you are on your own. Yet, typically, you'd want to get to the next city. This
+starter kit shall be as minimal as possible, yet packed as much power as
 possible.
 
-So you are busy and always on the go. You do not wish to spend a lot of time
-studying the library. You wish to be spared the details for later when you need
-it. For now, all you need to do is to get up to speed as quickly as possible and
+So you are busy and always on the go. You do not wish to spend a lot of time
+studying the library. You wish to be spared the details for later when you need
+it. For now, all you need to do is to get up to speed as quickly as possible and
 start using the library. If this is the case, this is the right place to start.
 
-This chapter is by no means a thorough discourse of the library. For more
-information on Phoenix, please take some time to read the rest of the User's
-Guide. Yet, if you just want to use the library quickly, now, this chapter will
-probably suffice. Rather than taking you to the details of the library, we shall
-try to provide you with annotated exemplars instead. Hopefully, this will get
+This chapter is by no means a thorough discourse of the library. For more
+information on Phoenix, please take some time to read the rest of the User's
+Guide. Yet, if you just want to use the library quickly, now, this chapter will
+probably suffice. Rather than taking you to the details of the library, we shall
+try to provide you with annotated exemplars instead. Hopefully, this will get
 you into high gear quickly.
 
 [h2 Functors everywhere]
 
-Phoenix is built on function objects (functors). The functor is the main
-building block. We compose functors to build more complex functors... to build
-more complex functors... and so on. Almost everything is a functor.
+Phoenix is built on function objects (functors). The functor is the main
+building block. We compose functors to build more complex functors... to build
+more complex functors... and so on. Almost everything is a functor.
 
-[blurb __note__ Functors are so ubiquitous in Phoenix that, in the manual, the
+[note Functors are so ubiquitous in Phoenix that, in the manual, the
 words /"functor"/ and /"function"/ are used interchangeably.]
 
 [section Values]
@@ -169,15 +169,15 @@
     val(3)
     val("Hello, World")
 
-The first evaluates to a nullary function (a function taking no arguments) that
-returns an `int`, `3`. The second evaluates to a nullary function that returns
-a `char const(&)[13]`, `"Hello, World"`.
+The first evaluates to a nullary function (a function taking no arguments) that
+returns an `int`, `3`. The second evaluates to a nullary function that returns
+a `char const(&)[13]`, `"Hello, World"`.
 
 [h2 Lazy Evaluation]
 
-Confused? `val(3)` is a unary function, you say? Yes it is. However, read
-carefully: /"evaluates to a nullary function"/. `val(3)` evaluates to (returns) a
-nullary function. Aha! `val(3)` returns a function! So, since `val(3)` returns a
+Confused? `val(3)` is a unary function, you say? Yes it is. However, read
+carefully: /"evaluates to a nullary function"/. `val(3)` evaluates to (returns) a
+nullary function. Aha! `val(3)` returns a function! So, since `val(3)` returns a
 function, you can invoke it. Example:
 
     cout << val(3)() << endl;
@@ -186,19 +186,19 @@
 
 [blurb __tip__ Learn more about values [link phoenix.primitives.values here.]]
 
-The second function call (the one with no arguments) calls the nullary function
-which then returns `3`. The need for a second function call is the reason why
-the function is said to be [*/Lazily Evaluated/]. The first call doesn't do
-anything. You need a second call to finally evaluate the thing. The first call
-lazily evaluates the function; i.e. doesn't do anything and defers the evaluation
+The second function call (the one with no arguments) calls the nullary function
+which then returns `3`. The need for a second function call is the reason why
+the function is said to be [*/Lazily Evaluated/]. The first call doesn't do
+anything. You need a second call to finally evaluate the thing. The first call
+lazily evaluates the function; i.e. doesn't do anything and defers the evaluation
 for later.
 
 [h2 Callbacks]
 
-It may not be immediately apparent how lazy evaluation can be useful by just
-looking at the example above. Putting the first and second function call in a
-single line is really not very useful. However, thinking of `val(3)` as a
-callback function (and in most cases they are actually used that way), will make
+It may not be immediately apparent how lazy evaluation can be useful by just
+looking at the example above. Putting the first and second function call in a
+single line is really not very useful. However, thinking of `val(3)` as a
+callback function (and in most cases they are actually used that way), will make
 it clear. Example:
 
     template <typename F>
@@ -206,7 +206,7 @@
     {
         cout << f() << endl;
     }
-
+
     int
     main()
     {
@@ -230,8 +230,8 @@
 
     ref(i)
     ref(s)
-
-Like `val`, the expressions above evaluates to a nullary function; the first one
+
+Like `val`, the expressions above evaluates to a nullary function; the first one
 returning an `int&`, and the second one returning a `char const*&`.
 
 (See [@../../example/users_manual/references.cpp references.cpp])
@@ -243,10 +243,10 @@
 
 Arguments are also functions? You bet!
 
-Until now, we have been dealing with expressions returning a nullary function.
-Arguments, on the other hand, evaluate to an N-ary function. An argument
-represents the Nth argument. There are a few predefined arguments arg1,
-arg2, arg3, arg4 and so on (and it's __bll__ counterparts: _1, _2, _3, _4 and so
+Until now, we have been dealing with expressions returning a nullary function.
+Arguments, on the other hand, evaluate to an N-ary function. An argument
+represents the Nth argument. There are a few predefined arguments arg1,
+arg2, arg3, arg4 and so on (and it's __bll__ counterparts: _1, _2, _3, _4 and so
 on). Examples:
 
     arg1 // one-or-more argument function that returns its first argument
@@ -267,11 +267,11 @@
 [endsect]
 [section Composites]
 
-What we have seen so far, are what are called *primitives*. You can think of
+What we have seen so far, are what are called *primitives*. You can think of
 primitives (such as values, references and arguments) as atoms.
 
-Things start to get interesting when we start /composing/ primitives to form
-*composites*. The composites can, in turn, be composed to form even more complex
+Things start to get interesting when we start /composing/ primitives to form
+*composites*. The composites can, in turn, be composed to form even more complex
 composites.
 
 [endsect]
@@ -284,25 +284,25 @@
     arg1 = arg2 + (3 * arg3)
     ref(x) = arg1[arg2] // assuming arg1 is indexable and arg2 is a valid index
 
-Note the expression: `3 * arg3`. This expression is actually a short-hand
-equivalent to: `val(3) * arg3`. In most cases, like above, you can get away with
-it. But in some cases, you will have to explicitly wrap your values in `val`.
-Rules of thumb:
+Note the expression: `3 * arg3`. This expression is actually a short-hand
+equivalent to: `val(3) * arg3`. In most cases, like above, you can get away with
+it. But in some cases, you will have to explicitly wrap your values in `val`.
+Rules of thumb:
 
-* In a binary expression (e.g. `3 * arg3`), at least one of the operands must be
+* In a binary expression (e.g. `3 * arg3`), at least one of the operands must be
   a phoenix primitive or composite.
-* In a unary expression (e.g. `arg1++`), the single operand must be a phoenix
+* In a unary expression (e.g. `arg1++`), the single operand must be a phoenix
   primitive or composite.
-
-If these basic rules are not followed, the result is either in error, or is
+
+If these basic rules are not followed, the result is either in error, or is
 immediately evaluated. Some examples:
 
     ref(x) = 123 // lazy
     x = 123 // immediate
-
+
     ref(x)[0] // lazy
     x[0] // immediate
-
+
     ref(x)[ref(i)] // lazy
     ref(x)[i] // lazy (equivalent to ref(x)[val(i)])
     x[ref(i)] // illegal (x is not a phoenix primitive or composite)
@@ -312,9 +312,9 @@
 
 [h2 First Practical Example]
 
-We've covered enough ground to present a real world example. We want to find the
-first odd number in an STL container. Normally we use a functor (function
-object) or a function pointer and pass that in to STL's `find_if` generic
+We've covered enough ground to present a real world example. We want to find the
+first odd number in an STL container. Normally we use a functor (function
+object) or a function pointer and pass that in to STL's `find_if` generic
 function:
 
 Write a function:
@@ -333,28 +333,28 @@
 
     find_if(c.begin(), c.end(), arg1 % 2 == 1)
 
-The expression `arg1 % 2 == 1` automagically creates a functor with the expected
-behavior. In FP, this unnamed function is called a lambda function. Unlike the
-function pointer version, which is monomorphic (expects and works only with a
-fixed type int argument), the Phoenix version is fully polymorphic and works
-with any container (of ints, of longs, of bignum, etc.) as long as its elements
+The expression `arg1 % 2 == 1` automagically creates a functor with the expected
+behavior. In FP, this unnamed function is called a lambda function. Unlike the
+function pointer version, which is monomorphic (expects and works only with a
+fixed type int argument), the Phoenix version is fully polymorphic and works
+with any container (of ints, of longs, of bignum, etc.) as long as its elements
 can handle the `arg1 % 2 == 1` expression.
 
 (See [@../../example/users_manual/find_if.cpp find_if.cpp])
 
-[blurb __tip__ ...[*That's it, we're done]. Well if you wish to know a little bit
+[blurb __tip__ ...[*That's it, we're done]. Well if you wish to know a little bit
 more, read on...]
 
 [endsect]
 [section Lazy Statements]
 
-Lazy statements? Sure. There are lazy versions of the C++ statements we all know
+Lazy statements? Sure. There are lazy versions of the C++ statements we all know
 and love. For example:
 
     if_(arg1 > 5)
         cout << arg1
 
-Say, for example, we wish to print all the elements that are greater than 5
+Say, for example, we wish to print all the elements that are greater than 5
 (separated by a comma) in a vector. Here's how we write it:
 
     for_each(v.begin(), v.end(),
@@ -371,7 +371,7 @@
 [endsect]
 [section Construct, New, Delete, Casts]
 
-You'll probably want to work with objects. There are lazy versions of
+You'll probably want to work with objects. There are lazy versions of
 constructor calls, `new`, `delete` and the suite of C++ casts. Examples:
 
     construct<std::string>(arg1, arg2) // constructs a std::string from arg1, arg2
@@ -379,7 +379,7 @@
     delete_(arg1) // deletes arg1 (assumed to be a pointer)
     static_cast_<int*>(arg1) // static_cast's arg1 to an int*
 
-[blurb __note__ Take note that, by convention, names that conflict with C++
+[note Take note that, by convention, names that conflict with C++
 reserved words are appended with a single trailing underscore `'_'`]
 
 [blurb __tip__ Learn more about this [link phoenix.composite.object here.]]
@@ -387,43 +387,43 @@
 [endsect]
 [section Lazy Functions]
 
-As you write more lambda functions, you'll notice certain patterns that you wish
-to refactor as reusable functions. When you reach that point, you'll wish that
-ordinary functions can co-exist with phoenix functions. Unfortunately, the
+As you write more lambda functions, you'll notice certain patterns that you wish
+to refactor as reusable functions. When you reach that point, you'll wish that
+ordinary functions can co-exist with phoenix functions. Unfortunately, the
 /immediate/ nature of plain C++ functions make them incompatible.
 
-Lazy functions are your friends. The library provides a facility to make lazy
-functions. The code below is a rewrite of the `is_odd` function using the
+Lazy functions are your friends. The library provides a facility to make lazy
+functions. The code below is a rewrite of the `is_odd` function using the
 facility:
 
     struct is_odd_impl
     {
         template <typename Arg>
- struct result
- {
- typedef bool type;
+ struct result
+ {
+ typedef bool type;
         };
-
+
         template <typename Arg>
         bool operator()(Arg arg1) const
- {
- return arg1 % 2 == 1;
+ {
+ return arg1 % 2 == 1;
         }
     };
-
+
     function<is_odd_impl> is_odd;
 
 [h2 Things to note:]
 
-* `result` is a nested metafunction that reflects the return type of the
+* `result` is a nested metafunction that reflects the return type of the
   function (in this case, bool). This makes the function fully polymorphic:
   It can work with arbitrary `Arg` types.
-* There are as many Args in the `result` metafunction as in the actual
+* There are as many Args in the `result` metafunction as in the actual
   `operator()`.
 * `is_odd_impl` implements the function.
 * `is_odd`, an instance of `function<is_odd_impl>`, is the lazy function.
 
-Now, `is_odd` is a truly lazy function that we can use in conjunction with the
+Now, `is_odd` is a truly lazy function that we can use in conjunction with the
 rest of phoenix. Example:
 
     find_if(c.begin(), c.end(), is_odd(arg1));
@@ -432,19 +432,19 @@
 
 [h2 Predefined Lazy Functions]
 
-The library is chock full of STL savvy, predefined lazy functions covering the
-whole of the STL containers, iterators and algorithms. For example, there are lazy
-versions of container related operations such as assign, at, back, begin,
-pop_back, pop_front, push_back, push_front, etc. (See [link phoenix.container
+The library is chock full of STL savvy, predefined lazy functions covering the
+whole of the STL containers, iterators and algorithms. For example, there are lazy
+versions of container related operations such as assign, at, back, begin,
+pop_back, pop_front, push_back, push_front, etc. (See [link phoenix.container
 Container]).
 
 [endsect]
 [section More]
 
-As mentioned earlier, this chapter is not a thorough discourse of the library.
-It is meant only to cover enough ground to get you into high gear as quickly as
-possible. Some advanced stuff is not discussed here (e.g. [link phoenix.composite.scope
-Scopes]); nor are features that provide alternative (short-hand) ways to do the
+As mentioned earlier, this chapter is not a thorough discourse of the library.
+It is meant only to cover enough ground to get you into high gear as quickly as
+possible. Some advanced stuff is not discussed here (e.g. [link phoenix.composite.scope
+Scopes]); nor are features that provide alternative (short-hand) ways to do the
 same things (e.g. [link phoenix.composite.bind Bind] vs. Lazy Functions).
 
 [blurb __tip__ ...*If you still wish to learn more, the read on...*]
@@ -457,38 +457,38 @@
 [def __constant_n__ /n/]
 [def __argument_n__ a/n/]
 
-Almost everything is a function in the Phoenix library that can be evaluated as
-`f(a1, a2, ..., __argument_n__)`, where __constant_n__ is the function's arity, or number of arguments that the
-function expects. Operators are also functions. For example, `a + b` is just a
-function with arity == 2 (or binary). `a + b` is the same as `add(a, b)`, `a + b
+Almost everything is a function in the Phoenix library that can be evaluated as
+`f(a1, a2, ..., __argument_n__)`, where __constant_n__ is the function's arity, or number of arguments that the
+function expects. Operators are also functions. For example, `a + b` is just a
+function with arity == 2 (or binary). `a + b` is the same as `add(a, b)`, `a + b
 + c` is the same as `add(add(a, b), c)`.
 
-[blurb __note__ Amusingly, functions may even return functions. We shall see
+[note Amusingly, functions may even return functions. We shall see
 what this means in a short while.]
 
 [h2 Partial Function Application]
 
-Think of a function as a black box. You pass arguments and it returns something
+Think of a function as a black box. You pass arguments and it returns something
 back. The figure below depicts the typical scenario.
 
 [$images/fbox.png]
 
-A fully evaluated function is one in which all the arguments are given. All
-functions in plain C++ are fully evaluated. When you call the `sin(x)` function,
-you have to pass a number x. The function will return a result in return: the
-sin of x. When you call the `add(x, y)` function, you have to pass two numbers x
-and y. The function will return the sum of the two numbers. The figure below is
+A fully evaluated function is one in which all the arguments are given. All
+functions in plain C++ are fully evaluated. When you call the `sin(x)` function,
+you have to pass a number x. The function will return a result in return: the
+sin of x. When you call the `add(x, y)` function, you have to pass two numbers x
+and y. The function will return the sum of the two numbers. The figure below is
 a fully evaluated `add` function.
 
 [$images/adder.png]
 
-A partially applied function, on the other hand, is one in which not all the
-arguments are supplied. If we are able to partially apply the function `add`
-above, we may pass only the first argument. In doing so, the function does not
-have all the required information it needs to perform its task to compute and
-return a result. What it returns instead is another function, a lambda function
---another black box. Unlike the original `add` function which has an arity of 2,
-the resulting lambda function has an arity of 1. Why? because we already
+A partially applied function, on the other hand, is one in which not all the
+arguments are supplied. If we are able to partially apply the function `add`
+above, we may pass only the first argument. In doing so, the function does not
+have all the required information it needs to perform its task to compute and
+return a result. What it returns instead is another function, a lambda function
+--another black box. Unlike the original `add` function which has an arity of 2,
+the resulting lambda function has an arity of 1. Why? because we already
 supplied part of the input: `2`
 
 [$images/add2.png]
@@ -500,14 +500,14 @@
 
 [$images/add2_call.png]
 
-Obviously, partially applying the `add` function, as we see above, cannot be
-done directly in C++ where we are expected to supply all the arguments that a
-function expects. That's where the Phoenix library comes in. The library
+Obviously, partially applying the `add` function, as we see above, cannot be
+done directly in C++ where we are expected to supply all the arguments that a
+function expects. That's where the Phoenix library comes in. The library
 provides the facilities to do partial function application.
 
 [h2 STL and higher order functions]
 
-So, what's all the fuss? What makes partial function application so useful?
+So, what's all the fuss? What makes partial function application so useful?
 Recall our original example in the [link phoenix.starter_kit previous section]:
 
     find_if(c.begin(), c.end(), arg1 % 2 == 1)
@@ -517,7 +517,7 @@
 lambda function has an arity 1. It just so happens that `find_if` supplies the
 unsupplied argument as it loops from `c.begin()` to `c.end()`.
 
-[blurb __note__ Higher order functions are functions which can take other
+[note Higher order functions are functions which can take other
 functions as arguments, and may also return functions as results. Higher order
 functions are functions that are treated like any other objects and can be used as
 arguments and return values from functions.]
@@ -529,11 +529,11 @@
 # Partial application
 # Final evaluation
 
-The first stage is handled by a set of generator functions. These are your front
-ends (in the client's perspective). These generators create (through partial
-function application), higher order functions that can be passed on just like
-any other function pointer or function object. The second stage, the actual
-function call, can be invoked or executed anytime in the future, or not at all;
+The first stage is handled by a set of generator functions. These are your front
+ends (in the client's perspective). These generators create (through partial
+function application), higher order functions that can be passed on just like
+any other function pointer or function object. The second stage, the actual
+function call, can be invoked or executed anytime in the future, or not at all;
 hence /"lazy"/.
 
 If we look more closely, the first step involves partial function application:
@@ -554,8 +554,8 @@
         return first;
     }
 
-Again, typically, we, as clients, see only the first step. However, in this
-document and in the examples and tests provided, don't be surprised to see the
+Again, typically, we, as clients, see only the first step. However, in this
+document and in the examples and tests provided, don't be surprised to see the
 first and second steps juxtaposed in order to illustrate the complete semantics
 of Phoenix expressions. Examples:
 
@@ -568,23 +568,23 @@
 
 [h2 Forwarding Function Problem]
 
-Usually, we, as clients, write the call-back functions while libraries (such as
-STL) provide the callee (e.g. `find_if`). In case the role is reversed, e.g.
-if you have to write an STL algorithm that takes in a predicate, or develop a
-GUI library that accepts event handlers, you have to be aware of a little known
-problem in C++ called the "__forwarding__".
+Usually, we, as clients, write the call-back functions while libraries (such as
+STL) provide the callee (e.g. `find_if`). In case the role is reversed, e.g.
+if you have to write an STL algorithm that takes in a predicate, or develop a
+GUI library that accepts event handlers, you have to be aware of a little known
+problem in C++ called the "__forwarding__".
 
 Look again at the code above:
 
     (arg1 % 2 == 1)(x)
 
-Notice that, in the second-stage (the final evaluation), we used a variable `x`.
-Be aware that the second stage cannot accept non-const temporaries and literal
+Notice that, in the second-stage (the final evaluation), we used a variable `x`.
+Be aware that the second stage cannot accept non-const temporaries and literal
 constants. Hence, this will fail:
 
     (arg1 % 2 == 1)(123) // Error!
 
-Disallowing non-const rvalues partially solves the "__forwarding__" but
+Disallowing non-const rvalues partially solves the "__forwarding__" but
 prohibits code like above.
 
 [h2 Polymorphic Functions]
@@ -597,10 +597,10 @@
     char const* w = " World";
     std::string r = add(arg1, arg2)(h, w);
 
-evaluates to `std::string("Hello World")`. The observant reader might notice
-that this function call in fact takes in heterogeneous arguments where `arg1` is
-of type `std::string` and `arg2` is of type `char const*`. `add` still works
-because the C++ standard library allows the expression `a + b` where `a` is a
+evaluates to `std::string("Hello World")`. The observant reader might notice
+that this function call in fact takes in heterogeneous arguments where `arg1` is
+of type `std::string` and `arg2` is of type `char const*`. `add` still works
+because the C++ standard library allows the expression `a + b` where `a` is a
 `std::string` and `b` is a `char const*`.
 
 [endsect]
@@ -608,27 +608,27 @@
 [section Organization]
 
 Care and attention to detail was given, painstakingly, to the design and
-implementation of Phoenix.
+implementation of Phoenix.
 
 The library is organized in four layers:
 
 [$images/organization.png]
 
-The modules are orthogonal, with no cyclic dependencies.
+The modules are orthogonal, with no cyclic dependencies.
 Lower layers do not depend on higher layers. Modules in a layer do not depend on other modules in the same layer.
 This means, for example, that Bind can be completely discarded if it is
 not required; or one could perhaps take out Operator and Statement and just use Function,
 which may be desireable in a pure FP application.
 
-The library has grown from the original Phoenix but still comprises only
-header files. There are no object files to link against.
+The library has grown from the original Phoenix but still comprises only
+header files. There are no object files to link against.
 
 [h2 Core]
 
 The lowest two layers comprise the core.
 
-The `Actor` is the main concept behind the library. Lazy functions are
-abstracted as actors. There are only 2
+The `Actor` is the main concept behind the library. Lazy functions are
+abstracted as actors. There are only 2
 kinds of actors:
 
 # Primitives
@@ -646,7 +646,7 @@
     [[Function] [Lazy functions support (e.g. `add`)]]
     [[Operator] [Lazy operators support (e.g. `+`)]]
     [[Statement] [Lazy statments (e.g. `if_`, `while_`)]]
- [[Object] [Lazy casts (e.g. `static_cast_`),
+ [[Object] [Lazy casts (e.g. `static_cast_`),
                         object creation destruction (e.g.
                         `new_`, `delete_`)]]
     [[Scope] [Support for scopes, local variables and lambda-lambda]]
@@ -658,32 +658,32 @@
 ]
 
 Each module is defined in a header file with the same name. For example,
-the core module is defined in `<boost/spirit/phoenix/core.hpp>`.
+the core module is defined in `<boost/spirit/home/phoenix/core.hpp>`.
 
 [table Includes
     [[Module] [File]]
- [[Core] [`#include <boost/spirit/phoenix/core.hpp>`]]
- [[Function] [`#include <boost/spirit/phoenix/function.hpp>`]]
- [[Operator] [`#include <boost/spirit/phoenix/operator.hpp>`]]
- [[Statement] [`#include <boost/spirit/phoenix/statement.hpp>`]]
- [[Object] [`#include <boost/spirit/phoenix/object.hpp>`]]
- [[Scope] [`#include <boost/spirit/phoenix/scope.hpp>`]]
- [[Bind] [`#include <boost/spirit/phoenix/bind.hpp>`]]
- [[Container] [`#include <boost/spirit/phoenix/container.hpp>`]]
- [[Algorithm] [`#include <boost/spirit/phoenix/algorithm.hpp>`]]
+ [[Core] [`#include <boost/spirit/home/phoenix/core.hpp>`]]
+ [[Function] [`#include <boost/spirit/home/phoenix/function.hpp>`]]
+ [[Operator] [`#include <boost/spirit/home/phoenix/operator.hpp>`]]
+ [[Statement] [`#include <boost/spirit/home/phoenix/statement.hpp>`]]
+ [[Object] [`#include <boost/spirit/home/phoenix/object.hpp>`]]
+ [[Scope] [`#include <boost/spirit/home/phoenix/scope.hpp>`]]
+ [[Bind] [`#include <boost/spirit/home/phoenix/bind.hpp>`]]
+ [[Container] [`#include <boost/spirit/home/phoenix/container.hpp>`]]
+ [[Algorithm] [`#include <boost/spirit/home/phoenix/algorithm.hpp>`]]
 ]
 
-[blurb __tip__ Finer grained include files are available per feature; see the
+[blurb __tip__ Finer grained include files are available per feature; see the
 succeeding sections.]
 
 [endsect]
 
 [section Actors]
 
-The `Actor` is the main concept behind the library. Actors are function objects.
+The `Actor` is the main concept behind the library. Actors are function objects.
 An actor can accept 0 to `PHOENIX_LIMIT` arguments.
 
-[blurb __note__ You can set `PHOENIX_LIMIT`, the predefined maximum arity an
+[note You can set `PHOENIX_LIMIT`, the predefined maximum arity an
 actor can take. By default, `PHOENIX_LIMIT` is set to 10.]
 
 Phoenix supplies an `actor` class template whose specializations
@@ -707,10 +707,10 @@
         //...
     };
 
-The actor class accepts the arguments through a set of function call operators
-for 0 to `PHOENIX_LIMIT` arities (Don't worry about the details, for now. Note, for example,
-that we skimp over the details regarding `return_type`). The arguments
-are then forwarded to the actor's `Eval` for evaluation.
+The actor class accepts the arguments through a set of function call operators
+for 0 to `PHOENIX_LIMIT` arities (Don't worry about the details, for now. Note, for example,
+that we skimp over the details regarding `return_type`). The arguments
+are then forwarded to the actor's `Eval` for evaluation.
 
 [endsect]
 
@@ -723,19 +723,19 @@
 
 [section Arguments]
 
- #include <boost/spirit/phoenix/core/argument.hpp>
+ #include <boost/spirit/home/phoenix/core/argument.hpp>
 
 We use an instance of:
 
     actor<argument<N> >
 
-to represent the Nth function argument. The argument placeholder acts as an
+to represent the Nth function argument. The argument placeholder acts as an
 imaginary data-bin where a function argument will be placed.
 
 [h2 Predefined Arguments]
 
-There are a few predefined instances of `actor<argument<N> >` named
-`arg1`..`argN`, and its __bll__ counterpart `_1`..`_N`. (where N is a predefined
+There are a few predefined instances of `actor<argument<N> >` named
+`arg1`..`argN`, and its __bll__ counterpart `_1`..`_N`. (where N is a predefined
 maximum).
 
 Here are some sample preset definitions of `arg1`..`argN`
@@ -750,7 +750,7 @@
     actor<argument<1> > const _2 = argument<1>();
     actor<argument<2> > const _3 = argument<2>();
 
-[blurb __note__ You can set `PHOENIX_ARG_LIMIT`, the predefined maximum
+[note You can set `PHOENIX_ARG_LIMIT`, the predefined maximum
 placeholder index. By default, `PHOENIX_ARG_LIMIT` is set to `PHOENIX_LIMIT`
 (See [link phoenix.actors Actors]).]
 
@@ -799,9 +799,9 @@
 
     add(arg1, arg2)
 
-We know now that partially applying this function results to a function that
-expects 2 arguments. However, the library is a bit more lenient and allows the
-caller to supply more arguments than is actually required. Thus, `add` actually
+We know now that partially applying this function results to a function that
+expects 2 arguments. However, the library is a bit more lenient and allows the
+caller to supply more arguments than is actually required. Thus, `add` actually
 allows 2 /or more/ arguments. For instance, with:
 
     add(arg1, arg2)(x, y, z)
@@ -814,7 +814,7 @@
 Here, arguments b, c, and d are ignored. The function `add` takes in the first
 argument (`arg1`) and the fifth argument (`arg5`).
 
-[blurb __note__ There are a few reasons why enforcing strict arity is not
+[note There are a few reasons why enforcing strict arity is not
 desireable. A case in point is the callback function. Typical callback functions
 provide more information than is actually needed. Lambda functions are often
 used as callbacks.]
@@ -823,29 +823,29 @@
 
 [section Values]
 
- #include <boost/spirit/phoenix/core/value.hpp>
+ #include <boost/spirit/home/phoenix/core/value.hpp>
 
 Whenever we see a constant in a partially applied function, an
 
- actor<value<T> >
+ actor<value<T> >
 
-(where T is the type of the constant) is automatically created for
+(where T is the type of the constant) is automatically created for
 us. For instance:
 
     add(arg1, 6)
 
-Passing a second argument, `6`, an `actor<value<int> >` is implicitly created
+Passing a second argument, `6`, an `actor<value<int> >` is implicitly created
 behind the scenes. This is also equivalent to:
 
     add(arg1, val(6))
 
-`val(x)` generates an `actor<value<T> >` where `T` is the type of `x`. In most
+`val(x)` generates an `actor<value<T> >` where `T` is the type of `x`. In most
 cases, there's no need to explicitly use `val`, but, as we'll see later on,
 there are situations where this is unavoidable.
 
 [h2 Evaluating a Value]
 
-Like arguments, values are also actors. As such, values can be evaluated.
+Like arguments, values are also actors. As such, values can be evaluated.
 Invoking a value gives the value's identity. Example:
 
     cout << val(3)() << val("Hello World")();
@@ -856,10 +856,10 @@
 
 [section References]
 
- #include <boost/spirit/phoenix/core/reference.hpp>
+ #include <boost/spirit/home/phoenix/core/reference.hpp>
 
-Values are immutable constants. Attempting to modify a value will result in a
-compile time error. When we want the function to modify the parameter, we use a
+Values are immutable constants. Attempting to modify a value will result in a
+compile time error. When we want the function to modify the parameter, we use a
 reference instead. For instance, imagine a lazy function `add_assign`:
 
     void add_assign(T& x, T y) { x += y; } // pseudo code
@@ -869,24 +869,24 @@
 
     add_assign(1, 2) // error first argument is immutable
 
-In C++, we can pass in a reference to a variable as the first argument in our
-example above. Yet, by default, the library forces arguments passed to partially
-applied functions functions to be immutable values (see [link phoenix.primitives.values
+In C++, we can pass in a reference to a variable as the first argument in our
+example above. Yet, by default, the library forces arguments passed to partially
+applied functions functions to be immutable values (see [link phoenix.primitives.values
 Values]). To achieve our intent, we use:
 
     actor<reference<T> >
-
-This is similar to `actor<value<T> >` above but instead holds a reference to a
+
+This is similar to `actor<value<T> >` above but instead holds a reference to a
 variable.
 
-We normally don't instantiate `actor<reference<T> >` objects directly. Instead we
+We normally don't instantiate `actor<reference<T> >` objects directly. Instead we
 use `ref`. For example (where `i` is an `int` variable):
 
     add_assign(ref(i), 2)
 
 [h2 Evaluating a Reference]
 
-References are actors. Hence, references can be evaluated. Such invocation gives
+References are actors. Hence, references can be evaluated. Such invocation gives
 the references's identity. Example:
 
     int i = 3;
@@ -898,21 +898,21 @@
 [endsect]
 [section Constant References]
 
- #include <boost/spirit/phoenix/core/reference.hpp>
+ #include <boost/spirit/home/phoenix/core/reference.hpp>
 
-Another free function `cref(cv)` may also be used. `cref(cv)` creates an
-`actor<reference<T const&> >` object. This is similar to `actor<value<T> >` but
-when the data to be passed as argument to a function is heavy and expensive to
+Another free function `cref(cv)` may also be used. `cref(cv)` creates an
+`actor<reference<T const&> >` object. This is similar to `actor<value<T> >` but
+when the data to be passed as argument to a function is heavy and expensive to
 copy by value, the `cref(cv)` offers a lighter alternative.
 
 [endsect]
 [section Nothing]
 
- #include <boost/spirit/phoenix/core/nothing.hpp>
+ #include <boost/spirit/home/phoenix/core/nothing.hpp>
 
-Finally, the `actor<null_actor>` does nothing; (a "bum", if you will :-).
-There's a sole `actor<null_actor>` instance named "nothing". This actor is
-actually useful in situations where we don't want to do anything. (See
+Finally, the `actor<null_actor>` does nothing; (a "bum", if you will :-).
+There's a sole `actor<null_actor>` instance named "nothing". This actor is
+actually useful in situations where we don't want to do anything. (See
 [link phoenix.composite.statement.for__statement for_ Statement] for example).
 
 [endsect]
@@ -921,45 +921,45 @@
 
 [section Composite]
 
-Actors may be combined in a multitude of ways to form composites. Composites are
-actors that are composed of zero or more actors. Composition is hierarchical. An
-element of the composite can be a primitive or again another composite. The
-flexibility to arbitrarily compose hierarchical structures allows us to form
-intricate constructions that model complex functions, statements and
+Actors may be combined in a multitude of ways to form composites. Composites are
+actors that are composed of zero or more actors. Composition is hierarchical. An
+element of the composite can be a primitive or again another composite. The
+flexibility to arbitrarily compose hierarchical structures allows us to form
+intricate constructions that model complex functions, statements and
 expressions.
 
-A composite is-a tuple of 0..N actors. N is the predefined maximum actors a
+A composite is-a tuple of 0..N actors. N is the predefined maximum actors a
 composite can take.
 
-[blurb __note__ You can set `PHOENIX_COMPOSITE_LIMIT`, the predefined maximum
+[note You can set `PHOENIX_COMPOSITE_LIMIT`, the predefined maximum
 actors a composite can take. By default, `PHOENIX_COMPOSITE_LIMIT` is set to
 `PHOENIX_LIMIT` (See [link phoenix.actors Actors]).]
 
-As mentioned, each of the actors A0..AN can, in turn, be another composite,
-since a composite is itself an actor. This makes the composite a recursive
-structure. The actual evaluation is handled by a composite specific eval policy.
+As mentioned, each of the actors A0..AN can, in turn, be another composite,
+since a composite is itself an actor. This makes the composite a recursive
+structure. The actual evaluation is handled by a composite specific eval policy.
 
 [section Function]
 
- #include <boost/spirit/phoenix/function/function.hpp>
+ #include <boost/spirit/home/phoenix/function/function.hpp>
 
 The `function` class template provides a mechanism for implementing lazily
 evaluated functions. Syntactically, a lazy function looks like an ordinary C/C++ function.
 The function call looks familiar and feels the same as ordinary C++ functions.
 However, unlike ordinary functions, the actual function execution is deferred.
 
-Unlike ordinary function pointers or functor objects that need to be explicitly bound through the bind function (see [link phoenix.composite.bind Bind]),
+Unlike ordinary function pointers or functor objects that need to be explicitly bound through the bind function (see [link phoenix.composite.bind Bind]),
 the argument types of these functions are automatically lazily bound.
 
-In order to create a lazy function, we need to implement a model of the
+In order to create a lazy function, we need to implement a model of the
 FunctionEval concept. For a function that takes `N` arguments, a model of FunctionEval must
 provide:
 
 * An `operator()` that implements that takes `N` arguments, and implements
 the function logic.
 * A nested metafunction `result<A1, ... AN>` that takes the types of the `N` arguments to
-the function and returns the result type of the function. (There is a special case for function
-objects that accept no arguments. Such nullary functors are only required to define a typedef
+the function and returns the result type of the function. (There is a special case for function
+objects that accept no arguments. Such nullary functors are only required to define a typedef
 `result_type` that reflects the return type of its `operator()`).
 
 For example, the following type implements the FunctionEval concept, in order to provide a
@@ -982,7 +982,7 @@
 
 (See [@../../example/users_manual/factorial.cpp factorial.cpp])
 
-Having implemented the `factorial_impl` type, we can declare and instantiate a lazy
+Having implemented the `factorial_impl` type, we can declare and instantiate a lazy
 `factorial` function this way:
 
     function<factorial_impl> factorial;
@@ -1006,8 +1006,8 @@
 
     function<factorial_impl> factorial(ftor);
 
-where ftor is an instance of factorial_impl (this is not necessary in this case
-as `factorial_impl` does not require any state).
+where ftor is an instance of factorial_impl (this is not necessary in this case
+as `factorial_impl` does not require any state).
 
 [blurb __alert__ Take care though when using function objects with state because they are
 often copied repeatedly, and state may change in one of the copies, rather than the
@@ -1027,7 +1027,7 @@
     1 / -arg1
     arg1 < 150
 
-We have seen the lazy operators in action (see [link phoenix.starter_kit
+We have seen the lazy operators in action (see [link phoenix.starter_kit
 Quick Start]). Let's go back and examine them a little bit further:
 
     find_if(c.begin(), c.end(), arg1 % 2 == 1)
@@ -1057,8 +1057,8 @@
 
 Operator expressions are lazily evaluated following four simple rules:
 
-# A binary operator, except `->*` will be lazily evaluated when
- /at least/ one of its operands is an actor object
+# A binary operator, except `->*` will be lazily evaluated when
+ /at least/ one of its operands is an actor object
   (see [link phoenix.actors actors]).
 # Unary operators are lazily evaluted if their argument is an actor object.
 # Operator `->*` is lazily evaluted if the left hand argument is an actor object.
@@ -1084,7 +1084,7 @@
 Note that at least one operand of any operator must be a valid actor
 for lazy evaluation to take effect. To force lazy evaluation of an
 ordinary expression, we can use `ref(x)`, `val(x)` or `cref(x)` to
-transform an operand into a valid actor object (see [link phoenix.primitives primitives].
+transform an operand into a valid actor object (see [link phoenix.primitives primitives].
 For example:
 
      1 << 3; // Immediately evaluated
@@ -1108,8 +1108,8 @@
 
     if_else(c, a, b)
 
-The ternary operator deserves special mention. Since C++ does not allow us to
-overload the conditional expression: `c ? a : b`, the if_else pseudo function is
+The ternary operator deserves special mention. Since C++ does not allow us to
+overload the conditional expression: `c ? a : b`, the if_else pseudo function is
 provided for this purpose. The behavior is identical, albeit in a lazy manner.
 
 [h3 Member pointer operator]
@@ -1148,19 +1148,19 @@
 
 [table Include Files
     [[Operators] [File]]
- [[`-`, `+`, `++`, `--`, `+=`,
- `-=`, `*=`, `/=`, `%=`,
- `*`, `/`, `%`] [`#include <boost/spirit/phoenix/operator/arithmetic.hpp>`]]
- [[`&=`, `|=`, `^=`, `<<=`,
- `>>=`, `&`, `|`, `^`, `<<`,
- `>>`] [`#include <boost/spirit/phoenix/operator/bitwise.hpp>`]]
- [[`==`, `!=`, `<`,
- `<=`, `>`, `>=`] [`#include <boost/spirit/phoenix/operator/comparison.hpp>`]]
- [[`<<`, `>>`] [`#include <boost/spirit/phoenix/operator/io.hpp>`]]
- [[`!`, &&, `||`] [`#include <boost/spirit/phoenix/operator/logical.hpp>`]]
- [[`&x`, `*p`, `=`, `[]`] [`#include <boost/spirit/phoenix/operator/self.hpp>`]]
- [[`if_else(c, a, b)`] [`#include <boost/spirit/phoenix/operator/if_else.hpp>`]]
- [[`->*`] [`#include <boost/spirit/phoenix/operator/member.hpp>`]]
+ [[`-`, `+`, `++`, `--`, `+=`,
+ `-=`, `*=`, `/=`, `%=`,
+ `*`, `/`, `%`] [`#include <boost/spirit/home/phoenix/operator/arithmetic.hpp>`]]
+ [[`&=`, `|=`, `^=`, `<<=`,
+ `>>=`, `&`, `|`, `^`, `<<`,
+ `>>`] [`#include <boost/spirit/home/phoenix/operator/bitwise.hpp>`]]
+ [[`==`, `!=`, `<`,
+ `<=`, `>`, `>=`] [`#include <boost/spirit/home/phoenix/operator/comparison.hpp>`]]
+ [[`<<`, `>>`] [`#include <boost/spirit/home/phoenix/operator/io.hpp>`]]
+ [[`!`, &&, `||`] [`#include <boost/spirit/home/phoenix/operator/logical.hpp>`]]
+ [[`&x`, `*p`, `=`, `[]`] [`#include <boost/spirit/home/phoenix/operator/self.hpp>`]]
+ [[`if_else(c, a, b)`] [`#include <boost/spirit/home/phoenix/operator/if_else.hpp>`]]
+ [[`->*`] [`#include <boost/spirit/home/phoenix/operator/member.hpp>`]]
 ]
 
 [endsect]
@@ -1169,11 +1169,11 @@
 
 [*/Lazy statements.../]
 
-The primitives and composite building blocks presented so far are sufficiently
+The primitives and composite building blocks presented so far are sufficiently
 powerful to construct quite elaborate structures. We have presented lazy-
 functions and lazy-operators. How about lazy-statements? First, an appetizer:
 
-Print all odd-numbered contents of an STL container using `std::for_each`
+Print all odd-numbered contents of an STL container using `std::for_each`
 ([@../../example/users_manual/all_odds.cpp all_odds.cpp]):
 
     for_each(c.begin(), c.end(),
@@ -1185,13 +1185,14 @@
 
 Huh? Is that valid C++? Read on...
 
-Yes, it is valid C++. The sample code above is as close as you can get to the
-syntax of C++. This stylized C++ syntax differs from actual C++ code. First, the
-`if` has a trailing underscore. Second, the block uses square brackets instead
+Yes, it is valid C++. The sample code above is as close as you can get to the
+syntax of C++. This stylized C++ syntax differs from actual C++ code. First, the
+`if` has a trailing underscore. Second, the block uses square brackets instead
 of the familiar curly braces {}.
 
-[blurb __note__ *C++ in C++?*\n\n
- In as much as __spirit__ attempts to mimic EBNF in C++,
+[note *C++ in C++?*
+
+ In as much as __spirit__ attempts to mimic EBNF in C++,
     Phoenix attempts to mimic C++ in C++!!!
 ]
 
@@ -1199,7 +1200,7 @@
 
 [section Block Statement]
 
- #include <boost/spirit/phoenix/statement/sequence.hpp>
+ #include <boost/spirit/home/phoenix/statement/sequence.hpp>
 
 Syntax:
 
@@ -1208,17 +1209,17 @@
     ....
     statement
 
-Basically, these are comma separated statements. Take note that unlike the C/C++
-semicolon, the comma is a separator put *in-between* statements. This is like
-Pascal's semicolon separator, rather than C/C++'s semicolon terminator. For
+Basically, these are comma separated statements. Take note that unlike the C/C++
+semicolon, the comma is a separator put *in-between* statements. This is like
+Pascal's semicolon separator, rather than C/C++'s semicolon terminator. For
 example:
 
     statement,
     statement,
     statement, // ERROR!
 
-Is an error. The last statement should not have a comma. Block statements can be
-grouped using the parentheses. Again, the last statement in a group should not
+Is an error. The last statement should not have a comma. Block statements can be
+grouped using the parentheses. Again, the last statement in a group should not
 have a trailing comma.
 
     statement,
@@ -1247,7 +1248,7 @@
 [endsect]
 [section if_ Statement]
 
- #include <boost/spirit/phoenix/statement/if.hpp>
+ #include <boost/spirit/home/phoenix/statement/if.hpp>
 
 We have seen the `if_` statement. The syntax is:
 
@@ -1259,7 +1260,7 @@
 [endsect]
 [section if_else_ statement]
 
- #include <boost/spirit/phoenix/statement/if.hpp>
+ #include <boost/spirit/home/phoenix/statement/if.hpp>
 
 The syntax is
 
@@ -1274,7 +1275,7 @@
 
 Take note that `else` has a leading dot and a trailing underscore: `.else_`
 
-Example: This code prints out all the elements and appends `" > 5"`, `" == 5"`
+Example: This code prints out all the elements and appends `" > 5"`, `" == 5"`
 or `" < 5"` depending on the element's actual value:
 
     for_each(c.begin(), c.end(),
@@ -1300,7 +1301,7 @@
 [endsect]
 [section switch_ statement]
 
- #include <boost/spirit/phoenix/statement/switch.hpp>
+ #include <boost/spirit/home/phoenix/statement/switch.hpp>
 
 The syntax is:
 
@@ -1329,7 +1330,7 @@
 [endsect]
 [section while_ Statement]
 
- #include <boost/spirit/phoenix/statement/while.hpp>
+ #include <boost/spirit/home/phoenix/statement/while.hpp>
 
 The syntax is:
 
@@ -1338,7 +1339,7 @@
         sequenced_statements
     ]
 
-Example: This code decrements each element until it reaches zero and prints out
+Example: This code decrements each element until it reaches zero and prints out
 the number at each step. A newline terminates the printout of each value.
 
     for_each(c.begin(), c.end(),
@@ -1354,7 +1355,7 @@
 [endsect]
 [section do_while_ Statement]
 
- #include <boost/spirit/phoenix/statement/do_while.hpp>
+ #include <boost/spirit/home/phoenix/statement/do_while.hpp>
 
 The syntax is:
 
@@ -1364,10 +1365,10 @@
     ]
     .while_(conditional_expression)
 
-Again, take note that `while` has a leading dot and a trailing underscore:
+Again, take note that `while` has a leading dot and a trailing underscore:
 `.while_`
 
-Example: This code is almost the same as the previous example above with a
+Example: This code is almost the same as the previous example above with a
 slight twist in logic.
 
     for_each(c.begin(), c.end(),
@@ -1384,7 +1385,7 @@
 [endsect]
 [section for_ Statement]
 
- #include <boost/spirit/phoenix/statement/for.hpp>
+ #include <boost/spirit/home/phoenix/statement/for.hpp>
 
 The syntax is:
 
@@ -1393,13 +1394,13 @@
         sequenced_statements
     ]
 
-It is again very similar to the C++ for statement. Take note that the
-init_statement, conditional_expression and step_statement are separated by the
-comma instead of the semi-colon and each must be present (i.e. `for_(,,)` is
-invalid). This is a case where the [link phoenix.primitives.nothing nothing]
+It is again very similar to the C++ for statement. Take note that the
+init_statement, conditional_expression and step_statement are separated by the
+comma instead of the semi-colon and each must be present (i.e. `for_(,,)` is
+invalid). This is a case where the [link phoenix.primitives.nothing nothing]
 actor can be useful.
 
-Example: This code prints each element N times where N is the element's value. A
+Example: This code prints each element N times where N is the element's value. A
 newline terminates the printout of each value.
 
     int iii;
@@ -1413,17 +1414,17 @@
         )
     );
 
-As before, all these are lazily evaluated. The result of such statements are in
-fact composites that are passed on to STL's for_each function. In the viewpoint
+As before, all these are lazily evaluated. The result of such statements are in
+fact composites that are passed on to STL's for_each function. In the viewpoint
 of `for_each`, what was passed is just a functor, no more, no less.
 
-[blurb __note__ Unlike lazy functions and lazy operators, lazy statements always
+[note Unlike lazy functions and lazy operators, lazy statements always
 return void.]
 
 [endsect]
 [section try_ catch_ Statement]
 
- #include <boost/spirit/phoenix/statement/try_catch.hpp>
+ #include <boost/spirit/home/phoenix/statement/try_catch.hpp>
 
 The syntax is:
 
@@ -1441,7 +1442,7 @@
         sequenced_statement
     ]
 
-Note the usual underscore after try and catch, and the extra parentheses required
+Note the usual underscore after try and catch, and the extra parentheses required
 after the catch.
 
 Example: The following code calls the (lazy) function `f` for each element, and
@@ -1467,7 +1468,7 @@
 [endsect]
 [section throw_]
 
- #include <boost/spirit/phoenix/statement/throw.hpp>
+ #include <boost/spirit/home/phoenix/statement/throw.hpp>
 
 As a natural companion to the try/catch support, the statement module provides
 lazy throwing and rethrowing of exceptions.
@@ -1508,22 +1509,22 @@
 
 [section Object]
 
-The Object module deals with object construction, destruction and conversion.
-The module provides /"lazy"/ versions of C++'s object constructor, `new`,
+The Object module deals with object construction, destruction and conversion.
+The module provides /"lazy"/ versions of C++'s object constructor, `new`,
 `delete`, `static_cast`, `dynamic_cast`, `const_cast` and `reinterpret_cast`.
 
 [h2 Construction]
 
 [*/Lazy constructors.../]
 
- #include <boost/spirit/phoenix/object/construct.hpp>
+ #include <boost/spirit/home/phoenix/object/construct.hpp>
 
 Lazily construct an object from an arbitrary set of arguments:
 
     construct<T>(ctor_arg1, ctor_arg2, ..., ctor_argN);
 
-where the given parameters are the parameters to the contructor of the object of
-type T (This implies, that type T is expected to have a constructor with a
+where the given parameters are the parameters to the contructor of the object of
+type T (This implies, that type T is expected to have a constructor with a
 corresponding set of parameter types.).
 
 Example:
@@ -1532,23 +1533,23 @@
 
 Constructs a `std::string` from `arg1` and `arg2`.
 
-[blurb __note__ The maximum number of actual parameters is limited by the
-preprocessor constant PHOENIX_COMPOSITE_LIMIT. Note though, that this limit
-should not be greater than PHOENIX_LIMIT. By default, `PHOENIX_COMPOSITE_LIMIT`
+[note The maximum number of actual parameters is limited by the
+preprocessor constant PHOENIX_COMPOSITE_LIMIT. Note though, that this limit
+should not be greater than PHOENIX_LIMIT. By default, `PHOENIX_COMPOSITE_LIMIT`
 is set to `PHOENIX_LIMIT` (See [link phoenix.actors Actors]).]
 
 [h2 New]
 
 [*/Lazy new.../]
 
- #include <boost/spirit/phoenix/object/new.hpp>
+ #include <boost/spirit/home/phoenix/object/new.hpp>
 
 Lazily construct an object, on the heap, from an arbitrary set of arguments:
 
     new_<T>(ctor_arg1, ctor_arg2, ..., ctor_argN);
 
-where the given parameters are the parameters to the contructor of the object of
-type T (This implies, that type T is expected to have a constructor with a
+where the given parameters are the parameters to the contructor of the object of
+type T (This implies, that type T is expected to have a constructor with a
 corresponding set of parameter types.).
 
 Example:
@@ -1557,14 +1558,14 @@
 
 Creates a `std::string` from `arg1` and `arg2` on the heap.
 
-[blurb __note__ Again, the maximum number of actual parameters is limited by the
+[note Again, the maximum number of actual parameters is limited by the
 preprocessor constant PHOENIX_COMPOSITE_LIMIT. See the note above.]
 
 [h2 Delete]
 
 [*/Lazy delete.../]
 
- #include <boost/spirit/phoenix/object/delete.hpp>
+ #include <boost/spirit/home/phoenix/object/delete.hpp>
 
 Lazily delete an object, from the heap:
 
@@ -1580,13 +1581,13 @@
 
 [*/Lazy casts.../]
 
- #include <boost/spirit/phoenix/object/static_cast.hpp>
- #include <boost/spirit/phoenix/object/dynamic_cast.hpp>
- #include <boost/spirit/phoenix/object/const_cast.hpp>
- #include <boost/spirit/phoenix/object/reinterpret_cast.hpp>
+ #include <boost/spirit/home/phoenix/object/static_cast.hpp>
+ #include <boost/spirit/home/phoenix/object/dynamic_cast.hpp>
+ #include <boost/spirit/home/phoenix/object/const_cast.hpp>
+ #include <boost/spirit/home/phoenix/object/reinterpret_cast.hpp>
 
-The set of lazy C++ cast template functions provide a way of lazily casting an
-object of a certain type to another type. The syntax resembles the well known
+The set of lazy C++ cast template functions provide a way of lazily casting an
+object of a certain type to another type. The syntax resembles the well known
 C++ casts. Take note however that the lazy versions have a trailing underscore.
 
     static_cast_<T>(lambda_expression)
@@ -1604,31 +1605,31 @@
 
 [section Scope]
 
-Up until now, the most basic ingredient is missing: creation of and access to
-local variables in the stack. When recursion comes into play, you will soon
-realize the need to have true local variables. It may seem that we do not need
-this at all since an unnamed lambda function cannot call itself anyway; at least
-not directly. With some sort of arrangement, situations will arise where a
-lambda function becomes recursive. A typical situation occurs when we store a
-lambda function in a [@http://www.boost.org/libs/function Boost.Function],
+Up until now, the most basic ingredient is missing: creation of and access to
+local variables in the stack. When recursion comes into play, you will soon
+realize the need to have true local variables. It may seem that we do not need
+this at all since an unnamed lambda function cannot call itself anyway; at least
+not directly. With some sort of arrangement, situations will arise where a
+lambda function becomes recursive. A typical situation occurs when we store a
+lambda function in a [@http://www.boost.org/libs/function Boost.Function],
 essentially naming the unnamed lambda.
 
-There will also be situations where a lambda function gets passed as an argument
-to another function. This is a more common situation. In this case, the lambda
+There will also be situations where a lambda function gets passed as an argument
+to another function. This is a more common situation. In this case, the lambda
 function assumes a new scope; new arguments and possibly new local variables.
 
 This section deals with local variables and nested lambda scopes.
 
 [h2 Local Variables]
 
- #include <boost/spirit/phoenix/scope/local_variable.hpp>
+ #include <boost/spirit/home/phoenix/scope/local_variable.hpp>
 
 We use an instance of:
 
     actor<local_variable<Key> >
 
-to represent a local variable. The local variable acts as an imaginary data-bin
-where a local, stack based data will be placed. `Key` is an arbitrary type that
+to represent a local variable. The local variable acts as an imaginary data-bin
+where a local, stack based data will be placed. `Key` is an arbitrary type that
 is used to identify the local variable. Example:
 
     struct size_key;
@@ -1636,15 +1637,15 @@
 
 [h2 Predefined Local Variables]
 
-There are a few predefined instances of `actor<local_variable<Key> >`
-named `_a`..`_z` that you can already use. To make use of them, simply use the
+There are a few predefined instances of `actor<local_variable<Key> >`
+named `_a`..`_z` that you can already use. To make use of them, simply use the
 `namespace boost::phoenix::local_names`:
 
     using namespace boost::phoenix::local_names;
 
 [h2 let]
 
- #include <boost/spirit/phoenix/scope/let.hpp>
+ #include <boost/spirit/home/phoenix/scope/let.hpp>
 
 You declare local variables using the syntax:
 
@@ -1653,13 +1654,13 @@
         let-body
     ]
 
-`let` allows 1..N local variable declarations (where N ==
+`let` allows 1..N local variable declarations (where N ==
 `PHOENIX_LOCAL_LIMIT`). Each declaration follows the form:
 
     local-id = lambda-expression
 
-[blurb __note__ You can set `PHOENIX_LOCAL_LIMIT`, the predefined maximum local
-variable declarations in a let expression. By default, `PHOENIX_LOCAL_LIMIT` is
+[note You can set `PHOENIX_LOCAL_LIMIT`, the predefined maximum local
+variable declarations in a let expression. By default, `PHOENIX_LOCAL_LIMIT` is
 set to `PHOENIX_LIMIT`.]
 
 Example:
@@ -1671,18 +1672,18 @@
 
 [h2 Reference Preservation]
 
-The type of the local variable assumes the type of the lambda- expression. Type
+The type of the local variable assumes the type of the lambda- expression. Type
 deduction is reference preserving. For example:
 
     let(_a = arg1, _b = 456)
 
-`_a` assumes the type of `arg1`: a reference to an argument, while `_b` has type
-`int`.
+`_a` assumes the type of `arg1`: a reference to an argument, while `_b` has type
+`int`.
 
 Consider this:
 
     int i = 1;
-
+
     let(_a = arg1)
     [
         cout << --_a << ' '
@@ -1691,12 +1692,12 @@
 
     cout << i << endl;
 
-the output of above is : 0 0
+the output of above is : 0 0
 
 While with this:
 
     int i = 1;
-
+
     let(_a = val(arg1))
     [
         cout << --_a << ' '
@@ -1705,16 +1706,16 @@
 
     cout << i << endl;
 
-the output is : 0 1
+the output is : 0 1
 
-Reference preservation is necessary because we need to have L-value access to
-outer lambda-scopes (especially the arguments). `arg`s and `ref`s are L-values.
+Reference preservation is necessary because we need to have L-value access to
+outer lambda-scopes (especially the arguments). `arg`s and `ref`s are L-values.
 `val`s are R-values.
 
 [h2 Visibility]
 
-The scope and lifetimes of the local variables is limited within the let-body.
-`let` blocks can be nested. A local variable may hide an outer local variable.
+The scope and lifetimes of the local variables is limited within the let-body.
+`let` blocks can be nested. A local variable may hide an outer local variable.
 For example:
 
     let(_x = 1, _y = ", World")
@@ -1727,8 +1728,8 @@
         ]
     ]
 
-The RHS (right hand side lambda-expression) of each local-declaration cannot
-refer to any LHS local-id. At this point, the local-ids are not in scope yet;
+The RHS (right hand side lambda-expression) of each local-declaration cannot
+refer to any LHS local-id. At this point, the local-ids are not in scope yet;
 they will only be in scope in the let-body. The code below is in error:
 
     let(
@@ -1758,10 +1759,10 @@
 
 [h2 lambda]
 
- #include <boost/spirit/phoenix/scope/lambda.hpp>
+ #include <boost/spirit/home/phoenix/scope/lambda.hpp>
 
-A lot of times, you'd want to write a lazy function that accepts one or more
-functions (higher order functions). STL algorithms come to mind, for example.
+A lot of times, you'd want to write a lazy function that accepts one or more
+functions (higher order functions). STL algorithms come to mind, for example.
 Consider a lazy version of `stl::for_each`:
 
     struct for_each_impl
@@ -1781,11 +1782,11 @@
 
     function<for_each_impl> const for_each = for_each_impl();
 
-Notice that the function accepts another function, `f` as an argument. The scope
-of this function, `f`, is limited within the `operator()`. When `f` is called
-inside `std::for_each`, it exists in a new scope, along with new arguments and,
-possibly, local variables. This new scope is not at all related to the outer
-scopes beyond the `operator()`.
+Notice that the function accepts another function, `f` as an argument. The scope
+of this function, `f`, is limited within the `operator()`. When `f` is called
+inside `std::for_each`, it exists in a new scope, along with new arguments and,
+possibly, local variables. This new scope is not at all related to the outer
+scopes beyond the `operator()`.
 
 Simple syntax:
 
@@ -1794,7 +1795,7 @@
         lambda-body
     ]
 
-Like `let`, local variables may be declared, allowing 1..N local variable
+Like `let`, local variables may be declared, allowing 1..N local variable
 declarations (where N == `PHOENIX_LOCAL_LIMIT`):
 
     lambda(local-declarations)
@@ -1802,9 +1803,9 @@
         lambda-body
     ]
 
-The same restrictions apply with regard to scope and visibility. The RHS
-(right hand side lambda-expression) of each local-declaration cannot refer
-to any LHS local-id. The local-ids are not in scope yet; they will be in
+The same restrictions apply with regard to scope and visibility. The RHS
+(right hand side lambda-expression) of each local-declaration cannot refer
+to any LHS local-id. The local-ids are not in scope yet; they will be in
 scope only in the lambda-body:
 
     lambda(
@@ -1818,18 +1819,18 @@
 
     for_each(arg1, lambda[cout << arg1])
 
-As far as the arguments are concerned (arg1..argN), the scope in which the
-lambda-body exists is totally new. The left `arg1` refers to the argument passed
-to `for_each` (a container). The right `arg1` refers to the argument passed by
-`std::for_each` when we finally get to call `operator()` in our `for_each_impl`
+As far as the arguments are concerned (arg1..argN), the scope in which the
+lambda-body exists is totally new. The left `arg1` refers to the argument passed
+to `for_each` (a container). The right `arg1` refers to the argument passed by
+`std::for_each` when we finally get to call `operator()` in our `for_each_impl`
 above (a container element).
 
-Yet, we may wish to get information from outer scopes. While we do not have
-access to arguments in outer scopes, what we still have is access to local
-variables from outer scopes. We may only be able to pass argument related
-information from outer `lambda` scopes through the local variables.
+Yet, we may wish to get information from outer scopes. While we do not have
+access to arguments in outer scopes, what we still have is access to local
+variables from outer scopes. We may only be able to pass argument related
+information from outer `lambda` scopes through the local variables.
 
-[blurb __note__ This is a crucial difference between `let` and `lambda`: `let`
+[note This is a crucial difference between `let` and `lambda`: `let`
 does not introduce new arguments; `lambda` does.]
 
 Another example: Using our lazy `for_each`, and a lazy `push_back`:
@@ -1860,16 +1861,16 @@
 
 Solution:
 
- for_each(arg1,
+ for_each(arg1,
         lambda(_a = arg2)
         [
             push_back(arg1, _a)
         ]
     )
 
-Since we do not have access to the arguments of the outer scopes beyond the
-lambda-body, we introduce a local variable `_a` that captures the second outer
-argument: `arg2`. Hence: _a = arg2. This local variable is visible inside the
+Since we do not have access to the arguments of the outer scopes beyond the
+lambda-body, we introduce a local variable `_a` that captures the second outer
+argument: `arg2`. Hence: _a = arg2. This local variable is visible inside the
 lambda scope.
 
 (See [@../../example/users_manual/lambda.cpp lambda.cpp])
@@ -1878,39 +1879,39 @@
 
 [section Bind]
 
-['Binding] is the act of tying together a function to some arguments for
-deferred (lazy) evaluation. Named [link phoenix.composite.function Lazy functions]
-require a bit of typing. Unlike (unnamed) lambda expressions, we need to write a
-functor somewhere offline, detached from the call site. If you wish to transform a
-plain function, member function or member variable to a lambda expression, `bind`
-is your friend.
-
-[blurb __note__ Take note that binders are monomorphic. Rather than binding
-functions, the preferred way is to write true generic and polymorphic [link
-phoenix.composite.function lazy-functions]. However, since most of the time we
+['Binding] is the act of tying together a function to some arguments for
+deferred (lazy) evaluation. Named [link phoenix.composite.function Lazy functions]
+require a bit of typing. Unlike (unnamed) lambda expressions, we need to write a
+functor somewhere offline, detached from the call site. If you wish to transform a
+plain function, member function or member variable to a lambda expression, `bind`
+is your friend.
+
+[note Take note that binders are monomorphic. Rather than binding
+functions, the preferred way is to write true generic and polymorphic [link
+phoenix.composite.function lazy-functions]. However, since most of the time we
 are dealing with adaptation of exisiting code, binders get the job done faster.]
 
-There is a set of overloaded `bind` template functions. Each `bind(x)`
-function generates a suitable binder object, a [link phoenix.composite
+There is a set of overloaded `bind` template functions. Each `bind(x)`
+function generates a suitable binder object, a [link phoenix.composite
 composite].
 
 [h2 Binding Functions]
 
- #include <boost/spirit/phoenix/bind/bind_function.hpp>
+ #include <boost/spirit/home/phoenix/bind/bind_function.hpp>
 
 Example, given a function `foo`:
 
- void foo(int n)
- {
- std::cout << n << std::endl;
+ void foo(int n)
+ {
+ std::cout << n << std::endl;
     }
 
 Here's how the function `foo` may be bound:
 
     bind(&foo, arg1)
 
-This is now a full-fledged [link phoenix.composite composite] that can finally
-be evaluated by another function call invocation. A second function call will
+This is now a full-fledged [link phoenix.composite composite] that can finally
+be evaluated by another function call invocation. A second function call will
 invoke the actual `foo` function. Example:
 
     int i = 4;
@@ -1920,22 +1921,22 @@
 
 [h2 Binding Member Functions]
 
- #include <boost/spirit/phoenix/bind/bind_member_function.hpp>
+ #include <boost/spirit/home/phoenix/bind/bind_member_function.hpp>
 
-Binding member functions can be done similarly. A bound member function takes in
+Binding member functions can be done similarly. A bound member function takes in
 a pointer or reference to an object as the first argument. For instance, given:
 
- struct xyz
- {
- void foo(int) const;
+ struct xyz
+ {
+ void foo(int) const;
     };
 
 `xyz`'s `foo` member function can be bound as:
 
     bind(&xyz::foo, obj, arg1) // obj is an xyz object
 
-Take note that a lazy-member functions expects the first argument to be a
-pointer or reference to an object. Both the object (reference or pointer) and
+Take note that a lazy-member functions expects the first argument to be a
+pointer or reference to an object. Both the object (reference or pointer) and
 the arguments can be lazily bound. Examples:
 
     xyz obj;
@@ -1945,31 +1946,31 @@
 
 [h2 Binding Member Variables]
 
- #include <boost/spirit/phoenix/bind/bind_member_variable.hpp>
+ #include <boost/spirit/home/phoenix/bind/bind_member_variable.hpp>
 
-Member variables can also be bound much like member functions. Member variables
-are not functions. Yet, like the [link phoenix.primitives.references `ref(x)`] that
-acts like a nullary function returning a reference to the data, member variables,
-when bound, act like a unary function, taking in a pointer or reference to an
-object as its argument and returning a reference to the bound member variable.
+Member variables can also be bound much like member functions. Member variables
+are not functions. Yet, like the [link phoenix.primitives.references `ref(x)`] that
+acts like a nullary function returning a reference to the data, member variables,
+when bound, act like a unary function, taking in a pointer or reference to an
+object as its argument and returning a reference to the bound member variable.
 For instance, given:
 
- struct xyz
- {
- int v;
+ struct xyz
+ {
+ int v;
     };
 
 `xyz::v` can be bound as:
 
     bind(&xyz::v, obj) // obj is an xyz object
 
-As noted, just like the bound member function, a bound member variable also
-expects the first (and only) argument to be a pointer or reference to an object.
+As noted, just like the bound member function, a bound member variable also
+expects the first (and only) argument to be a pointer or reference to an object.
 The object (reference or pointer) can be lazily bound. Examples:
 
     xyz obj;
- bind(&xyz::v, arg1) // arg1.v
- bind(&xyz::v, obj) // obj.v
+ bind(&xyz::v, arg1) // arg1.v
+ bind(&xyz::v, obj) // obj.v
     bind(&xyz::v, arg1)(obj) = 4 // obj.v = 4
 
 [endsect]
@@ -1977,15 +1978,15 @@
 [endsect]
 [section Container]
 
- #include <boost/spirit/phoenix/container.hpp>
+ #include <boost/spirit/home/phoenix/container.hpp>
 
-The container module predefines a set of lazy functions that work on STL
-containers. These functions provide a mechanism for the lazy evaluation of the
-public member functions of the STL containers. The lazy functions are thin
-wrappers that simply forward to their respective counterparts in the STL
-library.
+The container module predefines a set of lazy functions that work on STL
+containers. These functions provide a mechanism for the lazy evaluation of the
+public member functions of the STL containers. The lazy functions are thin
+wrappers that simply forward to their respective counterparts in the STL
+library.
 
-Lazy functions are provided for all of the member functions of the following
+Lazy functions are provided for all of the member functions of the following
 containers:
 
 * deque
@@ -1994,8 +1995,8 @@
 * multimap
 * vector
 
-Indeed, should your class have member functions with the same names and
-signatures as those listed below, then it will automatically be supported. To
+Indeed, should your class have member functions with the same names and
+signatures as those listed below, then it will automatically be supported. To
 summarize, lazy functions are provided for member functions:
 
 * assign
@@ -2024,8 +2025,8 @@
 * splice
 * value_comp
 
-The lazy functions' names are the same as the corresponding member function. The
-difference is that the lazy functions are free functions and therefore does not
+The lazy functions' names are the same as the corresponding member function. The
+difference is that the lazy functions are free functions and therefore does not
 use the member "dot" syntax.
 
 [table Sample usage
@@ -2035,11 +2036,11 @@
     [[`my_vector1.swap(my_vector2)`] [`swap(arg1, arg2)`]]
 ]
 
-Notice that member functions with names that clash with stl algorithms are
+Notice that member functions with names that clash with stl algorithms are
 absent. This will be provided in Phoenix's algorithm module.
 
-No support is provided here for lazy versions of `operator+=`, `operator[]` etc.
-Such operators are not specific to STL containers and lazy versions can
+No support is provided here for lazy versions of `operator+=`, `operator[]` etc.
+Such operators are not specific to STL containers and lazy versions can
 therefore be found in [link phoenix.composite.operator operators].
 
 The following table describes the container functions and their semantics.
@@ -2080,39 +2081,39 @@
 
 [section Algorithm]
 
- #include <boost/spirit/phoenix/algorithm.hpp>
+ #include <boost/spirit/home/phoenix/algorithm.hpp>
 
-The algorithm module provides wrappers for the standard algorithms in the
+The algorithm module provides wrappers for the standard algorithms in the
 `<algorithm>` and `<numeric>` headers.
 
 The algorithms are divided into the categories iteration, transformation and querying,
 modelling the __boost_mpl__ library. The different algorithm classes can be
 included using the headers:
 
- #include <boost/spirit/phoenix/stl/algorithm/iteration.hpp>
- #include <boost/spirit/phoenix/stl/algorithm/transformation.hpp>
- #include <boost/spirit/phoenix/stl/algorithm/querying.hpp>
-
-The functions of the algorithm module take ranges as arguments where
-appropriate. This is different to the standard
-library, but easy enough to pick up. Ranges are described in detail in the
+ #include <boost/spirit/home/phoenix/stl/algorithm/iteration.hpp>
+ #include <boost/spirit/home/phoenix/stl/algorithm/transformation.hpp>
+ #include <boost/spirit/home/phoenix/stl/algorithm/querying.hpp>
+
+The functions of the algorithm module take ranges as arguments where
+appropriate. This is different to the standard
+library, but easy enough to pick up. Ranges are described in detail in the
 __boost_range__ library.
 
 For example, using the standard copy algorithm to copy between 2 arrays:
 
     int array[] = {1, 2, 3};
     int output[3];
- std::copy(array, array + 3, output); // We have to provide iterators
+ std::copy(array, array + 3, output); // We have to provide iterators
                                          // to both the start and end of array
 
 The analogous code using the phoenix algorithm module is:
 
     int array[] = {1, 2, 3};
     int output[3];
- copy(arg1, arg2)(array, output); // Notice only 2 arguments, the end of
+ copy(arg1, arg2)(array, output); // Notice only 2 arguments, the end of
                                      // array is established automatically
 
-The __boost_range__ library provides support for standard containers, strings and
+The __boost_range__ library provides support for standard containers, strings and
 arrays, and can be extended to support additional types.
 
 The following tables describe the different categories of algorithms, and their
@@ -2208,25 +2209,25 @@
 [def __eval_tuple__ [link phoenix.inside_phoenix.composites_in_detail.evaltuple `EvalTuple`]]
 [def __environment__ [link phoenix.inside_phoenix.actors_in_detail.environment `Environment`]]
 
-This chapter explains in more detail how the library operates. The information
-henceforth should not be necessary to those who are interested in just using the
-library. However, a microscopic view might prove to be beneficial to moderate
+This chapter explains in more detail how the library operates. The information
+henceforth should not be necessary to those who are interested in just using the
+library. However, a microscopic view might prove to be beneficial to moderate
 to advanced programmers who wish to extend the library.
 
 [section Actors In Detail]
 
 [h3 Actor Concept]
 
-The main concept is the `Actor`. Actors are function objects (that can accept 0
+The main concept is the `Actor`. Actors are function objects (that can accept 0
 to N arguments (where N is a predefined maximum).
 
-[blurb __note__ You can set `PHOENIX_LIMIT`, the predefined maximum arity an
+[note You can set `PHOENIX_LIMIT`, the predefined maximum arity an
 actor can take. By default, `PHOENIX_LIMIT` is set to 10.]
 
 [h3 actor template class]
 
 The `actor` template class models the `Actor` concept:
-
+
     template <typename Eval>
     struct actor : Eval
     {
@@ -2240,7 +2241,7 @@
 
         template <typename T0, typename T1>
         actor(T0 const& _0, T1 const& _1);
-
+
         // more constructors
 
         typename apply_actor<eval_type, basic_environment<> >::type
@@ -2268,10 +2269,10 @@
 
 [h3 Eval Concept]
 
-The `actor` template class has a single template parameter, `Eval`, from which
-it derives from. While the `Actor` concept represents a function, the `Eval`
-concept represents the function body. The requirements for `Eval` are
-intentionally kept simple, to make it easy to write models of the concept. We
+The `actor` template class has a single template parameter, `Eval`, from which
+it derives from. While the `Actor` concept represents a function, the `Eval`
+concept represents the function body. The requirements for `Eval` are
+intentionally kept simple, to make it easy to write models of the concept. We
 shall see an example in the [link phoenix.inside_phoenix.actor_example next section].
 
 [table Eval Concept Requirements
@@ -2282,44 +2283,46 @@
 
 [h3 Constructors]
 
-In addition to a default constructor and an constructor from a Eval object,
-there are templated (pass through) constructors for 1 to N arguments (N ==
+In addition to a default constructor and an constructor from a Eval object,
+there are templated (pass through) constructors for 1 to N arguments (N ==
 `PHOENIX_LIMIT`). These constructors simply forward the arguments to the `base`.
 
-[blurb __note__ *Parametric Base Class Pattern*\n\n
- Notice that actor derives from its template argument Eval. This is the
- inverse of the curiously recurring template pattern (CRTP). With the CRTP, a
- class, T, has a Derived template parameter that is assumed to be its
- subclass. The "parametric base class pattern" (PBCP), on the other hand,
- inverses the inheritance and makes a class, T, the derived class. Both CRTP
- and PBCP techniques have its pros and cons, which is outside the scope of
- this document. CRTP should really be renamed "parametric subclass pattern
+[note *Parametric Base Class Pattern*
+
+ Notice that actor derives from its template argument Eval. This is the
+ inverse of the curiously recurring template pattern (CRTP). With the CRTP, a
+ class, T, has a Derived template parameter that is assumed to be its
+ subclass. The "parametric base class pattern" (PBCP), on the other hand,
+ inverses the inheritance and makes a class, T, the derived class. Both CRTP
+ and PBCP techniques have its pros and cons, which is outside the scope of
+ this document. CRTP should really be renamed "parametric subclass pattern
     (PSCP), but again, that's another story.
 ]
 
 [h3 Function Call Operators]
 
-There are N function call operators for 0 to N arguments (N == `PHOENIX_LIMIT`).
-The actor class accepts the arguments and forwards the arguments to the actor's
-base `Eval` for evaluation.
+There are N function call operators for 0 to N arguments (N == `PHOENIX_LIMIT`).
+The actor class accepts the arguments and forwards the arguments to the actor's
+base `Eval` for evaluation.
 
 [def [$http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm]
 
-[blurb __note__ *Forwarding Function Problem*\n\n
- The function call operators cannot accept non-const temporaries and literal
- constants. There is a known issue with current C++ called the
- "__forwarding__". The problem is that given an arbitrary function `F`, using
- current C++ language rules, one cannot create a forwarding function `FF`
- that transparently assumes the arguments of `F`. Disallowing non-const
- rvalues arguments partially solves the problem but prohibits code such as
+[note *Forwarding Function Problem*
+
+ The function call operators cannot accept non-const temporaries and literal
+ constants. There is a known issue with current C++ called the
+ "__forwarding__". The problem is that given an arbitrary function `F`, using
+ current C++ language rules, one cannot create a forwarding function `FF`
+ that transparently assumes the arguments of `F`. Disallowing non-const
+ rvalues arguments partially solves the problem but prohibits code such as
     `f(1, 2, 3);`.
 ]
 
 [h3 Environment]
 
-On an actor function call, before calling the actor's `Eval::eval` for
-evaluation, the actor creates an ['*environment*]. Basically, the environment
-packages the arguments in a tuple. The `Environment` is a concept, of which, the
+On an actor function call, before calling the actor's `Eval::eval` for
+evaluation, the actor creates an ['*environment*]. Basically, the environment
+packages the arguments in a tuple. The `Environment` is a concept, of which, the
 `basic_environment` template class is a model of.
 
 [table Environment Concept Requirements
@@ -2333,12 +2336,12 @@
 
 [$images/funnel_in.png]
 
-Other parts of the library (e.g. the scope module) extends the `Environment`
+Other parts of the library (e.g. the scope module) extends the `Environment`
 concept to hold other information such as local variables, etc.
 
 [h3 apply_actor]
 
-`apply_actor` is a standard MPL style metafunction that simply calls the
+`apply_actor` is a standard MPL style metafunction that simply calls the
 Action's `result` nested metafunction:
 
     template <typename Action, typename Env>
@@ -2347,18 +2350,18 @@
         typedef typename Action::template result<Env>::type type;
     };
 
-After evaluating the arguments and doing some computation, the `eval` member
-function returns something back to the client. To do this, the forwarding
-function (the actor's `operator()`) needs to know the return type of the eval
-member function that it is calling. For this purpose, models of `Eval` are
+After evaluating the arguments and doing some computation, the `eval` member
+function returns something back to the client. To do this, the forwarding
+function (the actor's `operator()`) needs to know the return type of the eval
+member function that it is calling. For this purpose, models of `Eval` are
 required to provide a nested template class:
 
     template <typename Env>
     struct result;
 
-This nested class provides the result type information returned by the `Eval`'s
-`eval` member function. The nested template class `result` should have a typedef
-`type` that reflects the return type of its member function `eval`.
+This nested class provides the result type information returned by the `Eval`'s
+`eval` member function. The nested template class `result` should have a typedef
+`type` that reflects the return type of its member function `eval`.
 
 For reference, here's a typical `actor::operator()` that accepts two arguments:
 
@@ -2371,9 +2374,9 @@
 
 [h3 actor_result]
 
-For reasons of symmetry to the family of `actor::operator()` there is a special
-metafunction usable for actor result type calculation named `actor_result`. This
-metafunction allows us to directly to specify the types of the parameters to be
+For reasons of symmetry to the family of `actor::operator()` there is a special
+metafunction usable for actor result type calculation named `actor_result`. This
+metafunction allows us to directly to specify the types of the parameters to be
 passed to the `actor::operator()` function. Here's a typical `actor_result` that
 accepts two arguments:
 
@@ -2387,8 +2390,8 @@
 [endsect]
 [section Actor Example]
 
-Let us see a very simple prototypical example of an actor. This is not a toy
-example. This is actually part of the library. Remember the [link
+Let us see a very simple prototypical example of an actor. This is not a toy
+example. This is actually part of the library. Remember the [link
 phoenix.primitives.references `reference`]?.
 
 First, we have a model of the `Eval` concept: the `reference`:
@@ -2414,8 +2417,8 @@
         T& ref;
     };
 
-Models of `Eval` are never created directly and its instances never exist alone.
-We have to wrap it inside the `actor` template class to be useful. The `ref`
+Models of `Eval` are never created directly and its instances never exist alone.
+We have to wrap it inside the `actor` template class to be useful. The `ref`
 template function does this for us:
 
     template <typename T>
@@ -2425,34 +2428,34 @@
         return reference<T>(v);
     }
 
-The `reference` template class conforms to the __eval__ concept. It has a nested
-`result` metafunction that reflects the return type of its `eval` member
-function, which peforms the actual function. `reference<T>` stores a reference to
-a `T`. Its `eval` member function simply returns the reference. It does not make
-use of the environment `Env`.
+The `reference` template class conforms to the __eval__ concept. It has a nested
+`result` metafunction that reflects the return type of its `eval` member
+function, which peforms the actual function. `reference<T>` stores a reference to
+a `T`. Its `eval` member function simply returns the reference. It does not make
+use of the environment `Env`.
 
 /Pretty simple.../
-
+
 [endsect]
 [section Composites In Detail]
 
-We stated before that composites are actors that are composed of zero or more
-actors (see [link phoenix.composite Composite]). This is not quite accurate. The
-definition was sufficient at that point where we opted to keep things simple and
+We stated before that composites are actors that are composed of zero or more
+actors (see [link phoenix.composite Composite]). This is not quite accurate. The
+definition was sufficient at that point where we opted to keep things simple and
 not bury the reader with details which she might not need anyway.
 
-Actually, a composite is a model of the __eval__ concept (more on this later).
-At the same time, it is also composed of 0..N (where N is a predefined maximum)
-__eval__ instances and an eval policy. The individual __eval__ instances are
+Actually, a composite is a model of the __eval__ concept (more on this later).
+At the same time, it is also composed of 0..N (where N is a predefined maximum)
+__eval__ instances and an eval policy. The individual __eval__ instances are
 stored in a tuple.
 
-[blurb __note__ In a sense, the original definition of "composite", more or
-less, will do just fine because __eval__ instances never exist alone and are
-always wrapped in an `actor` template class which inherits from it anyway. The
+[note In a sense, the original definition of "composite", more or
+less, will do just fine because __eval__ instances never exist alone and are
+always wrapped in an `actor` template class which inherits from it anyway. The
 resulting actor IS-AN __eval__.]
 
-[blurb __note__ You can set `PHOENIX_COMPOSITE_LIMIT`, the predefined maximum
-`Eval`s (actors) a composite can take. By default, `PHOENIX_COMPOSITE_LIMIT` is
+[note You can set `PHOENIX_COMPOSITE_LIMIT`, the predefined maximum
+`Eval`s (actors) a composite can take. By default, `PHOENIX_COMPOSITE_LIMIT` is
 set to `PHOENIX_LIMIT` (See [link phoenix.actors Actors]).]
 
 [h2 composite template class]
@@ -2477,7 +2480,7 @@
 
         template <typename U0, typename U1>
         composite(U0 const& _0, U1 const& _1);
-
+
         // more constructors
 
         template <typename Env>
@@ -2487,17 +2490,17 @@
 
 [h2 EvalTuple]
 
-`EvalTuple`, holds all the __eval__ instances. The `composite` template class
-inherits from it. In addition to a default constructor and a constructor from an
-`EvalTuple` object, there are templated (pass through) constructors for 1 to N
-arguments (again, where N == `PHOENIX_COMPOSITE_LIMIT`). These constructors
+`EvalTuple`, holds all the __eval__ instances. The `composite` template class
+inherits from it. In addition to a default constructor and a constructor from an
+`EvalTuple` object, there are templated (pass through) constructors for 1 to N
+arguments (again, where N == `PHOENIX_COMPOSITE_LIMIT`). These constructors
 simply forward the arguments to the `EvalTuple` base class.
 
 [h2 EvalPolicy]
 
-The composite's `eval` member function calls its `EvalPolicy`'s `eval` member
-function (a static member function) passing in the [link
-phoenix.inside_phoenix.actors_in_detail.environment environment] and each of
+The composite's `eval` member function calls its `EvalPolicy`'s `eval` member
+function (a static member function) passing in the [link
+phoenix.inside_phoenix.actors_in_detail.environment environment] and each of
 its actors, in parallel. The following diagram illustrates what's happening:
 
 [$images/funnel_out.png]
@@ -2508,9 +2511,9 @@
     [ [`T::result<Env, Eval0, Eval1, Eval2, ..., EvalN>::type`] [The return type of eval] ]
 ]
 
-The `EvalPolicy` is expected to have a nested template class `result` which has a
-typedef `type` that reflects the return type of its member function `eval`.
-Here's a typical example of the composite's eval member function for a 2-actor
+The `EvalPolicy` is expected to have a nested template class `result` which has a
+typedef `type` that reflects the return type of its member function `eval`.
+Here's a typical example of the composite's eval member function for a 2-actor
 composite:
 
     template <typename Env>
@@ -2518,49 +2521,49 @@
     eval(Env const& env) const
     {
         typedef typename result<Env>::type return_type;
- return EvalPolicy::template
+ return EvalPolicy::template
             eval<return_type>(
                 env
               , get<0>(*this) // gets the 0th element from EvalTuple
- , get<1>(*this)); // gets the 1st element from EvalTuple
+ , get<1>(*this)); // gets the 1st element from EvalTuple
     }
 
 [endsect]
 [section Composing]
 
-Composites are never instantiated directly. Front end expression templates are
-used to generate the composites. Using expression templates, we implement a DSEL
-(Domain Specific Embedded Language) that mimicks native C++. You've seen this
-DSEL in action in the preceding sections. It is most evident in the
+Composites are never instantiated directly. Front end expression templates are
+used to generate the composites. Using expression templates, we implement a DSEL
+(Domain Specific Embedded Language) that mimicks native C++. You've seen this
+DSEL in action in the preceding sections. It is most evident in the
 [link phoenix.composite.statement Statement] section.
 
-There are some facilities in the library to make composition of composites
-easier. We have a set of overloaded `compose` functions and an `as_composite`
-metafunction. Together, these helpers make composing a breeze. We'll provide an
-[link phoenix.inside_phoenix.composing.composite_example example of a
+There are some facilities in the library to make composition of composites
+easier. We have a set of overloaded `compose` functions and an `as_composite`
+metafunction. Together, these helpers make composing a breeze. We'll provide an
+[link phoenix.inside_phoenix.composing.composite_example example of a
 composite] later to see why.
 
 [section compose]
 
     compose<EvalPolicy>(arg0, arg1, arg2, ..., argN);
 
-Given an __eval_policy__ and some arguments `arg0`...argN, returns a proper
-`composite`. The arguments may or may not be phoenix actors (primitives of
-composites). If not, the arguments are converted to actors appropriately. For
+Given an __eval_policy__ and some arguments `arg0`...argN, returns a proper
+`composite`. The arguments may or may not be phoenix actors (primitives of
+composites). If not, the arguments are converted to actors appropriately. For
 example:
 
     compose<X>(3)
 
 converts the argument `3` to an `actor<value<int> >(3)`.
-
+
 [endsect]
 
 [section as_composite]
 
     as_composite<EvalPolicy, Arg0, Arg1, Arg2, ..., ArgN>::type
 
-This is the metafunction counterpart of `compose`. Given an __eval_policy__ and
-some argument types `Arg0`...ArgN, returns a proper `composite` type. For
+This is the metafunction counterpart of `compose`. Given an __eval_policy__ and
+some argument types `Arg0`...ArgN, returns a proper `composite` type. For
 example:
 
     as_composite<X, int>::type
@@ -2571,9 +2574,9 @@
 
 [section Composite Example]
 
-Now, let's examine an example. Again, this is not a toy example. This is actually
-part of the library. Remember the [link phoenix.composite.statement.while__statement
-`while_`] lazy statement? Putting together everything we've learned so far, we
+Now, let's examine an example. Again, this is not a toy example. This is actually
+part of the library. Remember the [link phoenix.composite.statement.while__statement
+`while_`] lazy statement? Putting together everything we've learned so far, we
 will present it here in its entirety (verbatim):
 
     struct while_eval
@@ -2615,17 +2618,17 @@
     {
         return while_gen<Cond>(cond);
     }
-
-`while_eval` is an example of an __eval_policy__. `while_gen` and `while_` are
-the expression template front ends. Let's break this apart to understand what's
+
+`while_eval` is an example of an __eval_policy__. `while_gen` and `while_` are
+the expression template front ends. Let's break this apart to understand what's
 happening. Let's start at the bottom. It's easier that way.
 
 When you write:
 
     while_(cond)
 
-we generate an instance of `while_gen<Cond>`, where `Cond` is the type of
-`cond`. `cond` can be an arbitrarily complex actor expression. The `while_gen`
+we generate an instance of `while_gen<Cond>`, where `Cond` is the type of
+`cond`. `cond` can be an arbitrarily complex actor expression. The `while_gen`
 template class has an `operator[]` accepting another expression. If we write:
 
     while_(cond)
@@ -2637,8 +2640,8 @@
 
     as_composite<while_eval, Cond, Do>::type
 
-where `Cond` is the type of `cond` and `Do` is the type of `do_`. Notice how we
-are using phoenix's [link phoenix.inside_phoenix.composing composition] (`compose`
+where `Cond` is the type of `cond` and `Do` is the type of `do_`. Notice how we
+are using phoenix's [link phoenix.inside_phoenix.composing composition] (`compose`
 and `as_composite`) mechanisms here
 
     template <typename Do>
@@ -2653,8 +2656,8 @@
     while (cond.eval(env))
         do_.eval(env);
 
-`cond` and `do_`, at this point, are instances of __eval__. `cond` and `do_` are
-the __eval__ elements held by the composite's __eval_tuple__. `env` is the
+`cond` and `do_`, at this point, are instances of __eval__. `cond` and `do_` are
+the __eval__ elements held by the composite's __eval_tuple__. `env` is the
 __environment__.
 
 [endsect]
@@ -2663,16 +2666,16 @@
 
 [section Extending]
 
-We've shown how it is very easy to extend phoenix by writing new primitives and
-composites. The modular design of Phoenix makes it extremely extensible. We have
-seen that layer upon layer, the whole library is built on a solid foundation.
-There are only a few simple well designed concepts that are laid out like
-bricks. Overall, the library is designed to be extended. Everything above the
-core layer can in fact be considered just as extensions to the library. This
+We've shown how it is very easy to extend phoenix by writing new primitives and
+composites. The modular design of Phoenix makes it extremely extensible. We have
+seen that layer upon layer, the whole library is built on a solid foundation.
+There are only a few simple well designed concepts that are laid out like
+bricks. Overall, the library is designed to be extended. Everything above the
+core layer can in fact be considered just as extensions to the library. This
 modular design was inherited from the __spirit__ inline parser library.
 
-Extension is non-intrusive. And, whenever a component or module is extended, the
-new extension automatically becomes a first class citizen and is automatically
+Extension is non-intrusive. And, whenever a component or module is extended, the
+new extension automatically becomes a first class citizen and is automatically
 recognized by all modules and components in the library.
 
 [endsect]
@@ -2681,31 +2684,31 @@
 
 [section Wrap Up]
 
-Sooner or later more FP techniques become standard practice as people find the
-true value of this programming discipline outside the academe and into the
-mainstream. In as much as structured programming of the 70s and object oriented
-programming in the 80s and generic programming in the 90s shaped our thoughts
-towards a more robust sense of software engineering, FP will certainly be a
-paradigm that will catapult us towards more powerful software design and
+Sooner or later more FP techniques become standard practice as people find the
+true value of this programming discipline outside the academe and into the
+mainstream. In as much as structured programming of the 70s and object oriented
+programming in the 80s and generic programming in the 90s shaped our thoughts
+towards a more robust sense of software engineering, FP will certainly be a
+paradigm that will catapult us towards more powerful software design and
 engineering onward into the new millenium.
 
-Let me quote Doug Gregor of Boost.org. About functional style programming
+Let me quote Doug Gregor of Boost.org. About functional style programming
 libraries:
 
-[:['They're gaining acceptance, but are somewhat stunted by the ubiquitousness
+[:['They're gaining acceptance, but are somewhat stunted by the ubiquitousness
 of broken compilers. The C++ community is moving deeper into the so-called "STL-
-style" programming paradigm, which brings many aspects of functional programming
-into the fold. Look at, for instance, the Spirit parser to see how such function
-objects can be used to build Yacc-like grammars with semantic actions that can
-build abstract syntax trees on the fly. This type of functional composition is
+style" programming paradigm, which brings many aspects of functional programming
+into the fold. Look at, for instance, the Spirit parser to see how such function
+objects can be used to build Yacc-like grammars with semantic actions that can
+build abstract syntax trees on the fly. This type of functional composition is
 gaining momentum.]]
 
-Indeed. Phoenix is another attempt to introduce more FP techniques into the
-mainstream. Not only is it a tool that will make life easier for the programmer.
-In its own right, the actual design of the library itself is a model of true C++
-FP in action. The library is designed and structured in a strict but clear and
-well mannered FP sense. By all means, use the library as a tool. But for those
-who want to learn more about FP in C++, don't stop there, I invite you to take a
+Indeed. Phoenix is another attempt to introduce more FP techniques into the
+mainstream. Not only is it a tool that will make life easier for the programmer.
+In its own right, the actual design of the library itself is a model of true C++
+FP in action. The library is designed and structured in a strict but clear and
+well mannered FP sense. By all means, use the library as a tool. But for those
+who want to learn more about FP in C++, don't stop there, I invite you to take a
 closer look at the design of the library itself.
 
 So there you have it. Have fun! See you in the FP world.
@@ -2714,8 +2717,8 @@
 
 [section Acknowledgement]
 
-# Hartmut Kaiser implemented the original lazy casts and constructors based on
- his original work on Spirit SE "semantic expressions" (the precursor to
+# Hartmut Kaiser implemented the original lazy casts and constructors based on
+ his original work on Spirit SE "semantic expressions" (the precursor to
   Phoenix).
 # Angus Leeming implemented the container functions on Phoenix-1 which I then
   ported to Phoenix-2.
@@ -2728,7 +2731,7 @@
 # Dan Marsden, did almost all the work in bringing Phoenix-2 out the door.
 # Eric Niebler did a 2.0 pre-release review and wrote some range related code
   that Phoenix stole and used in the algorithms.
-# Thorsten Ottosen; Eric's range_ex code began life as "container_algo" in the
+# Thorsten Ottosen; Eric's range_ex code began life as "container_algo" in the
   old boost sandbox, by Thorsten in 2002-2003.
 # Jeremy Siek, even prior to Thorsten, in 2001, started the "container_algo".
 # Vladimir Prus wrote the mutating algorithms code from the Boost Wiki.
@@ -2742,27 +2745,27 @@
   Available online at [@http://www.math.chalmers.se/~rjmh/Papers/whyfp.html].
 # Boost.Lambda library, Jaakko Jarvi, 1999-2004 Jaakko Jarvi, Gary Powell.
   Available online at [@http://www.boost.org/libs/lambda/].
-# Functional Programming in C++ using the FC++ Library: a short article
- introducing FC++, Brian McNamara and Yannis Smaragdakis, August 2003. Available
+# Functional Programming in C++ using the FC++ Library: a short article
+ introducing FC++, Brian McNamara and Yannis Smaragdakis, August 2003. Available
   online at [@http://www.cc.gatech.edu/~yannis/fc++/].
-# Side-effects and partial function application in C++, Jaakko Jarvi and Gary
- Powell, 2001. Available online at
+# Side-effects and partial function application in C++, Jaakko Jarvi and Gary
+ Powell, 2001. Available online at
   [@http://osl.iu.edu/~jajarvi/publications/papers/mpool01.pdf].
-# Spirit Version 1.8.1, Joel de Guzman, Nov 2004. Available online at
+# Spirit Version 1.8.1, Joel de Guzman, Nov 2004. Available online at
   [@http://www.boost.org/libs/spirit/].
-# The Boost MPL Library, Aleksey Gurtovoy and David Abrahams, 2002-2004.
+# The Boost MPL Library, Aleksey Gurtovoy and David Abrahams, 2002-2004.
   Available online at [@http://www.boost.org/libs/mpl/].
-# Generic Programming Redesign of Patterns, Proceedings of the 5th European
- Conference on Pattern Languages of Programs, (EuroPLoP'2000) Irsee, Germany,
- July 2000. Available online at
+# Generic Programming Redesign of Patterns, Proceedings of the 5th European
+ Conference on Pattern Languages of Programs, (EuroPLoP'2000) Irsee, Germany,
+ July 2000. Available online at
   [@http://www.coldewey.com/europlop2000/papers/geraud%2Bduret.zip].
-# A Gentle Introduction to Haskell, Paul Hudak, John Peterson and Joseph Fasel,
+# A Gentle Introduction to Haskell, Paul Hudak, John Peterson and Joseph Fasel,
   1999. Available online at [@http://www.haskell.org/tutorial/].
-# Large scale software design, John Lackos, ISBN 0201633620, Addison-Wesley, July
+# Large scale software design, John Lackos, ISBN 0201633620, Addison-Wesley, July
   1996.
-# Design Patterns, Elements of Reusable Object-Oriented Software, Erich Gamma,
+# Design Patterns, Elements of Reusable Object-Oriented Software, Erich Gamma,
   Richard Helm, Ralph Jhonson, and John Vlissides, Addison-Wesley, 1995.
-# The Forwarding Problem: Arguments Peter Dimov, Howard E. Hinnant, Dave
+# The Forwarding Problem: Arguments Peter Dimov, Howard E. Hinnant, Dave
   Abrahams, September 09, 2002. Available online: __forwarding__.
 
 [endsect]

Modified: branches/proto/v4/libs/spirit/phoenix/test/container/container_tests.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/test/container/container_tests.hpp (original)
+++ branches/proto/v4/libs/spirit/phoenix/test/container/container_tests.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -85,8 +85,8 @@
     assign(arg1, arg2, arg3)(c, first, last);
     if (test(c.size() != size)) {
         cerr << "Failed " << typeid(Container).name()
- << " test_assign2 1\n"
- << "size == " << c.size() << '\n';
+ << " test_assign2 1\n"
+ << "size == " << c.size() << '\n';
         return;
     }
 
@@ -313,7 +313,7 @@
 {
     test_erase(c);
     if (boost::report_errors() != 0)
- return;
+ return;
 
     using phx::arg_names::arg1;
     using phx::arg_names::arg2;
@@ -322,7 +322,7 @@
     typename Container::value_type const value = *c.begin();
     typename Container::key_type const key = value.first;
     typename Container::size_type const removed =
- erase(arg1, arg2)(c, key);
+ erase(arg1, arg2)(c, key);
     if (test(removed != 1)) {
         cerr << "Failed " << typeid(Container).name() << " test_map_erase 1\n";
         return;
@@ -433,7 +433,7 @@
     // pair<iterator, bool> insert(const value_type& val);
     Map::value_type const value2(1400, 2200);
     std::pair<Map::iterator, bool> result =
- phx::insert(arg1, arg2)(c, value2);
+ phx::insert(arg1, arg2)(c, value2);
     if (test(!result.second)) {
         cerr << "Failed " << typeid(Map).name() << " test_map_insert 2\n";
         return;
@@ -468,7 +468,7 @@
 
     if (test(it != c.begin() || *it != *(++it))) {
         cerr << "Failed " << typeid(Multimap).name()
- << " test_multimap_insert 1\n";
+ << " test_multimap_insert 1\n";
         return;
     }
 
@@ -478,7 +478,7 @@
     it = phx::insert(arg1, arg2)(c, value2);
     if (test(it == c.end())) {
         cerr << "Failed " << typeid(Multimap).name()
- << " test_multimap_insert 2\n";
+ << " test_multimap_insert 2\n";
         return;
     }
 
@@ -490,7 +490,7 @@
     phx::insert(arg1, const_c.begin(), const_c.end())(c);
     if (test(c.size() != size + const_c.size())) {
         cerr << "Failed " << typeid(Multimap).name()
- << " test_multimap_insert 3\n";
+ << " test_multimap_insert 3\n";
         return;
     }
 }

Modified: branches/proto/v4/libs/spirit/phoenix/test/container/container_tests1a.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/test/container/container_tests1a.cpp (original)
+++ branches/proto/v4/libs/spirit/phoenix/test/container/container_tests1a.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -28,7 +28,7 @@
     int_vector::iterator it = data.begin();
     int_vector::iterator const end = data.end();
     for (; it != end; ++it)
- *it += size;
+ *it += size;
     return data;
 }
 

Modified: branches/proto/v4/libs/spirit/phoenix/test/container/container_tests3a.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/test/container/container_tests3a.cpp (original)
+++ branches/proto/v4/libs/spirit/phoenix/test/container/container_tests3a.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,8 +17,8 @@
     int_vector::const_iterator it = data.begin();
     int_vector::const_iterator const end = data.end();
     for (; it != end; ++it) {
- int const value = *it;
- result[value] = 100 * value;
+ int const value = *it;
+ result[value] = 100 * value;
     }
     return result;
 }
@@ -39,7 +39,7 @@
     int_vector::iterator it = data.begin();
     int_vector::iterator const end = data.end();
     for (; it != end; ++it)
- *it += size;
+ *it += size;
     return data;
 }
 

Modified: branches/proto/v4/libs/spirit/phoenix/test/container/container_tests3b.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/test/container/container_tests3b.cpp (original)
+++ branches/proto/v4/libs/spirit/phoenix/test/container/container_tests3b.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,8 +17,8 @@
     int_vector::const_iterator it = data.begin();
     int_vector::const_iterator const end = data.end();
     for (; it != end; ++it) {
- int const value = *it;
- result[value] = 100 * value;
+ int const value = *it;
+ result[value] = 100 * value;
     }
     return result;
 }

Modified: branches/proto/v4/libs/spirit/phoenix/test/container/container_tests6b.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/phoenix/test/container/container_tests6b.cpp (original)
+++ branches/proto/v4/libs/spirit/phoenix/test/container/container_tests6b.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,8 +17,8 @@
     int_vector::const_iterator it = data.begin();
     int_vector::const_iterator const end = data.end();
     for (; it != end; ++it) {
- int const value = *it;
- result[value] = 100 * value;
+ int const value = *it;
+ result[value] = 100 * value;
     }
     return result;
 }
@@ -47,7 +47,7 @@
     int_vector::iterator it = data.begin();
     int_vector::iterator const end = data.end();
     for (; it != end; ++it)
- *it += size;
+ *it += size;
     return data;
 }
 

Modified: branches/proto/v4/libs/spirit/test/Jamfile
==============================================================================
--- branches/proto/v4/libs/spirit/test/Jamfile (original)
+++ branches/proto/v4/libs/spirit/test/Jamfile 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,6 +6,11 @@
 # License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 # http://www.boost.org/LICENSE_1_0.txt)
 #==============================================================================
+project spirit_v2-tests
+ : requirements <toolset>gcc:<cxxflags>-ftemplate-depth-300
+ :
+ :
+ ;
 
 # bring in rules for testing
 import testing ;
@@ -61,6 +66,7 @@
     [ run karma/center_alignment.cpp : : : : ]
     [ run karma/char.cpp : : : : karma_char ]
     [ run karma/delimiter.cpp : : : : ]
+ [ run karma/eol.cpp : : : : karma_eol ]
     [ run karma/eps.cpp : : : : karma_eps ]
     [ run karma/format_manip.cpp : : : : ]
     [ run karma/functor.cpp : : : : karma_functor ]
@@ -73,7 +79,8 @@
     [ run karma/lit.cpp : : : : karma_lit ]
     [ run karma/none.cpp : : : : karma_none ]
     [ run karma/optional.cpp : : : : karma_optional ]
- [ run karma/pattern.cpp : : : : ]
+ [ run karma/pattern.cpp : : : : karma_pattern ]
+ [ run karma/pattern2.cpp : : : : karma_pattern2 ]
     [ run karma/real_numerics.cpp : : : : ]
     [ run karma/right_alignment.cpp : : : : ]
     [ run karma/sequence.cpp : : : : karma_sequence ]

Modified: branches/proto/v4/libs/spirit/test/karma/actions.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/actions.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/actions.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,7 @@
 #include <boost/bind.hpp>
 #include <boost/function_output_iterator.hpp>
 
-#include <strstream>
+#include <sstream>
 #include "test.hpp"
 
 using namespace spirit_test;

Modified: branches/proto/v4/libs/spirit/test/karma/char.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/char.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/char.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -136,9 +136,9 @@
     // action tests
     {
         BOOST_TEST(test("x", char_[_1 = val('x')]));
- BOOST_TEST(test(L"x", char_[_1 = val(L'x')]));
+ BOOST_TEST(test(L"x", wchar[_1 = val(L'x')]));
         BOOST_TEST(!test("x", char_[_1 = val('y')]));
- BOOST_TEST(!test(L"x", char_[_1 = val(L'y')]));
+ BOOST_TEST(!test(L"x", wchar[_1 = val(L'y')]));
     }
 
     { // lazy chars

Modified: branches/proto/v4/libs/spirit/test/karma/grammar.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/grammar.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/grammar.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -29,9 +29,9 @@
 
 typedef spirit_test::output_iterator<char>::type outiter_type;
 
-struct num_list : grammar_def<outiter_type, space_type>
+struct num_list : grammar<outiter_type, space_type>
 {
- num_list()
+ num_list() : num_list::base_type(start)
     {
         using boost::spirit::int_;
         num1 = int_(123);
@@ -47,8 +47,7 @@
 main()
 {
     { // simple grammar test
- num_list def;
- grammar<num_list> nlist(def);
+ num_list nlist;
         BOOST_TEST(test_delimited("123 , 456 , 789 ", nlist, space));
     }
 

Modified: branches/proto/v4/libs/spirit/test/karma/grammar_fail.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/grammar_fail.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/grammar_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,7 +19,7 @@
 using namespace boost::spirit::karma;
 using namespace boost::spirit::ascii;
 
-struct num_list : grammar_def<char const*, rule<char const*> >
+struct num_list : grammar<char const*, rule<char const*> >
 {
     num_list()
     {

Modified: branches/proto/v4/libs/spirit/test/karma/pattern.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/pattern.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/pattern.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -36,62 +36,6 @@
 
     typedef spirit_test::output_iterator<char>::type outiter_type;
 
- // basic tests
- {
- rule<outiter_type> start;
-
- start = char_[_1 = 'a'] << int_[_1 = 10] << double_[_1 = 12.4];
- BOOST_TEST(test("a1012.4", start));
-
- start = (char_ << int_ << double_)[_1 = 'a', _2 = 10, _3 = 12.4];
- BOOST_TEST(test("a1012.4", start));
-
- rule<outiter_type> a, b, c;
- a = char_[_1 = 'a'];
- b = int_[_1 = 10];
- c = double_[_1 = 12.4];
-
- start = a << b << c;
- BOOST_TEST(test("a1012.4", start));
- }
-
- // basic tests involving a direct parameter
- {
- typedef variant<char, int, double> var_type;
- var_type v ('a');
-
- rule<outiter_type, var_type()> start;
-
- start = (char_ | int_ | double_)[_1 = _r0];
- BOOST_TEST(test("a", start, v));
-
- v = 10;
- BOOST_TEST(test("10", start, v));
- v = 12.4;
- BOOST_TEST(test("12.4", start, v));
- }
-
- {
- rule<outiter_type, void(char, int, double)> start;
- fusion::vector<char, int, double> vec('a', 10, 12.4);
-
- start = char_[_1 = _r1] << int_[_1 = _r2] << double_[_1 = _r3];
- BOOST_TEST(test("a1012.4", start('a', 10, 12.4)));
-
- start = (char_ << int_ << double_)[_1 = _r1, _2 = _r2, _3 = _r3];
- BOOST_TEST(test("a1012.4", start('a', 10, 12.4)));
-
- rule<outiter_type, void(char)> a;
- rule<outiter_type, void(int)> b;
- rule<outiter_type, void(double)> c;
-
- a = char_[_1 = _r1];
- b = int_[_1 = _r1];
- c = double_[_1 = _r1];
- start = a(_r1) << b(_r2) << c(_r3);
- BOOST_TEST(test("a1012.4", start('a', 10, 12.4)));
- }
-
     // test rule parameter propagation
     {
         using boost::phoenix::at_c;

Modified: branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/real_numerics.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,6 +5,7 @@
 
 //#define KARMA_FAIL_COMPILATION
 
+#include <boost/version.hpp>
 #include <boost/config/warning_disable.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/math/concepts/real_concept.hpp>
@@ -65,6 +66,9 @@
     static bool const force_sign = true;
 };
 
+// support for using real_concept with a Karma generator has been implemented
+// in Boost versions > 1.36 only
+#if BOOST_VERSION > 103600
 ///////////////////////////////////////////////////////////////////////////////
 // We need to specialize is_real_lit_tag to allow to use a real_concept as a
 // literal below
@@ -74,6 +78,7 @@
     struct is_real_lit_tag<boost::math::concepts::real_concept, Domain>
       : boost::mpl::true_ {};
 }}
+#endif
 
 ///////////////////////////////////////////////////////////////////////////////
 int
@@ -390,6 +395,9 @@
         BOOST_TEST(test(" 0.0", upper[signed_], 0.0));
     }
 
+// support for using real_concept with a Karma generator has been implemented
+// in Boost versions > 1.36 only
+#if BOOST_VERSION > 103600
     {
         using boost::math::concepts::real_concept;
         typedef karma::real_spec<real_concept> custom_type;
@@ -435,6 +443,7 @@
         BOOST_TEST(test("12342.0", custom(real_concept(12342.))));
         BOOST_TEST(test("1.234e05", custom(real_concept(123420.))));
     }
-
+#endif
+
     return boost::report_errors();
 }

Modified: branches/proto/v4/libs/spirit/test/karma/test.hpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/karma/test.hpp (original)
+++ branches/proto/v4/libs/spirit/test/karma/test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -36,6 +36,14 @@
     display_type const display = {};
 
     ///////////////////////////////////////////////////////////////////////////
+ template <typename Char>
+ struct output_iterator
+ {
+ typedef std::basic_string<Char> string_type;
+ typedef std::back_insert_iterator<string_type> type;
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
     template <typename Char, typename Generator>
     inline bool test(Char const *expected, Generator const& g)
     {

Modified: branches/proto/v4/libs/spirit/test/qi/grammar.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/qi/grammar.cpp (original)
+++ branches/proto/v4/libs/spirit/test/qi/grammar.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,7 +24,7 @@
 using namespace boost::spirit::ascii;
 using namespace boost::spirit::arg_names;
 
-struct num_list : grammar_<char const*, space_type>
+struct num_list : grammar<char const*, space_type>
 {
     num_list() : base_type(start)
     {
@@ -36,9 +36,9 @@
     rule<char const*, space_type> start, num;
 };
 
-struct inh_g : grammar_def<char const*, int(int), space_type>
+struct inh_g : grammar<char const*, int(int), space_type>
 {
- inh_g()
+ inh_g() : base_type(start)
     {
         start = lit("inherited")[_val = _r1];
     }
@@ -46,9 +46,9 @@
     rule<char const*, int(int), space_type> start, num;
 };
 
-struct my_skipper : grammar_def<char const*>
+struct my_skipper : grammar<char const*>
 {
- my_skipper()
+ my_skipper() : base_type(start)
     {
         start = space;
     }
@@ -56,23 +56,23 @@
     rule<char const*> start, num;
 };
 
-struct num_list2 : grammar_def<char const*, grammar<my_skipper> >
+struct num_list2 : grammar<char const*, my_skipper>
 {
- num_list2()
+ num_list2() : base_type(start)
     {
         using boost::spirit::int_;
         num = int_;
         start = num >> *(',' >> num);
     }
 
- rule<char const*, grammar<my_skipper> > start, num;
+ rule<char const*, my_skipper> start, num;
 };
 
 template <typename Iterator, typename Skipper>
-struct num_list3 : grammar_def<Iterator, Skipper>
+struct num_list3 : grammar<Iterator, Skipper>
 {
     template <typename Class>
- num_list3(Class& self)
+ num_list3(Class& self) : grammar<Iterator, Skipper>(start)
     {
         using boost::spirit::int_;
         num = int_;
@@ -93,53 +93,28 @@
 
     { // simple grammar test with user-skipper
 
- num_list2 def;
- grammar<num_list2> nlist(def);
- my_skipper skipdef;
- grammar<my_skipper> skip(skipdef);
+ num_list2 nlist;
+ my_skipper skip;
         BOOST_TEST(test("123, 456, 789", nlist, skip));
     }
 
     { // direct access to the rules
 
- num_list def;
- BOOST_TEST(test("123", def.num));
- BOOST_TEST(test("123, 456, 789", def.start, space));
+ num_list g;
+ BOOST_TEST(test("123", g.num));
+ BOOST_TEST(test("123, 456, 789", g.start, space));
     }
 
     { // grammar with inherited attributes
 
- inh_g def;
- grammar<inh_g> g(def);
+ inh_g g;
         int n = -1;
- BOOST_TEST(test_attr("inherited", def.start(123), n, space)); // direct to the rule
+ BOOST_TEST(test_attr("inherited", g.start(123), n, space)); // direct to the rule
         BOOST_TEST(n == 123);
         BOOST_TEST(test_attr("inherited", g(123), n, space)); // using the grammar
         BOOST_TEST(n == 123);
     }
 
- { // grammar_class test (no skipper)
-
- grammar_class<num_list3> nlist;
-
- char const* first = "123,456,789";
- char const* last = first;
- while (*last)
- last++;
- BOOST_TEST(parse(first, last, nlist) && (first == last));
- }
-
- { // grammar_class test (w/skipper)
-
- grammar_class<num_list3> nlist;
-
- char const* first = "123, 456, 789";
- char const* last = first;
- while (*last)
- last++;
- BOOST_TEST(phrase_parse(first, last, nlist, space)
- && (first == last));
- }
     return boost::report_errors();
 }
 

Modified: branches/proto/v4/libs/spirit/test/qi/grammar_fail.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/qi/grammar_fail.cpp (original)
+++ branches/proto/v4/libs/spirit/test/qi/grammar_fail.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,9 +16,9 @@
 using namespace boost::spirit::qi;
 using namespace boost::spirit::ascii;
 
-struct num_list : grammar_def<char const*, rule<char const*> >
+struct num_list : grammar<char const*, rule<char const*> >
 {
- num_list()
+ num_list() : base_type(start)
     {
         using boost::spirit::int_;
         num = int_;
@@ -34,8 +34,7 @@
     char const* input = "some input, it doesn't matter";
     char const* end = &input[strlen(input)+1];
 
- num_list def;
- grammar<num_list> g(def);
+ num_list g;
     bool r = phrase_parse(input, end, g,
         space | ('%' >> *~char_('\n') >> '\n'));
 

Modified: branches/proto/v4/libs/spirit/test/qi/range_run.cpp
==============================================================================
--- branches/proto/v4/libs/spirit/test/qi/range_run.cpp (original)
+++ branches/proto/v4/libs/spirit/test/qi/range_run.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,24 +19,31 @@
 template <typename Char>
 void acid_test()
 {
+ if (sizeof(Char) == sizeof(unsigned))
+ return; // don't do this test if we have a Char that's very big.
+ // the smaller chars will suffice for testing.
+
     using boost::spirit::qi::detail::range_run;
     using boost::spirit::qi::detail::range;
 
     typedef boost::integer_traits<Char> integer_traits;
     Char const const_min = integer_traits::const_min;
     Char const const_max = integer_traits::const_max;
+ unsigned bit_set_size = unsigned(const_max)-unsigned(const_min)+1;
     int const test_size = 1000;
 
     boost::mt19937 rng;
- boost::uniform_int<> char_(int(const_min), int(const_max));
- boost::variate_generator<boost::mt19937&, boost::uniform_int<> >
+ int min = const_min;
+ int max = const_max;
+ boost::uniform_int<Char> char_(min, max);
+ boost::variate_generator<boost::mt19937&, boost::uniform_int<Char> >
        gen(rng, char_);
- boost::uniform_int<> _1of10(1, 10);
- boost::variate_generator<boost::mt19937&, boost::uniform_int<> >
+ boost::uniform_int<Char> _1of10(1, 10);
+ boost::variate_generator<boost::mt19937&, boost::uniform_int<Char> >
        on_or_off(rng, _1of10);
 
     range_run<Char> rr;
- boost::dynamic_bitset<> bset(int(const_max)-int(const_min)+1);
+ boost::dynamic_bitset<unsigned> bset(bit_set_size);
 
     for (int i = 0; i < test_size; ++i)
     {

Modified: branches/proto/v4/libs/statechart/doc/future_and_history.html
==============================================================================
--- branches/proto/v4/libs/statechart/doc/future_and_history.html (original)
+++ branches/proto/v4/libs/statechart/doc/future_and_history.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -140,7 +140,7 @@
 
   <p>(<font color="#FF0000">red</font> = points raised during formal
   review)</p>
- <p>Unreleased (committed to the SVN trunk)</p>
+ <p>1.36.0</p>
   <ul>
     <li>Removed all permanent warning suppressions from library headers
       and avoided the resulting warnings with other means (suggested by

Modified: branches/proto/v4/libs/statechart/doc/index.html
==============================================================================
--- branches/proto/v4/libs/statechart/doc/index.html (original)
+++ branches/proto/v4/libs/statechart/doc/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -122,7 +122,7 @@
 
   <p>Whether and how Boost.Statechart will work on your platform is best
   determined on the <a href=
- "http://www.boost.org/development/tests/trunk/user/statechart.html">
+ "http://www.boost.org/development/tests/trunk/developer/statechart.html">
   status page</a>. If the cells in your compilers column are all green, the
   library should work as advertised. Cells of different color indicate
   possible problems; follow the links for details. Before employing the

Modified: branches/proto/v4/libs/statechart/example/PingPong/Player.cpp
==============================================================================
--- branches/proto/v4/libs/statechart/example/PingPong/Player.cpp (original)
+++ branches/proto/v4/libs/statechart/example/PingPong/Player.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,7 +17,7 @@
   // Since we can only initiate at a point where the definitions of all the
   // states in the initial state configuration are known, we duplicate
   // the implementation of asynchronous_state_machine<>::initiate_impl() here
- state_machine< Player, Waiting, MyAllocator >::initiate();
+ sc::state_machine< Player, Waiting, MyAllocator >::initiate();
 }
 
 

Modified: branches/proto/v4/libs/statechart/example/PingPong/Player.hpp
==============================================================================
--- branches/proto/v4/libs/statechart/example/PingPong/Player.hpp (original)
+++ branches/proto/v4/libs/statechart/example/PingPong/Player.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -74,7 +74,25 @@
 typedef sc::fifo_scheduler<> MyScheduler;
 #endif
 
+
+//////////////////////////////////////////////////////////////////////////////
+struct Player;
 struct Waiting;
+
+namespace boost
+{
+namespace statechart
+{
+ // The following class member specialization ensures that
+ // state_machine<>::initiate is not instantiated at a point where Waiting
+ // is not defined yet.
+ template<>
+ inline void asynchronous_state_machine<
+ Player, Waiting, MyScheduler, MyAllocator >::initiate_impl() {}
+}
+}
+
+
 struct Player : sc::asynchronous_state_machine<
   Player, Waiting, MyScheduler, MyAllocator >
 {
@@ -104,13 +122,5 @@
 };
 
 
-// The following class member specialization ensures that
-// state_machine<>::initiate is not instantiated at a point where Waiting
-// is not defined yet.
-template<>
-void sc::asynchronous_state_machine<
- Player, Waiting, MyScheduler, MyAllocator >::initiate_impl() {}
-
-
 
 #endif

Modified: branches/proto/v4/libs/static_assert/doc/static_assert.qbk
==============================================================================
--- branches/proto/v4/libs/static_assert/doc/static_assert.qbk (original)
+++ branches/proto/v4/libs/static_assert/doc/static_assert.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,7 +16,7 @@
 ]
 
 This manual is also available in
-[@http:svn.boost.org/svn/boost/sandbox/pdf/static_assert/release/static_assert.pdf
+[@http://svn.boost.org/svn/boost/sandbox/pdf/static_assert/release/static_assert.pdf
 printer friendly PDF format].
 
 [section:intro Overview and Tutorial]

Modified: branches/proto/v4/libs/system/doc/reference.html
==============================================================================
--- branches/proto/v4/libs/system/doc/reference.html (original)
+++ branches/proto/v4/libs/system/doc/reference.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -132,10 +132,10 @@
     template< class T="" >
       struct is_error_condition_enum { static const bool value = false; };
 
- // portable error_conditions
- namespace posix_error
+ // generic error_conditions
+ namespace errc
     {
- enum posix_errno
+ enum errc_t
       {
         success = 0,
         address_family_not_supported, //EAFNOSUPPORT
@@ -218,9 +218,9 @@
         wrong_protocol_type //EPROTOTYPE
       };
 
- } // namespace posix_error
+ } // namespace errc
 
- template<> struct is_error_condition_enum<posix::posix_errno>&lt;posix_error::posix_errno&gt;
+ template<> struct is_error_condition_enum<posix::posix_errno>&lt;errc::errc_t&gt;
       { static const bool value = true; };
 
     bool operator==( const error_code &amp; lhs, const error_code &amp; rhs );
@@ -236,8 +236,8 @@
     bool operator&lt;( const error_code &amp; lhs, const error_code &amp; rhs );
     bool operator&lt;( const error_condition &amp; lhs, const error_condition &amp; rhs );
 
- error_code make_error_code( posix_error::posix_errno e );
- error_condition make_error_condition( posix_error::posix_errno e );
+ error_code make_error_code( errc::errc_t e );
+ error_condition make_error_condition( errc::errc_t e );
 
     template &lt;class charT, class traits&gt;
       std::basic_ostream&lt;charT,traits&gt;&amp;
@@ -247,7 +247,7 @@
   }
 }</pre>
 </blockquote>
-<p>The value of each<code> posix_errno</code> constant shall be the same as the
+<p>The value of each<code> errc_t</code> constant shall be the same as the
 value of the <code>&lt;cerrno&gt;</code> macro shown in the above synopsis.</p>
 <p>Users may specialize <code>is_error_code_enum</code> and <code>
 is_error_condition_enum</code> templates to indicate that a type is eligible for
@@ -290,10 +290,10 @@
     };
 
     const error_category &amp; get_system_category();
- const error_category &amp; get_posix_category();
+ const error_category &amp; get_generic_category();
 
     static const error_category &amp; system_category = get_system_category();
- static const error_category &amp; posix_category = get_posix_category();
+ static const error_category &amp; generic_category = get_generic_category();
   }
 }</pre>
 </blockquote>
@@ -316,7 +316,7 @@
   <p><i>Returns:</i>&nbsp; <code>error_condition( ev, *this )</code>.</p>
   <blockquote>
     <p>&nbsp;[<i>--Note:</i> Derived classes will typically convert <code>ev</code>
- to some portable <code>error_category</code>, such as <code>posix_category</code>,
+ to some portable <code>error_category</code>, such as <code>generic_category</code>,
     and return it as an <code>error_condition</code> for that category. <i>--end
     note</i>]</p>
   </blockquote>
@@ -361,7 +361,7 @@
   identifying errors originating from the operating system.</p>
   <p><i>Throws:</i> Nothing.</p>
 </blockquote>
-<pre>const error_category &amp; get_posix_category();</pre>
+<pre>const error_category &amp; get_generic_category();</pre>
 <blockquote>
   <p><i>Returns:</i> A reference to a <code>error_category</code> object
   identifying portable error conditions.</p>
@@ -370,7 +370,7 @@
 <h3><a name="Class-error_category-predefined-objects">Class <code>error_category</code>
 predefined objects</a></h3>
 <p>Predefined objects <code>system_category</code>
-and <code>posix_category</code> identify operating system error codes and portable error conditions, respectively.</p>
+and <code>generic_category</code> identify operating system error codes and portable error conditions, respectively.</p>
 <h2><a name="Class-error_code">Class <code>
 error_code</code></a></h2>
 <p>The class <code>error_code</code> describes an object used to hold error code
@@ -454,7 +454,7 @@
 </blockquote>
 <p><code>void clear();</code></p>
 <blockquote>
- <p><i>postcondition:</i> <code>value() == 0 &amp;&amp; category() == posix_category</code></p>
+ <p><i>postcondition:</i> <code>value() == 0 &amp;&amp; category() == generic_category</code></p>
 </blockquote>
   <h3><a name="Class-error_code-observers">Class <code>
 error_code</code> observers</a></h3>
@@ -538,7 +538,7 @@
 <pre>error_condition(); </pre>
 <blockquote>
   <p><i>Effects:</i> Constructs an object of type <code>error_condition</code>.</p>
- <p><i>Postconditions:</i> <code>val_ == 0 and cat_ == posix_category</code>.</p>
+ <p><i>Postconditions:</i> <code>val_ == 0 and cat_ == generic_category</code>.</p>
   <p><i>Throws:</i> Nothing.</p>
 </blockquote>
 <pre>error_condition( value_type val, const error_category &amp; cat );</pre>
@@ -571,7 +571,7 @@
 </blockquote>
 <p><code>void clear();</code></p>
 <blockquote>
- <p><i>postcondition:</i> <code>value() == 0 &amp;&amp; category() == posix_category</code></p>
+ <p><i>postcondition:</i> <code>value() == 0 &amp;&amp; category() == generic_category</code></p>
 </blockquote>
 <h3><a name="Class-error_condition-observers">Class <code>error_condition</code>
 observers</a></h3>
@@ -651,13 +651,13 @@
   &nbsp; || (lhs.category() == rhs.category() &amp;&amp; lhs.value() &lt; rhs.value())</code>.</p>
   <p><i>Throws: </i>Nothing.</p>
 </blockquote>
-<pre>error_code make_error_code( posix_error::posix_errno e );</pre>
+<pre>error_code make_error_code( errc::errc_t e );</pre>
 <blockquote>
- <p><i>Returns:</i> <code>error_code( e, posix_category)</code>.</p>
+ <p><i>Returns:</i> <code>error_code( e, generic_category)</code>.</p>
 </blockquote>
-<pre>error_condition make_error_condition( posix_error::posix_errno e );</pre>
+<pre>error_condition make_error_condition( errc::errc_t e );</pre>
 <blockquote>
- <p><i>Returns:</i> <code>error_condition( e, posix_category)</code>.</p>
+ <p><i>Returns:</i> <code>error_condition( e, generic_category)</code>.</p>
 </blockquote>
 
 <pre>template &lt;class charT, class traits&gt;
@@ -689,8 +689,11 @@
     {
     public:
       system_error( error_code ec );
+ system_error( error_code ec, const char * what_arg );
       system_error( error_code ec, const std::string &amp; what_arg );
       system_error( error_code::value_type ev, const error_category &amp; ecat,
+ const char * what_arg );
+ system_error( error_code::value_type ev, const error_category &amp; ecat,
                     const std::string &amp; what_arg );
       system_error( error_code::value_type ev, const error_category &amp; ecat);
 
@@ -706,6 +709,12 @@
   <p><i>Postcondition:</i> <code>code() == ec <br>
 &nbsp; &amp;&amp; std::strcmp( this-&gt;runtime_error::what(), &quot;&quot; ) == 0</code></p>
 </blockquote>
+<pre>system_error( error_code ec, const char * what_arg );</pre>
+<blockquote>
+ <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
+ <p><i>Postcondition:</i> <code>code() == ec <br>
+&nbsp; &amp;&amp; std::strcmp( this-&gt;runtime_error::what(), what_arg ) == 0</code></p>
+</blockquote>
 <pre>system_error( error_code ec, const std::string &amp; what_arg );</pre>
 <blockquote>
   <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
@@ -713,6 +722,13 @@
 &nbsp; &amp;&amp; std::strcmp( this-&gt;runtime_error::what(), what_arg.c_str() ) == 0</code></p>
 </blockquote>
 <pre>system_error( error_code::value_type ev, const error_category &amp; ecat,
+ const char * what_arg );</pre>
+<blockquote>
+ <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
+ <p><i>Postcondition:</i> <code>code() == error_code( ev, ecat )<br>
+&nbsp; &amp;&amp; std::strcmp( this-&gt;runtime_error::what(), what_arg ) == 0</code></p>
+</blockquote>
+<pre>system_error( error_code::value_type ev, const error_category &amp; ecat,
              const std::string &amp; what_arg );</pre>
 <blockquote>
   <p><i>Effects:</i> Constructs an object of class <code>system_error</code>.</p>
@@ -743,7 +759,7 @@
 <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a></p>
 
 <p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%B %d, %Y" startspan -->November 12, 2007<!--webbot bot="Timestamp" endspan i-checksum="39581" --> </font>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%B %d, %Y" startspan -->June 25, 2008<!--webbot bot="Timestamp" endspan i-checksum="14296" --> </font>
 </p>
 
 </body>

Modified: branches/proto/v4/libs/system/src/error_code.cpp
==============================================================================
--- branches/proto/v4/libs/system/src/error_code.cpp (original)
+++ branches/proto/v4/libs/system/src/error_code.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -38,12 +38,12 @@
 
 namespace
 {
- // standard error categories -------------------------------------------//
+ // standard error categories ---------------------------------------------//
 
- class posix_error_category : public error_category
+ class generic_error_category : public error_category
   {
   public:
- posix_error_category(){}
+ generic_error_category(){}
     const char * name() const;
     std::string message( int ev ) const;
   };
@@ -57,14 +57,14 @@
     error_condition default_error_condition( int ev ) const;
   };
 
- // posix_error_category implementation ---------------------------------//
+ // generic_error_category implementation ---------------------------------//
 
- const char * posix_error_category::name() const
+ const char * generic_error_category::name() const
   {
- return "POSIX";
+ return "GENERIC";
   }
 
- std::string posix_error_category::message( int ev ) const
+ std::string generic_error_category::message( int ev ) const
   {
   // strerror_r is preferred because it is always thread safe,
   // however, we fallback to strerror in certain cases because:
@@ -318,7 +318,7 @@
 
   std::string system_error_category::message( int ev ) const
   {
- return posix_category.message( ev );
+ return generic_category.message( ev );
   }
 # else
 // TODO:
@@ -402,10 +402,10 @@
       return system_category_const;
     }
 
- BOOST_SYSTEM_DECL const error_category & get_posix_category()
+ BOOST_SYSTEM_DECL const error_category & get_generic_category()
     {
- static const posix_error_category posix_category_const;
- return posix_category_const;
+ static const generic_error_category generic_category_const;
+ return generic_category_const;
     }
 
   } // namespace system

Modified: branches/proto/v4/libs/system/test/system_error_test.cpp
==============================================================================
--- branches/proto/v4/libs/system/test/system_error_test.cpp (original)
+++ branches/proto/v4/libs/system/test/system_error_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,6 +14,7 @@
 #include <boost/test/minimal.hpp>
 #include <boost/system/system_error.hpp>
 #include <iostream>
+#include <string>
 
 #ifdef BOOST_WINDOWS_API
 #include <windows.h>
@@ -22,6 +23,7 @@
 using boost::system::system_error;
 using boost::system::error_code;
 using boost::system::system_category;
+using std::string;
 
 #define TEST(x,v,w) test(#x,x,v,w)
 
@@ -51,29 +53,52 @@
 # endif
   }
 
- const boost::uint_least32_t uvalue = 1u;
+ const boost::uint_least32_t uvalue = 2u;
 }
 
 int test_main( int, char *[] )
 {
- // all combinations of constructors:
+ // all constructors, in the same order as they appear in the header:
 
- system_error se_0_m( error_code(0, system_category), "se_0_m" );
- system_error se_1_m( 1, system_category, "se_1_m" );
- system_error se_0_nm( error_code(0, system_category), "" );
- system_error se_1_nm( 1, system_category, "" );
- system_error se_0_nmx( error_code(0, system_category), "" );
- system_error se_1_nmx( 1, system_category, "" );
- system_error se_1u_m( uvalue, system_category, "se_1u_m" );
-
- TEST( se_0_m, 0, "se_0_m" );
- TEST( se_1_m, 1, "se_1_m: Incorrect function" );
- TEST( se_0_nm, 0, "" );
- TEST( se_1_nm, 1, "Incorrect function" );
- TEST( se_0_nmx, 0, "" );
- TEST( se_1_nmx, 1, "Incorrect function" );
- TEST( se_1u_m, 1, "se_1u_m: Incorrect function" );
+ system_error c1_0( error_code(0, system_category) );
+ system_error c1_1( error_code(1, system_category) );
+ system_error c1_2u( error_code(uvalue, system_category) );
 
+ system_error c2_0( error_code(0, system_category), string("c2_0") );
+ system_error c2_1( error_code(1, system_category), string("c2_1") );
+
+ system_error c3_0( error_code(0, system_category), "c3_0" );
+ system_error c3_1( error_code(1, system_category), "c3_1" );
+
+ system_error c4_0( 0, system_category );
+ system_error c4_1( 1, system_category );
+ system_error c4_2u( uvalue, system_category );
+
+ system_error c5_0( 0, system_category, string("c5_0") );
+ system_error c5_1( 1, system_category, string("c5_1") );
+
+ system_error c6_0( 0, system_category, "c6_0" );
+ system_error c6_1( 1, system_category, "c6_1" );
+
+ TEST( c1_0, 0, "" );
+ TEST( c1_1, 1, "Incorrect function" );
+ TEST( c1_2u, 2, "The system cannot find the file specified" );
+
+ TEST( c2_0, 0, "c2_0" );
+ TEST( c2_1, 1, "c2_1: Incorrect function" );
+
+ TEST( c3_0, 0, "c3_0" );
+ TEST( c3_1, 1, "c3_1: Incorrect function" );
+
+ TEST( c4_0, 0, "" );
+ TEST( c4_1, 1, "Incorrect function" );
+ TEST( c4_2u, 2, "The system cannot find the file specified" );
+
+ TEST( c5_0, 0, "c5_0" );
+ TEST( c5_1, 1, "c5_1: Incorrect function" );
+
+ TEST( c6_0, 0, "c6_0" );
+ TEST( c6_1, 1, "c6_1: Incorrect function" );
 
   return 0;
 }

Deleted: branches/proto/v4/libs/test/doc/acknowledgements.html
==============================================================================
--- branches/proto/v4/libs/test/doc/acknowledgements.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-<HEAD>
-<TITLE>Boost Test Library: acknowledgements</TITLE>
-<LINK rel="stylesheet" type="text/css" href="style/btl.css" media="screen">
-<LINK rel="stylesheet" type="text/css" href="style/btl-print.css" media="print">
-<META http-equiv="Content-Language" content="en-us">
-<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-<BODY>
-<DIV class="header"> Boost.Test &gt; <SPAN class="current_article">Acknowledgements</SPAN> </DIV>
-<DIV class="body"> <IMG src='btl1.gif' width="252" height="43" alt="Boost Test logo">
- <H1 class="subtitle"><A name="Acknowledgements">Acknowledgements</A></H1>
- <P>Original Test Library:</P>
- <P class="first-line-indented">Ed Brey, Kevlin Henney, Ullrich Koethe, and Thomas
- Matelich provided very helpful comments during development. Dave Abrahams, Ed
- Brey, William Kempf, Jens Maurer, and Wilka suggested numerous improvements during
- the Formal Review. Jens Maurer was the review manager. Beman Dawes is the developer
- and maintainer.</P>
- <P>Second Release:</P>
- <P class="first-line-indented">Beman Dawes and Ullrich Koethe started the library.
- Fernando Cacciola, Jeremy Siek, Beman Dawes, Ullrich Koethe, Dave Abrahams suggested
- numerous improvements during the Formal Review. Jeremy Siek was the review manager.
- Dave Abrahams edited this documentation. Beman Dawes was a great help in both final
- testing and merging library with rest of the boost. Gennadiy Rozental is the developer
- and maintainer. </P>
-</DIV>
-<DIV class="footer">
-<DIV class="footer-body">
- <P> &copy; <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy Rozental</A> 2001-2006. <BR>
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- www.boost.org/LICENSE_1_0.txt)</P>
- <P>Revised: <!-- #BeginDate format:Sw1 -->18 February, 2006<!-- #EndDate --> </P>
-</DIV>
-</DIV>
-</BODY>
-</HTML>

Deleted: branches/proto/v4/libs/test/doc/btl1.gif
==============================================================================
Binary file. No diff available.

Deleted: branches/proto/v4/libs/test/doc/faq.html
==============================================================================
--- branches/proto/v4/libs/test/doc/faq.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,90 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-<HEAD>
-<TITLE>Boost Test Library: FAQ</TITLE>
-<LINK rel="stylesheet" type="text/css" href="style/btl.css" media="screen">
-<LINK rel="stylesheet" type="text/css" href="style/btl-print.css" media="print">
-<META http-equiv="Content-Language" content="en-us">
-<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-<BODY>
-<DIV class="header"> Boost.Test &gt; <SPAN class="current_article">FAQ</SPAN> </DIV>
-<DIV class="body"> <IMG src='btl1.gif' width="252" height="43" alt="Boost Test logo">
- <H1 class="subtitle">Frequently Asked Questions</H1>
- <UL>
- <LI><A href="#Item_1">Where the latest version of the Boost Test Library
- is located?</A></LI>
- <LI>I found a bug. Where could I report it?</LI>
- <LI><A href="#Item_3">I have a request for a new feature. Where could I ask
- for it? </A></LI>
- <LI>How to create test case?</LI>
- <LI>How to create test suite?</LI>
- <LI><A href="#Item_7">Why did I get a linker error when compiling my test
- program?</A></LI>
- <LI>How could I redirect testing output?</LI>
- <LI>I want different default log trace level</LI>
- <LI><A href="#Item_9">Is there dll version of Boost.Test components available
- on Win32 platform?</A></LI>
- </UL>
- <H2><A name="Item_1">Where the latest version of the Boost Test Library is
- located?</A></H2>
- <P class="first-line-indented">The latest version of Boost Test Library is
- available online on www.boost.org.</P>
- <H2><A name="Item_2">I found a bug. Where could I report it?</A></H2>
- <P class="first-line-indented">Send a bug report to <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy
- Rozental</A>.</P>
- <H2><A name="Item_3">I have a request for a new feature. Where could I ask
- for it?</A></H2>
- <P class="first-line-indented">You can send a request to <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy
- Rozental</A>.</P>
- <H2><A name="Item_4">How to create test case?</A></H2>
- <P class="first-line-indented">To create a test case use the macro BOOST_AUTO_TEST_CASE(
- test_function ). For more details see the <A href="components/utf/components/test_case/index.html">Unit
- Test Framework</A> documentation.</P>
- <H2><A name="Item_5">How to create test suite?</A></H2>
- <P class="first-line-indented">To create a test suite use the macro BOOST_AUTO_TEST_SUITE(
- suite_name ). For more details see the <A href="components/utf/components/test_suite/index.html">Unit
- Test Framework</A> documentation.</P>
- <H2><A name="Item_6">Why did I get a linker error when compiling my test program?</A></H2>
- <P class="first-line-indented">Boost Test Library is intended to be used off-line.
- To create a test program you should link with the one of the precompiled
- library components or use &quot;included&quot; version of the component located
- in a boost/test/included directory. For example, to use Unit Test Framework
- you may either include the &lt;boost/test/unit_test.hpp&gt; and link with
- libunit_test_framework.lib or you could include &lt;boost/test/included/unit_test.hpp&gt; in
- which case you would not need to link with any precompiled component. Note
- also that you should strictly follow specification on integration function
- in other case some compilers may produce linker error like this:</P>
- <P>Unresolved external init_unit_test_suite(int, char**).</P>
-
- <P>The reasons for this error is that in your implementation you should specify
- second argument of init_unit_test_suite exactly as in a specification, i.e.:
- char* [].</P>
- <H2><A name="Item_7">How could I redirect testing output?</A></H2>
- <P class="first-line-indented">Use unit_test_log::instance().set_log_output(
- std::ostream&amp; ). For more details see the <A href="components/utf/components/test_log/index.html">Unit
- Test Framework </A>documentation.</P>
- <H2><A name="Item_8">I want different default log trace level</A></H2>
- <P class="first-line-indented">Use environment variable BOOST_TEST_LOG_LEVEL
- to define desired log trace level. You still will be able to reset this value
- from the command line. For the list of acceptable values see the <A href="components/utf/parameters/log_level.html">Unit
- Test Framework</A> documentation. </P>
- <H2><A name="Item_9">Is there DLL version of Boost.Test components available
- on Win32 platform?</A></H2>
- <P class="first-line-indented">No. At the moment Boost Test components could
- not be compiled into dlls to be loaded at runtime.</P>
-</DIV>
-<DIV class="footer">
- <DIV class="footer-body">
- <P> &copy; <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy
- Rozental</A> 2001-2006. <BR>
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at www.boost.org/LICENSE_1_0.txt)</P>
- <P>Revised:
- <!-- #BeginDate format:Sw1 -->8 March, 2006<!-- #EndDate -->
- </P>
- </DIV>
-</DIV>
-</BODY>
-</HTML>

Deleted: branches/proto/v4/libs/test/doc/index.html
==============================================================================
--- branches/proto/v4/libs/test/doc/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,64 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-<HEAD>
-<TITLE>Boost Test Library</TITLE>
-<LINK rel="stylesheet" type="text/css" href="style/btl.css" media="screen">
-<LINK rel="stylesheet" type="text/css" href="style/btl-print.css" media="print">
-<META http-equiv="Content-Language" content="en-us">
-<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-<BODY>
-<DIV class="body"> <IMG src="../../../boost.png" alt="Boost logo"
- height="86" width="277">
- <H1>Boost Test Library</H1>
- <P class="epigraph">&quot;Test everything that could possibly break&quot;</P>
- <P class="epigraph">XP maxim</P>
- <P class="page-toc"> Introduction<BR>
- Components </P>
- <P class="page-toc-indented">
- Unit Test Framework<BR>
- Minimal testing facility<BR>
- Program Execution Monitor<BR>
- Execution Monitor
- </P>
- <P class="page-toc">
- Tutorials and usage recommendations<BR>
- FAQ<BR>
- Release notes<BR>
- Open Issues<BR>
- Examples<BR>
- Tests<BR>
- Portability<BR>
- Acknowledgements</P>
- <H2><A name="Introduction">Introduction</A></H2>
- <P class="first-line-indented">The Boost Test Library provides a matched set
- of components for writing test programs, organizing tests in to simple test
- cases and test suites, and controlling their runtime execution. The <A href="./components/prg_exec_monitor/index.html"> Program
- Execution Monitor</A> is also useful in some production (non-test) environments. </P>
- <H2><A name="ReleaseNotes">Release notes</A></H2>
- <P class="first-line-indented"><EM>In this release most of
- Boost.Test components undergo a major or significant change in both design
- and implementation</EM>. I've strived to keep an interface unchanged as much as possible. The primary goals for this update were: </P>
- <UL>
- <LI>Make a Unit Test Framework better suited for different 'runners'</LI>
- <LI>Make Unit Test Framework simpler internally by eliminating test cases hierarchy</LI>
- <LI>Make test tools more uniform</LI>
- <LI>Make auto Unit Test Framework as usable as possible</LI>
- </UL>
- <P>For more details see complete <A href="release_notes.html#v1_33_0">release
- notes</A>. I may not be able to make all necessary changes in documentation within bounds of this release. In case of any discrepancies either consult library code or ask for support in users list. </P>
-</DIV>
-<DIV class="footer">
- <DIV class="footer-body">
- <P> &copy; <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy
- Rozental</A> 2001-2006. <BR>
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at www.boost.org/LICENSE_1_0.txt)</P>
- <P>Revised:
- <!-- #BeginDate format:Sw1 -->28 February, 2006<!-- #EndDate -->
- </P>
- </DIV>
-</DIV>
-</BODY>
-</HTML>

Deleted: branches/proto/v4/libs/test/doc/open_issues.html
==============================================================================
--- branches/proto/v4/libs/test/doc/open_issues.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,52 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-<HEAD>
-<TITLE>Boost Test Library: open issues</TITLE>
-<LINK rel="stylesheet" type="text/css" href="style/btl.css" media="screen">
-<LINK rel="stylesheet" type="text/css" href="style/btl-print.css" media="print">
-<META http-equiv="Content-Language" content="en-us">
-<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-<BODY>
-<DIV class="header"> Boost.Test &gt; <SPAN class="current_article">Open
- Issues</SPAN> </DIV>
-<DIV class="body"> <IMG src='btl1.gif' width="252" height="43" alt="Boost Test logo">
- <H1 class="subtitle">Open Issues</H1>
- <UL>
- <LI> Finish update for CLA support </LI>
- <LI> Selective test cases run by name</LI>
- <LI>Boost.Test thread safety need to be achieved at least if BOOST_TEST_THREAD_SAFE is defined. This one will require separate discussion</LI>
- <LI>Some performance testing tools (aka profiler). Unless somebody else will come up with something like this</LI>
- <LI> Build info feature needs to be updated: there are at least two different
- &quot;build infos&quot;: library build and test module build </LI>
- <LI>More tutorial documentation. </LI>
- <LI>Projects that could be very interesting, but I may not be able to do
- it by myself:
- <UL>
- <LI> An add-on for Visual Studio to automate test
- case/ test modules generation</LI>
- <LI>Set of Python and/or Perl scripts to automate test
- case/test modules generation from command line </LI>
- </UL>
- </LI>
- <LI>Memory usage test tools.</LI>
- <LI>Time-out implementation on Win32 platform.</LI>
- <LI>Make output_test_stream match like diff do </LI>
- <LI>Better unicode support (reports and log in wostream)</LI>
- <LI>Support for custom test case dependency/condition</LI>
- </UL>
-</DIV>
-<DIV class="footer">
- <DIV class="footer-body">
- <P> &copy; <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy
- Rozental</A> 2001-2006. <BR>
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at www.boost.org/LICENSE_1_0.txt)</P>
- <P>Revised:
- <!-- #BeginDate format:Sw1 -->28 February, 2006<!-- #EndDate -->
- </P>
- </DIV>
-</DIV>
-</BODY>
-</HTML>

Deleted: branches/proto/v4/libs/test/doc/portability.html
==============================================================================
--- branches/proto/v4/libs/test/doc/portability.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,35 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-<HEAD>
-<TITLE>Boost Test Library portability</TITLE>
-<LINK rel="stylesheet" type="text/css" href="style/btl.css" media="screen">
-<LINK rel="stylesheet" type="text/css" href="style/btl-print.css" media="print">
-<META http-equiv="Content-Language" content="en-us">
-<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-<BODY>
-<DIV class="header"> Boost.Test &gt; <SPAN class="current_article">Portability</SPAN> </DIV>
-<DIV class="body"> <IMG src='btl1.gif' width="252" height="43" alt="Boost Test logo">
- <H1 class="subtitle"><A name="Portability">Portability</A></H1>
- <P class="first-line-indented">Because the Boost Test Library is critical for
- porting and testing Boost libraries, it has been written to be extremely
- conservative in its use of C++ features, and to keep dependencies to a bare
- minimum.</P>
- <P class="first-line-indented">Boost.Test internal tests have been run (and
- work) under numerous compilers. Check the <A href="http://boost.sourceforge.net/regression-logs/">compiler
- status pages</A> and developer status pages to see how Boost.Test works on different compilers platforms. </P>
-</DIV>
-<DIV class="footer">
- <DIV class="footer-body">
- <P> &copy; <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy
- Rozental</A> 2001-2006. <BR>
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at www.boost.org/LICENSE_1_0.txt)</P>
- <P>Revised:
- <!-- #BeginDate format:Sw1 -->18 January, 2004<!-- #EndDate -->
- </P>
- </DIV>
-</DIV>
-</BODY>
-</HTML>

Deleted: branches/proto/v4/libs/test/doc/release_notes.html
==============================================================================
--- branches/proto/v4/libs/test/doc/release_notes.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,350 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<HTML>
-<HEAD>
-<TITLE>Boost Test Library: release rotes</TITLE>
-<LINK rel="stylesheet" type="text/css" href="style/btl.css" media="screen">
-<LINK rel="stylesheet" type="text/css" href="style/btl-print.css" media="print">
-<META http-equiv="Content-Language" content="en-us">
-<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</HEAD>
-<BODY>
-<DIV class="header"> Boost.Test &gt; <SPAN class="current_article">Release
- Notes</SPAN> </DIV>
-<DIV class="body"> <IMG src='btl1.gif' width="252" height="43" alt="Boost Test logo">
- <H1 class="subtitle">Release Notes</H1>
- <P class="page-toc">Boost release 1.33.0</P>
- <P class="page-toc">Boost release 1.32.0</P>
- <P class="page-toc">Boost release 1.31.0 </P>
- <P class="page-toc">Boost release 1.30.0<BR>
- Migration guide from Boost Test v1 </P>
- <H2><A name="v1_33_0">Boost release 1.33.0</A></H2>
- <P class="first-line-indented"><EM>In this release Most
- of Boost.Test components undergo a major or significant change in both
- design and implementation</EM>.
- I've strived to keep an interface unchanged as much as
- possible. The primary goals for this update were: </P>
- <UL>
- <LI>Make a Unit Test Framework better suited for different 'runners'</LI>
- <LI>Make Unit Test Framework simpler internally by eliminating test cases
- hierarchy</LI>
- <LI>Make test tools more uniform</LI>
- <LI>Make auto Unit Test Framework as usable as possible</LI>
- </UL>
- <P class="first-line-indented">Following are details of what updated/changed specifically in each area of
- Boost.Test:</P>
- <OL type="I">
- <LI>
- <H3> Execution Monitor</H3>
- </LI>
- </OL>
- <P class="first-line-indented">The execution monitor design changes from inheritance to delegation. If
- previously one needed to inherit from the boost::execution monitor to do a
- monitored run of a function, now one need to employ an instance of the
- boost::execution_monitor</P>
-
- <P class="first-line-indented">In addition following features implemented:</P>
- <UL>
- <LI>Debugger presence detected, in which case catching system errors (SEH) is
- disabled unless explicitly enabled. For now only works for msvc family</LI>
- <LI> Automatic detection of memory leaks introduced. For now only works for
- msvc family.
- Unit Test Framework turns this feature on by default.</LI>
- </UL>
- <OL start="2">
- <LI type="I">
- <H3>Unit Test Framework (UTF)</H3>
- </LI>
- </OL>
- <P class="first-line-indented">This component of Boost.Test undergo a most dramatic changes in both
- design and implementation. </P>
- <UL>
- <LI> UTF doesn't employ test cases hierarchy anymore. There is single class
- test_case that model one testing unit and class test_suite that model a
- collection of test units. Previously UTF employed compound test cases (for
- example parameterized test case) which went through it's components (simple
- subtests) during testing run time. Now compound test present itself as test
- case generator which produce a collection if test_case instances during test
- tree construction time. One consequence of this is that user doesn't need to
- keep track of compound test case parameters is it used be. test_case now
- employs a polymorphic callback to a actual test function. As a result of
- this one could supply any zero arity function as an argument of
- BOOST_TEST_CASE. So no extra support needed to be able to create
- boost::function or boost::bind based tests cases. </LI>
- <LI>Introduced generic mechanism to traverse the test tree. Anyone willing
- to do so just need to implement test_tree_visitor interface and employ
- traverse_test_tree. This allows to implement any pre/post processing over
- test tree. </LI>
- <LI>Introduced a notion of framework. The framework is responsible for:
- <UL>
- <LI>initializing and providing access to master test suite</LI>
- <LI>providing access to current test case</LI>
- <LI> running testing from given test tree node (simple or compound). By default it runs from
- root - master test suite. Supports both sequential and random order.</LI>
- <LI>one may register any test observer agent (implements test_observer
- interface) and framework notifies it of all test events</LI>
- <LI>provides access to any test case based to unique test unit id</LI>
- <LI>Using the framework one could implement different test runners. UTF library
- supplies one console runner (unit_test_main.cpp). But it's possible to do
- one winmain based or anything else. For example GUI program that build test
- tree and then run tests by request from any point in test tree.</LI>
- </UL>
- </LI>
- <LI>Unit test log interface changed to single line (used to be begin/end
- macros). Unit test log formatter interface changed. How it much simpler and
- straightforward. Two supplied implementation are separated. </LI>
- <LI> Notion of unit test result that was responsible for result collection
- and reporting eliminated. Instead introduced independent notions:
- results_collector and results_reporter. Results reporting formatter
- interface made public. Also results_reporter now allows to change an output
- stream.</LI>
- <LI> Progress monitor functionality (which used to be activated in log
- level log_progress) now is an independent test observer and implemented by
- class progress_monitor.</LI>
- <LI> Test case template interface changed. Now user doesn't need to
- explicitly register meta class.</LI>
- <LI>In addition couple more features implemented:
- <UL>
- <LI>Added support for test case timing</LI>
- <LI>UTF made __cdecl - safe</LI>
- <LI> Result report include skipped tests</LI>
- <LI> io saver facilities employed to guard against undesirable modification
- in output streams formatting</LI>
- <LI> template test case automatically generate name that includes type name</LI>
- <LI> --detect_memory_leak and --random command line arguments added</LI>
- </UL>
- </LI>
- </UL>
- <OL start="3">
- <LI type="I">
- <H3> Test Tools</H3>
- </LI>
- </OL>
- <UL>
- <LI> Test Tools interfaces now provide 3 version for each tool:
- <UL>
- <LI>CHECK- reports an error if assertion failed</LI>
- <LI>WARN - reports a warning if assertion failed</LI>
- <LI>REQUIRE - reports an error if assertion failed and aborts test case execution</LI>
- </UL>
- </LI>
- <LI>Implementation completely reworked. All tools implemented now through single vararg function</LI>
- <LI>In addition following modifications made:
- <UL>
- <LI>CHECK_COLLECTION interface changed: it now expect 4 arguments</LI>
- <LI>BITWISE_EQUAL renamed to CHECK_BITWISE_EQUAL; old name still provided,
- but is deprecated</LI>
- <LI>CHECK_COLLECTION interface changed to use PP_SEQ and as a result
- support arbitrary(actually maximum is fixed but configurable) number of
- predicate arguments</LI>
- <LI>most of templates eliminated speeding up test modules compilation</LI>
- <LI> floating-point precision set to include all significant digits
- (actually the formula may require some rework since it obviously doesn't do
- a good job sometimes)</LI>
- <LI>BOOST_CHECK/WARN/REQUIRE_SMALL test tool added</LI>
- <LI>deprecated test tools names are removed </LI>
- </UL>
- </LI>
- </UL>
- <OL start="4" type="I">
- <LI type="I">
- <H3>Auto Unit Test Framework</H3>
- </LI>
- </OL>
- <UL>
- <LI>BOOST_AUTO_UNIT_TEST renamed to BOOST_AUTO_TEST_CASE. Old name still
- provided but deprecated</LI>
- <LI>BOOST_AUTO_TEST_CASE_TEMPLATE provides an ability to write a
- self-registering test case template</LI>
- <LI>BOOST_FIXTURE_TEST_CASE provides an ability to write a self-registering
- test case with fixture</LI>
- <LI>BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES provides an ability to specify a
- number of expected failures in any self-registering test case</LI>
- <LI>BOOST_AUTO_TEST_SUITE and BOOST_AUTO_TEST_SUITE_END provide an ability
- to structure test cases into self-registering test suites</LI>
- </UL>
- <OL start="5" type="I">
- <LI>
- <H3> Included components</H3>
- </LI>
- </OL>
- <UL>
- <LI>Implementation moved from source files (.cpp) under lib/test/src into
- implementation files (.ipp) under boost/test/impl to eliminate dependency of
- included/minimal components on lib/test/src directory. </LI>
- </UL>
- <H2><A name="v1_32_0">Boost release 1.32.0</A></H2>
- <UL>
- <LI>Licence updated to use common Boost software licence</LI>
- <LI>basic_cstring introduced and used in most places instead of std::string
- and char const*</LI>
- <LI>namespace names shortened; old one still supported till next release</LI>
- <LI>numerous portability workaround for several new supported configurations</LI>
- <LI>class properties facilities reworked to be more powerful</LI>
- <LI>added proper encoding of XML PCDATA</LI>
- <LI>support for wide string comparison implemented</LI>
- </UL>
- <H2><A name="v1_31_0">Boost release 1.31.0</A></H2>
- <UL>
- <LI>Zero arity function template based test case </LI>
- <LI><A href="components/execution_monitor/execution_monitor.html#register_exception_translator">Custom
- exception translators support </A> in execution monitor and register_exception_translator added for Unit Test Framework </LI>
- <LI><A href="components/utf/components/test_case/abstract_interface.html">Test
- cases dependency support </A></LI>
- <LI><A href="components/utf/components/test_case/auto_register_facility.html">Added
- support for multi-module unit tests in automatic registration facility </A></LI>
- <LI>Floating point comparison algorithm reworked (Is not backward compatible!!!)
- <UL>
- <LI><STRONG>tolerance now expected in percent units</STRONG></LI>
- <LI>eliminated tolerance definition by number of rounding errors</LI>
- <LI>switch to comparison type enumeration instead of boolean value </LI>
- </UL>
- </LI>
- <LI>First failed assertion support</LI>
- <LI>Major
- documentation structure rework and update<BR>
- I hope you will find handy new navigation system </LI>
- <LI>Switched to new boost license</LI>
- <LI><A href="components/test_tools/custom_predicate_support.html">Added support
- for custom users predicate returning both boolean result code and possibly
- error message </A></LI>
- <LI>BOOST_CHECK_EXCEPTION test
- tool introduced - to perform complex validation of expected exception </LI>
- <LI>BOOST_IGNORE_CHECK test tool introduced - to be used with BOOST_CHECK_EXCEPTION </LI>
- <LI>Straiten return code logic for Unit Test Framework and in case
- of failed initialization in Unit Test Framework </LI>
- <LI>Added position in the collection comparison results error message </LI>
- <LI>Disable SEH if BOOST_DISABLE_WIN32 in effect</LI>
- <LI>Como can't do structured exceptions</LI>
- <LI>Added support for catch_system_error in Test Execution Monitor</LI>
- <LI><A href="components/utf/components/test_log/custom_log_formatter.html">Move
- log formatter in public interface</A></LI>
- <LI>Custom char value log print procedures</LI>
- <LI>Support for logging variable values of types that does not support operator&lt;&lt; </LI>
- <LI>match_pattern updated to show an error mismatch snippet</LI>
- <LI>force UNIX slash for file name </LI>
- <LI>Some annoying MSVC warnings suppressed </LI>
- <LI>test_case_scope_tracker introduced for correct exception unwinding handling </LI>
- <LI>unit_test_result_tracker introduced for correct exception handling </LI>
- <LI>several minor bug and warnings fixes </LI>
- </UL>
- <H2><A name="v1_30_0">Boost release 1.30.0</A></H2>
- <UL>
- <LI>Facility for automatic registration of unit tests is introduced<BR>
- It was requested during original Boost Test review and now it supports
- automatic registration for free function based test cases. Here an example:<BR>
- <PRE class="code">#<SPAN class="reserv-word">include</SPAN> &lt;boost/test/auto_unit_test.hpp&gt;
-
-BOOST_AUTO_UNIT_TEST( test1 )
-{
- BOOST_CHECK( true );
-}
-
-BOOST_AUTO_UNIT_TEST( test2 )
-{
- BOOST_CHECK( true );
-}</PRE>
- </LI>
- <LI>XML log format is introduced<BR>
- Now user willing to automate errors processing could get a log in XML format.
- Command line switch is introduced that manage log format:<BR>
- --log_format=[XML|HRF] will force XML or human readable format respectively</LI>
- <LI>XML report format is introduced<BR>
- Now user willing to automate results analysis could get a result report
- in XML format. Command line switch is introduced that manage report format:<BR>
- --report_format=[XML|HRF] will force XML or human readable format respectively</LI>
- <LI>BOOST_CHECK_NO_THROW test tool is introduced</LI>
- <LI>BOOST_BITWISE_EQUAL test tool is introduced</LI>
- <LI>libraries file names changed to:<BR>
- boost_prg_exec_monitor<BR>
- boost_test_exec_monitor<BR>
- boost_unit_test_framework</LI>
- <LI>Components examples and test documentation page is introduced<BR>
- Now all test/examples links lead to this page that has summary information
- about all of them, that include expected output, type of test and so
- on</LI>
- <LI>Catch system errors switch introduced<BR>
- This will work among the lines described in http://lists.boost.org/MailArchives/boost/msg40028.php<BR>
- Environment variable name: BOOST_TEST_CATCH_SYSTEM_ERRORS[=&quot;no&quot;]<BR>
- Unit Test Framework command line argument: --catch_system_errors[=&quot;no&quot;]</LI>
- <LI>Added building dynamic libraries into Jamfile</LI>
- <LI>MS C runtime debug hooks introduced<BR>
- It allows to catch _ASSERT bases assertion for MSVC</LI>
- <LI>SIGABRT catch added</LI>
- <LI>Eliminated NULLs all over the place<BR>
- I switched to use typedef c_string literal instead of char const* and to
- c_string literal() instead of NULL. Different definition of NULL symbol
- causing small problems for some compilers</LI>
- <LI>class wrapstrstream separated in standalone file and renamed to wrap_stringstream<BR>
- For now it will be located in test/detail. Once I prepare doc page for
- it I will present it for adding into utility</LI>
- <LI>unit_test_result_saver introduced to properly managed reset_current_test_set
- calls in case of exceptions</LI>
- <LI>switch back to use scoped_ptr instead of raw test_suite pointer in unit_test_main.cpp</LI>
- <LI>BOOST_CPP_MAIN_CONFIRMATION renamed to BOOST_PRG_MON_CONFIRM and changed
- it's logic a bit<BR>
- It now should have value &quot;no&quot; to turn off pass confirmation</LI>
- <LI>added tests for auto unit test facility and catching assert statements</LI>
- <LI>Jamfile added info examples directory</LI>
- <LI>Added example input for the unit_test_example5</LI>
- <LI>Command line option --output_format is introduced that both log/report
- format simultaneously</LI>
- <LI>Allows to perform bitwise comparisons of the two arguments provided.
- Will report as many errors as many bits mismatch. Mismatch position is
- reported.</LI>
- <LI>Documentation default palette changed to white</LI>
- <LI>Signal handling selection algorithm fixed<BR>
- BOOST_HAS_SIGACTION is used to select sigaction based signal handling alternative.
- It allowed use of signal handling with gcc on win32 platform.</LI>
- <LI>C strings usage in minimized as much as possible</LI>
- <LI>class_properties header modified to use Boost.Preprocessor for friends
- declaration</LI>
- <LI>other minor code/doc changes and bug fixes</LI>
- </UL>
- <H2><A name="Migration">Boost Test migration guide</A></H2>
- <P class="first-line-indented">This version of Boost.Test library substitute
- the original testing library used in a Boost. These are several simple steps
- you need to follow to smoothly migrate to the latest software.</P>
- <P class="first-line-indented">If your code were using the original version
- of cpp_main facility, to migrate you will need to delete the inclusion of
- the &lt;boost/test/cpp_main.cpp&gt;, since this file is not present any more.
- After that you have following choices:</P>
- <UL>
- <LI>Link with Unit Test Framework (exact library name depends on compiler
- you are using, but most probably it will be libboost_prg_exec_monitor.lib). </LI>
- <LI>Include &lt;boost/test/included/prg_exec_monitor.hpp&gt;, in which case
- you need not link with precompiled component but it may incur probably
- some compile time overhead.</LI>
- </UL>
- <P class="first-line-indented">If your code were using the original version
- of test_main and test tools facilitates of Boost.Test library, to migrate
- to use of latest one you have following choices:</P>
- <UL>
- <LI>Without changing of the code that were using Boost.Test facilities link
- with Test Execution Monitor (exact library name depends on compiler you
- are using, but most probably it will be libtest_exec_monitor.lib).</LI>
- <LI>Include &lt;boost/test/included/test_exec_monitor.hpp&gt;, in which case
- you need not link with precompiled component but it may incur probably
- some compile time overhead. Definition of BOOST_INCLUDE_MAIN could be deleted
- either.</LI>
- <LI>Include &lt;boost/test/minimal.hpp&gt;, in which case you need not link
- with precompiled component and it most probably does not incur a compile
- time overhead, but you will be limited to the set of features defined in
- the original test library. Definition of BOOST_INCLUDE_MAIN could be deleted
- either. Would you decide in a future to use any of newer Boost.Test features
- you will be enforced to snitch to one the two chaises above. </LI>
- </UL>
-</DIV>
-<DIV class="footer">
- <DIV class="footer-body">
- <P> &copy; <A name="Copyright">Copyright</A> <A href="mailto:boost-test%20at%20emailaccount%20dot%20com%20%28please%20unobscure%29">Gennadiy
- Rozental</A> 2001-2006. <BR>
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or
- copy at www.boost.org/LICENSE_1_0.txt)</P>
- <P>Revised:
- <!-- #BeginDate format:Sw1 -->8 March, 2006<!-- #EndDate -->
- </P>
- </DIV>
-</DIV>
-</BODY>
-</HTML>

Modified: branches/proto/v4/libs/test/example/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/test/example/Jamfile.v2 (original)
+++ branches/proto/v4/libs/test/example/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,6 +11,8 @@
 
 # Project
 project libs/test/example
+ :
+ : requirements <toolset>msvc-6.5:<link>static
     ;
 
 # Define aliases for the needed libs to get shorter names
@@ -55,4 +57,6 @@
     [ run-fail logged_exp_example.cpp unit_test_framework ]
 
     [ run named_param_example.cpp ]
+
+ [ run const_string_test.cpp ]
 ;

Modified: branches/proto/v4/libs/test/example/cla/assign_to.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/assign_to.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/assign_to.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/basic_float.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/basic_float.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/basic_float.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/basic_int.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/basic_int.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/basic_int.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/basic_list.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/basic_list.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/basic_list.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/basic_string.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/basic_string.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/basic_string.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/basic_udt.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/basic_udt.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/basic_udt.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/char_parameter.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/char_parameter.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/char_parameter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/custom_handler.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/custom_handler.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/custom_handler.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/custom_interpreter.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/custom_interpreter.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/custom_interpreter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/custom_parameter.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/custom_parameter.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/custom_parameter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/default_value.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/default_value.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/default_value.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/dual_name.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/dual_name.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/dual_name.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/global.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/global.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/global.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/guess_name.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/guess_name.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/guess_name.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/help.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/help.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/help.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/ignore_mismatch.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/ignore_mismatch.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/ignore_mismatch.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/input_separator.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/input_separator.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/input_separator.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/multiplicable.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/multiplicable.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/multiplicable.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/name.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/name.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/name.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/optional.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/optional.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/optional.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/optional_value.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/optional_value.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/optional_value.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/positional.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/positional.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/positional.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/prefix.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/prefix.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/prefix.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/reference.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/reference.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/reference.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/remainder.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/remainder.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/remainder.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/separator.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/separator.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/separator.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/usage.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/usage.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/usage.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/access_unknown.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/access_unknown.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/access_unknown.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/ambiguous_access.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/ambiguous_access.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/ambiguous_access.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/ambiguous_input.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/ambiguous_input.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/ambiguous_input.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/definition_conflict.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/definition_conflict.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/definition_conflict.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/invalid_short_name.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/invalid_short_name.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/invalid_short_name.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/multiple_generators.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/multiple_generators.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/multiple_generators.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/multiple_value_handlers.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/multiple_value_handlers.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/multiple_value_handlers.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/opt_with_default_value.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/opt_with_default_value.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/opt_with_default_value.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/optional_plus_multiplicable.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/optional_plus_multiplicable.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/optional_plus_multiplicable.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/required_missing.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/required_missing.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/required_missing.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/unexpected_input.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/unexpected_input.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/unexpected_input.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/validation/unexpected_repetition.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/validation/unexpected_repetition.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/validation/unexpected_repetition.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/cla/wide_string.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/cla/wide_string.cpp (original)
+++ branches/proto/v4/libs/test/example/cla/wide_string.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/env/custom_interpreter_env.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/env/custom_interpreter_env.cpp (original)
+++ branches/proto/v4/libs/test/example/env/custom_interpreter_env.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/env/env_var_default_value.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/env/env_var_default_value.cpp (original)
+++ branches/proto/v4/libs/test/example/env/env_var_default_value.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/env/environment_ex.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/env/environment_ex.cpp (original)
+++ branches/proto/v4/libs/test/example/env/environment_ex.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/env/global_id.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/env/global_id.cpp (original)
+++ branches/proto/v4/libs/test/example/env/global_id.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/env/modifier_combination.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/env/modifier_combination.cpp (original)
+++ branches/proto/v4/libs/test/example/env/modifier_combination.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/env/validation/need_typed_access.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/env/validation/need_typed_access.cpp (original)
+++ branches/proto/v4/libs/test/example/env/validation/need_typed_access.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/env/variable_ex.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/env/variable_ex.cpp (original)
+++ branches/proto/v4/libs/test/example/env/variable_ex.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/est_example1.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/est_example1.cpp (original)
+++ branches/proto/v4/libs/test/example/est_example1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2006.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/example/est_example2.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/est_example2.cpp (original)
+++ branches/proto/v4/libs/test/example/est_example2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2006.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/example/exec_mon_example.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/exec_mon_example.cpp (original)
+++ branches/proto/v4/libs/test/example/exec_mon_example.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2003-2006.
+// (C) Copyright Gennadiy Rozental 2003-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)

Modified: branches/proto/v4/libs/test/example/logged_exp_example.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/logged_exp_example.cpp (original)
+++ branches/proto/v4/libs/test/example/logged_exp_example.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2006.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/example/named_param_example.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/named_param_example.cpp (original)
+++ branches/proto/v4/libs/test/example/named_param_example.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/prg_exec_example.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/prg_exec_example.cpp (original)
+++ branches/proto/v4/libs/test/example/prg_exec_example.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/example/unit_test_example_02.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_02.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_02.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2002-2006.
+// (C) Copyright Gennadiy Rozental 2002-2008.
 // (C) Copyright Gennadiy Rozental & Ullrich Koethe 2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/test/example/unit_test_example_03.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_03.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_03.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2002-2006.
+// (C) Copyright Gennadiy Rozental 2002-2008.
 // (C) Copyright Gennadiy Rozental & Ullrich Koethe 2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/test/example/unit_test_example_04.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_04.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_04.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2006.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/example/unit_test_example_05.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_05.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_05.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2006.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/example/unit_test_example_06.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_06.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_06.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2006.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/example/unit_test_example_07.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_07.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_07.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2006.
+// (C) Copyright Gennadiy Rozental 2005-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)
@@ -29,7 +29,7 @@
 // each produced test case uses struct F as a fixture
 BOOST_AUTO_TEST_CASE_TEMPLATE( my_test, T, test_types )
 {
- T t = i;
+ T t = static_cast<T>(i);
 
     // usually it's a bad idea to use BOOST_CHECK_EQUAL for checking equality values of
     // floating point types. This check may or may not produce an error report

Modified: branches/proto/v4/libs/test/example/unit_test_example_08.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_08.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_08.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2006.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/example/unit_test_example_09_1.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_09_1.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_09_1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2006.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/example/unit_test_example_09_2.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_09_2.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_09_2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005-2006.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/example/unit_test_example_10.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_10.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_10.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 2001-2008.
 // (C) Copyright Gennadiy Rozental & Ullrich Koethe 2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/test/example/unit_test_example_11.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_11.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_11.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2002-2006.
+// (C) Copyright Gennadiy Rozental 2002-2008.
 // (C) Copyright Gennadiy Rozental & Ullrich Koethe 2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/test/example/unit_test_example_12.cpp
==============================================================================
--- branches/proto/v4/libs/test/example/unit_test_example_12.cpp (original)
+++ branches/proto/v4/libs/test/example/unit_test_example_12.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2006.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/index.html
==============================================================================
--- branches/proto/v4/libs/test/index.html (original)
+++ branches/proto/v4/libs/test/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,10 +1,10 @@
 <HTML>
 <HEAD>
-<META http-equiv="refresh" content="0; URL=doc/index.html">
+<META http-equiv="refresh" content="0; URL=doc/html/index.html">
 </HEAD>
 <BODY>
 Automatic redirection failed, please go to
-doc/index.html.
+doc/index.html.
 </BODY>
 </HTML>
 <!-- Copyright Gennadiy Rozental 2001-2004.

Modified: branches/proto/v4/libs/test/src/compiler_log_formatter.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/compiler_log_formatter.cpp (original)
+++ branches/proto/v4/libs/test/src/compiler_log_formatter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/cpp_main.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/cpp_main.cpp (original)
+++ branches/proto/v4/libs/test/src/cpp_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/debug.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/debug.cpp (original)
+++ branches/proto/v4/libs/test/src/debug.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2006.
+// (C) Copyright Gennadiy Rozental 2006-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)

Modified: branches/proto/v4/libs/test/src/exception_safety.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/exception_safety.cpp (original)
+++ branches/proto/v4/libs/test/src/exception_safety.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/execution_monitor.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/execution_monitor.cpp (original)
+++ branches/proto/v4/libs/test/src/execution_monitor.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/framework.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/framework.cpp (original)
+++ branches/proto/v4/libs/test/src/framework.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/interaction_based.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/interaction_based.cpp (original)
+++ branches/proto/v4/libs/test/src/interaction_based.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/logged_expectations.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/logged_expectations.cpp (original)
+++ branches/proto/v4/libs/test/src/logged_expectations.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/plain_report_formatter.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/plain_report_formatter.cpp (original)
+++ branches/proto/v4/libs/test/src/plain_report_formatter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/progress_monitor.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/progress_monitor.cpp (original)
+++ branches/proto/v4/libs/test/src/progress_monitor.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/results_collector.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/results_collector.cpp (original)
+++ branches/proto/v4/libs/test/src/results_collector.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/results_reporter.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/results_reporter.cpp (original)
+++ branches/proto/v4/libs/test/src/results_reporter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/test_main.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/test_main.cpp (original)
+++ branches/proto/v4/libs/test/src/test_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/test_tools.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/test_tools.cpp (original)
+++ branches/proto/v4/libs/test/src/test_tools.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/unit_test_log.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/unit_test_log.cpp (original)
+++ branches/proto/v4/libs/test/src/unit_test_log.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/unit_test_main.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/unit_test_main.cpp (original)
+++ branches/proto/v4/libs/test/src/unit_test_main.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/unit_test_monitor.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/unit_test_monitor.cpp (original)
+++ branches/proto/v4/libs/test/src/unit_test_monitor.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/unit_test_parameters.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/unit_test_parameters.cpp (original)
+++ branches/proto/v4/libs/test/src/unit_test_parameters.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/unit_test_suite.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/unit_test_suite.cpp (original)
+++ branches/proto/v4/libs/test/src/unit_test_suite.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/xml_log_formatter.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/xml_log_formatter.cpp (original)
+++ branches/proto/v4/libs/test/src/xml_log_formatter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/src/xml_report_formatter.cpp
==============================================================================
--- branches/proto/v4/libs/test/src/xml_report_formatter.cpp (original)
+++ branches/proto/v4/libs/test/src/xml_report_formatter.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/test/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/test/test/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,14 +6,19 @@
 # See http://www.boost.org/libs/test for the library home page.
 
 
-rule test-btl-lib ( test-rule : test-name : lib-name ? : pattern_file * : source_files * )
+rule test-btl-lib ( test-rule : test-name : lib-name ? : pattern_file * : source_files * : extra-libs ? )
 {
    source_files ?= $(test-name).cpp ;
 
- return [ $(test-rule) $(source_files) ../build//$(lib-name)
+ return [ $(test-rule) $(source_files) ../build//$(lib-name) $(extra-libs)
             : #args
             : $(pattern_file)
             : #<stlport-iostream>on
+ # Activating -pedantic finds more gotchas
+ # Unfortunately, this warns about the use of "long long" in gcc's own stdlib
+ # So deactivate those warnings again
+ <toolset>gcc:<cxxflags>-pedantic
+ <toolset>gcc:<cxxflags>-Wno-long-long
               <toolset>borland:<cxxflags>-w-8080
               <toolset>msvc-6.5:<link>static
               <toolset>msvc-8.0:<define>_SCL_SECURE_NO_DEPRECATE
@@ -54,6 +59,8 @@
           [ test-btl-lib run : token_iterator_test : boost_unit_test_framework ]
           [ test-btl-lib run : boost_check_equal_str : boost_unit_test_framework ]
           [ test-btl-lib run : test_tree_management_test : boost_unit_test_framework ]
+ [ test-btl-lib run : sync_access_test : boost_unit_test_framework/<link>static : : : /boost/thread//boost_thread ]
+
             ;
 
 # A target that runs all the tests

Modified: branches/proto/v4/libs/test/test/algorithms_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/algorithms_test.cpp (original)
+++ branches/proto/v4/libs/test/test/algorithms_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2003-2007.
+// (C) Copyright Gennadiy Rozental 2003-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)

Modified: branches/proto/v4/libs/test/test/basic_cstring_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/basic_cstring_test.cpp (original)
+++ branches/proto/v4/libs/test/test/basic_cstring_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)
@@ -12,6 +12,10 @@
 // Description : basic_cstring unit test
 // *****************************************************************************
 
+#ifdef _MSC_VER
+#pragma warning(disable: 4996)
+#endif
+
 // Boost.Test
 #include <boost/test/unit_test.hpp>
 #include <boost/test/test_case_template.hpp>
@@ -90,19 +94,19 @@
 {
     {
         utf::basic_cstring<CharT> bcs;
- BOOST_CHECK_EQUAL( bcs.size(), 0 );
+ BOOST_CHECK_EQUAL( bcs.size(), (unsigned)0 );
         BOOST_CHECK( bcs.is_empty() );
     }
 
     {
         utf::basic_cstring<CharT> bcs( utf::basic_cstring<CharT>::null_str() );
- BOOST_CHECK_EQUAL( bcs.size(), 0 );
+ BOOST_CHECK_EQUAL( bcs.size(), (unsigned)0 );
         BOOST_CHECK( bcs.is_empty() );
     }
 
     {
         utf::basic_cstring<CharT> bcs( 0 );
- BOOST_CHECK_EQUAL( bcs.size(), 0 );
+ BOOST_CHECK_EQUAL( bcs.size(), (unsigned)0 );
         BOOST_CHECK( bcs.is_empty() );
     }
 
@@ -195,24 +199,24 @@
 {
     utf::basic_cstring<CharT> bcs1;
 
- BOOST_CHECK_EQUAL( bcs1.size(), 0 );
+ BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)0 );
     BOOST_CHECK( bcs1.is_empty() );
 
     bcs1 = TEST_STRING;
- BOOST_CHECK_EQUAL( bcs1.size(), 11 );
+ BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)11 );
 
     bcs1.clear();
- BOOST_CHECK_EQUAL( bcs1.size(), 0 );
+ BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)0 );
     BOOST_CHECK( bcs1.is_empty() );
 
     bcs1 = utf::basic_cstring<CharT>( TEST_STRING, 4 );
- BOOST_CHECK_EQUAL( bcs1.size(), 4 );
+ BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)4 );
 
     bcs1.resize( 5 );
- BOOST_CHECK_EQUAL( bcs1.size(), 4 );
+ BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)4 );
 
     bcs1.resize( 3 );
- BOOST_CHECK_EQUAL( bcs1.size(), 3 );
+ BOOST_CHECK_EQUAL( bcs1.size(), (unsigned)3 );
 }
 
 //____________________________________________________________________________//
@@ -332,11 +336,11 @@
     LOCAL_DEF( bcs0, "tes" );
 
     bcs0.trim_right( 1 );
- BOOST_CHECK_EQUAL( bcs0.size(), 2 );
+ BOOST_CHECK_EQUAL( bcs0.size(), (unsigned)2 );
     BOOST_CHECK_EQUAL( bcs0[0], 't' );
 
     bcs0.trim_left( 1 );
- BOOST_CHECK_EQUAL( bcs0.size(), 1 );
+ BOOST_CHECK_EQUAL( bcs0.size(), (unsigned)1 );
     BOOST_CHECK_EQUAL( bcs0[0], 'e' );
 
     bcs0.trim_left( 1 );
@@ -402,25 +406,27 @@
 {
     utf::basic_cstring<CharT> bcs1( TEST_STRING );
 
- BOOST_CHECK_EQUAL( bcs1.find( utf::basic_cstring<CharT>() ), utf::basic_cstring<CharT>::npos );
- BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "test" ) ), 0 );
- BOOST_CHECK_EQUAL( bcs1.find( TEST_STRING ), 0 );
- BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "test_string " ) ), utf::basic_cstring<CharT>::npos );
- BOOST_CHECK_EQUAL( bcs1.find( LITERAL( " test_string" ) ), utf::basic_cstring<CharT>::npos );
- BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "est" ) ), 1 );
- BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "t_st" ) ), 3 );
- BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "ing" ) ), 8 );
- BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "tst" ) ), utf::basic_cstring<CharT>::npos );
-
- BOOST_CHECK_EQUAL( bcs1.rfind( utf::basic_cstring<CharT>() ), utf::basic_cstring<CharT>::npos );
- BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "test" ) ), 0 );
- BOOST_CHECK_EQUAL( bcs1.rfind( TEST_STRING ), 0 );
- BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "test_string " ) ), utf::basic_cstring<CharT>::npos );
- BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( " test_string" ) ), utf::basic_cstring<CharT>::npos );
- BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "est" ) ), 1 );
- BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "t_st" ) ), 3 );
- BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "ing" ) ), 8 );
- BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "tst" ) ), utf::basic_cstring<CharT>::npos );
+ utf::basic_cstring<CharT>::size_type not_found = (utf::basic_cstring<CharT>::size_type)utf::basic_cstring<CharT>::npos;
+
+ BOOST_CHECK_EQUAL( bcs1.find( utf::basic_cstring<CharT>() ), not_found );
+ BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "test" ) ), (utf::basic_cstring<CharT>::size_type)0 );
+ BOOST_CHECK_EQUAL( bcs1.find( TEST_STRING ), (utf::basic_cstring<CharT>::size_type)0 );
+ BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "test_string " ) ), not_found );
+ BOOST_CHECK_EQUAL( bcs1.find( LITERAL( " test_string" ) ), not_found );
+ BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "est" ) ), (utf::basic_cstring<CharT>::size_type)1 );
+ BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "t_st" ) ), (utf::basic_cstring<CharT>::size_type)3 );
+ BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "ing" ) ), (utf::basic_cstring<CharT>::size_type)8 );
+ BOOST_CHECK_EQUAL( bcs1.find( LITERAL( "tst" ) ), not_found );
+
+ BOOST_CHECK_EQUAL( bcs1.rfind( utf::basic_cstring<CharT>() ), not_found );
+ BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "test" ) ), (utf::basic_cstring<CharT>::size_type)0 );
+ BOOST_CHECK_EQUAL( bcs1.rfind( TEST_STRING ), (utf::basic_cstring<CharT>::size_type)0 );
+ BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "test_string " ) ), not_found );
+ BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( " test_string" ) ), not_found );
+ BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "est" ) ), (utf::basic_cstring<CharT>::size_type)1 );
+ BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "t_st" ) ), (utf::basic_cstring<CharT>::size_type)3 );
+ BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "ing" ) ), (utf::basic_cstring<CharT>::size_type)8 );
+ BOOST_CHECK_EQUAL( bcs1.rfind( LITERAL( "tst" ) ), not_found );
 }
 
 //____________________________________________________________________________//

Modified: branches/proto/v4/libs/test/test/boost_check_equal_str.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/boost_check_equal_str.cpp (original)
+++ branches/proto/v4/libs/test/test/boost_check_equal_str.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/class_properties_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/class_properties_test.cpp (original)
+++ branches/proto/v4/libs/test/test/class_properties_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2003-2007.
+// (C) Copyright Gennadiy Rozental 2003-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)
@@ -131,7 +131,6 @@
     BOOST_CHECK( s == p_str );
     BOOST_CHECK( p_str2 != p_str );
 
-
     BOOST_CHECK_EQUAL( p_b->foo(), 1 );
 
     BOOST_CHECK_EQUAL( p_one ^ 3, 2 );

Modified: branches/proto/v4/libs/test/test/config_file_iterator_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/config_file_iterator_test.cpp (original)
+++ branches/proto/v4/libs/test/test/config_file_iterator_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/config_file_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/config_file_test.cpp (original)
+++ branches/proto/v4/libs/test/test/config_file_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/custom_exception_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/custom_exception_test.cpp (original)
+++ branches/proto/v4/libs/test/test/custom_exception_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2003-2007.
+// (C) Copyright Gennadiy Rozental 2003-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)

Modified: branches/proto/v4/libs/test/test/errors_handling_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/errors_handling_test.cpp (original)
+++ branches/proto/v4/libs/test/test/errors_handling_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 2001-2008.
 // (C) Copyright Beman Dawes 2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -46,7 +46,7 @@
         output << line << ": ";
     }
 
- void test_unit_finish( std::ostream& output, test_unit const& tu, unsigned long elapsed )
+ void test_unit_finish( std::ostream& output, test_unit const& tu, unsigned long )
     {
         output << "Leaving test " << tu.p_type_name << " \"" << tu.p_name << "\"" << std::endl;
     }

Modified: branches/proto/v4/libs/test/test/fixed_mapping_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/fixed_mapping_test.cpp (original)
+++ branches/proto/v4/libs/test/test/fixed_mapping_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/foreach_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/foreach_test.cpp (original)
+++ branches/proto/v4/libs/test/test/foreach_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/ifstream_line_iterator_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/ifstream_line_iterator_test.cpp (original)
+++ branches/proto/v4/libs/test/test/ifstream_line_iterator_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/minimal_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/minimal_test.cpp (original)
+++ branches/proto/v4/libs/test/test/minimal_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/online_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/online_test.cpp (original)
+++ branches/proto/v4/libs/test/test/online_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/output_test_stream_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/output_test_stream_test.cpp (original)
+++ branches/proto/v4/libs/test/test/output_test_stream_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/parameterized_test_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/parameterized_test_test.cpp (original)
+++ branches/proto/v4/libs/test/test/parameterized_test_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2002-2007.
+// (C) Copyright Gennadiy Rozental 2002-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)

Modified: branches/proto/v4/libs/test/test/prg_exec_fail1.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/prg_exec_fail1.cpp (original)
+++ branches/proto/v4/libs/test/test/prg_exec_fail1.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 2001-2008.
 // (C) Copyright Beman Dawes 2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/test/test/prg_exec_fail2.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/prg_exec_fail2.cpp (original)
+++ branches/proto/v4/libs/test/test/prg_exec_fail2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 2001-2008.
 // (C) Copyright Beman Dawes 2001.
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
@@ -29,8 +29,13 @@
 
 int cpp_main( int, char *[] ) // note the name
 {
+#if defined(APPLE) && defined(ppc)
+ printf("The ppc doesn't throw on divice-by-zero. No check.\n");
+ return 1;
+#else
     int div = 0;
     return 10 / div;
+#endif
 }
 
 //____________________________________________________________________________//

Modified: branches/proto/v4/libs/test/test/prg_exec_fail3.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/prg_exec_fail3.cpp (original)
+++ branches/proto/v4/libs/test/test/prg_exec_fail3.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2002-2007.
+// (C) Copyright Gennadiy Rozental 2002-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)

Modified: branches/proto/v4/libs/test/test/prg_exec_fail4.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/prg_exec_fail4.cpp (original)
+++ branches/proto/v4/libs/test/test/prg_exec_fail4.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2003-2007.
+// (C) Copyright Gennadiy Rozental 2003-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)

Modified: branches/proto/v4/libs/test/test/result_report_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/result_report_test.cpp (original)
+++ branches/proto/v4/libs/test/test/result_report_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/test_case_template_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/test_case_template_test.cpp (original)
+++ branches/proto/v4/libs/test/test/test_case_template_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2003-2007.
+// (C) Copyright Gennadiy Rozental 2003-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)

Modified: branches/proto/v4/libs/test/test/test_files/test_tools_test.pattern
==============================================================================
--- branches/proto/v4/libs/test/test/test_files/test_tools_test.pattern (original)
+++ branches/proto/v4/libs/test/test/test_files/test_tools_test.pattern 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,70 +1,71 @@
-131: warning in "test_BOOST_WARN": condition sizeof(int) == sizeof(short) is not satisfied
-134: info: check sizeof(unsigned char) == sizeof(char) passed
-156: error in "test_BOOST_CHECK": check false failed
-157: error in "test_BOOST_CHECK": check 1==2 failed
-158: error in "test_BOOST_CHECK": check i==1 failed
-161: info: check i==2 passed
-168: error in "test_BOOST_REQUIRE": not aborted
-170: fatal error in "test_BOOST_REQUIRE": critical check false failed
-174: fatal error in "test_BOOST_REQUIRE": critical check j > 5 failed
-177: info: check j < 5 passed
-177: error in "test_BOOST_REQUIRE": not aborted
-191: info: check 'object size 33 is too small' passed
-208: error in "test_BOOST_CHECK_MESSAGE": Well, may be that what I believe in
-210: error in "test_BOOST_CHECK_MESSAGE": Checking predicate failed. Some explanation
-213: info: check 'Could it fail?' passed
-220: fatal error in "test_BOOST_REQUIRE_MESSAGE": Here we should stop
-223: info: check 'That's OK' passed
-223: error in "test_BOOST_REQUIRE_MESSAGE": not aborted
-230: error in "test_BOOST_ERROR": Fail to miss an error
-237: fatal error in "test_BOOST_FAIL": No! No! Show must go on.
-253: error in "test_BOOST_CHECK_THROW": exception my_exception is expected
-256: warning in "test_BOOST_CHECK_THROW": exception my_exception is expected
-259: fatal error in "test_BOOST_CHECK_THROW": exception my_exception is expected
-262: info: check 'exception my_exception is caught' passed
-269: error in "test_BOOST_CHECK_EXCEPTION": incorrect exception my_exception is caught
-272: info: check 'incorrect exception my_exception is caught' passed
-282: error in "test_BOOST_CHECK_NO_THROW": exception thrown by throw my_exception()
-328: error in "test_BOOST_CHECK_EQUAL": check i == j failed [1 != 2]
-334: error in "test_BOOST_CHECK_EQUAL": check str1 == str2 failed [test1 != test12]
-337: error in "test_BOOST_CHECK_EQUAL": check i+1 == j failed [4 != 2]
-340: info: check str1 == str3+1 passed
-349: fatal error in "test_BOOST_CHECK_EQUAL": critical check str1 == str2 failed [test != null string]
-355: warning in "test_BOOST_CHECK_EQUAL": condition b1 == b2 is not satisfied [B(1) != B(2)]
-361: error in "test_BOOST_CHECK_EQUAL": check c1 == c3 failed [C(0,100) != C(1,102)]. Index mismatch
-362: error in "test_BOOST_CHECK_EQUAL": check c1 == c2 failed [C(0,100) != C(0,101)]. Id mismatch
-366: error in "test_BOOST_CHECK_EQUAL": check ch1 == ch2 failed [0xfffffffe != 0xfffffffd]
-377: error in "test_BOOST_CHECK_LOGICAL_EXPR": check ++i != j failed [2 == 2]
-379: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i < j failed [2 >= 2]
-380: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i > j failed [2 <= 2]
-387: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i <= j failed [3 > 2]
-388: error in "test_BOOST_CHECK_LOGICAL_EXPR": check j >= i failed [2 < 3]
-393: error in "test_BOOST_CHECK_LOGICAL_EXPR": check str1 != str2 failed [test1 == test1]
-423: error in "test_BOOST_CHECK_PREDICATE": check is_even( i ) failed for ( 17 )
-426: error in "test_BOOST_CHECK_PREDICATE": check not_equal_to<int>()( i, 17 ) failed for ( 17, 17 )
-432: warning in "test_BOOST_CHECK_PREDICATE": condition moo( 12, i, j ) is not satisfied for ( 12, 17, 15 )
-440: error in "test_BOOST_CHECK_PREDICATE": check compare_lists( l1, l2 ) failed for ( , ). Different sizes [2!=0]
-451: error in "test_BOOST_REQUIRE_PREDICATE": not aborted
-453: fatal error in "test_BOOST_REQUIRE_PREDICATE": critical check less_equal<int>()( arg2, arg1 ) failed for ( 2, 1 )
-474: error in "test_BOOST_CHECK_EQUAL_COLLECTIONS": check { testlist.begin(), testlist.end() } == { pattern, pattern+7 } failed.
-Mismatch in a position 2: 4 != 3
-Mismatch in a position 5: 7 != 6
-475: error in "test_BOOST_CHECK_EQUAL_COLLECTIONS": check { testlist.begin(), testlist.end() } == { pattern, pattern+2 } failed.
-Collections size mismatch: 7 != 2
-484: error in "test_BOOST_CHECK_BITWISE_EQUAL": check (char)0x06 =.= (char)0x16 failed.
-Mismatch in a position 4
-487: warning in "test_BOOST_CHECK_BITWISE_EQUAL": condition (char)0x26 =.= (char)0x04 is not satisfied.
-Mismatch in a position 1
-Mismatch in a position 5
-490: fatal error in "test_BOOST_CHECK_BITWISE_EQUAL": critical check (char)0x26 =.= (int)0x26 failed.
-Operands bit sizes mismatch: 8 != 32
-still testing
-1+1=2
-2+2=4
-struct A
-0x14
- 20
-0: fatal error in "test_BOOST_TEST_CHECKPOINT": C string: some error
-525: last checkpoint: Going to do a silly things
-0: fatal error in "test_BOOST_TEST_PASSPOINT": unknown type
-536: last checkpoint
+131: warning in "test_BOOST_WARN": condition sizeof(int) == sizeof(short) is not satisfied
+134: info: check sizeof(unsigned char) == sizeof(char) passed
+156: error in "test_BOOST_CHECK": check false failed
+157: error in "test_BOOST_CHECK": check 1==2 failed
+158: error in "test_BOOST_CHECK": check i==1 failed
+161: info: check i==2 passed
+168: error in "test_BOOST_REQUIRE": not aborted
+170: fatal error in "test_BOOST_REQUIRE": critical check false failed
+174: fatal error in "test_BOOST_REQUIRE": critical check j > 5 failed
+177: info: check j < 5 passed
+177: error in "test_BOOST_REQUIRE": not aborted
+191: info: check 'object size 33 is too small' passed
+208: error in "test_BOOST_CHECK_MESSAGE": Well, may be that what I believe in
+210: error in "test_BOOST_CHECK_MESSAGE": Checking predicate failed. Some explanation
+213: info: check 'Could it fail?' passed
+218: error in "test_BOOST_CHECK_MESSAGE": Comparing 1 and 2: some explanation
+225: fatal error in "test_BOOST_REQUIRE_MESSAGE": Here we should stop
+228: info: check 'That's OK' passed
+228: error in "test_BOOST_REQUIRE_MESSAGE": not aborted
+235: error in "test_BOOST_ERROR": Fail to miss an error
+242: fatal error in "test_BOOST_FAIL": No! No! Show must go on.
+258: error in "test_BOOST_CHECK_THROW": exception my_exception is expected
+261: warning in "test_BOOST_CHECK_THROW": exception my_exception is expected
+264: fatal error in "test_BOOST_CHECK_THROW": exception my_exception is expected
+267: info: check 'exception my_exception is caught' passed
+274: error in "test_BOOST_CHECK_EXCEPTION": incorrect exception my_exception is caught
+277: info: check 'incorrect exception my_exception is caught' passed
+287: error in "test_BOOST_CHECK_NO_THROW": exception thrown by throw my_exception()
+333: error in "test_BOOST_CHECK_EQUAL": check i == j failed [1 != 2]
+339: error in "test_BOOST_CHECK_EQUAL": check str1 == str2 failed [test1 != test12]
+342: error in "test_BOOST_CHECK_EQUAL": check i+1 == j failed [4 != 2]
+345: info: check str1 == str3+1 passed
+354: fatal error in "test_BOOST_CHECK_EQUAL": critical check str1 == str2 failed [test != null string]
+360: warning in "test_BOOST_CHECK_EQUAL": condition b1 == b2 is not satisfied [B(1) != B(2)]
+366: error in "test_BOOST_CHECK_EQUAL": check c1 == c3 failed [C(0,100) != C(1,102)]. Index mismatch
+367: error in "test_BOOST_CHECK_EQUAL": check c1 == c2 failed [C(0,100) != C(0,101)]. Id mismatch
+371: error in "test_BOOST_CHECK_EQUAL": check ch1 == ch2 failed [0xfffffffe != 0xfffffffd]
+382: error in "test_BOOST_CHECK_LOGICAL_EXPR": check ++i != j failed [2 == 2]
+384: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i < j failed [2 >= 2]
+385: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i > j failed [2 <= 2]
+392: error in "test_BOOST_CHECK_LOGICAL_EXPR": check i <= j failed [3 > 2]
+393: error in "test_BOOST_CHECK_LOGICAL_EXPR": check j >= i failed [2 < 3]
+398: error in "test_BOOST_CHECK_LOGICAL_EXPR": check str1 != str2 failed [test1 == test1]
+428: error in "test_BOOST_CHECK_PREDICATE": check is_even( i ) failed for ( 17 )
+431: error in "test_BOOST_CHECK_PREDICATE": check not_equal_to<int>()( i, 17 ) failed for ( 17, 17 )
+437: warning in "test_BOOST_CHECK_PREDICATE": condition moo( 12, i, j ) is not satisfied for ( 12, 17, 15 )
+445: error in "test_BOOST_CHECK_PREDICATE": check compare_lists( l1, l2 ) failed for ( , ). Different sizes [2!=0]
+456: error in "test_BOOST_REQUIRE_PREDICATE": not aborted
+458: fatal error in "test_BOOST_REQUIRE_PREDICATE": critical check less_equal<int>()( arg2, arg1 ) failed for ( 2, 1 )
+479: error in "test_BOOST_CHECK_EQUAL_COLLECTIONS": check { testlist.begin(), testlist.end() } == { pattern, pattern+7 } failed.
+Mismatch in a position 2: 4 != 3
+Mismatch in a position 5: 7 != 6
+480: error in "test_BOOST_CHECK_EQUAL_COLLECTIONS": check { testlist.begin(), testlist.end() } == { pattern, pattern+2 } failed.
+Collections size mismatch: 7 != 2
+489: error in "test_BOOST_CHECK_BITWISE_EQUAL": check (char)0x06 =.= (char)0x16 failed.
+Mismatch in a position 4
+492: warning in "test_BOOST_CHECK_BITWISE_EQUAL": condition (char)0x26 =.= (char)0x04 is not satisfied.
+Mismatch in a position 1
+Mismatch in a position 5
+495: fatal error in "test_BOOST_CHECK_BITWISE_EQUAL": critical check (char)0x26 =.= (int)0x26 failed.
+Operands bit sizes mismatch: 8 != 32
+still testing
+1+1=2
+2+2=4
+struct A
+0x14
+ 20
+0: fatal error in "test_BOOST_TEST_CHECKPOINT": C string: some error
+530: last checkpoint: Going to do a silly things
+0: fatal error in "test_BOOST_TEST_PASSPOINT": unknown type
+541: last checkpoint

Modified: branches/proto/v4/libs/test/test/test_fp_comparisons.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/test_fp_comparisons.cpp (original)
+++ branches/proto/v4/libs/test/test/test_fp_comparisons.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/test/test_tools_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/test_tools_test.cpp (original)
+++ branches/proto/v4/libs/test/test/test_tools_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)
@@ -211,6 +211,11 @@
 
     unit_test_log.set_threshold_level( log_successful_tests );
     BOOST_CHECK_MESSAGE( 2+2 == 4, "Could it fail?" );
+
+ int i = 1;
+ int j = 2;
+ std::string msg = "some explanation";
+ BOOST_CHECK_MESSAGE( i > j, "Comparing " << i << " and " << j << ": " << msg );
 }
 
 //____________________________________________________________________________//
@@ -509,7 +514,7 @@
     A a = A();
     BOOST_TEST_MESSAGE( a );
 
-#if !defined(BOOST_NO_STD_LOCALE) && ( !defined(BOOST_MSVC) || BOOST_WORKAROUND(BOOST_MSVC, >= 1310))
+#if BOOST_TEST_USE_STD_LOCALE
     BOOST_TEST_MESSAGE( std::hex << std::showbase << 20 );
 #else
     BOOST_TEST_MESSAGE( "0x14" );

Modified: branches/proto/v4/libs/test/test/test_tree_management_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/test_tree_management_test.cpp (original)
+++ branches/proto/v4/libs/test/test/test_tree_management_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -22,7 +22,7 @@
 
 BOOST_AUTO_TEST_SUITE( S1 )
 
-BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( tc1, 1 );
+BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( tc1, 1 )
 
 BOOST_AUTO_TEST_CASE( tc1 ) { BOOST_ERROR(""); }
 BOOST_AUTO_TEST_CASE( tc2 ) {}
@@ -43,7 +43,7 @@
 
 BOOST_AUTO_TEST_SUITE( S21 )
 
-BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( tc1, 1 );
+BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( tc1, 1 )
 
 BOOST_AUTO_TEST_CASE( tc1 ) { BOOST_ERROR( "" ); }
 
@@ -152,7 +152,7 @@
 {
     test_suite& mts = framework::master_test_suite();
 
- BOOST_CHECK_EQUAL( mts.size(), 7U );
+ BOOST_CHECK_EQUAL( mts.size(), 8U );
     BOOST_CHECK_EQUAL( mts.p_expected_failures, 2U );
 
     BOOST_CHECK_EQUAL( framework::get<test_case>( mts.get( "automated_test_units_registration" ) ).p_expected_failures, 0U );
@@ -180,4 +180,79 @@
 
 //____________________________________________________________________________//
 
+struct A {
+ A() : i(0){}
+ void test_methodA1() { i++; }
+ void test_methodA2() { i++; }
+
+ int i;
+};
+
+struct B : public A {
+ void test_methodB() { i--; }
+};
+
+struct C {
+ C() : i( 0 ) {}
+
+ void virtual test_method() = 0;
+
+ int i;
+};
+
+struct D : public C {
+ void virtual test_method() { i++; }
+};
+
+struct E : public C {
+ void virtual test_method() { i+=2; }
+};
+
+BOOST_AUTO_TEST_CASE( user_class_test_case )
+{
+ boost::shared_ptr<A> instA( new A );
+ test_case* tc1 = BOOST_CLASS_TEST_CASE( &A::test_methodA1, instA );
+ test_case* tc2 = BOOST_CLASS_TEST_CASE( &A::test_methodA2, instA );
+
+ BOOST_CHECK_EQUAL( tc1->p_name, const_string( "A::test_methodA1" ) );
+ BOOST_CHECK_EQUAL( tc2->p_name, const_string( "A::test_methodA2" ) );
+
+ BOOST_CHECK_EQUAL( instA->i, 0 );
+ tc1->test_func()();
+ BOOST_CHECK_EQUAL( instA->i, 1 );
+ tc2->test_func()();
+ BOOST_CHECK_EQUAL( instA->i, 2 );
+
+ boost::shared_ptr<B> instB( new B );
+ test_case* tc3 = BOOST_CLASS_TEST_CASE( &A::test_methodA1, instB );
+ test_case* tc4 = BOOST_CLASS_TEST_CASE( &B::test_methodB, instB );
+
+ BOOST_CHECK_EQUAL( tc3->p_name, const_string( "A::test_methodA1" ) );
+ BOOST_CHECK_EQUAL( tc4->p_name, const_string( "B::test_methodB" ) );
+
+ BOOST_CHECK_EQUAL( instB->i, 0 );
+ tc3->test_func()();
+ BOOST_CHECK_EQUAL( instB->i, 1 );
+ tc4->test_func()();
+ BOOST_CHECK_EQUAL( instB->i, 0 );
+
+ boost::shared_ptr<C> instC1( new D );
+ test_case* tc5 = BOOST_CLASS_TEST_CASE( &C::test_method, instC1 );
+
+ BOOST_CHECK_EQUAL( tc5->p_name, const_string( "C::test_method" ) );
+
+ tc5->test_func()();
+ BOOST_CHECK_EQUAL( instC1->i, 1 );
+
+ boost::shared_ptr<C> instC2( new E );
+ test_case* tc6 = BOOST_CLASS_TEST_CASE( &C::test_method, instC2 );
+
+ BOOST_CHECK_EQUAL( tc6->p_name, const_string( "C::test_method" ) );
+
+ tc6->test_func()();
+ BOOST_CHECK_EQUAL( instC2->i, 2 );
+}
+
+//____________________________________________________________________________//
+
 // EOF

Modified: branches/proto/v4/libs/test/test/token_iterator_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/test/token_iterator_test.cpp (original)
+++ branches/proto/v4/libs/test/test/token_iterator_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2001-2007.
+// (C) Copyright Gennadiy Rozental 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)

Modified: branches/proto/v4/libs/test/tools/console_test_runner/src/console_test_runner.cpp
==============================================================================
--- branches/proto/v4/libs/test/tools/console_test_runner/src/console_test_runner.cpp (original)
+++ branches/proto/v4/libs/test/tools/console_test_runner/src/console_test_runner.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/test/tools/console_test_runner/test/test_runner_test.cpp
==============================================================================
--- branches/proto/v4/libs/test/tools/console_test_runner/test/test_runner_test.cpp (original)
+++ branches/proto/v4/libs/test/tools/console_test_runner/test/test_runner_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright Gennadiy Rozental 2005.
+// (C) Copyright Gennadiy Rozental 2005-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)

Modified: branches/proto/v4/libs/thread/doc/acknowledgements.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/acknowledgements.qbk (original)
+++ branches/proto/v4/libs/thread/doc/acknowledgements.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,10 @@
+[/
+ (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).
+]
+
 [section:acknowledgements Acknowledgments]
 
 The original implementation of __boost_thread__ was written by William Kempf, with contributions from numerous others. This new

Modified: branches/proto/v4/libs/thread/doc/barrier.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/barrier.qbk (original)
+++ branches/proto/v4/libs/thread/doc/barrier.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,10 @@
+[/
+ (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).
+]
+
 [section:barriers Barriers]
 
 A barrier is a simple concept. Also known as a ['rendezvous], it is a synchronization point between multiple threads. The barrier is

Modified: branches/proto/v4/libs/thread/doc/changes.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/changes.qbk (original)
+++ branches/proto/v4/libs/thread/doc/changes.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,10 @@
+[/
+ (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).
+]
+
 [section:changes Changes since boost 1.34]
 
 Almost every line of code in __boost_thread__ has been changed since the 1.34 release of boost. However, most of the interface

Modified: branches/proto/v4/libs/thread/doc/condition_variables.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/condition_variables.qbk (original)
+++ branches/proto/v4/libs/thread/doc/condition_variables.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,10 @@
+[/
+ (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).
+]
+
 [section:condvar_ref Condition Variables]
 
 [heading Synopsis]
@@ -67,6 +74,8 @@
 
 [section:condition_variable Class `condition_variable`]
 
+ #include <boost/thread/condition_variable.hpp>
+
     namespace boost
     {
         class condition_variable
@@ -75,6 +84,9 @@
             condition_variable();
             ~condition_variable();
 
+ void notify_one();
+ void notify_all();
+
             void wait(boost::unique_lock<boost::mutex>& lock);
 
             template<typename predicate_type>
@@ -284,6 +296,8 @@
 
 [section:condition_variable_any Class `condition_variable_any`]
 
+ #include <boost/thread/condition_variable.hpp>
+
     namespace boost
     {
         class condition_variable_any
@@ -292,6 +306,9 @@
             condition_variable_any();
             ~condition_variable_any();
 
+ void notify_one();
+ void notify_all();
+
             template<typename lock_type>
             void wait(lock_type& lock);
 
@@ -485,6 +502,8 @@
 
 [section:condition Typedef `condition`]
 
+ #include <boost/thread/condition.hpp>
+
     typedef condition_variable_any condition;
 
 The typedef `condition` is provided for backwards compatibility with previous boost releases.

Modified: branches/proto/v4/libs/thread/doc/mutex_concepts.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/mutex_concepts.qbk (original)
+++ branches/proto/v4/libs/thread/doc/mutex_concepts.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,10 @@
+[/
+ (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).
+]
+
 [section:mutex_concepts Mutex Concepts]
 
 A mutex object facilitates protection against data races and allows thread-safe synchronization of data between threads. A thread
@@ -305,6 +312,8 @@
 
 [section:lock_guard Class template `lock_guard`]
 
+ #include <boost/thread/locks.hpp>
+
     template<typename Lockable>
     class lock_guard
     {
@@ -369,6 +378,8 @@
 
 [section:unique_lock Class template `unique_lock`]
 
+ #include <boost/thread/locks.hpp>
+
     template<typename Lockable>
     class unique_lock
     {
@@ -610,6 +621,8 @@
 
 [section:shared_lock Class template `shared_lock`]
 
+ #include <boost/thread/locks.hpp>
+
     template<typename Lockable>
     class shared_lock
     {
@@ -843,6 +856,8 @@
 
 [section:upgrade_lock Class template `upgrade_lock`]
 
+ #include <boost/thread/locks.hpp>
+
     template<typename Lockable>
     class upgrade_lock
     {
@@ -890,6 +905,8 @@
 
 [section:upgrade_to_unique_lock Class template `upgrade_to_unique_lock`]
 
+ #include <boost/thread/locks.hpp>
+
     template <class Lockable>
     class upgrade_to_unique_lock
     {
@@ -914,4 +931,189 @@
 
 [endsect]
 
+[section:scoped_try_lock Mutex-specific class `scoped_try_lock`]
+
+ class MutexType::scoped_try_lock
+ {
+ private:
+ MutexType::scoped_try_lock(MutexType::scoped_try_lock<MutexType>& other);
+ MutexType::scoped_try_lock& operator=(MutexType::scoped_try_lock<MutexType>& other);
+ public:
+ MutexType::scoped_try_lock();
+ explicit MutexType::scoped_try_lock(MutexType& m);
+ MutexType::scoped_try_lock(MutexType& m_,adopt_lock_t);
+ MutexType::scoped_try_lock(MutexType& m_,defer_lock_t);
+ MutexType::scoped_try_lock(MutexType& m_,try_to_lock_t);
+
+ MutexType::scoped_try_lock(MutexType::scoped_try_lock<MutexType>&& other);
+ MutexType::scoped_try_lock& operator=(MutexType::scoped_try_lock<MutexType>&& other);
+
+ void swap(MutexType::scoped_try_lock&& other);
+
+ void lock();
+ bool try_lock();
+ void unlock();
+ bool owns_lock() const;
+
+ MutexType* mutex() const;
+ MutexType* release();
+ bool operator!() const;
+
+ typedef ``['unspecified-bool-type]`` bool_type;
+ operator bool_type() const;
+ };
+
+The member typedef `scoped_try_lock` is provided for each distinct
+`MutexType` as a typedef to a class with the preceding definition. The
+semantics of each constructor and member function are identical to
+those of [unique_lock_link `boost::unique_lock<MutexType>`] for the same `MutexType`, except
+that the constructor that takes a single reference to a mutex will
+call [try_lock_ref_link `m.try_lock()`] rather than `m.lock()`.
+
+
+[endsect]
+
+[endsect]
+
+[section:lock_functions Lock functions]
+
+[section:lock_multiple Non-member function `lock(Lockable1,Lockable2,...)`]
+
+ template<typename Lockable1,typename Lockable2>
+ void lock(Lockable1& l1,Lockable2& l2);
+
+ template<typename Lockable1,typename Lockable2,typename Lockable3>
+ void lock(Lockable1& l1,Lockable2& l2,Lockable3& l3);
+
+ template<typename Lockable1,typename Lockable2,typename Lockable3,typename Lockable4>
+ void lock(Lockable1& l1,Lockable2& l2,Lockable3& l3,Lockable4& l4);
+
+ template<typename Lockable1,typename Lockable2,typename Lockable3,typename Lockable4,typename Lockable5>
+ void lock(Lockable1& l1,Lockable2& l2,Lockable3& l3,Lockable4& l4,Lockable5& l5);
+
+[variablelist
+
+[[Effects:] [Locks the __lockable_concept_type__ objects supplied as
+arguments in an unspecified and indeterminate order in a way that
+avoids deadlock. It is safe to call this function concurrently from
+multiple threads with the same mutexes (or other lockable objects) in
+different orders without risk of deadlock. If any of the __lock_ref__
+or __try_lock_ref__ operations on the supplied
+__lockable_concept_type__ objects throws an exception any locks
+acquired by the function will be released before the function exits.]]
+
+[[Throws:] [Any exceptions thrown by calling __lock_ref__ or
+__try_lock_ref__ on the supplied __lockable_concept_type__ objects.]]
+
+[[Postcondition:] [All the supplied __lockable_concept_type__ objects
+are locked by the calling thread.]]
+
+]
+
+[endsect]
+
+[section:lock_range Non-member function `lock(begin,end)`]
+
+ template<typename ForwardIterator>
+ void lock(ForwardIterator begin,ForwardIterator end);
+
+[variablelist
+
+[[Preconditions:] [The `value_type` of `ForwardIterator` must implement the __lockable_concept__]]
+
+[[Effects:] [Locks all the __lockable_concept_type__ objects in the
+supplied range in an unspecified and indeterminate order in a way that
+avoids deadlock. It is safe to call this function concurrently from
+multiple threads with the same mutexes (or other lockable objects) in
+different orders without risk of deadlock. If any of the __lock_ref__
+or __try_lock_ref__ operations on the __lockable_concept_type__
+objects in the supplied range throws an exception any locks acquired
+by the function will be released before the function exits.]]
+
+[[Throws:] [Any exceptions thrown by calling __lock_ref__ or
+__try_lock_ref__ on the supplied __lockable_concept_type__ objects.]]
+
+[[Postcondition:] [All the __lockable_concept_type__ objects in the
+supplied range are locked by the calling thread.]]
+
+]
+
+[endsect]
+
+[section:try_lock_multiple Non-member function `try_lock(Lockable1,Lockable2,...)`]
+
+ template<typename Lockable1,typename Lockable2>
+ int try_lock(Lockable1& l1,Lockable2& l2);
+
+ template<typename Lockable1,typename Lockable2,typename Lockable3>
+ int try_lock(Lockable1& l1,Lockable2& l2,Lockable3& l3);
+
+ template<typename Lockable1,typename Lockable2,typename Lockable3,typename Lockable4>
+ int try_lock(Lockable1& l1,Lockable2& l2,Lockable3& l3,Lockable4& l4);
+
+ template<typename Lockable1,typename Lockable2,typename Lockable3,typename Lockable4,typename Lockable5>
+ int try_lock(Lockable1& l1,Lockable2& l2,Lockable3& l3,Lockable4& l4,Lockable5& l5);
+
+[variablelist
+
+[[Effects:] [Calls __try_lock_ref__ on each of the
+__lockable_concept_type__ objects supplied as arguments. If any of the
+calls to __try_lock_ref__ returns `false` then all locks acquired are
+released and the zero-based index of the failed lock is returned.
+
+If any of the __try_lock_ref__ operations on the supplied
+__lockable_concept_type__ objects throws an exception any locks
+acquired by the function will be released before the function exits.]]
+
+[[Returns:] [`-1` if all the supplied __lockable_concept_type__ objects
+are now locked by the calling thread, the zero-based index of the
+object which could not be locked otherwise.]]
+
+[[Throws:] [Any exceptions thrown by calling __try_lock_ref__ on the
+supplied __lockable_concept_type__ objects.]]
+
+[[Postcondition:] [If the function returns `-1`, all the supplied
+__lockable_concept_type__ objects are locked by the calling
+thread. Otherwise any locks acquired by this function will have been
+released.]]
+
+]
+
+[endsect]
+
+[section:try_lock_range Non-member function `try_lock(begin,end)`]
+
+ template<typename ForwardIterator>
+ ForwardIterator try_lock(ForwardIterator begin,ForwardIterator end);
+
+[variablelist
+
+[[Preconditions:] [The `value_type` of `ForwardIterator` must implement the __lockable_concept__]]
+
+[[Effects:] [Calls __try_lock_ref__ on each of the
+__lockable_concept_type__ objects in the supplied range. If any of the
+calls to __try_lock_ref__ returns `false` then all locks acquired are
+released and an iterator referencing the failed lock is returned.
+
+If any of the __try_lock_ref__ operations on the supplied
+__lockable_concept_type__ objects throws an exception any locks
+acquired by the function will be released before the function exits.]]
+
+[[Returns:] [`end` if all the supplied __lockable_concept_type__
+objects are now locked by the calling thread, an iterator referencing
+the object which could not be locked otherwise.]]
+
+[[Throws:] [Any exceptions thrown by calling __try_lock_ref__ on the
+supplied __lockable_concept_type__ objects.]]
+
+[[Postcondition:] [If the function returns `end` then all the
+__lockable_concept_type__ objects in the supplied range are locked by
+the calling thread, otherwise all locks acquired by the function have
+been released.]]
+
+]
+
+[endsect]
+
+
 [endsect]

Modified: branches/proto/v4/libs/thread/doc/mutexes.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/mutexes.qbk (original)
+++ branches/proto/v4/libs/thread/doc/mutexes.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,16 @@
+[/
+ (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).
+]
+
 [section:mutex_types Mutex Types]
 
 [section:mutex Class `mutex`]
 
+ #include <boost/thread/mutex.hpp>
+
     class mutex:
         boost::noncopyable
     {
@@ -17,7 +26,7 @@
         native_handle_type native_handle();
         
         typedef unique_lock<mutex> scoped_lock;
- typedef scoped_lock scoped_try_lock;
+ typedef unspecified-type scoped_try_lock;
     };
 
 __mutex__ implements the __lockable_concept__ to provide an exclusive-ownership mutex. At most one thread can own the lock on a given
@@ -44,6 +53,8 @@
 
 [section:try_mutex Typedef `try_mutex`]
 
+ #include <boost/thread/mutex.hpp>
+
     typedef mutex try_mutex;
 
 __try_mutex__ is a `typedef` to __mutex__, provided for backwards compatibility with previous releases of boost.
@@ -52,6 +63,8 @@
 
 [section:timed_mutex Class `timed_mutex`]
 
+ #include <boost/thread/mutex.hpp>
+
     class timed_mutex:
         boost::noncopyable
     {
@@ -71,7 +84,7 @@
         native_handle_type native_handle();
 
         typedef unique_lock<timed_mutex> scoped_timed_lock;
- typedef scoped_timed_lock scoped_try_lock;
+ typedef unspecified-type scoped_try_lock;
         typedef scoped_timed_lock scoped_lock;
     };
 
@@ -99,6 +112,8 @@
 
 [section:recursive_mutex Class `recursive_mutex`]
 
+ #include <boost/thread/recursive_mutex.hpp>
+
     class recursive_mutex:
         boost::noncopyable
     {
@@ -114,7 +129,7 @@
         native_handle_type native_handle();
         
         typedef unique_lock<recursive_mutex> scoped_lock;
- typedef scoped_lock scoped_try_lock;
+ typedef unspecified-type scoped_try_lock;
     };
 
 __recursive_mutex__ implements the __lockable_concept__ to provide an exclusive-ownership recursive mutex. At most one thread can
@@ -143,6 +158,8 @@
 
 [section:recursive_try_mutex Typedef `recursive_try_mutex`]
 
+ #include <boost/thread/recursive_mutex.hpp>
+
     typedef recursive_mutex recursive_try_mutex;
 
 __recursive_try_mutex__ is a `typedef` to __recursive_mutex__, provided for backwards compatibility with previous releases of boost.
@@ -151,6 +168,8 @@
 
 [section:recursive_timed_mutex Class `recursive_timed_mutex`]
 
+ #include <boost/thread/recursive_mutex.hpp>
+
     class recursive_timed_mutex:
         boost::noncopyable
     {
@@ -171,7 +190,7 @@
         native_handle_type native_handle();
         
         typedef unique_lock<recursive_timed_mutex> scoped_lock;
- typedef scoped_lock scoped_try_lock;
+ typedef unspecified-type scoped_try_lock;
         typedef scoped_lock scoped_timed_lock;
     };
 

Modified: branches/proto/v4/libs/thread/doc/once.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/once.qbk (original)
+++ branches/proto/v4/libs/thread/doc/once.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,18 @@
+[/
+ (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).
+]
+
 [section:once One-time Initialization]
 
 `boost::call_once` provides a mechanism for ensuring that an initialization routine is run exactly once without data races or deadlocks.
 
 [section:once_flag Typedef `once_flag`]
 
+ #include <boost/thread/once.hpp>
+
     typedef platform-specific-type once_flag;
     #define BOOST_ONCE_INIT platform-specific-initializer
 
@@ -15,6 +24,8 @@
 
 [section:call_once Non-member function `call_once`]
 
+ #include <boost/thread/once.hpp>
+
     template<typename Callable>
     void call_once(once_flag& flag,Callable func);
 
@@ -24,8 +35,8 @@
 be equivalent to calling the original. ]]
 
 [[Effects:] [Calls to `call_once` on the same `once_flag` object are serialized. If there has been no prior effective `call_once` on
-the same `once_flag` object, the argument `func` (or a copy thereof) is called as-if by invoking `func(args)`, and the invocation of
-`call_once` is effective if and only if `func(args)` returns without exception. If an exception is thrown, the exception is
+the same `once_flag` object, the argument `func` (or a copy thereof) is called as-if by invoking `func()`, and the invocation of
+`call_once` is effective if and only if `func()` returns without exception. If an exception is thrown, the exception is
 propagated to the caller. If there has been a prior effective `call_once` on the same `once_flag` object, the `call_once` returns
 without invoking `func`. ]]
 

Modified: branches/proto/v4/libs/thread/doc/overview.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/overview.qbk (original)
+++ branches/proto/v4/libs/thread/doc/overview.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,10 @@
+[/
+ (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).
+]
+
 [section:overview Overview]
 
 __boost_thread__ enables the use of multiple threads of execution with shared data in portable C++ code. It provides classes and
@@ -12,4 +19,12 @@
 [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2139.html N2139], and
 [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2094.html N2094]
 
+In order to use the classes and functions described here, you can
+either include the specific headers specified by the descriptions of
+each class or function, or include the master thread library header:
+
+ #include <boost/thread.hpp>
+
+which includes all the other headers in turn.
+
 [endsect]

Modified: branches/proto/v4/libs/thread/doc/shared_mutex_ref.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/shared_mutex_ref.qbk (original)
+++ branches/proto/v4/libs/thread/doc/shared_mutex_ref.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,14 @@
+[/
+ (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).
+]
+
 [section:shared_mutex Class `shared_mutex`]
 
+ #include <boost/thread/shared_mutex.hpp>
+
     class shared_mutex
     {
     public:

Modified: branches/proto/v4/libs/thread/doc/thread.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/thread.qbk (original)
+++ branches/proto/v4/libs/thread/doc/thread.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,10 @@
+[/
+ (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).
+]
+
 [article Thread
     [quickbook 1.4]
     [authors [Williams, Anthony]]
@@ -94,8 +101,10 @@
 [def __recursive_timed_mutex__ [link thread.synchronization.mutex_types.recursive_timed_mutex `boost::recursive_timed_mutex`]]
 [def __shared_mutex__ [link thread.synchronization.mutex_types.shared_mutex `boost::shared_mutex`]]
 
+[template unique_lock_link[link_text] [link thread.synchronization.locks.unique_lock [link_text]]]
+
 [def __lock_guard__ [link thread.synchronization.locks.lock_guard `boost::lock_guard`]]
-[def __unique_lock__ [link thread.synchronization.locks.unique_lock `boost::unique_lock`]]
+[def __unique_lock__ [unique_lock_link `boost::unique_lock`]]
 [def __shared_lock__ [link thread.synchronization.locks.shared_lock `boost::shared_lock`]]
 [def __upgrade_lock__ [link thread.synchronization.locks.upgrade_lock `boost::upgrade_lock`]]
 [def __upgrade_to_unique_lock__ [link thread.synchronization.locks.upgrade_to_unique_lock `boost::upgrade_to_unique_lock`]]

Modified: branches/proto/v4/libs/thread/doc/thread_ref.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/thread_ref.qbk (original)
+++ branches/proto/v4/libs/thread/doc/thread_ref.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,10 @@
+[/
+ (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).
+]
+
 [section:thread_management Thread Management]
 
 [heading Synopsis]
@@ -158,6 +165,8 @@
 
 [section:thread Class `thread`]
 
+ #include <boost/thread/thread.hpp>
+
     class thread
     {
     public:
@@ -167,6 +176,9 @@
         template <class F>
         explicit thread(F f);
 
+ template <class F,class A1,class A2,...>
+ thread(F f,A1 a1,A2 a2,...);
+
         template <class F>
         thread(detail::thread_move_t<F> f);
 
@@ -243,6 +255,30 @@
 
 [endsect]
 
+[section:multiple_argument_constructor Thread Constructor with arguments]
+
+ template <class F,class A1,class A2,...>
+ thread(F f,A1 a1,A2 a2,...);
+
+[variablelist
+
+[[Preconditions:] [`F` and each `A`n must by copyable or movable.]]
+
+[[Effects:] [As if [link
+thread.thread_management.thread.callable_constructor
+`thread(boost::bind(f,a1,a2,...))`. Consequently, `f` and each `a`n
+are copied into internal storage for access by the new thread.]]]
+
+[[Postconditions:] [`*this` refers to the newly created thread of execution.]]
+
+[[Throws:] [__thread_resource_error__ if an error occurs.]]
+
+[[Note:] [Currently up to nine additional arguments `a1` to `a9` can be specified in addition to the function `f`.]]
+
+]
+
+[endsect]
+
 [section:destructor Thread Destructor]
 
     ~thread();
@@ -473,6 +509,8 @@
 
 [section:non_member_swap Non-member function `swap()`]
 
+ #include <boost/thread/thread.hpp>
+
     void swap(thread& lhs,thread& rhs);
 
 [variablelist
@@ -486,6 +524,8 @@
 
 [section:id Class `boost::thread::id`]
 
+ #include <boost/thread/thread.hpp>
+
     class thread::id
     {
     public:
@@ -634,6 +674,8 @@
 
 [section:get_id Non-member function `get_id()`]
 
+ #include <boost/thread/thread.hpp>
+
     namespace this_thread
     {
         thread::id get_id();
@@ -651,6 +693,8 @@
 
 [section:interruption_point Non-member function `interruption_point()`]
 
+ #include <boost/thread/thread.hpp>
+
     namespace this_thread
     {
         void interruption_point();
@@ -668,6 +712,8 @@
 
 [section:interruption_requested Non-member function `interruption_requested()`]
 
+ #include <boost/thread/thread.hpp>
+
     namespace this_thread
     {
         bool interruption_requested();
@@ -685,6 +731,8 @@
 
 [section:interruption_enabled Non-member function `interruption_enabled()`]
 
+ #include <boost/thread/thread.hpp>
+
     namespace this_thread
     {
         bool interruption_enabled();
@@ -702,6 +750,8 @@
 
 [section:sleep Non-member function `sleep()`]
 
+ #include <boost/thread/thread.hpp>
+
     namespace this_thread
     {
         template<typename TimeDuration>
@@ -722,6 +772,8 @@
 
 [section:yield Non-member function `yield()`]
 
+ #include <boost/thread/thread.hpp>
+
     namespace this_thread
     {
         void yield();
@@ -739,6 +791,8 @@
 
 [section:disable_interruption Class `disable_interruption`]
 
+ #include <boost/thread/thread.hpp>
+
     namespace this_thread
     {
         class disable_interruption
@@ -790,6 +844,8 @@
 
 [section:restore_interruption Class `restore_interruption`]
 
+ #include <boost/thread/thread.hpp>
+
     namespace this_thread
     {
         class restore_interruption
@@ -844,12 +900,16 @@
 
 [section:atthreadexit Non-member function template `at_thread_exit()`]
 
+ #include <boost/thread/thread.hpp>
+
     template<typename Callable>
     void at_thread_exit(Callable func);
 
 [variablelist
 
-[[Effects:] [A copy of `func` is taken and stored to in thread-specific storage. This copy is invoked when the current thread exits.]]
+[[Effects:] [A copy of `func` is placed in
+thread-specific storage. This copy is invoked when the current thread
+exits (even if the thread has been interrupted).]]
 
 [[Postconditions:] [A copy of `func` has been saved for invocation on thread exit.]]
 
@@ -864,6 +924,8 @@
 
 [section:threadgroup Class `thread_group`]
 
+ #include <boost/thread/thread.hpp>
+
     class thread_group:
         private noncopyable
     {

Modified: branches/proto/v4/libs/thread/doc/time.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/time.qbk (original)
+++ branches/proto/v4/libs/thread/doc/time.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,10 @@
+[/
+ (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).
+]
+
 [section:time Date and Time Requirements]
 
 As of Boost 1.35.0, the __boost_thread__ library uses the [link date_time Boost.Date_Time] library for all operations that require a
@@ -40,6 +47,8 @@
 
 [section:system_time Typedef `system_time`]
 
+ #include <boost/thread/thread_time.hpp>
+
     typedef boost::posix_time::ptime system_time;
 
 See the documentation for [link date_time.posix_time.ptime_class `boost::posix_time::ptime`] in the Boost.Date_Time library.
@@ -48,6 +57,8 @@
 
 [section:get_system_time Non-member function `get_system_time()`]
 
+ #include <boost/thread/thread_time.hpp>
+
     system_time get_system_time();
 
 [variablelist

Modified: branches/proto/v4/libs/thread/doc/tss.qbk
==============================================================================
--- branches/proto/v4/libs/thread/doc/tss.qbk (original)
+++ branches/proto/v4/libs/thread/doc/tss.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,10 @@
+[/
+ (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).
+]
+
 [section Thread Local Storage]
 
 [heading Synopsis]
@@ -37,6 +44,8 @@
 
 [section:thread_specific_ptr Class `thread_specific_ptr`]
 
+ #include <boost/thread/tss.hpp>
+
     template <typename T>
     class thread_specific_ptr
     {

Modified: branches/proto/v4/libs/thread/src/pthread/thread.cpp
==============================================================================
--- branches/proto/v4/libs/thread/src/pthread/thread.cpp (original)
+++ branches/proto/v4/libs/thread/src/pthread/thread.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -18,7 +18,7 @@
 #elif defined(__APPLE__) || defined(__FreeBSD__)
 #include <sys/types.h>
 #include <sys/sysctl.h>
-#elif defined(__sun) || defined(__CYGWIN__)
+#elif defined BOOST_HAS_UNISTD_H
 #include <unistd.h>
 #endif
 
@@ -394,7 +394,7 @@
         int count;
         size_t size=sizeof(count);
         return sysctlbyname("hw.ncpu",&count,&size,NULL,0)?0:count;
-#elif defined(__sun) || defined(__CYGWIN__)
+#elif defined(BOOST_HAS_UNISTD_H) && defined(_SC_NPROCESSORS_ONLN)
         int const count=sysconf(_SC_NPROCESSORS_ONLN);
         return (count>0)?count:0;
 #else

Modified: branches/proto/v4/libs/thread/test/test_condition_timed_wait_times_out.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_condition_timed_wait_times_out.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_condition_timed_wait_times_out.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007 Anthony Williams
+// 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)
@@ -16,7 +16,7 @@
     return false;
 }
 
-unsigned const timeout_seconds=5;
+unsigned const timeout_seconds=2;
 unsigned const timeout_grace=1;
 boost::posix_time::milliseconds const timeout_resolution(100);
 
@@ -70,12 +70,96 @@
     BOOST_CHECK((delay-timeout_resolution)<=(end-start));
 }
 
+void do_test_timed_wait_relative_times_out()
+{
+ boost::condition_variable cond;
+ boost::mutex m;
+
+ boost::posix_time::seconds const delay(timeout_seconds);
+ boost::mutex::scoped_lock lock(m);
+ boost::system_time const start=boost::get_system_time();
+
+ while(cond.timed_wait(lock,delay));
+
+ boost::system_time const end=boost::get_system_time();
+ BOOST_CHECK((delay-timeout_resolution)<=(end-start));
+}
+
+void do_test_cv_any_timed_wait_times_out()
+{
+ boost::condition_variable_any cond;
+ boost::mutex m;
+
+ boost::posix_time::seconds const delay(timeout_seconds);
+ boost::mutex::scoped_lock lock(m);
+ boost::system_time const start=boost::get_system_time();
+ boost::system_time const timeout=start+delay;
+
+ while(cond.timed_wait(lock,timeout));
+
+ boost::system_time const end=boost::get_system_time();
+ BOOST_CHECK((delay-timeout_resolution)<=(end-start));
+}
+
+void do_test_cv_any_timed_wait_with_predicate_times_out()
+{
+ boost::condition_variable_any cond;
+ boost::mutex m;
+
+ boost::posix_time::seconds const delay(timeout_seconds);
+ boost::mutex::scoped_lock lock(m);
+ boost::system_time const start=boost::get_system_time();
+ boost::system_time const timeout=start+delay;
+
+ bool const res=cond.timed_wait(lock,timeout,fake_predicate);
+
+ boost::system_time const end=boost::get_system_time();
+ BOOST_CHECK(!res);
+ BOOST_CHECK((delay-timeout_resolution)<=(end-start));
+}
+
+void do_test_cv_any_relative_timed_wait_with_predicate_times_out()
+{
+ boost::condition_variable_any cond;
+ boost::mutex m;
+
+ boost::posix_time::seconds const delay(timeout_seconds);
+ boost::mutex::scoped_lock lock(m);
+ boost::system_time const start=boost::get_system_time();
+
+ bool const res=cond.timed_wait(lock,delay,fake_predicate);
+
+ boost::system_time const end=boost::get_system_time();
+ BOOST_CHECK(!res);
+ BOOST_CHECK((delay-timeout_resolution)<=(end-start));
+}
+
+void do_test_cv_any_timed_wait_relative_times_out()
+{
+ boost::condition_variable_any cond;
+ boost::mutex m;
+
+ boost::posix_time::seconds const delay(timeout_seconds);
+ boost::mutex::scoped_lock lock(m);
+ boost::system_time const start=boost::get_system_time();
+
+ while(cond.timed_wait(lock,delay));
+
+ boost::system_time const end=boost::get_system_time();
+ BOOST_CHECK((delay-timeout_resolution)<=(end-start));
+}
+
 
 void test_timed_wait_times_out()
 {
     timed_test(&do_test_timed_wait_times_out, timeout_seconds+timeout_grace, execution_monitor::use_mutex);
     timed_test(&do_test_timed_wait_with_predicate_times_out, timeout_seconds+timeout_grace, execution_monitor::use_mutex);
     timed_test(&do_test_relative_timed_wait_with_predicate_times_out, timeout_seconds+timeout_grace, execution_monitor::use_mutex);
+ timed_test(&do_test_timed_wait_relative_times_out, timeout_seconds+timeout_grace, execution_monitor::use_mutex);
+ timed_test(&do_test_cv_any_timed_wait_times_out, timeout_seconds+timeout_grace, execution_monitor::use_mutex);
+ timed_test(&do_test_cv_any_timed_wait_with_predicate_times_out, timeout_seconds+timeout_grace, execution_monitor::use_mutex);
+ timed_test(&do_test_cv_any_relative_timed_wait_with_predicate_times_out, timeout_seconds+timeout_grace, execution_monitor::use_mutex);
+ timed_test(&do_test_cv_any_timed_wait_relative_times_out, timeout_seconds+timeout_grace, execution_monitor::use_mutex);
 }
 
 boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[])

Modified: branches/proto/v4/libs/thread/test/test_generic_locks.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_generic_locks.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_generic_locks.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -272,6 +272,16 @@
     }
 };
 
+namespace boost
+{
+ template<>
+ struct is_mutex_type<dummy_mutex>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+}
+
+
 
 void test_lock_five_in_range()
 {

Modified: branches/proto/v4/libs/thread/test/test_lock_concept.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_lock_concept.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_lock_concept.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,6 +7,7 @@
 #include <boost/test/test_case_template.hpp>
 #include <boost/mpl/vector.hpp>
 #include <boost/thread/mutex.hpp>
+#include <boost/thread/shared_mutex.hpp>
 #include <boost/thread/thread.hpp>
 #include <boost/thread/recursive_mutex.hpp>
 #include <boost/thread/condition_variable.hpp>
@@ -83,6 +84,122 @@
 };
 
 template<typename Mutex,typename Lock>
+struct test_initially_unlocked_with_try_lock_if_other_thread_has_unique_lock
+{
+ Mutex m;
+ boost::mutex done_mutex;
+ bool done;
+ bool locked;
+ boost::condition_variable done_cond;
+
+ test_initially_unlocked_with_try_lock_if_other_thread_has_unique_lock():
+ done(false),locked(false)
+ {}
+
+ void locking_thread()
+ {
+ Lock lock(m,boost::try_to_lock);
+
+ boost::lock_guard<boost::mutex> lk(done_mutex);
+ locked=lock.owns_lock();
+ done=true;
+ done_cond.notify_one();
+ }
+
+ bool is_done() const
+ {
+ return done;
+ }
+
+
+ void operator()()
+ {
+ boost::unique_lock<Mutex> lock(m);
+
+ typedef test_initially_unlocked_with_try_lock_if_other_thread_has_unique_lock<Mutex,Lock> this_type;
+
+ boost::thread t(&this_type::locking_thread,this);
+
+ try
+ {
+ {
+ boost::mutex::scoped_lock lk(done_mutex);
+ BOOST_CHECK(done_cond.timed_wait(lk,boost::posix_time::seconds(2),
+ boost::bind(&this_type::is_done,this)));
+ BOOST_CHECK(!locked);
+ }
+
+ lock.unlock();
+ t.join();
+ }
+ catch(...)
+ {
+ lock.unlock();
+ t.join();
+ throw;
+ }
+ }
+};
+
+template<typename Mutex,typename Lock>
+struct test_initially_locked_if_other_thread_has_shared_lock
+{
+ Mutex m;
+ boost::mutex done_mutex;
+ bool done;
+ bool locked;
+ boost::condition_variable done_cond;
+
+ test_initially_locked_if_other_thread_has_shared_lock():
+ done(false),locked(false)
+ {}
+
+ void locking_thread()
+ {
+ Lock lock(m);
+
+ boost::lock_guard<boost::mutex> lk(done_mutex);
+ locked=lock.owns_lock();
+ done=true;
+ done_cond.notify_one();
+ }
+
+ bool is_done() const
+ {
+ return done;
+ }
+
+
+ void operator()()
+ {
+ boost::shared_lock<Mutex> lock(m);
+
+ typedef test_initially_locked_if_other_thread_has_shared_lock<Mutex,Lock> this_type;
+
+ boost::thread t(&this_type::locking_thread,this);
+
+ try
+ {
+ {
+ boost::mutex::scoped_lock lk(done_mutex);
+ BOOST_CHECK(done_cond.timed_wait(lk,boost::posix_time::seconds(2),
+ boost::bind(&this_type::is_done,this)));
+ BOOST_CHECK(locked);
+ }
+
+ lock.unlock();
+ t.join();
+ }
+ catch(...)
+ {
+ lock.unlock();
+ t.join();
+ throw;
+ }
+ }
+};
+
+template<typename Mutex,typename Lock>
 struct test_initially_unlocked_with_defer_lock_parameter
 {
     void operator()() const
@@ -150,6 +267,64 @@
 };
 
 template<typename Mutex,typename Lock>
+struct test_unlocked_after_try_lock_if_other_thread_has_lock
+{
+ Mutex m;
+ boost::mutex done_mutex;
+ bool done;
+ bool locked;
+ boost::condition_variable done_cond;
+
+ test_unlocked_after_try_lock_if_other_thread_has_lock():
+ done(false),locked(false)
+ {}
+
+ void locking_thread()
+ {
+ Lock lock(m,boost::defer_lock);
+
+ boost::lock_guard<boost::mutex> lk(done_mutex);
+ locked=lock.owns_lock();
+ done=true;
+ done_cond.notify_one();
+ }
+
+ bool is_done() const
+ {
+ return done;
+ }
+
+
+ void operator()()
+ {
+ Lock lock(m);
+
+ typedef test_unlocked_after_try_lock_if_other_thread_has_lock<Mutex,Lock> this_type;
+
+ boost::thread t(&this_type::locking_thread,this);
+
+ try
+ {
+ {
+ boost::mutex::scoped_lock lk(done_mutex);
+ BOOST_CHECK(done_cond.timed_wait(lk,boost::posix_time::seconds(2),
+ boost::bind(&this_type::is_done,this)));
+ BOOST_CHECK(!locked);
+ }
+
+ lock.unlock();
+ t.join();
+ }
+ catch(...)
+ {
+ lock.unlock();
+ t.join();
+ throw;
+ }
+ }
+};
+
+template<typename Mutex,typename Lock>
 struct test_throws_if_lock_called_when_already_locked
 {
     void operator()() const
@@ -204,6 +379,8 @@
     {
         Mutex m1;
         Mutex m2;
+ Mutex m3;
+
         Lock l1(m1);
         Lock l2(m2);
 
@@ -219,34 +396,135 @@
 
         BOOST_CHECK_EQUAL(l1.mutex(),&m1);
         BOOST_CHECK_EQUAL(l2.mutex(),&m2);
-
+
+ l1.swap(Lock(m3));
+
+ BOOST_CHECK_EQUAL(l1.mutex(),&m3);
     }
 };
 
+template<typename Mutex,typename Lock>
+void test_lock_is_scoped_lock_concept_for_mutex()
+{
+ test_default_constructed_has_no_mutex_and_unlocked<Lock>()();
+ test_initially_locked<Mutex,Lock>()();
+ test_initially_unlocked_with_defer_lock_parameter<Mutex,Lock>()();
+ test_initially_locked_with_adopt_lock_parameter<Mutex,Lock>()();
+ test_unlocked_after_unlock_called<Mutex,Lock>()();
+ test_locked_after_lock_called<Mutex,Lock>()();
+ test_throws_if_lock_called_when_already_locked<Mutex,Lock>()();
+ test_throws_if_unlock_called_when_already_unlocked<Mutex,Lock>()();
+ test_locks_can_be_swapped<Mutex,Lock>()();
+ test_locked_after_try_lock_called<Mutex,Lock>()();
+ test_throws_if_try_lock_called_when_already_locked<Mutex,Lock>()();
+ test_unlocked_after_try_lock_if_other_thread_has_lock<Mutex,Lock>()();
+}
 
 
 BOOST_TEST_CASE_TEMPLATE_FUNCTION(test_scoped_lock_concept,Mutex)
 {
     typedef typename Mutex::scoped_lock Lock;
+
+ test_lock_is_scoped_lock_concept_for_mutex<Mutex,Lock>();
+}
+
+BOOST_TEST_CASE_TEMPLATE_FUNCTION(test_unique_lock_is_scoped_lock,Mutex)
+{
+ typedef boost::unique_lock<Mutex> Lock;
+
+ test_lock_is_scoped_lock_concept_for_mutex<Mutex,Lock>();
+}
+
+BOOST_TEST_CASE_TEMPLATE_FUNCTION(test_scoped_try_lock_concept,Mutex)
+{
+ typedef typename Mutex::scoped_try_lock Lock;
     
     test_default_constructed_has_no_mutex_and_unlocked<Lock>()();
     test_initially_locked<Mutex,Lock>()();
+ test_initially_unlocked_if_other_thread_has_lock<Mutex,Lock>()();
     test_initially_unlocked_with_defer_lock_parameter<Mutex,Lock>()();
     test_initially_locked_with_adopt_lock_parameter<Mutex,Lock>()();
     test_unlocked_after_unlock_called<Mutex,Lock>()();
     test_locked_after_lock_called<Mutex,Lock>()();
+ test_locked_after_try_lock_called<Mutex,Lock>()();
+ test_unlocked_after_try_lock_if_other_thread_has_lock<Mutex,Lock>()();
     test_throws_if_lock_called_when_already_locked<Mutex,Lock>()();
+ test_throws_if_try_lock_called_when_already_locked<Mutex,Lock>()();
     test_throws_if_unlock_called_when_already_unlocked<Mutex,Lock>()();
     test_locks_can_be_swapped<Mutex,Lock>()();
 }
 
-BOOST_TEST_CASE_TEMPLATE_FUNCTION(test_scoped_try_lock_concept,Mutex)
+struct dummy_shared_mutex
 {
- typedef typename Mutex::scoped_try_lock Lock;
+ bool locked;
+ bool shared_locked;
+ bool shared_unlocked;
+ bool shared_timed_locked_relative;
+ bool shared_timed_locked_absolute;
+ bool timed_locked_relative;
+ bool timed_locked_absolute;
+
+ dummy_shared_mutex():
+ locked(false),shared_locked(false),shared_unlocked(false),
+ shared_timed_locked_relative(false),
+ shared_timed_locked_absolute(false),
+ timed_locked_relative(false),
+ timed_locked_absolute(false)
+ {}
+
+ void lock()
+ {
+ locked=true;
+ }
+
+ void lock_shared()
+ {
+ shared_locked=true;
+ }
+
+ void unlock()
+ {}
+
+ void unlock_shared()
+ {
+ shared_unlocked=true;
+ }
+
+ bool timed_lock_shared(boost::system_time)
+ {
+ shared_timed_locked_absolute=true;
+ return false;
+ }
+ template<typename Duration>
+ bool timed_lock_shared(Duration)
+ {
+ shared_timed_locked_relative=true;
+ return false;
+ }
+ bool timed_lock(boost::system_time)
+ {
+ timed_locked_absolute=true;
+ return false;
+ }
+ template<typename Duration>
+ bool timed_lock(Duration)
+ {
+ timed_locked_relative=true;
+ return false;
+ }
+
+};
+
+
+void test_shared_lock()
+{
+ typedef boost::shared_mutex Mutex;
+ typedef boost::shared_lock<Mutex> Lock;
     
     test_default_constructed_has_no_mutex_and_unlocked<Lock>()();
     test_initially_locked<Mutex,Lock>()();
- test_initially_unlocked_if_other_thread_has_lock<Mutex,Lock>()();
+ test_initially_unlocked_with_try_lock_if_other_thread_has_unique_lock<Mutex,Lock>()();
+ test_initially_locked_if_other_thread_has_shared_lock<Mutex,Lock>()();
     test_initially_unlocked_with_defer_lock_parameter<Mutex,Lock>()();
     test_initially_locked_with_adopt_lock_parameter<Mutex,Lock>()();
     test_unlocked_after_unlock_called<Mutex,Lock>()();
@@ -256,6 +534,16 @@
     test_throws_if_try_lock_called_when_already_locked<Mutex,Lock>()();
     test_throws_if_unlock_called_when_already_unlocked<Mutex,Lock>()();
     test_locks_can_be_swapped<Mutex,Lock>()();
+
+ dummy_shared_mutex dummy;
+ boost::shared_lock<dummy_shared_mutex> lk(dummy);
+ BOOST_CHECK(dummy.shared_locked);
+ lk.unlock();
+ BOOST_CHECK(dummy.shared_unlocked);
+ lk.timed_lock(boost::posix_time::milliseconds(5));
+ BOOST_CHECK(dummy.shared_timed_locked_relative);
+ lk.timed_lock(boost::get_system_time());
+ BOOST_CHECK(dummy.shared_timed_locked_absolute);
 }
 
 boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[])
@@ -264,14 +552,20 @@
         BOOST_TEST_SUITE("Boost.Threads: lock concept test suite");
 
     typedef boost::mpl::vector<boost::mutex,boost::try_mutex,boost::timed_mutex,
- boost::recursive_mutex,boost::recursive_try_mutex,boost::recursive_timed_mutex> mutex_types;
+ boost::recursive_mutex,boost::recursive_try_mutex,boost::recursive_timed_mutex> mutex_types_with_scoped_lock;
     
- test->add(BOOST_TEST_CASE_TEMPLATE(test_scoped_lock_concept,mutex_types));
+ test->add(BOOST_TEST_CASE_TEMPLATE(test_scoped_lock_concept,mutex_types_with_scoped_lock));
 
     typedef boost::mpl::vector<boost::try_mutex,boost::timed_mutex,
- boost::recursive_try_mutex,boost::recursive_timed_mutex> try_mutex_types;
+ boost::recursive_try_mutex,boost::recursive_timed_mutex> mutex_types_with_scoped_try_lock;
 
- test->add(BOOST_TEST_CASE_TEMPLATE(test_scoped_try_lock_concept,try_mutex_types));
+ test->add(BOOST_TEST_CASE_TEMPLATE(test_scoped_try_lock_concept,mutex_types_with_scoped_try_lock));
+
+ typedef boost::mpl::vector<boost::mutex,boost::try_mutex,boost::timed_mutex,
+ boost::recursive_mutex,boost::recursive_try_mutex,boost::recursive_timed_mutex,boost::shared_mutex> all_mutex_types;
+
+ test->add(BOOST_TEST_CASE_TEMPLATE(test_unique_lock_is_scoped_lock,all_mutex_types));
+ test->add(BOOST_TEST_CASE(&test_shared_lock));
 
     return test;
 }

Modified: branches/proto/v4/libs/thread/test/test_shared_mutex.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_shared_mutex.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_shared_mutex.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,7 +17,7 @@
 
 void test_multiple_readers()
 {
- unsigned const number_of_threads=100;
+ unsigned const number_of_threads=10;
     
     boost::thread_group pool;
 
@@ -64,7 +64,7 @@
 
 void test_only_one_writer_permitted()
 {
- unsigned const number_of_threads=100;
+ unsigned const number_of_threads=10;
     
     boost::thread_group pool;
 
@@ -164,7 +164,7 @@
     boost::mutex finish_mutex;
     boost::mutex::scoped_lock finish_lock(finish_mutex);
 
- unsigned const reader_count=100;
+ unsigned const reader_count=10;
 
     try
     {
@@ -218,8 +218,8 @@
     boost::mutex finish_writing_mutex;
     boost::mutex::scoped_lock finish_writing_lock(finish_writing_mutex);
 
- unsigned const reader_count=100;
- unsigned const writer_count=100;
+ unsigned const reader_count=10;
+ unsigned const writer_count=10;
 
     try
     {

Modified: branches/proto/v4/libs/thread/test/test_shared_mutex_part_2.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_shared_mutex_part_2.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_shared_mutex_part_2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,10 +15,41 @@
         BOOST_CHECK_EQUAL(value,expected_value); \
     }
 
+class simple_upgrade_thread
+{
+ boost::shared_mutex& rwm;
+ boost::mutex& finish_mutex;
+ boost::mutex& unblocked_mutex;
+ unsigned& unblocked_count;
+
+ void operator=(simple_upgrade_thread&);
+
+public:
+ simple_upgrade_thread(boost::shared_mutex& rwm_,
+ boost::mutex& finish_mutex_,
+ boost::mutex& unblocked_mutex_,
+ unsigned& unblocked_count_):
+ rwm(rwm_),finish_mutex(finish_mutex_),
+ unblocked_mutex(unblocked_mutex_),unblocked_count(unblocked_count_)
+ {}
+
+ void operator()()
+ {
+ boost::upgrade_lock<boost::shared_mutex> lk(rwm);
+
+ {
+ boost::mutex::scoped_lock ulk(unblocked_mutex);
+ ++unblocked_count;
+ }
+
+ boost::mutex::scoped_lock flk(finish_mutex);
+ }
+};
+
 
 void test_only_one_upgrade_lock_permitted()
 {
- unsigned const number_of_threads=100;
+ unsigned const number_of_threads=10;
     
     boost::thread_group pool;
 
@@ -71,7 +102,7 @@
     boost::mutex finish_mutex;
     boost::mutex::scoped_lock finish_lock(finish_mutex);
 
- unsigned const reader_count=100;
+ unsigned const reader_count=10;
 
     try
     {
@@ -130,6 +161,29 @@
     writer.join();
 }
 
+void test_if_other_thread_has_write_lock_try_lock_upgrade_returns_false()
+{
+
+ boost::shared_mutex rw_mutex;
+ boost::mutex finish_mutex;
+ boost::mutex unblocked_mutex;
+ unsigned unblocked_count=0;
+ boost::mutex::scoped_lock finish_lock(finish_mutex);
+ boost::thread writer(simple_writing_thread(rw_mutex,finish_mutex,unblocked_mutex,unblocked_count));
+ boost::this_thread::sleep(boost::posix_time::seconds(1));
+ CHECK_LOCKED_VALUE_EQUAL(unblocked_mutex,unblocked_count,1u);
+
+ bool const try_succeeded=rw_mutex.try_lock_upgrade();
+ BOOST_CHECK(!try_succeeded);
+ if(try_succeeded)
+ {
+ rw_mutex.unlock_upgrade();
+ }
+
+ finish_lock.unlock();
+ writer.join();
+}
+
 void test_if_no_thread_has_lock_try_lock_shared_returns_true()
 {
     boost::shared_mutex rw_mutex;
@@ -141,6 +195,17 @@
     }
 }
 
+void test_if_no_thread_has_lock_try_lock_upgrade_returns_true()
+{
+ boost::shared_mutex rw_mutex;
+ bool const try_succeeded=rw_mutex.try_lock_upgrade();
+ BOOST_CHECK(try_succeeded);
+ if(try_succeeded)
+ {
+ rw_mutex.unlock_upgrade();
+ }
+}
+
 void test_if_other_thread_has_shared_lock_try_lock_shared_returns_true()
 {
 
@@ -164,6 +229,52 @@
     writer.join();
 }
 
+void test_if_other_thread_has_shared_lock_try_lock_upgrade_returns_true()
+{
+
+ boost::shared_mutex rw_mutex;
+ boost::mutex finish_mutex;
+ boost::mutex unblocked_mutex;
+ unsigned unblocked_count=0;
+ boost::mutex::scoped_lock finish_lock(finish_mutex);
+ boost::thread writer(simple_reading_thread(rw_mutex,finish_mutex,unblocked_mutex,unblocked_count));
+ boost::thread::sleep(delay(1));
+ CHECK_LOCKED_VALUE_EQUAL(unblocked_mutex,unblocked_count,1u);
+
+ bool const try_succeeded=rw_mutex.try_lock_upgrade();
+ BOOST_CHECK(try_succeeded);
+ if(try_succeeded)
+ {
+ rw_mutex.unlock_upgrade();
+ }
+
+ finish_lock.unlock();
+ writer.join();
+}
+
+void test_if_other_thread_has_upgrade_lock_try_lock_upgrade_returns_false()
+{
+
+ boost::shared_mutex rw_mutex;
+ boost::mutex finish_mutex;
+ boost::mutex unblocked_mutex;
+ unsigned unblocked_count=0;
+ boost::mutex::scoped_lock finish_lock(finish_mutex);
+ boost::thread writer(simple_upgrade_thread(rw_mutex,finish_mutex,unblocked_mutex,unblocked_count));
+ boost::this_thread::sleep(boost::posix_time::seconds(1));
+ CHECK_LOCKED_VALUE_EQUAL(unblocked_mutex,unblocked_count,1u);
+
+ bool const try_succeeded=rw_mutex.try_lock_upgrade();
+ BOOST_CHECK(!try_succeeded);
+ if(try_succeeded)
+ {
+ rw_mutex.unlock_upgrade();
+ }
+
+ finish_lock.unlock();
+ writer.join();
+}
+
 boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[])
 {
     boost::unit_test_framework::test_suite* test =

Modified: branches/proto/v4/libs/thread/test/test_thread_mf.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_thread_mf.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_thread_mf.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -45,92 +45,90 @@
 
 int main()
 {
- using namespace boost;
-
     X x;
 
     // 0
 
- thread( &X::f0, &x ).join();
- thread( &X::f0, ref(x) ).join();
+ boost::thread( &X::f0, &x ).join();
+ boost::thread( &X::f0, boost::ref(x) ).join();
 
- thread( &X::g0, &x ).join();
- thread( &X::g0, x ).join();
- thread( &X::g0, ref(x) ).join();
+ boost::thread( &X::g0, &x ).join();
+ boost::thread( &X::g0, x ).join();
+ boost::thread( &X::g0, boost::ref(x) ).join();
 
     // 1
 
- thread( &X::f1, &x, 1 ).join();
- thread( &X::f1, ref(x), 1 ).join();
+ boost::thread( &X::f1, &x, 1 ).join();
+ boost::thread( &X::f1, boost::ref(x), 1 ).join();
 
- thread( &X::g1, &x, 1 ).join();
- thread( &X::g1, x, 1 ).join();
- thread( &X::g1, ref(x), 1 ).join();
+ boost::thread( &X::g1, &x, 1 ).join();
+ boost::thread( &X::g1, x, 1 ).join();
+ boost::thread( &X::g1, boost::ref(x), 1 ).join();
 
     // 2
 
- thread( &X::f2, &x, 1, 2 ).join();
- thread( &X::f2, ref(x), 1, 2 ).join();
+ boost::thread( &X::f2, &x, 1, 2 ).join();
+ boost::thread( &X::f2, boost::ref(x), 1, 2 ).join();
 
- thread( &X::g2, &x, 1, 2 ).join();
- thread( &X::g2, x, 1, 2 ).join();
- thread( &X::g2, ref(x), 1, 2 ).join();
+ boost::thread( &X::g2, &x, 1, 2 ).join();
+ boost::thread( &X::g2, x, 1, 2 ).join();
+ boost::thread( &X::g2, boost::ref(x), 1, 2 ).join();
 
     // 3
 
- thread( &X::f3, &x, 1, 2, 3 ).join();
- thread( &X::f3, ref(x), 1, 2, 3 ).join();
+ boost::thread( &X::f3, &x, 1, 2, 3 ).join();
+ boost::thread( &X::f3, boost::ref(x), 1, 2, 3 ).join();
 
- thread( &X::g3, &x, 1, 2, 3 ).join();
- thread( &X::g3, x, 1, 2, 3 ).join();
- thread( &X::g3, ref(x), 1, 2, 3 ).join();
+ boost::thread( &X::g3, &x, 1, 2, 3 ).join();
+ boost::thread( &X::g3, x, 1, 2, 3 ).join();
+ boost::thread( &X::g3, boost::ref(x), 1, 2, 3 ).join();
 
     // 4
 
- thread( &X::f4, &x, 1, 2, 3, 4 ).join();
- thread( &X::f4, ref(x), 1, 2, 3, 4 ).join();
+ boost::thread( &X::f4, &x, 1, 2, 3, 4 ).join();
+ boost::thread( &X::f4, boost::ref(x), 1, 2, 3, 4 ).join();
 
- thread( &X::g4, &x, 1, 2, 3, 4 ).join();
- thread( &X::g4, x, 1, 2, 3, 4 ).join();
- thread( &X::g4, ref(x), 1, 2, 3, 4 ).join();
+ boost::thread( &X::g4, &x, 1, 2, 3, 4 ).join();
+ boost::thread( &X::g4, x, 1, 2, 3, 4 ).join();
+ boost::thread( &X::g4, boost::ref(x), 1, 2, 3, 4 ).join();
 
     // 5
 
- thread( &X::f5, &x, 1, 2, 3, 4, 5 ).join();
- thread( &X::f5, ref(x), 1, 2, 3, 4, 5 ).join();
+ boost::thread( &X::f5, &x, 1, 2, 3, 4, 5 ).join();
+ boost::thread( &X::f5, boost::ref(x), 1, 2, 3, 4, 5 ).join();
 
- thread( &X::g5, &x, 1, 2, 3, 4, 5 ).join();
- thread( &X::g5, x, 1, 2, 3, 4, 5 ).join();
- thread( &X::g5, ref(x), 1, 2, 3, 4, 5 ).join();
+ boost::thread( &X::g5, &x, 1, 2, 3, 4, 5 ).join();
+ boost::thread( &X::g5, x, 1, 2, 3, 4, 5 ).join();
+ boost::thread( &X::g5, boost::ref(x), 1, 2, 3, 4, 5 ).join();
 
     // 6
 
- thread( &X::f6, &x, 1, 2, 3, 4, 5, 6 ).join();
- thread( &X::f6, ref(x), 1, 2, 3, 4, 5, 6 ).join();
+ boost::thread( &X::f6, &x, 1, 2, 3, 4, 5, 6 ).join();
+ boost::thread( &X::f6, boost::ref(x), 1, 2, 3, 4, 5, 6 ).join();
 
- thread( &X::g6, &x, 1, 2, 3, 4, 5, 6 ).join();
- thread( &X::g6, x, 1, 2, 3, 4, 5, 6 ).join();
- thread( &X::g6, ref(x), 1, 2, 3, 4, 5, 6 ).join();
+ boost::thread( &X::g6, &x, 1, 2, 3, 4, 5, 6 ).join();
+ boost::thread( &X::g6, x, 1, 2, 3, 4, 5, 6 ).join();
+ boost::thread( &X::g6, boost::ref(x), 1, 2, 3, 4, 5, 6 ).join();
 
     // 7
 
- thread( &X::f7, &x, 1, 2, 3, 4, 5, 6, 7).join();
- thread( &X::f7, ref(x), 1, 2, 3, 4, 5, 6, 7).join();
+ boost::thread( &X::f7, &x, 1, 2, 3, 4, 5, 6, 7).join();
+ boost::thread( &X::f7, boost::ref(x), 1, 2, 3, 4, 5, 6, 7).join();
 
- thread( &X::g7, &x, 1, 2, 3, 4, 5, 6, 7).join();
- thread( &X::g7, x, 1, 2, 3, 4, 5, 6, 7).join();
- thread( &X::g7, ref(x), 1, 2, 3, 4, 5, 6, 7).join();
+ boost::thread( &X::g7, &x, 1, 2, 3, 4, 5, 6, 7).join();
+ boost::thread( &X::g7, x, 1, 2, 3, 4, 5, 6, 7).join();
+ boost::thread( &X::g7, boost::ref(x), 1, 2, 3, 4, 5, 6, 7).join();
 
     // 8
 
- thread( &X::f8, &x, 1, 2, 3, 4, 5, 6, 7, 8 ).join();
- thread( &X::f8, ref(x), 1, 2, 3, 4, 5, 6, 7, 8 ).join();
+ boost::thread( &X::f8, &x, 1, 2, 3, 4, 5, 6, 7, 8 ).join();
+ boost::thread( &X::f8, boost::ref(x), 1, 2, 3, 4, 5, 6, 7, 8 ).join();
 
- thread( &X::g8, &x, 1, 2, 3, 4, 5, 6, 7, 8 ).join();
- thread( &X::g8, x, 1, 2, 3, 4, 5, 6, 7, 8 ).join();
- thread( &X::g8, ref(x), 1, 2, 3, 4, 5, 6, 7, 8 ).join();
+ boost::thread( &X::g8, &x, 1, 2, 3, 4, 5, 6, 7, 8 ).join();
+ boost::thread( &X::g8, x, 1, 2, 3, 4, 5, 6, 7, 8 ).join();
+ boost::thread( &X::g8, boost::ref(x), 1, 2, 3, 4, 5, 6, 7, 8 ).join();
 
     BOOST_TEST( x.hash == 23558 );
 
- return report_errors();
+ return boost::report_errors();
 }

Modified: branches/proto/v4/libs/thread/test/test_xtime.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_xtime.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_xtime.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,5 +1,6 @@
 // Copyright (C) 2001-2003
 // William E. Kempf
+// Copyright (C) 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)
@@ -9,6 +10,8 @@
 #include <boost/thread/xtime.hpp>
 
 #include <boost/test/unit_test.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/condition.hpp>
 
 void test_xtime_cmp()
 {
@@ -53,6 +56,45 @@
     }
 }
 
+void test_xtime_mutex_backwards_compatibility()
+{
+ boost::timed_mutex m;
+ BOOST_CHECK(m.timed_lock(boost::get_xtime(boost::get_system_time()+boost::posix_time::milliseconds(10))));
+ m.unlock();
+ boost::timed_mutex::scoped_timed_lock lk(m,boost::get_xtime(boost::get_system_time()+boost::posix_time::milliseconds(10)));
+ BOOST_CHECK(lk.owns_lock());
+ if(lk.owns_lock())
+ {
+ lk.unlock();
+ }
+ BOOST_CHECK(lk.timed_lock(boost::get_xtime(boost::get_system_time()+boost::posix_time::milliseconds(10))));
+ if(lk.owns_lock())
+ {
+ lk.unlock();
+ }
+}
+
+bool predicate()
+{
+ return false;
+}
+
+
+void test_xtime_condvar_backwards_compatibility()
+{
+ boost::condition_variable cond;
+ boost::condition_variable_any cond_any;
+ boost::mutex m;
+
+ boost::mutex::scoped_lock lk(m);
+ cond.timed_wait(lk,boost::get_xtime(boost::get_system_time()+boost::posix_time::milliseconds(10)));
+ cond.timed_wait(lk,boost::get_xtime(boost::get_system_time()+boost::posix_time::milliseconds(10)),predicate);
+ cond_any.timed_wait(lk,boost::get_xtime(boost::get_system_time()+boost::posix_time::milliseconds(10)));
+ cond_any.timed_wait(lk,boost::get_xtime(boost::get_system_time()+boost::posix_time::milliseconds(10)),predicate);
+}
+
+
+
 boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[])
 {
     boost::unit_test_framework::test_suite* test =
@@ -60,6 +102,8 @@
 
     test->add(BOOST_TEST_CASE(&test_xtime_cmp));
     test->add(BOOST_TEST_CASE(&test_xtime_get));
+ test->add(BOOST_TEST_CASE(&test_xtime_mutex_backwards_compatibility));
+ test->add(BOOST_TEST_CASE(&test_xtime_condvar_backwards_compatibility));
 
     return test;
 }

Modified: branches/proto/v4/libs/tr1/doc/tr1.qbk
==============================================================================
--- branches/proto/v4/libs/tr1/doc/tr1.qbk (original)
+++ branches/proto/v4/libs/tr1/doc/tr1.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -867,7 +867,7 @@
    #include <utility>
 
 The existing class template std::pair, can also be accessed using the
-[link boost_tr1.tuple tuple interface].
+[link boost_tr1.subject_list.tuple tuple interface].
    
    namespace std {
    namespace tr1 {
@@ -1582,85 +1582,85 @@
 
 [section:array_header <array>]
 
-See: [link boost_tr1.array Fixed Size Array]
+See: [link boost_tr1.subject_list.array Fixed Size Array]
 
 [endsect]
 
 [section:cmath_header <cmath>]
 
-See: [link boost_tr1.special Special Functions]
+See: [link boost_tr1.unsupported.special Special Functions]
 
 [endsect]
 
 [section:complex_header <complex>]
 
-See: [link boost_tr1.complex Additional Overloads for Complex Number Algorithms]
+See: [link boost_tr1.subject_list.complex Additional Overloads for Complex Number Algorithms]
 
-See: [link boost_tr1.complex_trig Additional Complex Number Algorithms]
+See: [link boost_tr1.subject_list.complex_trig Additional Complex Number Algorithms]
 
 [endsect]
 
 [section:functional <functional>]
 
-See: [link boost_tr1.ref Reference Wrapper].
+See: [link boost_tr1.subject_list.ref Reference Wrapper].
 
-See: [link boost_tr1.result_of Result_of].
+See: [link boost_tr1.subject_list.result_of Result_of].
 
-See: [link boost_tr1.mem_fn Member Function Wrappers].
+See: [link boost_tr1.subject_list.mem_fn Member Function Wrappers].
 
-See: [link boost_tr1.bind Function Binders].
+See: [link boost_tr1.subject_list.bind Function Binders].
 
-See: [link boost_tr1.function Polymorphic Function Wrappers].
+See: [link boost_tr1.subject_list.function Polymorphic Function Wrappers].
 
-See: [link boost_tr1.hash Hash Functions].
+See: [link boost_tr1.subject_list.hash Hash Functions].
 
 [endsect]
 
 [section:memory <memory>]
 
-See: [link boost_tr1.ptrs Smart Pointers].
+See: [link boost_tr1.subject_list.ptrs Smart Pointers].
 
 [endsect]
 
 [section:random_header <random>]
 
-See: [link boost_tr1.random Random Numbers].
+See: [link boost_tr1.subject_list.random Random Numbers].
 
 [endsect]
 
 [section:regex_header <regex>]
 
-See: [link boost_tr1.regex Regular Expressions].
+See: [link boost_tr1.subject_list.regex Regular Expressions].
 
 [endsect]
 
 [section:tuple_header <tuple>]
 
-See: [link boost_tr1.tuple Tuple Types].
+See: [link boost_tr1.subject_list.tuple Tuple Types].
 
 [endsect]
 
 [section:type_traits_header <type_traits>]
 
-See: [link boost_tr1.type_traits Type Traits].
+See: [link boost_tr1.subject_list.type_traits Type Traits].
 
 [endsect]
 
 [section:unordered_map_header <unordered_map>]
 
-See: [link boost_tr1.unordered_map Unordered Associative Map]
+See: [link boost_tr1.unsupported.unordered_map Unordered Associative Map]
 
 [endsect]
 
 [section:unordered_set_header <unordered_set>]
 
-See: [link boost_tr1.unordered_set Unordered Associative Set].
+See: [link boost_tr1.unsupported.unordered_set Unordered Associative Set].
 
 [endsect]
 
 [section:utility_header <utility>]
 
-See: [link boost_tr1.utility Tuple Interface to std::pair].
+See: [link boost_tr1.subject_list.utility Tuple Interface to std::pair].
 
 [endsect]
 

Modified: branches/proto/v4/libs/tr1/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/tr1/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/tr1/test/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -46,11 +46,11 @@
    }
    for local file2 in [ glob config/tr1_has_tr1*fail.cpp ]
    {
- all_rules += [ compile-fail $(file2) : $(TR1_PROPERTIES) ] ;
+ all_rules += [ compile-fail $(file2) ] ;
    }
    for local filec in [ glob config/tr1_has_tr1*pass.cpp ]
    {
- all_rules += [ compile $(filec) : $(TR1_PROPERTIES) ] ;
+ all_rules += [ compile $(filec) ] ;
    }
    
    for local file3 in [ glob type_traits/*.cpp ]
@@ -71,6 +71,12 @@
       : $(file5:B)_std_header
       ] ;
    }
+ for local file6 in [ glob cyclic_depend/*.cpp ]
+ {
+ all_rules += [ compile $(file6)
+ : $(TR1_PROPERTIES)
+ ] ;
+ }
    #ECHO $(all_rules) ;
    return $(all_rules) ;
 }
@@ -86,3 +92,4 @@
 
 
 
+

Modified: branches/proto/v4/libs/tuple/test/another_tuple_test_bench.cpp
==============================================================================
--- branches/proto/v4/libs/tuple/test/another_tuple_test_bench.cpp (original)
+++ branches/proto/v4/libs/tuple/test/another_tuple_test_bench.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/tuple/test/io_test.cpp
==============================================================================
--- branches/proto/v4/libs/tuple/test/io_test.cpp (original)
+++ branches/proto/v4/libs/tuple/test/io_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/tuple/test/tuple_test_bench.cpp
==============================================================================
--- branches/proto/v4/libs/tuple/test/tuple_test_bench.cpp (original)
+++ branches/proto/v4/libs/tuple/test/tuple_test_bench.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,4 +1,4 @@
-// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi_at_[hidden])
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi_at_[hidden])
 //
 // Distributed under the Boost Software License, Version 1.0. (See
 // accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/units/doc/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/units/doc/Jamfile.v2 (original)
+++ branches/proto/v4/libs/units/doc/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,7 +11,11 @@
 import quickbook ;
 using boostbook ;
 using doxygen ;
-import generate_base_units ;
+import print ;
+import regex ;
+import sequence ;
+
+path-constant here : . ;
 
 rule run_doxygen ( target : files * : name : expand ? )
 {
@@ -30,7 +34,7 @@
                                    \"BOOST_UNITS_TYPEOF(a)=typeof(a)\" \\
                                    \"BOOST_PREVENT_MACRO_SUBSTITUTION=\" \\
                                    \"BOOST_UNITS_HAS_TYPEOF=1\" \\
- \"BOOST_UNITS_NON_SI_UNIT(namespace_, name_, symbol_, factor, other_unit, id)= \\
+ \"BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(namespace_, name_, name_string, symbol_, factor, other_unit, id)= \\
                                    namespace boost { namespace units { namespace namespace_ { \\
                                      struct name_ ## _base_unit : boost::units::base_unit<name_ ## _base_unit, other_unit::dimension_type, id> { \\
                                        static const char* name(); \\
@@ -51,23 +55,23 @@
 
 run_doxygen units_reference
   :
- [ glob ../../../boost/units/*.hpp ]
+ [ glob $(here)/../../../boost/units/*.hpp ]
   :
     "Units Reference"
   ;
 
 run_doxygen si_reference
   :
- ../../../boost/units/systems/si.hpp
- [ path.glob-tree ../../../boost/units/systems/si : *.hpp : detail ]
+ $(here)/../../../boost/units/systems/si.hpp
+ [ path.glob-tree $(here)/../../../boost/units/systems/si : *.hpp : detail ]
   :
     "SI System Reference"
   ;
 
 run_doxygen cgs_reference
   :
- ../../../boost/units/systems/cgs.hpp
- [ path.glob-tree ../../../boost/units/systems/cgs : *.hpp : detail ]
+ $(here)/../../../boost/units/systems/cgs.hpp
+ [ path.glob-tree $(here)/../../../boost/units/systems/cgs : *.hpp : detail ]
   :
     "CGS System Reference"
   ;
@@ -75,7 +79,7 @@
 rule make_base_units_doc ( directory : name ) {
     run_doxygen $(directory)_base_units_reference
       :
- [ path.glob-tree ../../../boost/units/base_units/$(directory) : *.hpp : detail conversions.hpp ]
+ [ path.glob-tree $(here)/../../../boost/units/base_units/$(directory) : *.hpp : detail conversions.hpp ]
       :
         "$(name) Base Units Reference"
       ;
@@ -95,8 +99,8 @@
 
 run_doxygen dimensions_reference
   :
- ../../../boost/units/physical_dimensions.hpp
- [ path.glob-tree ../../../boost/units/physical_dimensions : *.hpp : detail ]
+ $(here)/../../../boost/units/physical_dimensions.hpp
+ [ path.glob-tree $(here)/../../../boost/units/physical_dimensions : *.hpp : detail ]
   :
     "Dimensions Reference"
   ;
@@ -104,31 +108,68 @@
 run_doxygen trig_reference
   :
     #../../../boost/units/systems/trig.hpp
- [ path.glob-tree ../../../boost/units/systems/angle : *.hpp : detail ]
+ [ path.glob-tree $(here)/../../../boost/units/systems/angle : *.hpp : detail ]
   :
     "Trigonometry and Angle System Reference"
   ;
 
 run_doxygen temperature_reference
   :
- [ path.glob-tree ../../../boost/units/systems/temperature : *.hpp : detail ]
+ [ path.glob-tree $(here)/../../../boost/units/systems/temperature : *.hpp : detail ]
   :
     "Temperature System Reference"
   ;
 
 run_doxygen abstract_reference
   :
- ../../../boost/units/systems/abstract.hpp
+ $(here)/../../../boost/units/systems/abstract.hpp
   :
     "Abstract System Reference"
   ;
 
-generated-qbk base_units : [ path.glob-tree ../../../boost/units/base_units : *.hpp : detail conversions.hpp ] ;
+rule less ( a b ) {
+ if [ path.basename $(a) ] < [ path.basename $(b) ] {
+ return true ;
+ }
+}
+
+rule generate-qbk ( target : sources * : properties * ) {
+ print.output $(target) ;
+ local as-path = [ sequence.transform path.make : $(sources:G=) ] ;
+ local known = ;
+ local duplicated = ;
+ for local file in $(as-path) {
+ local base = [ path.basename $(file) ] ;
+ if $(base) in $(known) {
+ if ! $(base) in $(duplicated) {
+ duplicated += $(base) ;
+ }
+ } else {
+ known += $(base) ;
+ }
+ }
+ for local file in [ sequence.insertion-sort $(as-path) : less ] {
+ local output_filename = [ path.relative-to [ path.make $(here)/../../.. ] $(file) ] ;
+ local base_filename = [ path.basename $(file) ] ;
+ local base_unit = [ regex.replace $(base_filename) "\\.hpp" "" ] ;
+ if $(base_filename) in $(duplicated) {
+ # tack the directory name onto the end
+ local dir-name = [ path.basename [ path.parent $(file) ] ] ;
+ base_unit = "$(base_unit) ($(dir-name))" ;
+ }
+# this looks better, but it won't work until my boostbook patch for
+# annotation.xsl gets applied.
+# print.text "[headerref $(output_filename) $(base_unit)]\\n" : overwrite ;
+ print.text "[headerref $(output_filename)]\\n" : overwrite ;
+ }
+}
+
+make base_units.qbk : [ path.glob-tree $(here)/../../../boost/units/base_units : *.hpp : detail conversions.hpp ] : @generate-qbk ;
 explicit base_units ;
 
-install base_units_install : base_units : <location>. ;
+install base_units_install : base_units.qbk : <location>. ;
 
-boostbook standalone
+xml units
   :
     units.qbk
   :
@@ -141,6 +182,12 @@
     <dependency>trig_reference
     <dependency>temperature_reference
     <dependency>abstract_reference
+;
+
+boostbook standalone
+ :
+ units
+ :
     <xsl:param>toc.max.depth=1
     <xsl:param>toc.section.depth=8
     <xsl:param>chunk.section.depth=8

Deleted: branches/proto/v4/libs/units/doc/generate_base_units.jam
==============================================================================
--- branches/proto/v4/libs/units/doc/generate_base_units.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,56 +0,0 @@
-# generate_base_units.jam
-#
-# Copyright (c) 2008
-# Steven Watanabe
-#
-# Distributed under the Boost Software License, Version 1.0. (See
-# accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt
-
-import quickbook ;
-import type ;
-import generators ;
-import print ;
-import path ;
-import regex ;
-import sequence ;
-
-rule less ( a b ) {
- if [ path.basename $(a) ] < [ path.basename $(b) ] {
- return true ;
- }
-}
-
-rule generate_qbk ( target : sources * : properties * ) {
- print.output $(target) ;
- local as-path = [ sequence.transform path.make : $(sources:G=) ] ;
- local known = ;
- local duplicated = ;
- for local file in $(as-path) {
- local base = [ path.basename $(file) ] ;
- if $(base) in $(known) {
- if ! $(base) in $(duplicated) {
- duplicated += $(base) ;
- }
- } else {
- known += $(base) ;
- }
- }
- for local file in [ sequence.insertion-sort $(as-path) : less ] {
- local output_filename = [ regex.replace $(file) "\\.\\./" "" ] ;
- local base_filename = [ path.basename $(file) ] ;
- local base_unit = [ regex.replace $(base_filename) "\\.hpp" "" ] ;
- if $(base_filename) in $(duplicated) {
- # tack the directory name onto the end
- local dir-name = [ path.basename [ path.parent $(file) ] ] ;
- base_unit = "$(base_unit) ($(dir-name))" ;
- }
-# this looks better, but it won't work until my boostbook patch for
-# annotation.xsl gets applied.
-# print.text "[headerref $(output_filename) $(base_unit)]\\n" : overwrite ;
- print.text "[headerref $(output_filename)]\\n" : overwrite ;
- }
-}
-
-type.register GENERATED_QBK : : QUICKBOOK ;
-generators.register-composing generate_base_units.generate_qbk : HPP : GENERATED_QBK ;

Modified: branches/proto/v4/libs/units/doc/units.qbk
==============================================================================
--- branches/proto/v4/libs/units/doc/units.qbk (original)
+++ branches/proto/v4/libs/units/doc/units.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -125,7 +125,7 @@
 * *Quantity* : A quantity represents a concrete amount of a unit. Thus, while the meter is the base
    unit of length in the SI system, 5.5 meters is a quantity of length in that system.
 
-To begin, we present two short tutorials. [@../../tutorial/tutorial_1.cpp Tutorial1] demonstrates the use of
+To begin, we present two short tutorials. [@../../libs/units/tutorial/tutorial_1.cpp Tutorial1] demonstrates the use of
 [@http://en.wikipedia.org/wiki/SI_units SI] units. After including the appropriate system headers
 and the headers for the various SI units we will need (all SI units can be included with
 [headerref boost/units/systems/si.hpp]) and for quantity I/O ([headerref boost/units/io.hpp]), we define
@@ -183,23 +183,23 @@
 [@http://en.wikipedia.org/wiki/Fundamental_units units] obey the rules of a specific algebra.
 We will refer to a pair of a base dimension and a rational exponent as a *fundamental dimension*,
 and a list composed of an arbitrary number of fundamental dimensions as a *composite dimension* or, simply,
-*dimension*. In particular, given a set of [$../../../units/images/form_0.png] fundamental dimensions
-denoted by [$../../../units/images/form_1.png] and a set of [$../../../units/images/form_0.png]
-rational exponents [$../../../units/images/form_2.png], any possible (composite) dimension can be written
-as [$../../../units/images/form_3.png].
+*dimension*. In particular, given a set of [$../../libs/units/images/form_0.png] fundamental dimensions
+denoted by [$../../libs/units/images/form_1.png] and a set of [$../../libs/units/images/form_0.png]
+rational exponents [$../../libs/units/images/form_2.png], any possible (composite) dimension can be written
+as [$../../libs/units/images/form_3.png].
 
 Composite dimensions obey the algebraic rules for dimensional analysis. In particular, for any scalar value,
-[$../../../units/images/form_4.png],
-and composite dimensions [$../../../units/images/form_5.png]
-and [$../../../units/images/form_6.png], where
-[$../../../units/images/form_7.png], we have:
+[$../../libs/units/images/form_4.png],
+and composite dimensions [$../../libs/units/images/form_5.png]
+and [$../../libs/units/images/form_6.png], where
+[$../../libs/units/images/form_7.png], we have:
 
-[$../../../units/images/form_8.png]
+[$../../libs/units/images/form_8.png]
 
 Users of a dimensional analysis library should be able to specify an arbitrary list of base dimensions to
 produce a composite dimension. This potentially includes repeated tags. For example,
-it should be possible to express energy as [$../../../units/images/form_9.png], [$../../../units/images/form_10.png],
-[$../../../units/images/form_11.png], or any other permutation of mass, length, and time having aggregate exponents of
+it should be possible to express energy as [$../../libs/units/images/form_9.png], [$../../libs/units/images/form_10.png],
+[$../../libs/units/images/form_11.png], or any other permutation of mass, length, and time having aggregate exponents of
 1, 2, and -2, respectively.
 In order to be able to perform computations on arbitrary sets of dimensions,
 all composite dimensions must be reducible to an unambiguous final composite dimension, which we will refer to as a
@@ -207,7 +207,7 @@
 
 # fundamental dimensions are consistently ordered
 # dimensions with zero exponent are elided. Note that reduced dimensions never have more than
- [$../../../units/images/form_0.png] base dimensions, one for each distinct fundamental dimension, but may have fewer.
+ [$../../libs/units/images/form_0.png] base dimensions, one for each distinct fundamental dimension, but may have fewer.
 
 In our implementation, base dimensions are associated with tag types. As we will ultimately
 represent composite dimensions as typelists, we must provide some mechanism for sorting
@@ -389,10 +389,10 @@
 natural numbers] where the operator arithmetic obeys the following rules (using the standard notation for
 [@http://en.wikipedia.org/wiki/Number number systems]):
 
-* [$../../../units/images/form_12.png]
-* [$../../../units/images/form_13.png]
-* [$../../../units/images/form_14.png]
-* [$../../../units/images/form_15.png]
+* [$../../libs/units/images/form_12.png]
+* [$../../libs/units/images/form_13.png]
+* [$../../libs/units/images/form_14.png]
+* [$../../libs/units/images/form_15.png]
 
 This library is designed to support arbitrary value type algebra for addition, subtraction, multiplication, division, and
 rational powers and roots. It uses Boost.Typeof to deduce the result of these operators. For compilers that
@@ -493,7 +493,7 @@
 
 [section:DimensionExample Dimension Example]
 
-([@../../example/dimension.cpp dimension.cpp])
+([@../../libs/units/example/dimension.cpp dimension.cpp])
 
 By using MPL metafunctions and the template specializations for operations on composite dimensions
 (defined in [headerref boost/units/dimension.hpp]) it is possible to perform compile time arithmetic
@@ -512,7 +512,7 @@
 
 [section:UnitExample Unit Example]
 
-([@../../example/unit.cpp unit.cpp])
+([@../../libs/units/example/unit.cpp unit.cpp])
 
 This example demonstrates the use of the simple but functional unit system implemented in
 [headerref libs/units/example/test_system.hpp] :
@@ -529,7 +529,7 @@
 
 [section:QuantityExample Quantity Example]
 
-([@../../example/quantity.cpp quantity.cpp])
+([@../../libs/units/example/quantity.cpp quantity.cpp])
 
 This example demonstrates how to use quantities of our toy unit system :
 
@@ -556,7 +556,7 @@
 
 [section:KitchenSinkExample Kitchen Sink Example]
 
-([@../../example/kitchen_sink.cpp kitchen_sink.cpp])
+([@../../libs/units/example/kitchen_sink.cpp kitchen_sink.cpp])
 
 This example provides a fairly extensive set of tests covering most of the [___quantity] functionality.
 It uses the SI unit system defined in [headerref boost/units/systems/si.hpp].
@@ -675,7 +675,7 @@
 
 [section:ConversionExample Conversion Example]
 
-([@../../example/conversion.cpp conversion.cpp])
+([@../../libs/units/example/conversion.cpp conversion.cpp])
 
 This example demonstrates the various allowed conversions between SI and CGS units. Defining some
 quantities
@@ -713,7 +713,7 @@
 
 [section:UDTExample User Defined Types]
 
-([@../../example/quaternion.cpp quaternion.cpp])
+([@../../libs/units/example/quaternion.cpp quaternion.cpp])
 
 This example demonstrates the use of `boost::math::quaternion` as a value type for [___quantity] and the converse.
 For the first case, we first define specializations of [___power_typeof_helper] and [___root_typeof_helper] for
@@ -758,7 +758,7 @@
 
 [section:ComplexExample Complex Example]
 
-([@../../example/complex.cpp complex.cpp])
+([@../../libs/units/example/complex.cpp complex.cpp])
 
 This example demonstrates how to implement a replacement `complex` class that functions correctly both as a
 quantity value type and as a quantity container class, including heterogeneous multiplication and division
@@ -792,7 +792,7 @@
 
 [section:PerformanceExample Performance Example]
 
-([@../../example/performance.cpp performance.cpp])
+([@../../libs/units/example/performance.cpp performance.cpp])
 
 This example provides an ad hoc performance test to verify that zero runtime overhead
 is incurred when using [___quantity] in place of `double`. Note that performance
@@ -806,7 +806,7 @@
 
 [section:RadarBeamHeightExample Radar Beam Height]
 
-([@../../example/radar_beam_height.cpp radar_beam_height.cpp])
+([@../../libs/units/example/radar_beam_height.cpp radar_beam_height.cpp])
 
 [import ../example/radar_beam_height.cpp]
 
@@ -850,7 +850,7 @@
 
 [section:HeterogeneousUnitExample Heterogeneous Unit Example]
 
-([@../../example/heterogeneous_unit.cpp heterogeneous_unit.cpp])
+([@../../libs/units/example/heterogeneous_unit.cpp heterogeneous_unit.cpp])
 
 [import ../example/heterogeneous_unit.cpp]
 
@@ -876,7 +876,7 @@
 
 [section:AbsoluteRelativeTemperatureExample Absolute and Relative Temperature Example]
 
-([@../../example/temperature.cpp temperature.cpp])
+([@../../libs/units/example/temperature.cpp temperature.cpp])
 
 [import ../example/temperature.cpp]
 
@@ -902,7 +902,7 @@
 
 [section:RuntimeConversionFactorExample Runtime Conversion Factor Example]
 
-([@../../example/runtime_conversion_factor.cpp runtime_conversion_factor.cpp])
+([@../../libs/units/example/runtime_conversion_factor.cpp runtime_conversion_factor.cpp])
 
 [import ../example/runtime_conversion_factor.cpp]
 
@@ -915,7 +915,7 @@
 
 [section:UnitsWithNonbaseDimensions Units with Non-base Dimensions]
 
-([@../../example/non_base_dimension.cpp non_base_dimension.cpp])
+([@../../libs/units/example/non_base_dimension.cpp non_base_dimension.cpp])
 
 [import ../example/non_base_dimension.cpp]
 
@@ -927,7 +927,7 @@
 
 [section:OutputForCompositeUnits Output for Composite Units]
 
-([@../../example/composite_output.cpp composite_output.cpp])
+([@../../libs/units/example/composite_output.cpp composite_output.cpp])
 
 [import ../example/composite_output.cpp]
 
@@ -960,7 +960,7 @@
 This code demonstrates the use of the `conversion_factor` free function to determine
 the scale factor between two units.
 
-([@../../example/conversion_factor.cpp conversion_factor.cpp])
+([@../../libs/units/example/conversion_factor.cpp conversion_factor.cpp])
 
 [import ../example/conversion_factor.cpp]
 
@@ -974,7 +974,7 @@
 
 [section:RuntimeUnits Runtime Units]
 
-([@../../example/runtime_unit.cpp runtime_unit.cpp])
+([@../../libs/units/example/runtime_unit.cpp runtime_unit.cpp])
 
 [import ../example/runtime_unit.cpp]
 
@@ -986,6 +986,20 @@
 
 [endsect]
 
+[section:lambda Interoperability with Boost.Lambda]
+
+([@../../libs/units/example/lambda.cpp lambda.cpp])
+
+[import ../example/lambda.cpp]
+
+The header [headerref boost/units/lambda.hpp] provides overloads
+and specializations needed to make Boost.Units usable with the
+Boost.Lambda library.
+
+[lambda_snippet_1]
+
+[endsect]
+
 [endsect]
 
 [section:Utilities Utilities]
@@ -1189,8 +1203,12 @@
 
 [section:Acknowledgements Acknowledgements]
 
-Thanks to David Walthall for his assistance in debugging and
-testing on a variety of platforms.
+Matthias C. Schabel would like to acknowledge the Department of Defense for its support of this work under
+the Prostate Cancer Research Program New Investigator Award W81XWH-04-1-0042 and the National Institutes of Health for their
+support of this work under the NIBIB Mentored Quantitative Research Development Award K25EB005077.
+
+Thanks to David Walthall for his assistance in debugging and testing on a variety of platforms and Torsten Maehne for
+his work on interfacing the Boost Units and Boost Lambda libraries.
 
 Thanks to:
 
@@ -1203,6 +1221,7 @@
 * Janek Kozicki,
 * Andy Little,
 * Kevin Lynch,
+* Torsten Maehne
 * Noah Roberts,
 * Andrey Semashev,
 * David Walthall,
@@ -1225,9 +1244,9 @@
 
 [section:ReleaseNotes Release Notes]
 
-1.0.0 (June 1, 2008) :
+1.0.0 (August 1, 2008) :
 
-*
+* Initial release with Boost 1.36
 
 0.7.1 (March 14, 2007) :
 
@@ -1257,7 +1276,7 @@
 * added abstract units in [headerref boost/units/systems/abstract.hpp] to allow abstract dimensional
   analysis
 * new example demonstrating implementation of code based on requirements from
- Michael Fawcett ([@../../libs/units/example/radar_beam_height.hpp radar_beam_height.cpp])
+ Michael Fawcett ([@../../libs/units/example/radar_beam_height.cpp radar_beam_height.cpp])
 
 0.6.1 (February 13, 2007) :
 

Modified: branches/proto/v4/libs/units/example/kitchen_sink.cpp
==============================================================================
--- branches/proto/v4/libs/units/example/kitchen_sink.cpp (original)
+++ branches/proto/v4/libs/units/example/kitchen_sink.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -117,7 +117,7 @@
 //[kitchen_sink_output_12
 V = (12.5,0) V
 I = (3,4) A
-Z = (1.5,-2) Ω
+Z = (1.5,-2) Ohm
 I*Z = (12.5,0) V
 //]
 

Modified: branches/proto/v4/libs/units/example/temperature.cpp
==============================================================================
--- branches/proto/v4/libs/units/example/temperature.cpp (original)
+++ branches/proto/v4/libs/units/example/temperature.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,10 +21,10 @@
 @verbatim
 
 //[ temperature_output_1
-{ 32 } °F
+{ 32 } F
 { 273.15 } K
 { 273.15 } K
-[ 32 ] °F
+[ 32 ] F
 [ 17.7778 ] K
 [ 17.7778 ] K
 //]

Modified: branches/proto/v4/libs/units/index.html
==============================================================================
--- branches/proto/v4/libs/units/index.html (original)
+++ branches/proto/v4/libs/units/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,17 +1,17 @@
 <html>
 <head>
-<meta http-equiv="refresh" content="0; URL=doc/html/index.html">
+<meta http-equiv="refresh" content="0; URL=../../doc/html/boost_units.html">
 </head>
 <body>
 Automatic redirection failed, please go to
-doc/html/index.html
+../../doc/html/boost_units.html
 <hr>
 <tt>
-mcs::units - A C++ library for zero-overhead dimensional analysis and
+Boost.Units - A C++ library for zero-overhead dimensional analysis and
 unit/quantity manipulation and conversion <br>
 <br>
-Copyright (C) 2003-2007 Matthias Christian Schabel <br>
-Copyright (C) 2007 Steven Watanabe <br>
+Copyright (C) 2003-2008 Matthias Christian Schabel <br>
+Copyright (C) 2007-2008 Steven Watanabe <br>
 <br>
 Distributed under the Boost Software License, Version 1.0. (See
 accompanying file LICENSE_1_0.txt or copy at

Modified: branches/proto/v4/libs/units/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/units/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/units/test/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -8,7 +8,7 @@
 # http://www.boost.org/LICENSE_1_0.txt
 
 project units_test :
- requirements <include>$(BOOST_ROOT) <include>../../.. <warnings>all <toolset>msvc:<asynch-exceptions>on
+ requirements <include>$(BOOST_ROOT) <include>../../.. <toolset>msvc:<asynch-exceptions>on
 ;
 
 check-conversion-dependencies = [ path.glob-tree ../../../boost/units/systems/base_units : *.hpp ] ;
@@ -32,6 +32,7 @@
     [ compile test_dimensionless_ice2.cpp : : ]
     [ compile test_mixed_value_types.cpp : : ]
     [ compile test_complicated_system.cpp : : ]
+ [ compile test_reduce_unit.cpp ]
     [ run test_dimensionless_quantity.cpp : : : : ]
     [ run test_implicit_conversion.cpp : : : : ]
     [ run test_quantity.cpp : : : : ]
@@ -44,6 +45,7 @@
     [ run test_limits.cpp : : : : ]
     [ run test_custom_unit.cpp : : : : ]
     [ run test_scaled_conversion.cpp : : : : ]
+ [ run test_lambda.cpp : : : : ]
     [ run test_scaled_unit.cpp test_framework : : : : ]
 # [ run check_conversion_defs.cpp $(checklibs) : : : <dependency>$(check-conversion-dependencies) : ]
     [ compile-fail fail_implicit_conversion.cpp : : ]

Modified: branches/proto/v4/libs/units/test_headers/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/units/test_headers/Jamfile.v2 (original)
+++ branches/proto/v4/libs/units/test_headers/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,6 +1,6 @@
 # Jamfile.v2
 #
-# Copyright (c) 2007
+# Copyright (c) 2007-2008
 # Steven Watanabe
 #
 # Distributed under the Boost Software License, Version 1.0. (See
@@ -11,19 +11,21 @@
 import path ;
 import regex ;
 import print ;
-import generate_header ;
 
 project test_headers :
     requirements <include>$(BOOST_ROOT) <include>../../..
 ;
 
-headers = ;
+headers = [ path.glob-tree ../../../boost/units : *.hpp : detail ] ;
 
 rule setup ( ) {
- for local file in [ path.glob-tree ../../../boost/units : *.hpp : cmath_*_impl*.hpp ] {
+ for local file in $(headers) {
 
- headers += $(file) ;
- result += [ compile test.cpp : <define>BOOST_UNITS_HEADER_NAME=$(file) <dependency>$(file) : [ regex.replace [ path.relative-to ../../.. $(file) ] "/" "_" ] ] ;
+ result += [ compile test.cpp :
+ <define>BOOST_UNITS_HEADER_NAME=$(file)
+ <dependency>$(file)
+ :
+ [ regex.replace [ path.relative-to ../../.. $(file) ] "/" "_" ] ] ;
 
   }
   return $(result) ;
@@ -31,13 +33,24 @@
 
 tests = [ setup ] ;
 
-generate-include-all-cpp include_all1 : $(headers) ;
-generate-include-all-cpp include_all2 : $(headers) ;
+rule generate-include-all ( target : sources * : properties * ) {
+
+ print.output $(target) ;
+
+ for local file in $(sources) {
+ print.text "#include <$(file:G=)>
+" : overwrite ;
+ }
+
+}
+
+make include_all1.cpp : $(headers) : @generate-include-all ;
+make include_all2.cpp : $(headers) : @generate-include-all ;
 
 import testing ;
 
 test-suite units_headers :
   $(tests)
 # this ought to catch non-inlined functions and other duplicate definitions
- [ link include_all1 include_all2 main.cpp : <include>. : include_all_headers ]
+ [ link include_all1.cpp include_all2.cpp main.cpp : <include>. : include_all_headers ]
   ;

Deleted: branches/proto/v4/libs/units/test_headers/generate_header.jam
==============================================================================
--- branches/proto/v4/libs/units/test_headers/generate_header.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,28 +0,0 @@
-# generate_header.jam
-#
-# Copyright (c) 2008
-# Steven Watanabe
-#
-# Distributed under the Boost Software License, Version 1.0. (See
-# accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt)
-
-import type ;
-import generators ;
-import print ;
-import path ;
-
-rule generate_include_all ( target : sources * : properties * ) {
-
- print.output $(target) ;
-
- for local file in $(sources) {
- print.text "#include <$(file:G=)>
-" : overwrite ;
- }
-
-}
-
-type.register GENERATE_INCLUDE_ALL_CPP : : CPP ;
-
-generators.register-composing generate_header.generate_include_all : HPP : GENERATE_INCLUDE_ALL_CPP ;

Modified: branches/proto/v4/libs/unordered/doc/bibliography.xml
==============================================================================
--- branches/proto/v4/libs/unordered/doc/bibliography.xml (original)
+++ branches/proto/v4/libs/unordered/doc/bibliography.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,3 +1,8 @@
+<!--
+Copyright Daniel James 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)
+-->
 <section id="unordered.bibliography">
 <title>Bibliography</title>
 <bibliography>

Modified: branches/proto/v4/libs/unordered/doc/changes.qbk
==============================================================================
--- branches/proto/v4/libs/unordered/doc/changes.qbk (original)
+++ branches/proto/v4/libs/unordered/doc/changes.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -10,7 +10,7 @@
 Initial review version, for the review conducted from 7th December 2007 to
 16th December 2007.
 
-[h2 1.35.0 Add-on - 31st Match 2008]
+[h2 1.35.0 Add-on - 31st March 2008]
 
 Unofficial release uploaded to vault, to be used with Boost 1.35.0. Incorporated
 many of the suggestions from the review.
@@ -31,7 +31,6 @@
 * Emplace support when rvalue references and variadic template are available.
 * More efficient node allocation when rvalue references and variadic template
   are available.
-* Added equality operators and hash functions
- ([@http://svn.boost.org/trac/boost/ticket/1557 Ticket 1557]).
+* Added equality operators.
 
 [endsect]

Modified: branches/proto/v4/libs/unordered/doc/comparison.qbk
==============================================================================
--- branches/proto/v4/libs/unordered/doc/comparison.qbk (original)
+++ branches/proto/v4/libs/unordered/doc/comparison.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -72,7 +72,7 @@
     [
         [Can be compared using the `==`, `!=`, `<`, `<=`, `>`, `>=` operators.]
         [No comparison operators are defined in the standard, although
- [link unordered.rationale.equality_operator
+ [link unordered.rationale.equality_operators
             implementations might extend the containers to support `==` and
             `!=`].]
     ]

Modified: branches/proto/v4/libs/unordered/doc/hash_equality.qbk
==============================================================================
--- branches/proto/v4/libs/unordered/doc/hash_equality.qbk (original)
+++ branches/proto/v4/libs/unordered/doc/hash_equality.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -23,8 +23,8 @@
 [import src_code/dictionary.cpp]
 [case_sensitive_dictionary_fnv]
 
-An example implementation of FNV-1, and some other hash functions are supplied
-in the examples directory.
+There is an [@../../libs/unordered/examples/fnv1.hpp implementation
+of FNV-1] in the examples directory.
 
 If you wish to use a different equality function,
 you will also need to use a matching hash function. For

Modified: branches/proto/v4/libs/unordered/doc/intro.qbk
==============================================================================
--- branches/proto/v4/libs/unordered/doc/intro.qbk (original)
+++ branches/proto/v4/libs/unordered/doc/intro.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -36,9 +36,7 @@
 __draft__.
 
 This library supplies an almost complete implementation of the specification in
-the __draft__, (it doesn't support `emplace` yet, see the [link
-unordered.rationale.future_developments Implementation Rationale] section for more
-details). If accepted the containers should also be added to __boost-tr1__.
+the __draft__.
 
 `unordered_set` and `unordered_multiset` are defined in the header
 <[headerref boost/unordered_set.hpp]>

Modified: branches/proto/v4/libs/unordered/doc/rationale.qbk
==============================================================================
--- branches/proto/v4/libs/unordered/doc/rationale.qbk (original)
+++ branches/proto/v4/libs/unordered/doc/rationale.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -96,6 +96,15 @@
 
 So, this implementation uses a prime number for the hash table size.
 
+[h2 Equality operators]
+
+`operator==` and `operator!=` are not included in the standard, but I've
+added them as I think they could be useful and can be efficiently
+implemented. They are specified
+differently to the standard associative containers, comparing keys
+using the equality predicate rather than `operator==`. This is inconsistent
+with the other containers but it is probably closer to user's expectations.
+
 [h2 Active Issues and Proposals]
 
 [h3 Removing unused allocator functions]
@@ -181,32 +190,14 @@
 of elements with equivalent keys (i.e. if they're stable under `insert` and `erase`).
 This is [@http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#518 issue 581].
 The current proposal is that insert, erase and rehash are stable - so they are here.
+(Update: during the release of this version, this requirement was added to
+[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2691.pdf
+the lastest working draft]).
 
 [h3 const_local_iterator cbegin, cend missing from TR1]
 
-[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2482.html#691
+[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2684.html#691
 Issue 691] is that `cbegin` and `cend` are missing for local iterators.
 The current resolution is that they'll be added, so I've added them.
 
-[h2 Future Developments]
-
-[h3 Support for `emplace`]
-
-In __n2369__ a new member function, `emplace` was added to the containers to
-allow placement insert, as described in __n2345__. To fully implement this
-`std::forward` is required, along with new functions in `std::allocator` and
-new constructors in `std::pair`. But partial support is possible - especially
-if I don't use the `construct` member of allocators.
-
-[h3 Equality operator]
-
-While `operator==` and `operator!=` are not included in the standard, it's
-possible to implement them for all the containers - this is helped by having
-stable order of elements with equivalent keys. They will need to be specified
-differently to the standard associative containers, probably comparing keys
-using the equality predicate rather than `operator==`. This is inconsistent
-with the other containers but it is probably closer to user's expectations.
-
-If these are added then a `hash_value` free function should also be added.
-
 [endsect]

Modified: branches/proto/v4/libs/unordered/doc/ref.xml
==============================================================================
--- branches/proto/v4/libs/unordered/doc/ref.xml (original)
+++ branches/proto/v4/libs/unordered/doc/ref.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -181,7 +181,7 @@
               <para>The copy constructor. Copies the contained elements, hash function, predicate, maximum load factor and allocator.</para>
             </description>
           </constructor>
- <constructor>
+ <constructor specifiers="explicit">
             <parameter name="a">
               <paramtype>Allocator const&amp;</paramtype>
             </parameter>
@@ -284,6 +284,7 @@
               <notes>
                 <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para>
                 <para>Pointers and references to elements are never invalidated.</para>
+ <para>Only available on compilers with support for variadic template arguments and rvalue references.</para>
               </notes>
             </method>
             <method name="emplace">
@@ -312,6 +313,7 @@
                 <para>The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same value. </para>
                 <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para>
                 <para>Pointers and references to elements are never invalidated.</para>
+ <para>Only available on compilers with support for variadic template arguments and rvalue references.</para>
               </notes>
             </method>
             <method name="insert">
@@ -636,10 +638,10 @@
               <parameter name="z">
                 <paramtype>float</paramtype>
               </parameter>
- <type>float</type>
- <returns>
+ <type>void</type>
+ <effects>
                 <para>Changes the container's maximum load factor, using <code>z</code> as a hint.</para>
- </returns>
+ </effects>
             </method>
             <method name="rehash">
               <parameter name="n">
@@ -700,25 +702,6 @@
                 <para>This is a boost extension.</para>
               </notes>
             </function>
- <function name="hash_value">
- <template>
- <template-type-parameter name="Value">
- </template-type-parameter>
- <template-type-parameter name="Hash">
- </template-type-parameter>
- <template-type-parameter name="Pred">
- </template-type-parameter>
- <template-type-parameter name="Alloc">
- </template-type-parameter>
- </template>
- <parameter name="x">
- <paramtype>unordered_set&lt;Value, Hash, Pred, Alloc&gt; const&amp;</paramtype>
- </parameter>
- <type>std::size_t</type>
- <notes>
- <para>This is a boost extension.</para>
- </notes>
- </function>
           </free-function-group>
           <free-function-group name="swap">
             <function name="swap">
@@ -928,7 +911,7 @@
               <para>The copy constructor. Copies the contained elements, hash function, predicate, maximum load factor and allocator.</para>
             </description>
           </constructor>
- <constructor>
+ <constructor specifiers="explicit">
             <parameter name="a">
               <paramtype>Allocator const&amp;</paramtype>
             </parameter>
@@ -1030,6 +1013,7 @@
               <notes>
                 <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para>
                 <para>Pointers and references to elements are never invalidated.</para>
+ <para>Only available on compilers with support for variadic template arguments and rvalue references.</para>
               </notes>
             </method>
             <method name="emplace">
@@ -1058,6 +1042,7 @@
                 <para>The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same value. </para>
                 <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para>
                 <para>Pointers and references to elements are never invalidated.</para>
+ <para>Only available on compilers with support for variadic template arguments and rvalue references.</para>
               </notes>
             </method>
             <method name="insert">
@@ -1381,10 +1366,10 @@
               <parameter name="z">
                 <paramtype>float</paramtype>
               </parameter>
- <type>float</type>
- <returns>
+ <type>void</type>
+ <effects>
                 <para>Changes the container's maximum load factor, using <code>z</code> as a hint.</para>
- </returns>
+ </effects>
             </method>
             <method name="rehash">
               <parameter name="n">
@@ -1445,25 +1430,6 @@
                 <para>This is a boost extension.</para>
               </notes>
             </function>
- <function name="hash_value">
- <template>
- <template-type-parameter name="Value">
- </template-type-parameter>
- <template-type-parameter name="Hash">
- </template-type-parameter>
- <template-type-parameter name="Pred">
- </template-type-parameter>
- <template-type-parameter name="Alloc">
- </template-type-parameter>
- </template>
- <parameter name="x">
- <paramtype>unordered_multiset&lt;Value, Hash, Pred, Alloc&gt; const&amp;</paramtype>
- </parameter>
- <type>std::size_t</type>
- <notes>
- <para>This is a boost extension.</para>
- </notes>
- </function>
           </free-function-group>
           <free-function-group name="swap">
             <function name="swap">
@@ -1685,7 +1651,7 @@
               <para>The copy constructor. Copies the contained elements, hash function, predicate, maximum load factor and allocator.</para>
             </description>
           </constructor>
- <constructor>
+ <constructor specifiers="explicit">
             <parameter name="a">
               <paramtype>Allocator const&amp;</paramtype>
             </parameter>
@@ -1788,6 +1754,7 @@
               <notes>
                 <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para>
                 <para>Pointers and references to elements are never invalidated.</para>
+ <para>Only available on compilers with support for variadic template arguments and rvalue references.</para>
               </notes>
             </method>
             <method name="emplace">
@@ -1816,6 +1783,7 @@
                 <para>The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same key. </para>
                 <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para>
                 <para>Pointers and references to elements are never invalidated.</para>
+ <para>Only available on compilers with support for variadic template arguments and rvalue references.</para>
               </notes>
             </method>
             <method name="insert">
@@ -2175,10 +2143,10 @@
               <parameter name="z">
                 <paramtype>float</paramtype>
               </parameter>
- <type>float</type>
- <returns>
+ <type>void</type>
+ <effects>
                 <para>Changes the container's maximum load factor, using <code>z</code> as a hint.</para>
- </returns>
+ </effects>
             </method>
             <method name="rehash">
               <parameter name="n">
@@ -2243,27 +2211,6 @@
                 <para>This is a boost extension.</para>
               </notes>
             </function>
- <function name="hash_value">
- <template>
- <template-type-parameter name="Key">
- </template-type-parameter>
- <template-type-parameter name="Mapped">
- </template-type-parameter>
- <template-type-parameter name="Hash">
- </template-type-parameter>
- <template-type-parameter name="Pred">
- </template-type-parameter>
- <template-type-parameter name="Alloc">
- </template-type-parameter>
- </template>
- <parameter name="x">
- <paramtype>unordered_map&lt;Key, Mapped, Hash, Pred, Alloc&gt; const&amp;</paramtype>
- </parameter>
- <type>std::size_t</type>
- <notes>
- <para>This is a boost extension.</para>
- </notes>
- </function>
           </free-function-group>
           <free-function-group name="swap">
             <function name="swap">
@@ -2483,7 +2430,7 @@
               <para>The copy constructor. Copies the contained elements, hash function, predicate, maximum load factor and allocator.</para>
             </description>
           </constructor>
- <constructor>
+ <constructor specifiers="explicit">
             <parameter name="a">
               <paramtype>Allocator const&amp;</paramtype>
             </parameter>
@@ -2585,6 +2532,7 @@
               <notes>
                 <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para>
                 <para>Pointers and references to elements are never invalidated.</para>
+ <para>Only available on compilers with support for variadic template arguments and rvalue references.</para>
               </notes>
             </method>
             <method name="emplace">
@@ -2613,6 +2561,7 @@
                 <para>The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same key. </para>
                 <para>Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor.</para>
                 <para>Pointers and references to elements are never invalidated.</para>
+ <para>Only available on compilers with support for variadic template arguments and rvalue references.</para>
               </notes>
             </method>
             <method name="insert">
@@ -2936,10 +2885,10 @@
               <parameter name="z">
                 <paramtype>float</paramtype>
               </parameter>
- <type>float</type>
- <returns>
+ <type>void</type>
+ <effects>
                 <para>Changes the container's maximum load factor, using <code>z</code> as a hint.</para>
- </returns>
+ </effects>
             </method>
             <method name="rehash">
               <parameter name="n">
@@ -3004,27 +2953,6 @@
                 <para>This is a boost extension.</para>
               </notes>
             </function>
- <function name="hash_value">
- <template>
- <template-type-parameter name="Key">
- </template-type-parameter>
- <template-type-parameter name="Mapped">
- </template-type-parameter>
- <template-type-parameter name="Hash">
- </template-type-parameter>
- <template-type-parameter name="Pred">
- </template-type-parameter>
- <template-type-parameter name="Alloc">
- </template-type-parameter>
- </template>
- <parameter name="x">
- <paramtype>unordered_multimap&lt;Key, Mapped, Hash, Pred, Alloc&gt; const&amp;</paramtype>
- </parameter>
- <type>std::size_t</type>
- <notes>
- <para>This is a boost extension.</para>
- </notes>
- </function>
           </free-function-group>
           <free-function-group name="swap">
             <function name="swap">
@@ -3062,4 +2990,4 @@
         </class>
       </namespace>
     </header>
- </library-reference>
\ No newline at end of file
+ </library-reference>

Modified: branches/proto/v4/libs/unordered/doc/src_code/dictionary.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/doc/src_code/dictionary.cpp (original)
+++ branches/proto/v4/libs/unordered/doc/src_code/dictionary.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 #include <boost/unordered_map.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/algorithm/string/predicate.hpp>
-#include "../../examples/hash_functions/fnv-1.hpp"
+#include "../../examples/fnv1.hpp"
 
 //[case_insensitive_functions
     struct iequal_to

Modified: branches/proto/v4/libs/unordered/test/helpers/count.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/helpers/count.hpp (original)
+++ branches/proto/v4/libs/unordered/test/helpers/count.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -53,6 +53,11 @@
     struct globally_counted_object
         : counted_object<globally_counted_object> {};
 
+ // This won't be a problem as I'm only using a single compile unit
+ // in each test (this is actually require by the minimal test
+ // framework).
+ //
+ // boostinspect:nounnamed
     namespace {
         object_count& global_object_count = globally_counted_object::count_;
     }

Modified: branches/proto/v4/libs/unordered/test/helpers/equivalent.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/helpers/equivalent.hpp (original)
+++ branches/proto/v4/libs/unordered/test/helpers/equivalent.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -44,6 +44,11 @@
         }
     };
 
+ // This won't be a problem as I'm only using a single compile unit
+ // in each test (this is actually require by the minimal test
+ // framework).
+ //
+ // boostinspect:nounnamed
     namespace {
         equivalent_type equivalent;
     }

Modified: branches/proto/v4/libs/unordered/test/objects/exception.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/objects/exception.hpp (original)
+++ branches/proto/v4/libs/unordered/test/objects/exception.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,7 @@
 #include <new>
 #include "../helpers/fwd.hpp"
 #include "../helpers/allocator.hpp"
-#include "./memory.hpp"
+#include "../helpers/memory.hpp"
 
 namespace test
 {

Deleted: branches/proto/v4/libs/unordered/test/objects/memory.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/objects/memory.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,170 +0,0 @@
-
-// Copyright 2006-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_UNORDERED_TEST_MEMORY_HEADER)
-#define BOOST_UNORDERED_TEST_MEMORY_HEADER
-
-#include <memory>
-#include <map>
-#include <boost/mpl/apply.hpp>
-#include <boost/assert.hpp>
-#include <boost/unordered/detail/allocator_helpers.hpp>
-#include <boost/mpl/aux_/config/eti.hpp>
-#include "../helpers/test.hpp"
-
-namespace test
-{
- namespace detail
- {
- // This annoymous namespace won't cause ODR violations as I won't
- // be linking multiple translation units together. I'll probably
- // move this into a cpp file before a full release, but for now it's
- // the most convenient way.
-
- struct memory_area {
- void const* start;
- void const* end;
-
- memory_area(void const* s, void const* e)
- : start(s), end(e)
- {
- BOOST_ASSERT(start != end);
- }
- };
-
- struct memory_track {
- explicit memory_track(int tag = -1) :
- constructed_(0),
- tag_(tag) {}
-
- int constructed_;
- int tag_;
- };
-
- // This is a bit dodgy as it defines overlapping
- // areas as 'equal', so this isn't a total ordering.
- // But it is for non-overlapping memory regions - which
- // is what'll be stored.
- //
- // All searches will be for areas entirely contained by
- // a member of the set - so it should find the area that contains
- // the region that is searched for.
-
- struct memory_area_compare {
- bool operator()(memory_area const& x, memory_area const& y) const {
- return x.end <= y.start;
- }
- };
-
- template <class Alloc>
- struct allocator_memory_type_gen {
- typedef std::map<memory_area, memory_track, memory_area_compare,
- Alloc> type;
- };
-
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
- template <>
- struct allocator_memory_type_gen<int> {
- typedef std::map<memory_area, memory_track, memory_area_compare> type;
- };
-#endif
-
- template <class Alloc = std::allocator<int> >
- struct memory_tracker {
- typedef BOOST_DEDUCED_TYPENAME
- boost::unordered_detail::rebind_wrap<Alloc,
- std::pair<memory_area const, memory_track> >::type
- allocator_type;
-
- typedef BOOST_DEDUCED_TYPENAME allocator_memory_type_gen<allocator_type>::type
- allocated_memory_type;
-
- allocated_memory_type allocated_memory;
- unsigned int count_allocators;
- unsigned int count_allocations;
- unsigned int count_constructions;
-
- memory_tracker() :
- count_allocators(0), count_allocations(0),
- count_constructions(0)
- {}
-
- void allocator_ref()
- {
- if(count_allocators == 0) {
- count_allocations = 0;
- count_constructions = 0;
- allocated_memory.clear();
- }
- ++count_allocators;
- }
-
- void allocator_unref()
- {
- BOOST_CHECK(count_allocators > 0);
- if(count_allocators > 0) {
- --count_allocators;
- if(count_allocators == 0) {
- bool no_allocations_left = (count_allocations == 0);
- bool no_constructions_left = (count_constructions == 0);
- bool allocated_memory_empty = allocated_memory.empty();
-
- // Clearing the data before the checks terminate the tests.
- count_allocations = 0;
- count_constructions = 0;
- allocated_memory.clear();
-
- BOOST_CHECK(no_allocations_left);
- BOOST_CHECK(no_constructions_left);
- BOOST_CHECK(allocated_memory_empty);
- }
- }
- }
-
- void track_allocate(void *ptr, std::size_t n, std::size_t size, int tag)
- {
- if(n == 0) {
- BOOST_ERROR("Allocating 0 length array.");
- }
- else {
- ++count_allocations;
- allocated_memory.insert(
- std::pair<memory_area const, memory_track>(
- memory_area(ptr, (char*) ptr + n * size),
- memory_track(tag)));
- }
- }
-
- void track_deallocate(void* ptr, std::size_t n, std::size_t size, int tag)
- {
- BOOST_DEDUCED_TYPENAME allocated_memory_type::iterator pos
- = allocated_memory.find(memory_area(ptr, (char*) ptr + n * size));
- if(pos == allocated_memory.end()) {
- BOOST_ERROR("Deallocating unknown pointer.");
- } else {
- BOOST_CHECK(pos->first.start == ptr);
- BOOST_CHECK(pos->first.end == (char*) ptr + n * size);
- BOOST_CHECK(pos->second.tag_ == tag);
- allocated_memory.erase(pos);
- }
- BOOST_CHECK(count_allocations > 0);
- if(count_allocations > 0) --count_allocations;
- }
-
- void track_construct(void* /*ptr*/, std::size_t /*size*/, int /*tag*/)
- {
- ++count_constructions;
- }
-
- void track_destroy(void* /*ptr*/, std::size_t /*size*/, int /*tag*/)
- {
- BOOST_CHECK(count_constructions > 0);
- if(count_constructions > 0) --count_constructions;
- }
- };
- }
-}
-
-#endif

Modified: branches/proto/v4/libs/unordered/test/objects/test.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/objects/test.hpp (original)
+++ branches/proto/v4/libs/unordered/test/objects/test.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -12,7 +12,7 @@
 #include <iostream>
 #include "../helpers/fwd.hpp"
 #include "../helpers/count.hpp"
-#include "./memory.hpp"
+#include "../helpers/memory.hpp"
 #include <map>
 
 namespace test
@@ -156,6 +156,11 @@
 
     namespace detail
     {
+ // This won't be a problem as I'm only using a single compile unit
+ // in each test (this is actually require by the minimal test
+ // framework).
+ //
+ // boostinspect:nounnamed
         namespace {
             test::detail::memory_tracker<std::allocator<int> > tracker;
         }

Modified: branches/proto/v4/libs/unordered/test/unordered/compile_map.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/compile_map.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/compile_map.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,21 @@
 #include "../objects/minimal.hpp"
 #include "./compile_tests.hpp"
 
+// Explicit instantiation to catch compile-time errors
+
+template class boost::unordered_map<
+ test::minimal::assignable,
+ test::minimal::default_copy_constructible,
+ test::minimal::hash<test::minimal::assignable>,
+ test::minimal::equal_to<test::minimal::assignable>,
+ test::minimal::allocator<test::minimal::assignable> >;
+template class boost::unordered_multimap<
+ test::minimal::assignable,
+ test::minimal::copy_constructible,
+ test::minimal::hash<test::minimal::assignable>,
+ test::minimal::equal_to<test::minimal::assignable>,
+ test::minimal::allocator<test::minimal::assignable> >;
+
 UNORDERED_AUTO_TEST(test0)
 {
     typedef std::pair<test::minimal::assignable const,

Modified: branches/proto/v4/libs/unordered/test/unordered/compile_set.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/compile_set.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/compile_set.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,6 +13,19 @@
 #include "../objects/minimal.hpp"
 #include "./compile_tests.hpp"
 
+// Explicit instantiation to catch compile-time errors
+
+template class boost::unordered_set<
+ test::minimal::assignable,
+ test::minimal::hash<test::minimal::assignable>,
+ test::minimal::equal_to<test::minimal::assignable>,
+ test::minimal::allocator<test::minimal::assignable> >;
+template class boost::unordered_multiset<
+ test::minimal::assignable,
+ test::minimal::hash<test::minimal::assignable>,
+ test::minimal::equal_to<test::minimal::assignable>,
+ test::minimal::allocator<test::minimal::assignable> >;
+
 UNORDERED_AUTO_TEST(test0)
 {
     test::minimal::assignable assignable = test::minimal::assignable::create();

Modified: branches/proto/v4/libs/unordered/test/unordered/compile_tests.hpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/compile_tests.hpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/compile_tests.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -168,11 +168,6 @@
 
     test::check_return_type<bool>::equals(a == b);
     test::check_return_type<bool>::equals(a != b);
-#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
- test::check_return_type<std::size_t>::equals(boost::hash_value(a));
-#else
- test::check_return_type<std::size_t>::equals(hash_value(a));
-#endif
 }
 
 template <class X, class T>

Modified: branches/proto/v4/libs/unordered/test/unordered/equality_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/equality_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/equality_tests.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -25,118 +25,118 @@
     };
 
 #define UNORDERED_EQUALITY_SET_TEST(seq1, op, seq2) \
- do { \
- boost::unordered_set<int, mod_compare, mod_compare> set1, set2; \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set1, seq1) \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set2, seq2) \
- BOOST_CHECK(set1 op set2); \
- } while(false)
+ do { \
+ boost::unordered_set<int, mod_compare, mod_compare> set1, set2; \
+ BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set1, seq1) \
+ BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set2, seq2) \
+ BOOST_CHECK(set1 op set2); \
+ } while(false)
 
 #define UNORDERED_EQUALITY_MULTISET_TEST(seq1, op, seq2) \
- do { \
- boost::unordered_multiset<int, mod_compare, mod_compare> set1, set2; \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set1, seq1) \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set2, seq2) \
- BOOST_CHECK(set1 op set2); \
- } while(false)
+ do { \
+ boost::unordered_multiset<int, mod_compare, mod_compare> set1, set2; \
+ BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set1, seq1) \
+ BOOST_PP_SEQ_FOR_EACH(UNORDERED_SET_INSERT, set2, seq2) \
+ BOOST_CHECK(set1 op set2); \
+ } while(false)
 
 #define UNORDERED_EQUALITY_MAP_TEST(seq1, op, seq2) \
- do { \
- boost::unordered_map<int, int, mod_compare, mod_compare> map1, map2; \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map1, seq1) \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map2, seq2) \
- BOOST_CHECK(map1 op map2); \
- } while(false)
+ do { \
+ boost::unordered_map<int, int, mod_compare, mod_compare> map1, map2; \
+ BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map1, seq1) \
+ BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map2, seq2) \
+ BOOST_CHECK(map1 op map2); \
+ } while(false)
 
 #define UNORDERED_EQUALITY_MULTIMAP_TEST(seq1, op, seq2) \
- do { \
- boost::unordered_multimap<int, int, mod_compare, mod_compare> map1, map2; \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map1, seq1) \
- BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map2, seq2) \
- BOOST_CHECK(map1 op map2); \
- } while(false)
+ do { \
+ boost::unordered_multimap<int, int, mod_compare, mod_compare> map1, map2; \
+ BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map1, seq1) \
+ BOOST_PP_SEQ_FOR_EACH(UNORDERED_MAP_INSERT, map2, seq2) \
+ BOOST_CHECK(map1 op map2); \
+ } while(false)
 
 #define UNORDERED_SET_INSERT(r, set, item) set.insert(item);
 #define UNORDERED_MAP_INSERT(r, map, item) \
- map.insert(std::pair<int const, int> BOOST_PP_SEQ_TO_TUPLE(item));
+ map.insert(std::pair<int const, int> BOOST_PP_SEQ_TO_TUPLE(item));
 
- UNORDERED_AUTO_TEST(equality_size_tests)
- {
- boost::unordered_set<int> x1, x2;
- BOOST_CHECK(x1 == x2);
- BOOST_CHECK(!(x1 != x2));
-
- x1.insert(1);
- BOOST_CHECK(x1 != x2);
- BOOST_CHECK(!(x1 == x2));
- BOOST_CHECK(x2 != x1);
- BOOST_CHECK(!(x2 == x1));
-
- x2.insert(1);
- BOOST_CHECK(x1 == x2);
- BOOST_CHECK(!(x1 != x2));
-
- x2.insert(2);
- BOOST_CHECK(x1 != x2);
- BOOST_CHECK(!(x1 == x2));
- BOOST_CHECK(x2 != x1);
- BOOST_CHECK(!(x2 == x1));
- }
-
- UNORDERED_AUTO_TEST(equality_key_value_tests)
- {
- UNORDERED_EQUALITY_MULTISET_TEST((1), !=, (2));
- UNORDERED_EQUALITY_SET_TEST((2), ==, (2));
- UNORDERED_EQUALITY_MAP_TEST(((1)(1))((2)(1)), !=, ((1)(1))((3)(1)));
- }
-
+ UNORDERED_AUTO_TEST(equality_size_tests)
+ {
+ boost::unordered_set<int> x1, x2;
+ BOOST_CHECK(x1 == x2);
+ BOOST_CHECK(!(x1 != x2));
+
+ x1.insert(1);
+ BOOST_CHECK(x1 != x2);
+ BOOST_CHECK(!(x1 == x2));
+ BOOST_CHECK(x2 != x1);
+ BOOST_CHECK(!(x2 == x1));
+
+ x2.insert(1);
+ BOOST_CHECK(x1 == x2);
+ BOOST_CHECK(!(x1 != x2));
+
+ x2.insert(2);
+ BOOST_CHECK(x1 != x2);
+ BOOST_CHECK(!(x1 == x2));
+ BOOST_CHECK(x2 != x1);
+ BOOST_CHECK(!(x2 == x1));
+ }
+
+ UNORDERED_AUTO_TEST(equality_key_value_tests)
+ {
+ UNORDERED_EQUALITY_MULTISET_TEST((1), !=, (2));
+ UNORDERED_EQUALITY_SET_TEST((2), ==, (2));
+ UNORDERED_EQUALITY_MAP_TEST(((1)(1))((2)(1)), !=, ((1)(1))((3)(1)));
+ }
+
     UNORDERED_AUTO_TEST(equality_collision_test)
     {
- UNORDERED_EQUALITY_MULTISET_TEST(
- (1), !=, (501));
- UNORDERED_EQUALITY_MULTISET_TEST(
- (1)(251), !=, (1)(501));
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((251)(1))((1)(1)), !=, ((501)(1))((1)(1)));
- UNORDERED_EQUALITY_MULTISET_TEST(
- (1)(501), ==, (1)(501));
- UNORDERED_EQUALITY_SET_TEST(
- (1)(501), ==, (501)(1));
- }
-
- UNORDERED_AUTO_TEST(equality_group_size_test)
- {
- UNORDERED_EQUALITY_MULTISET_TEST(
- (10)(20)(20), !=, (10)(10)(20));
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((10)(1))((20)(1))((20)(1)), !=,
- ((10)(1))((20)(1))((10)(1)));
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((20)(1))((10)(1))((10)(1)), ==,
- ((10)(1))((20)(1))((10)(1)));
+ UNORDERED_EQUALITY_MULTISET_TEST(
+ (1), !=, (501));
+ UNORDERED_EQUALITY_MULTISET_TEST(
+ (1)(251), !=, (1)(501));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(
+ ((251)(1))((1)(1)), !=, ((501)(1))((1)(1)));
+ UNORDERED_EQUALITY_MULTISET_TEST(
+ (1)(501), ==, (1)(501));
+ UNORDERED_EQUALITY_SET_TEST(
+ (1)(501), ==, (501)(1));
+ }
+
+ UNORDERED_AUTO_TEST(equality_group_size_test)
+ {
+ UNORDERED_EQUALITY_MULTISET_TEST(
+ (10)(20)(20), !=, (10)(10)(20));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(
+ ((10)(1))((20)(1))((20)(1)), !=,
+ ((10)(1))((20)(1))((10)(1)));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(
+ ((20)(1))((10)(1))((10)(1)), ==,
+ ((10)(1))((20)(1))((10)(1)));
     }
     
     UNORDERED_AUTO_TEST(equality_map_value_test)
     {
- UNORDERED_EQUALITY_MAP_TEST(
- ((1)(1)), !=, ((1)(2)));
- UNORDERED_EQUALITY_MAP_TEST(
- ((1)(1)), ==, ((1)(1)));
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((1)(1)), !=, ((1)(2)));
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((1)(1))((1)(1)), !=, ((1)(1))((1)(2)));
- UNORDERED_EQUALITY_MULTIMAP_TEST(
- ((1)(2))((1)(1)), !=, ((1)(1))((1)(2)));
- }
+ UNORDERED_EQUALITY_MAP_TEST(
+ ((1)(1)), !=, ((1)(2)));
+ UNORDERED_EQUALITY_MAP_TEST(
+ ((1)(1)), ==, ((1)(1)));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(
+ ((1)(1)), !=, ((1)(2)));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(
+ ((1)(1))((1)(1)), !=, ((1)(1))((1)(2)));
+ UNORDERED_EQUALITY_MULTIMAP_TEST(
+ ((1)(2))((1)(1)), !=, ((1)(1))((1)(2)));
+ }
 
     UNORDERED_AUTO_TEST(equality_predicate_test)
     {
- UNORDERED_EQUALITY_SET_TEST(
- (1), ==, (1001));
- UNORDERED_EQUALITY_MAP_TEST(
- ((1)(2))((1001)(1)), ==, ((1001)(2))((1)(1)));
- }
+ UNORDERED_EQUALITY_SET_TEST(
+ (1), ==, (1001));
+ UNORDERED_EQUALITY_MAP_TEST(
+ ((1)(2))((1001)(1)), ==, ((1001)(2))((1)(1)));
+ }
 
 }
 

Modified: branches/proto/v4/libs/unordered/test/unordered/unnecessary_copy_tests.cpp
==============================================================================
--- branches/proto/v4/libs/unordered/test/unordered/unnecessary_copy_tests.cpp (original)
+++ branches/proto/v4/libs/unordered/test/unordered/unnecessary_copy_tests.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -84,12 +84,11 @@
     template <class T>
     void unnecessary_copy_insert_test(T*)
     {
- reset();
         T x;
         BOOST_DEDUCED_TYPENAME T::value_type a;
- COPY_COUNT(1);
+ reset();
         x.insert(a);
- COPY_COUNT(2);
+ COPY_COUNT(1);
     }
 
     boost::unordered_set<count_copies>* set;

Modified: branches/proto/v4/libs/utility/enable_if/test/constructors.cpp
==============================================================================
--- branches/proto/v4/libs/utility/enable_if/test/constructors.cpp (original)
+++ branches/proto/v4/libs/utility/enable_if/test/constructors.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
+// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
 // Jeremiah Willcock (jewillco at osl.iu.edu)
 // Andrew Lumsdaine (lums at osl.iu.edu)
 

Modified: branches/proto/v4/libs/utility/enable_if/test/dummy_arg_disambiguation.cpp
==============================================================================
--- branches/proto/v4/libs/utility/enable_if/test/dummy_arg_disambiguation.cpp (original)
+++ branches/proto/v4/libs/utility/enable_if/test/dummy_arg_disambiguation.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
+// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
 // Jeremiah Willcock (jewillco at osl.iu.edu)
 // Andrew Lumsdaine (lums at osl.iu.edu)
 

Modified: branches/proto/v4/libs/utility/enable_if/test/lazy.cpp
==============================================================================
--- branches/proto/v4/libs/utility/enable_if/test/lazy.cpp (original)
+++ branches/proto/v4/libs/utility/enable_if/test/lazy.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
+// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
 // Jeremiah Willcock (jewillco at osl.iu.edu)
 // Andrew Lumsdaine (lums at osl.iu.edu)
 

Modified: branches/proto/v4/libs/utility/enable_if/test/lazy_test.cpp
==============================================================================
--- branches/proto/v4/libs/utility/enable_if/test/lazy_test.cpp (original)
+++ branches/proto/v4/libs/utility/enable_if/test/lazy_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
+// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
 // Jeremiah Willcock (jewillco at osl.iu.edu)
 // Andrew Lumsdaine (lums at osl.iu.edu)
 

Modified: branches/proto/v4/libs/utility/enable_if/test/member_templates.cpp
==============================================================================
--- branches/proto/v4/libs/utility/enable_if/test/member_templates.cpp (original)
+++ branches/proto/v4/libs/utility/enable_if/test/member_templates.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
+// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
 // Jeremiah Willcock (jewillco at osl.iu.edu)
 // Andrew Lumsdaine (lums at osl.iu.edu)
 

Modified: branches/proto/v4/libs/utility/enable_if/test/namespace_disambiguation.cpp
==============================================================================
--- branches/proto/v4/libs/utility/enable_if/test/namespace_disambiguation.cpp (original)
+++ branches/proto/v4/libs/utility/enable_if/test/namespace_disambiguation.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
+// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
 // Jeremiah Willcock (jewillco at osl.iu.edu)
 // Andrew Lumsdaine (lums at osl.iu.edu)
 

Modified: branches/proto/v4/libs/utility/enable_if/test/no_disambiguation.cpp
==============================================================================
--- branches/proto/v4/libs/utility/enable_if/test/no_disambiguation.cpp (original)
+++ branches/proto/v4/libs/utility/enable_if/test/no_disambiguation.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
+// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
 // Jeremiah Willcock (jewillco at osl.iu.edu)
 // Andrew Lumsdaine (lums at osl.iu.edu)
 

Modified: branches/proto/v4/libs/utility/enable_if/test/partial_specializations.cpp
==============================================================================
--- branches/proto/v4/libs/utility/enable_if/test/partial_specializations.cpp (original)
+++ branches/proto/v4/libs/utility/enable_if/test/partial_specializations.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-// Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
+// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
 // Jeremiah Willcock (jewillco at osl.iu.edu)
 // Andrew Lumsdaine (lums at osl.iu.edu)
 

Modified: branches/proto/v4/libs/utility/index.html
==============================================================================
--- branches/proto/v4/libs/utility/index.html (original)
+++ branches/proto/v4/libs/utility/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -24,12 +24,13 @@
             <a href="iterator_adaptors.htm">iterator_adaptors</a><br>
             <a href="generator_iterator.htm">generator iterator adaptors</a><br>
                                 <a href="operators.htm">operators</a><br>
+ swap<br>
                                 <a href="throw_exception.html">throw_exception</a><br>
                                 <a href="utility.htm">utility</a><br>
                 <a href="value_init.htm">value_init</a></p>
                 </blockquote>
                 <hr>
- <p>© Copyright Beman Dawes, 2001</p>
+ <p>&copy; Copyright Beman Dawes, 2001</p>
         <p>Distributed under the Boost Software License, Version 1.0. (See
         accompanying file <a href="../../LICENSE_1_0.txt">
         LICENSE_1_0.txt</a> or copy at

Modified: branches/proto/v4/libs/utility/ref_test.cpp
==============================================================================
--- branches/proto/v4/libs/utility/ref_test.cpp (original)
+++ branches/proto/v4/libs/utility/ref_test.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -68,11 +68,54 @@
     }
 };
 
+struct copy_counter {
+ static int count_;
+ copy_counter(copy_counter const& other) {
+ ++count_;
+ }
+ copy_counter() {}
+ static void reset() { count_ = 0; }
+ static int count() { return copy_counter::count_; }
+};
+
+int copy_counter::count_ = 0;
+
 } // namespace unnamed
 
+template <class T>
+void do_unwrap(T t) {
+
+ /* typename unwrap_reference<T>::type& lt = */
+ unwrap_ref(t);
+
+}
+
+void unwrap_test() {
+
+ int i = 3;
+ const int ci = 2;
+
+ do_unwrap(i);
+ do_unwrap(ci);
+ do_unwrap(ref(i));
+ do_unwrap(cref(ci));
+ do_unwrap(ref(ci));
+
+ copy_counter cc;
+ BOOST_CHECK(cc.count() == 0);
+
+ do_unwrap(cc);
+ do_unwrap(ref(cc));
+ do_unwrap(cref(cc));
+
+ BOOST_CHECK(cc.count() == 1);
+ BOOST_CHECK(unwrap_ref(ref(cc)).count() == 1);
+}
+
 int test_main(int, char * [])
 {
     ref_wrapper<int>::test(1);
     ref_wrapper<int const>::test(1);
+ unwrap_test();
     return 0;
 }

Modified: branches/proto/v4/libs/wave/test/testwave/testfiles/t_1_034.cpp
==============================================================================
--- branches/proto/v4/libs/wave/test/testwave/testfiles/t_1_034.cpp (original)
+++ branches/proto/v4/libs/wave/test/testwave/testfiles/t_1_034.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -35,3 +35,5 @@
 //H 00: t_1_034.cpp(21): STR(§), [t_1_034.cpp(16): STR(...)=#__VA_ARGS__]
 //H 02: ""
 //H 03: ""
+
+// boostinspect:noascii this file needs to contain non-ASCII characters

Modified: branches/proto/v4/libs/wave/test/testwave/testfiles/t_1_035.cpp
==============================================================================
--- branches/proto/v4/libs/wave/test/testwave/testfiles/t_1_035.cpp (original)
+++ branches/proto/v4/libs/wave/test/testwave/testfiles/t_1_035.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -45,3 +45,5 @@
 //H 00: t_1_035.cpp(24): PASTE2(1, §, §, 4), [t_1_035.cpp(15): PASTE2(a, b, c, d)=a##b##c##d]
 //H 02: 14
 //H 03: 14
+
+// boostinspect:noascii this file needs to contain non-ASCII characters

Modified: branches/proto/v4/libs/xpressive/doc/actions.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/actions.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/actions.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -107,7 +107,7 @@
 sub-expression initially matches, but ultimately fails because the rest of the
 regular expression fails to match, is the action executed at all?
 
-The answers are that actions are executed /lazily/. When a sub-expression
+The answer is that by default, actions are executed /lazily/. When a sub-expression
 matches a string, its action is placed on a queue, along with the current
 values of any sub-matches to which the action refers. If the match algorithm
 must backtrack, actions are popped off the queue as necessary. Only after the
@@ -124,13 +124,40 @@
     // questionable ones.
     sregex rex = +( _d [ ++ref(i) ] >> '!' );
     regex_search(str, rex);
- assert( i == 2 );
+ assert( i == 2 );
 
 The action `++ref(i)` is queued three times: once for each found digit. But
 it is only /executed/ twice: once for each digit that precedes a `'!'`
 character. When the `'?'` character is encountered, the match algorithm
 backtracks, removing the final action from the queue.
 
+[h3 Immediate Action Execution]
+
+When you want semantic actions to execute immediately, you can wrap the
+sub-expression containing the action in a [^[funcref boost::xpressive::keep keep()]].
+`keep()` turns off back-tracking for its sub-expression, but it also causes
+any actions queued by the sub-expression to execute at the end of the `keep()`.
+It is as if the sub-expression in the `keep()` were compiled into an
+independent regex object, and matching the `keep()` is like a separate invocation
+of `regex_search()`. It matches characters and executes actions but never backtracks
+or unwinds. For example, imagine the above example had been written as follows:
+
+ int i = 0;
+ std::string str("1!2!3?");
+ // count all the digits.
+ sregex rex = +( keep( _d [ ++ref(i) ] ) >> '!' );
+ regex_search(str, rex);
+ assert( i == 3 );
+
+We have wrapped the sub-expression `_d [ ++ref(i) ]` in `keep()`. Now, whenever
+this regex matches a digit, the action will be queued and then immediately
+executed before we try to match a `'!'` character. In this case, the action
+executes three times.
+
+[note Like `keep()`, actions within [^[funcref boost::xpressive::before before()]]
+and [^[funcref boost::xpressive::after after()]] are also executed early when their
+sub-expressions have matched.]
+
 [h3 Lazy Functions]
 
 So far, we've seen how to write semantic actions consisting of variables and

Modified: branches/proto/v4/libs/xpressive/doc/history.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/history.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/history.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -7,6 +7,27 @@
 
 [section Appendix 1: History]
 
+[h2 Version 2.1.0 6/12/2008]
+
+New Features:
+
+* `skip()` primitive for static regexes, which allows you to specify parts of
+ the input string to ignore during regex matching.
+* Range-based `regex_replace()` algorithm interface.
+* `regex_replace()` accepts formatter objects and formatter lambda expressions
+ in addition to format strings.
+
+Bugs Fixed:
+
+* Semantic actions in look-aheads, look-behinds and independent sub-expressions
+ execute eagerly instead of causing a crash.
+
+[h2 Version 2.0.1 10/23/2007]
+
+Bugs Fixed:
+
+* `sub_match<>` constructor copies singular iterator causing debug assert.
+
 [h2 Version 2.0.0, 10/12/2007]
 
 New Features:

Modified: branches/proto/v4/libs/xpressive/doc/substitutions.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/substitutions.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/substitutions.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,10 +14,12 @@
 [h2 regex_replace()]
 
 Performing search-and-replace using _regex_replace_ is simple. All you need is an input sequence, a regex object,
-and a format string. There are two versions of the _regex_replace_ algorithm. The first accepts the input
-sequence as `std::basic_string<>` and returns the result in a new `std::basic_string<>`. The second accepts
-the input sequence as a pair of iterators, and writes the result into an output iterator. Below are examples of
-each.
+and a format string or a formatter object. There are several versions of the _regex_replace_ algorithm. Some accept
+the input sequence as a bidirectional container such as `std::string` and returns the result in a new container
+of the same type. Others accept the input as a null terminated string and return a `std::string`. Still others
+accept the input sequence as a pair of iterators and writes the result into an output iterator. The substitution
+may be specified as a string with format sequences or as a formatter object. Below are some simple examples of
+using string-based substitutions.
 
     std::string input("This is his face");
     sregex re = as_xpr("his"); // find all occurrences of "his" ...
@@ -63,7 +65,9 @@
                                  Boost-specific format sequences.]]
 ]
 
-These flags live in the `regex_constants` namespace.
+These flags live in the `xpressive::regex_constants` namespace. If the substitution parameter is
+a function object instead of a string, the flags `format_literal`, `format_perl`, `format_sed`, and
+`format_all` are ignored.
 
 [h2 The ECMA-262 Format Sequences]
 
@@ -150,4 +154,161 @@
 it is /false-expression/. In this mode, you can use parens [^()] for grouping. If you
 want a literal paren, you must escape it as [^\\(].
 
+[h2 Formatter Objects]
+
+Format strings are not always expressive enough for all your text substitution
+needs. Consider the simple example of wanting to map input strings to output
+strings, as you may want to do with environment variables. Rather than a format
+/string/, for this you would use a formatter /object/. Consider the following
+code, which finds embedded environment variables of the form `"$(XYZ)"` and
+computes the substitution string by looking up the environment variable in a
+map.
+
+ #include <map>
+ #include <string>
+ #include <iostream>
+ #include <boost/xpressive/xpressive.hpp>
+ using namespace boost;
+ using namespace xpressive;
+
+ std::map<std::string, std::string> env;
+
+ std::string const &format_fun(smatch const &what)
+ {
+ return env[what[1].str()];
+ }
+
+ int main()
+ {
+ env["X"] = "this";
+ env["Y"] = "that";
+
+ std::string input("\"$(X)\" has the value \"$(Y)\"");
+
+ // replace strings like "$(XYZ)" with the result of env["XYZ"]
+ sregex envar = "$(" >> (s1 = +_w) >> ')';
+ std::string output = regex_replace(input, envar, format_fun);
+ std::cout << output << std::endl;
+ }
+
+In this case, we use a function, `format_fun()` to compute the substitution string
+on the fly. It accepts a _match_results_ object which contains the results of the
+current match. `format_fun()` uses the first submatch as a key into the global `env`
+map. The above code displays:
+
+[pre
+"this" has the value "that"
+]
+
+The formatter need not be an ordinary function. It may be an object of class type.
+And rather than return a string, it may accept an output iterator into which it
+writes the substitution. Consider the following, which is functionally equivalent
+to the above.
+
+ #include <map>
+ #include <string>
+ #include <iostream>
+ #include <boost/xpressive/xpressive.hpp>
+ using namespace boost;
+ using namespace xpressive;
+
+ struct formatter
+ {
+ typedef std::map<std::string, std::string> env_map;
+ env_map env;
+
+ template<typename Out>
+ Out operator()(smatch const &what, Out out) const
+ {
+ env_map::const_iterator where = env.find(what[1]);
+ if(where != env.end())
+ {
+ std::string const &sub = where->second;
+ out = std::copy(sub.begin(), sub.end(), out);
+ }
+ return out;
+ }
+
+ };
+
+ int main()
+ {
+ formatter fmt;
+ fmt.env["X"] = "this";
+ fmt.env["Y"] = "that";
+
+ std::string input("\"$(X)\" has the value \"$(Y)\"");
+
+ sregex envar = "$(" >> (s1 = +_w) >> ')';
+ std::string output = regex_replace(input, envar, fmt);
+ std::cout << output << std::endl;
+ }
+
+The formatter must be a callable object -- a function or a function object --
+that has one of three possible signatures, detailed in the table below. For
+the table, `fmt` is a function pointer or function object, `what` is a
+_match_results_ object, `out` is an OutputIterator, and `flags` is a value
+of `regex_constants::match_flag_type`:
+
+[table Formatter Signatures
+[
+ [Formatter Invocation]
+ [Return Type]
+ [Semantics]
+]
+[
+ [`fmt(what)`]
+ [Range of characters (e.g. `std::string`) or null-terminated string]
+ [The string matched by the regex is replaced with the string returned by
+ the formatter.]
+]
+[
+ [`fmt(what, out)`]
+ [OutputIterator]
+ [The formatter writes the replacement string into `out` and returns `out`.]
+]
+[
+ [`fmt(what, out, flags)`]
+ [OutputIterator]
+ [The formatter writes the replacement string into `out` and returns `out`.
+ The `flags` parameter is the value of the match flags passed to the
+ _regex_replace_ algorithm.]
+]
+]
+
+[h2 Formatter Expressions]
+
+In addition to format /strings/ and formatter /objects/, _regex_replace_ also
+accepts formatter /expressions/. A formatter expression is a lambda expression
+that generates a string. It uses the same syntax as that for
+[link boost_xpressive.user_s_guide.semantic_actions_and_user_defined_assertions
+Semantic Actions], which are covered later. The above example, which uses
+_regex_replace_ to substitute strings for environment variables, is repeated
+here using a formatter expression.
+
+ #include <map>
+ #include <string>
+ #include <iostream>
+ #include <boost/xpressive/xpressive.hpp>
+ #include <boost/xpressive/regex_actions.hpp>
+ using namespace boost::xpressive;
+
+ int main()
+ {
+ std::map<std::string, std::string> env;
+ env["X"] = "this";
+ env["Y"] = "that";
+
+ std::string input("\"$(X)\" has the value \"$(Y)\"");
+
+ sregex envar = "$(" >> (s1 = +_w) >> ')';
+ std::string output = regex_replace(input, envar, ref(env)[s1]);
+ std::cout << output << std::endl;
+ }
+
+In the above, the formatter expression is `ref(env)[s1]`. This means to use the
+value of the first submatch, `s1`, as a key into the `env` map. The purpose of
+`xpressive::ref()` here is to make the reference to the `env` local variable /lazy/
+so that the index operation is deferred until we know what to replace `s1` with.
+
 [endsect]

Modified: branches/proto/v4/libs/xpressive/doc/xpressive.qbk
==============================================================================
--- branches/proto/v4/libs/xpressive/doc/xpressive.qbk (original)
+++ branches/proto/v4/libs/xpressive/doc/xpressive.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -122,5 +122,11 @@
 
 [include perf.qbk]
 
+[section Appendix 5: Implementation Notes]
+
+[include tracking_ptr.qbk]
+
+[endsect]
+
 [endsect]
 

Added: branches/proto/v4/libs/xpressive/proto/doc/concepts/CallableTransform.xml
==============================================================================
--- (empty file)
+++ branches/proto/v4/libs/xpressive/proto/doc/concepts/CallableTransform.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -0,0 +1,90 @@
+<?xml version="1.0" ?>
+<concept name="CallableTransform" category="utility">
+ <!--
+ Copyright 2008 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)
+ -->
+ <param name="Fn" role="polymorphic-function-object-type" />
+ <param name="Tn" role="transform-type" />
+ <param name="Expr" role="expression-type" />
+ <param name="State" role="state-type" />
+ <param name="Visitor" role="visitor-type" />
+
+ <models-sentence>
+ The type <arg num="1" /> must be a model of <conceptname name="PolymorphicFunctionObject"/>.
+ The type <arg num="2" /> must be a model of <conceptname name="Transform"/>.
+ </models-sentence>
+
+ <description>
+ <para>
+ A CallableTransform is a function type or a function
+ pointer type where the return type Fn is a
+ PolymorphicFunctionObject and the arguments are
+ Transforms. is_callable&lt; Fn &gt;::value
+ must be true.
+ </para>
+ </description>
+
+ <notation variables="fn">
+ <sample-value>
+ <type name="Fn" />
+ </sample-value>
+ </notation>
+
+ <notation variables="expr">
+ <sample-value>
+ <type name="Expr" />
+ </sample-value>
+ </notation>
+
+ <notation variables="state">
+ <sample-value>
+ <type name="State" />
+ </sample-value>
+ </notation>
+
+ <notation variables="visitor">
+ <sample-value>
+ <type name="Visitor" />
+ </sample-value>
+ </notation>
+
+ <associated-type name="result_type">
+ <get-member-type name="type">
+ <apply-template name="boost::result_of">
+ <type name="Fn(Transform&lt;Tn, Expr, State, Visitor&gt;::result_type...)"/>
+ </apply-template>
+ </get-member-type>
+ <description>
+ <simpara>The result of applying the CallableTransform.</simpara>
+ </description>
+ </associated-type>
+
+ <valid-expression name="Apply Transform">
+ <apply-function name="when&lt; _, Fn(Tn...)&gt;()">
+ <sample-value>
+ <type name="Expr" />
+ </sample-value>
+ <sample-value>
+ <type name="State" />
+ </sample-value>
+ <sample-value>
+ <type name="Visitor" />
+ </sample-value>
+ </apply-function>
+ <return-type>
+ <require-same-type testable="yes">
+ <type name="result_type"/>
+ </require-same-type>
+ </return-type>
+ <semantics>Applies the transform.</semantics>
+ </valid-expression>
+
+ <example-model>
+ <type name="boost::proto::transform::arg(boost::proto::transform::left)" />
+ </example-model>
+
+</concept>

Modified: branches/proto/v4/libs/xpressive/test/Jamfile.v2
==============================================================================
--- branches/proto/v4/libs/xpressive/test/Jamfile.v2 (original)
+++ branches/proto/v4/libs/xpressive/test/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -23,8 +23,8 @@
     ;
 
 test-suite "xpressive"
- : [ run regress.cpp ]
- [ run c_traits.cpp ]
+ : [ run regress.cpp : : : <dependency>regress.txt ]
+ [ run c_traits.cpp : : : <dependency>regress.txt ]
          [ run test1.cpp ]
          [ run test2.cpp ]
          [ run test3.cpp ]

Modified: branches/proto/v4/libs/xpressive/test/misc2.cpp
==============================================================================
--- branches/proto/v4/libs/xpressive/test/misc2.cpp (original)
+++ branches/proto/v4/libs/xpressive/test/misc2.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -11,7 +11,8 @@
 #include <boost/xpressive/regex_actions.hpp>
 #include <boost/test/unit_test.hpp>
 
-using namespace boost::xpressive;
+namespace xpr = boost::xpressive;
+using namespace xpr;
 
 ///////////////////////////////////////////////////////////////////////////////
 //
@@ -34,7 +35,7 @@
     std::string str("foo");
 
     sregex_compiler compiler;
- compiler["rx0"] = (s1="foo")[ ref(result) = s1 ];
+ compiler["rx0"] = (s1="foo")[ xpr::ref(result) = s1 ];
     sregex rx = compiler.compile("(?>(?$rx0))");
 
     bool ok = regex_match(str, rx);
@@ -49,7 +50,7 @@
     std::string result;
     std::string str("foo");
 
- sregex rx0 = (s1="foo")[ ref(result) = s1 ];
+ sregex rx0 = (s1="foo")[ xpr::ref(result) = s1 ];
     sregex rx = keep(rx0);
 
     bool ok = regex_match(str, rx);
@@ -69,7 +70,7 @@
     std::string expected("\"this\" has the value \"that\"");
     sregex rx = "$(" >> (s1= +~as_xpr(')')) >> ')';
 
- output = regex_replace(input, rx, ref(replacements)[s1]);
+ output = regex_replace(input, rx, xpr::ref(replacements)[s1]);
     BOOST_CHECK_EQUAL(output, expected);
 }
 

Modified: branches/proto/v4/libs/xpressive/test/regress.ipp
==============================================================================
--- branches/proto/v4/libs/xpressive/test/regress.ipp (original)
+++ branches/proto/v4/libs/xpressive/test/regress.ipp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -173,6 +173,11 @@
     {
         std::getline(in, line);
 
+ if(!line.empty() && '\r' == line[line.size()-1])
+ {
+ line.erase(line.size()-1);
+ }
+
         if(regex_match(line, what, rx_sec))
         {
             if(!first)

Modified: branches/proto/v4/libs/xpressive/test/regress.txt
==============================================================================
--- branches/proto/v4/libs/xpressive/test/regress.txt (original)
+++ branches/proto/v4/libs/xpressive/test/regress.txt 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3697,3 +3697,44 @@
 br10=
 br11=b
 [end]
+
+[track2157.1]
+str=abc\ndef\nghi
+pat=^.+$
+flg=m
+br0=abc
+[end]
+
+[track2157.2]
+str=abc\ndef\nghi
+pat=.$
+flg=m
+br0=c
+[end]
+
+[track2157.3]
+str=abc\ndef\nghi
+pat=^.+$
+flg=
+[end]
+
+[track2157.4]
+str=abc\ndef\nghi
+pat=.$
+flg=
+br0=i
+[end]
+
+[track2157.5]
+str=abc\r\ndef\r\nghi
+pat=^.+$
+flg=m
+br0=abc
+[end]
+
+[track2157.6]
+str=abc\r\ndef\r\nghi
+pat=.$
+flg=m
+br0=c
+[end]

Modified: branches/proto/v4/more/getting_started/detail/release-variables.rst
==============================================================================
--- branches/proto/v4/more/getting_started/detail/release-variables.rst (original)
+++ branches/proto/v4/more/getting_started/detail/release-variables.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,8 +5,8 @@
 .. This file contains all the definitions that need to be updated
 .. for each new release of Boost.
 
-.. |boost-version-number| replace:: 1.35.0
-.. |boost_ver| replace:: ``boost_1_35_0``
-.. |boost_ver-bold| replace:: **boost_1_35_0**
+.. |boost-version-number| replace:: 1.36.0
+.. |boost_ver| replace:: ``boost_1_36_0``
+.. |boost_ver-bold| replace:: **boost_1_36_0**
 
 .. _sf-download: http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=8041

Modified: branches/proto/v4/more/getting_started/unix-variants.rst
==============================================================================
--- branches/proto/v4/more/getting_started/unix-variants.rst (original)
+++ branches/proto/v4/more/getting_started/unix-variants.rst 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -153,7 +153,7 @@
    .. parsed-literal::
 
      $ c++ -I |root| example.cpp -o example **\\**
- **~/boost/lib/libboost_regex-gcc34-mt-d-1_35.a**
+ **~/boost/lib/libboost_regex-gcc34-mt-d-1_36.a**
 
 B. You can separately specify a directory to search (with ``-L``\
    *directory*) and a library name to search for (with ``-l``\
@@ -163,7 +163,7 @@
    .. parsed-literal::
 
      $ c++ -I |root| example.cpp -o example **\\**
- **-L~/boost/lib/ -lboost_regex-gcc34-mt-d-1_35**
+ **-L~/boost/lib/ -lboost_regex-gcc34-mt-d-1_36**
 
    As you can see, this method is just as terse as method A for one
    library; it *really* pays off when you're using multiple

Modified: branches/proto/v4/status/Jamfile.v2
==============================================================================
--- branches/proto/v4/status/Jamfile.v2 (original)
+++ branches/proto/v4/status/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -125,6 +125,7 @@
     unordered/test/unordered # test-suite unordered
     unordered/test/exception # test-suite unordered-exception
     utility/enable_if/test # test-suite utility/enable_if
+ utility/swap/test # test-suite utility/swap
     utility/test # test-suite utility
     variant/test # test-suite variant
     wave/test/build # test-suite wave

Modified: branches/proto/v4/status/explicit-failures-markup.xml
==============================================================================
--- branches/proto/v4/status/explicit-failures-markup.xml (original)
+++ branches/proto/v4/status/explicit-failures-markup.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -58,6 +58,7 @@
       </mark-expected-failures>
       <mark-expected-failures>
         <test name="weighted_tail_variate_means"/>
+ <toolset name="acc"/>
         <toolset name="hp_cxx-71*"/>
         <note author="Markus Schoepflin">
           This failure is caused by a timeout when compiling the test. It
@@ -591,6 +592,7 @@
                 <toolset name="sun-5.8*"/>
                 <toolset name="sun-5.9*"/>
                 <toolset name="msvc-8.0*"/>
+ <toolset name="msvc-9.0*"/>
                 <toolset name="msvc-7.1*"/>
                 <toolset name="acc"/>
                 <note author="Alexander Nasonov">
@@ -1728,6 +1730,14 @@
         </mark-expected-failures>
     </library>
 
+ <!-- gil -->
+ <library name="gil">
+ <mark-expected-failures>
+ <test name="pixel"/>
+ <toolset name="acc"/>
+ <note author="Boris Gubenko" refid="46"/>
+ </mark-expected-failures>
+ </library>
 
     <!-- graph -->
     <library name="graph">
@@ -1805,6 +1815,9 @@
         <mark-expected-failures>
             <test name="csr_graph_test"/>
             <toolset name="msvc-8.0"/>
+ <toolset name="msvc-8.0_64"/>
+ <toolset name="msvc-8.0_x86_64"/>
+ <toolset name="msvc-9.0"/>
             <note author="Doug Gregor">
               This failure is due to a problem with partial ordering
               of class template partial specializations.
@@ -1838,6 +1851,18 @@
         </mark-expected-failures>
     </library>
 
+ <!-- integer -->
+ <library name="integer">
+ <mark-expected-failures>
+ <test name="integer_test"/>
+ <toolset name="gcc-4.2.1_hpux_ia64"/>
+ <note author="Boris Gubenko">
+ When compiling and linking this test, ld takes segmentation fault.
+ In the HP bug tracking system, this issue is tracked as QuIX ID: QXCR1000836120.
+ </note>
+ </mark-expected-failures>
+ </library>
+
     <!-- interprocess-->
     <library name="interprocess">
         <mark-unusable>
@@ -2493,9 +2518,9 @@
             <toolset name="gcc-mingw-3.4.5"/>
             <toolset name="gcc-3.4.2_hpux_pa_risc"/>
             <toolset name="gcc-3.4.6_linux_ia64"/>
- <toolset name="gcc-4.2.1*"/>
+ <toolset name="gcc-4.2.*"/>
             <toolset name="gcc-4.1.2_sunos_i86pc"/>
- <note author="Fernando Cacciola" refid="2"/>
+ <note author="Fernando Cacciola" refid="2"/>
         </mark-expected-failures>
         <mark-expected-failures>
             <test name="optional_test_ref_fail1"/>
@@ -2857,6 +2882,15 @@
             <toolset name="iw-7_1-vc6-stlp-4_5_3"/>
             <note author="Aleksey Gurtovoy" refid="28"/>
         </mark-expected-failures>
+ <mark-expected-failures>
+ <test name="karma_pattern*"/>
+ <test name="rule"/>
+ <toolset name="acc"/>
+ <note author="Boris Gubenko">
+ This failure is caused by a timeout when compiling the test.
+ It passes when the timeout value is increased.
+ </note>
+ </mark-expected-failures>
     </library>
 
     <!-- typeof -->
@@ -3145,6 +3179,17 @@
           </note>
        </mark-expected-failures>
        <mark-expected-failures>
+ <test name="test_tr1_long_double"/>
+ <toolset name="darwin*"/>
+ <toolset name="intel-linux-10.0"/>
+ <toolset name="intel-linux-9*"/>
+ <toolset name="intel-linux-8*"/>
+ <note author="John Maddock">
+ Some versions of the Darwin platform have insufficient long double support
+ for us to be able to run this test.
+ </note>
+ </mark-expected-failures>
+ <mark-expected-failures>
           <test name="test_policy_2"/>
           <toolset name="gcc-mingw-3.4.5"/>
           <note author="John Maddock">
@@ -3920,7 +3965,7 @@
         <mark-expected-failures>
             <test name="no_exceptions"/>
             <toolset name="cw-9.4"/>
- <toolset name="sun-5.8"/>
+ <toolset name="sun-5.*"/>
             <note author="Thorsten Ottosen">
                 This test fails because the test ptr_vector fails. Please see the note
                 for that test.
@@ -3929,7 +3974,7 @@
         <mark-expected-failures>
             <test name="ptr_deque"/>
             <toolset name="cw-9.4"/>
- <toolset name="sun-5.8"/>
+ <toolset name="sun-5.*"/>
             <note author="Thorsten Ottosen">
                 For sun the problem is that <code>insert(iterator,range)</code>
                 is not available due to partial ordering errors (the core library remains usable).
@@ -3939,7 +3984,7 @@
         <mark-expected-failures>
             <test name="ptr_list"/>
             <toolset name="cw-9.4"/>
- <toolset name="sun-5.8"/>
+ <toolset name="sun-5.*"/>
             <note author="Thorsten Ottosen">
                 For sun the problem is that <code>insert(iterator,range)</code>
                 is not available due to partial ordering errors (the core library remains usable).
@@ -3960,7 +4005,7 @@
             <test name="ptr_map"/>
             <toolset name="hp_cxx-71_006_tru64"/>
             <toolset name="cw-9.4"/>
- <toolset name="sun-5.8"/>
+ <toolset name="sun-5.*"/>
             <note author="Thorsten Ottosen">
                 For hp, this compiler bug is insignificant.
                 For sun the problem is that <code>transfer(range,ptr_map)</code>
@@ -3971,7 +4016,7 @@
         <mark-expected-failures>
             <test name="ptr_set"/>
             <toolset name="cw-9.4"/>
- <toolset name="sun-5.8"/>
+ <toolset name="sun-5.*"/>
             <note author="Thorsten Ottosen">
                 For sun the problem is that <code>transfer(range,ptr_map)</code> and
                 <code>insert(range)</code>code>
@@ -3982,8 +4027,15 @@
            <mark-expected-failures>
             <test name="serialization"/>
             <toolset name="cw*"/>
+ <toolset name="intel-darwin-*"/>
+ <toolset name="intel-linux-*"/>
+ <toolset name="pathscale-3.1"/>
+ <toolset name="sun-5.*"/>
             <note author="Thorsten Ottosen">
- This cause of this problem is unknown. Please submit a patch.
+ For codewarrior, the cause of this problem is unknown. Please
+ submit a patch. Other failures are due to problems with
+ the serialization library, or to a minor problem with the use of
+ the library.
             </note>
         </mark-expected-failures>
            <mark-expected-failures>
@@ -4059,6 +4111,11 @@
             </note>
         </mark-expected-failures>
         <mark-expected-failures>
+ <test name="object"/>
+ <toolset name="acc"/>
+ <note author="Boris Gubenko" refid="46"/>
+ </mark-expected-failures>
+ <mark-expected-failures>
             <test name="args"/>
             <test name="auto_ptr"/>
             <test name="builtin_convertors"/>
@@ -4302,7 +4359,16 @@
             use and building of dll's mainly.
             </note>
         </mark-expected-failures>
- <mark-expected-failures>
+ <mark-expected-failures>
+ <test name="regex_regress_threaded"/>
+ <toolset name="darwin*"/>
+ <note author="J. Maddock">
+ This tests fails because a dependency (Boost.Test)
+ fails to initialise correctly. The issue has been
+ reported to the library's author.
+ </note>
+ </mark-expected-failures>
+ <mark-expected-failures>
             <test name="regex_regress_threaded"/>
             <toolset name="gcc-*_tru64"/>
             <note author="J. Maddock">
@@ -4637,7 +4703,6 @@
 
         <mark-expected-failures>
             <test name="prg_exec_fail2"/>
- <toolset name="darwin-4.0.1"/>
             <toolset name="gcc-3.4.2_hpux_pa_risc"/>
             <toolset name="gcc-3.4.6_linux_ia64"/>
             <note author="Vladimir Prus">
@@ -4715,6 +4780,8 @@
         <mark-expected-failures>
             <test name="test_tss_lib"/>
             <toolset name="borland-*"/>
+ <toolset name="como-win-*"/>
+ <toolset name="msvc*wm5*"/>
             <toolset name="cw-9.4"/>
             <note author="Roland Schwarz" date="2006-12-14">
                 When a thread ends, tss data needs to be cleaned up. This process
@@ -4733,20 +4800,15 @@
         <mark-expected-failures>
             <test name="test_thread_move"/>
             <test name="test_thread_move_lib"/>
+ <test name="test_move_function"/>
+ <test name="test_move_function_lib"/>
             <toolset name="borland-*"/>
+ <toolset name="sun-*"/>
             <note author="Anthony Williams" date="2007-12-14">
 The Borland compiler fails to bind rvalues to the thread move constructor,
 choosing instead to bind them to the private (and unimplemented) copy constructor.
             </note>
         </mark-expected-failures>
- <mark-expected-failures>
- <test name="test_hardware_concurrency"/>
- <test name="test_hardware_concurrency_lib"/>
- <toolset name="*tru64"/>
- <note author="Anthony Williams" date="2007-12-21">
-boost::thread::hardware_concurrency is not implemented and always returns 0 on this platform.
- </note>
- </mark-expected-failures>
     </library>
 
     <!-- tuple -->
@@ -4997,7 +5059,32 @@
             </note>
         </mark-expected-failures>
 
- <mark-expected-failures>
+ <mark-expected-failures>
+ <test name="run_random"/>
+ <test name="std_run_random"/>
+ <test name="std_test_bind"/>
+ <test name="test_bind"/>
+ <test name="std_test_regex"/>
+ <test name="test_regex"/>
+ <test name="std_test_result_of"/>
+ <test name="test_result_of"/>
+ <test name="tr1_has_tr1_result_of_pass"/>
+ <test name="tr1_has_trivial_constr_test"/>
+ <test name="tr1_is_base_of_test"/>
+ <test name="tr1_is_convertible_test"/>
+ <test name="tr1_is_pod_test"/>
+ <test name="tr1_is_polymorphic_test"/>
+ <test name="tr1_tky_function_type_test"/>
+ <toolset name="msvc-9.0"/>
+ <note author="John Maddock">
+ MSVC 9.0 with the optional feature pack installed includes
+ a version of the TR1 libraries that is not as interface-conforming
+ as the Boost version. Most of these failures are of the "annoying"
+ rather than "unusable" kind.
+ </note>
+ </mark-expected-failures>
+
+ <mark-expected-failures>
             <test name="test_regex"/>
             <test name="std_test_regex"/>
             <test name="test_hash"/>
@@ -5501,6 +5588,31 @@
         </mark-expected-failures>
     </library>
 
+ <!-- unordered -->
+ <library name="unordered">
+ <mark-expected-failures>
+ <test name="move_tests"/>
+ <toolset name="msvc-*"/>
+ <toolset name="intel-win-10.1"/>
+ <toolset name="borland-*"/>
+ <toolset name="sun-*"/>
+ <toolset name="hp_css-*"/>
+ <toolset name="intel-linux-8*"/>
+ <toolset name="intel-linux-9.0*"/>
+ <toolset name="acc-pa_risc"/>
+ <note author="Daniel James">
+ This tests whether the container is successfully moved under
+ different circumstances, and fails if it is copied. Typically if
+ this one fails, it just means that return value optimization was
+ not applied. It might be possible to change the test to make it for
+ the compiler to apply ADL (by not having non-const reference
+ parameters for the function which returns the container). So this
+ is an acceptable failure.
+ </note>
+ </mark-expected-failures>
+ </library>
+
+
     <!-- utility/enable_if -->
     <library name="utility/enable_if">
         <mark-unusable>
@@ -5982,4 +6094,10 @@
         problem.
     </note>
 
+ <note id="46">
+ The test does not compile, most likely because of new version of EDG Front End
+ implementing Core Issue 574. In the HP bug tracking system, it is tracked as
+ QuIX ID: QXCR1000804484.
+ </note>
+
 </explicit-failures-markup>

Modified: branches/proto/v4/tools/boostbook/doc/boostbook.xml
==============================================================================
--- branches/proto/v4/tools/boostbook/doc/boostbook.xml (original)
+++ branches/proto/v4/tools/boostbook/doc/boostbook.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -106,8 +106,8 @@
         <itemizedlist>
           <listitem>Windows with <ulink
                        url="http://www.cygwin.com/">Cygwin</ulink>: select the libxml2 and libxslt packages.</listitem>
- <listitem>Windows without Cygwin: Download packages <ulink url="http://www.meta-comm.com/engineering/boost/xsltproc-win32.zip">
- here</ulink>.</listitem>
+ <listitem>Windows without Cygwin: Download the <ulink url="http://www.zlatkovic.com/pub/libxml/">binary packages</ulink>
+ from Igor Zlatkovic. At the very least, you'll need iconv, zlib, libxml2 and libxslt.</listitem>
           <listitem>Mac OS X with Fink: Get the <code>libxslt</code> package.</listitem>
           <listitem>Mac OS X without Fink: <ulink url="http://www.zveno.com/open_source/libxml2xslt.html">Download the libxslt binaries</ulink></listitem>
           <listitem>Any platform: <ulink
@@ -186,7 +186,7 @@
 
           <listitem><para>The DocBook DTD, available as a ZIP archive
           at the <ulink
- url="http://www.oasis-open.org/docbook/xml/4.2/index.1.shtml">OASIS
+ url="http://www.oasis-open.org/docbook/xml/4.2/">OASIS
           DocBook site</ulink>. The package is called "DocBook XML
           4.2". Extract the DocBook DTD to a directory on your hard
           disk (which we'll refer to as the

Modified: branches/proto/v4/tools/boostbook/doc/documenting.xml
==============================================================================
--- branches/proto/v4/tools/boostbook/doc/documenting.xml (original)
+++ branches/proto/v4/tools/boostbook/doc/documenting.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -218,7 +218,7 @@
           </row>
           <row>
             <entry><simpara>&lt;table&gt;, &lt;tr&gt;, &lt;th&gt;, &lt;td&gt;</simpara></entry>
- <entry><simpara>&lt;table&gt;, &lt;informaltable&gt;, &lt;tgroup&gt;, &lt;thead&gt;, &lt;tfoot&gt;, &lt;tbody&gt;, &lt;row&gt;, &lt;entry&gt;, &lt;entrytbl&gt;; BoostBook tables are equivalent to DocBook tables, for which there is a good <ulink url="http://opensource.bureau-cornavin.com/crash-course/tables.html">tutorial here</ulink></simpara></entry>
+ <entry><simpara>&lt;table&gt;, &lt;informaltable&gt;, &lt;tgroup&gt;, &lt;thead&gt;, &lt;tfoot&gt;, &lt;tbody&gt;, &lt;row&gt;, &lt;entry&gt;, &lt;entrytbl&gt;; BoostBook tables are equivalent to DocBook tables, for which there is a good <ulink url="http://opensource.bureau-cornavin.com/crash-course/en/tables.html">tutorial here</ulink></simpara></entry>
           </row>
         </tbody>
       </tgroup>

Modified: branches/proto/v4/tools/boostbook/dtd/boostbook.dtd
==============================================================================
--- branches/proto/v4/tools/boostbook/dtd/boostbook.dtd (original)
+++ branches/proto/v4/tools/boostbook/dtd/boostbook.dtd 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -89,7 +89,7 @@
 <!ELEMENT libraryinfo (author+, copyright*, legalnotice*, librarypurpose, librarycategory*)>
 <!ATTLIST libraryinfo %boost.common.attrib;>
 
-<!ELEMENT librarypurpose (#PCDATA|code|ulink|functionname|methodname|classname|macroname|headername|enumname)*>
+<!ELEMENT librarypurpose (#PCDATA|code|ulink|functionname|methodname|classname|macroname|headername|enumname|globalname)*>
 <!ATTLIST librarypurpose %boost.common.attrib;>
 
 <!ELEMENT librarycategory (#PCDATA)>
@@ -318,6 +318,11 @@
 <!ELEMENT headername (#PCDATA)>
 <!ATTLIST headername %boost.common.attrib;>
 
+<!ELEMENT globalname (#PCDATA)>
+<!ATTLIST globalname
+ alt CDATA #IMPLIED
+ %boost.common.attrib;>
+
 <!ELEMENT copy-assignment
     (template?, type?, parameter*, %boost.function.semantics;)>
 <!ATTLIST copy-assignment

Modified: branches/proto/v4/tools/boostbook/xsl/annotation.xsl
==============================================================================
--- branches/proto/v4/tools/boostbook/xsl/annotation.xsl (original)
+++ branches/proto/v4/tools/boostbook/xsl/annotation.xsl 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,6 +16,7 @@
   <xsl:key name="libraries" match="library" use="@name"/>
   <xsl:key name="macros" match="macro" use="@name"/>
   <xsl:key name="headers" match="header" use="@name"/>
+ <xsl:key name="globals" match="namespace/data-member|header/data-member" use="@name"/>
   <xsl:key name="named-entities" match="class|struct|union|concept|function|overloaded-function|macro|library|namespace/data-member|header/data-member|*[attribute::id]" use="@name|@id"/>
 
   <xsl:template match="function|overloaded-function" mode="generate.id">
@@ -84,6 +85,36 @@
     </xsl:call-template>
   </xsl:template>
 
+ <xsl:template match="globalname" mode="annotation">
+ <!-- Determine the (possibly qualified) global name we are looking for -->
+ <xsl:variable name="name">
+ <xsl:choose>
+ <xsl:when test="@alt">
+ <xsl:value-of select="@alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="string(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Determine the unqualified name -->
+ <xsl:variable name="unqualified-name">
+ <xsl:call-template name="strip-qualifiers">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="cxx-link-name">
+ <xsl:with-param name="lookup" select="."/>
+ <xsl:with-param name="type" select="'data-member'"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="string(.)"/>
+ <xsl:with-param name="unqualified-name" select="$unqualified-name"/>
+ <xsl:with-param name="nodes" select="key('globals', $unqualified-name)"/>
+ </xsl:call-template>
+ </xsl:template>
+
   <xsl:template match="methodname" mode="annotation">
     <!-- Determine the (possibly qualified) method name we are looking for -->
     <xsl:variable name="fullname">

Modified: branches/proto/v4/tools/boostbook/xsl/chunk-common.xsl
==============================================================================
--- branches/proto/v4/tools/boostbook/xsl/chunk-common.xsl (original)
+++ branches/proto/v4/tools/boostbook/xsl/chunk-common.xsl 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -28,7 +28,7 @@
     <xsl:choose>
         <xsl:when test="not($recursive)">
             <!-- translate dots into directory separators, and replace illegal file path characters with underscores -->
- <xsl:value-of select="translate(normalize-space(translate($basename, '.&lt;&gt;\:*?&quot;|', '/ ' )), ' ', '_')"/>
+ <xsl:value-of select="translate(normalize-space(translate($basename, '.&lt;&gt;\:*?&quot;|,()!+=&amp;', '/ ' )), ' ', '_')"/>
             <xsl:value-of select="$html.ext"/>
         </xsl:when>
         <xsl:otherwise>

Modified: branches/proto/v4/tools/boostbook/xsl/docbook.xsl
==============================================================================
--- branches/proto/v4/tools/boostbook/xsl/docbook.xsl (original)
+++ branches/proto/v4/tools/boostbook/xsl/docbook.xsl 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -421,7 +421,7 @@
 
   <!-- These DocBook elements have special meaning. Use the annotation mode -->
   <xsl:template match="classname|methodname|functionname|enumname|
- macroname|headername">
+ macroname|headername|globalname">
     <computeroutput>
       <xsl:apply-templates select="." mode="annotation"/>
     </computeroutput>

Modified: branches/proto/v4/tools/boostbook/xsl/doxygen/collect.xsl
==============================================================================
--- branches/proto/v4/tools/boostbook/xsl/doxygen/collect.xsl (original)
+++ branches/proto/v4/tools/boostbook/xsl/doxygen/collect.xsl 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -9,8 +9,6 @@
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:output method="xml" version="1.0" indent="yes" standalone="yes" />
  
- <xsl:param name="doxygen.xml.path">./</xsl:param>
-
   <xsl:template match="/">
     <doxygen>
       <xsl:attribute name="version">
@@ -37,8 +35,7 @@
           </xsl:choose>
         </xsl:variable>
         <xsl:if test="$id">
- <xsl:copy-of select="document( concat($doxygen.xml.path, '/',
- $id, '.xml' ) )/doxygen/*" />
+ <xsl:copy-of select="document( concat( $id, '.xml' ), / )/doxygen/*" />
         </xsl:if>
       </xsl:for-each>
       <xsl:for-each select="doxygenindex/compound">
@@ -53,8 +50,7 @@
           </xsl:choose>
         </xsl:variable>
         <xsl:if test="$id">
- <xsl:copy-of select="document( concat($doxygen.xml.path, '/',
- $id, '.xml' ) )/doxygen/*" />
+ <xsl:copy-of select="document( concat($id, '.xml'), /)/doxygen/*" />
         </xsl:if>
       </xsl:for-each>
     </doxygen>

Modified: branches/proto/v4/tools/boostbook/xsl/source-highlight.xsl
==============================================================================
--- branches/proto/v4/tools/boostbook/xsl/source-highlight.xsl (original)
+++ branches/proto/v4/tools/boostbook/xsl/source-highlight.xsl 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -159,7 +159,7 @@
   </xsl:template>
 
   <xsl:template match="classname|methodname|functionname|libraryname|enumname|
- conceptname|macroname" mode="highlight">
+ conceptname|macroname|globalname" mode="highlight">
     <xsl:apply-templates select="." mode="annotation"/>
   </xsl:template>
 </xsl:stylesheet>

Modified: branches/proto/v4/tools/build/v2/build/feature.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/feature.jam (original)
+++ branches/proto/v4/tools/build/v2/build/feature.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -433,8 +433,8 @@
     }
     if ! $($(feature).values)
     {
- # This is the first value specified for this feature,
- # take it as default value
+ # This is the first value specified for this feature so make it be the
+ # default.
         $(feature).default = $(values[1]) ;
     }
     $(feature).values += $(values) ;
@@ -584,7 +584,7 @@
     }
     else
     {
- # If no subfeature was specified, we didn't expect to see a
+ # If no subfeature was specified, we do not expect to see a
         # value-string.
         if $(value-string)
         {

Modified: branches/proto/v4/tools/build/v2/build/generators.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/generators.jam (original)
+++ branches/proto/v4/tools/build/v2/build/generators.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -418,13 +418,13 @@
     # the '%' symbol in the name pattern will be replaced with the 'name'
     # parameter to obtain the 'name' attribute.
     #
- # For example, if targets types are T1 and T2(with name pattern "%_x"),
- # suffixes for T1 and T2 are .t1 and t2, and source if foo.z, then created
+ # For example, if targets types are T1 and T2 (with name pattern "%_x"),
+ # suffixes for T1 and T2 are .t1 and .t2, and source is foo.z, then created
     # files would be "foo.t1" and "foo_x.t2". The 'name' attribute actually
     # determines the basename of a file.
     #
     # Note that this pattern mechanism has nothing to do with implicit patterns
- # in make. It's a way to produce target which name is different for name of
+ # in make. It is a way to produce target which name is different for name of
     # source.
     #
     rule generated-targets ( sources + : property-set : project name ? )
@@ -449,8 +449,8 @@
             pre = $(pre[2-]) ;
             post = $(post[2-]) ;
 
- targets += [ class.new file-target $(generated-name)
- : $(t) : $(project) : $(a) ] ;
+ targets += [ class.new file-target $(generated-name) : $(t) :
+ $(project) : $(a) ] ;
         }
 
         return [ sequence.transform virtual-target.register : $(targets) ] ;

Modified: branches/proto/v4/tools/build/v2/build/project.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/project.jam (original)
+++ branches/proto/v4/tools/build/v2/build/project.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -955,8 +955,8 @@
     # path is taken to be either absolute, or relative to this project root.
     #
     rule path-constant (
- name # Variable name of the constant.
- : value + # Value of the constant.
+ name # Variable name of the constant.
+ : value + # Value of the constant.
         )
     {
         import project ;

Modified: branches/proto/v4/tools/build/v2/build/property-set.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/property-set.jam (original)
+++ branches/proto/v4/tools/build/v2/build/property-set.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,6 +5,8 @@
 
 import "class" : new ;
 import feature ;
+import path ;
+import project ;
 import property ;
 import sequence ;
 import set ;

Modified: branches/proto/v4/tools/build/v2/build/property.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/property.jam (original)
+++ branches/proto/v4/tools/build/v2/build/property.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -28,7 +28,7 @@
     # them so that we can handle 'properties'.
     for local r in $(requirements)
     {
- # Don't consider conditional requirements.
+ # Do not consider conditional requirements.
         if ! [ MATCH (:) : $(r:G=) ]
         {
             # Note: cannot use a local variable here, so use an ugly name.
@@ -149,15 +149,17 @@
                 # passing 'true' as the second parameter.
                 e += [ feature.expand-subfeatures $(c) : true ] ;
             }
-
             if $(e) = $(condition)
             {
+ # (todo)
+ # This is just an optimization and possibly a premature one at
+ # that.
+ # (todo) (12.07.2008.) (Jurko)
                 result += $(p) ;
             }
             else
             {
- local individual-subfeatures = [ set.difference $(e) : $(condition) ] ;
- result += $(individual-subfeatures:J=,):$(value) ;
+ result += $(e:J=,):$(value) ;
             }
         }
     }
@@ -229,10 +231,10 @@
 
     if ! $($(entry))
     {
- # trim redundancy
+ # Trim redundancy.
         properties = [ feature.minimize $(properties) ] ;
 
- # sort according to path-order
+ # Sort according to path-order.
         properties = [ sequence.insertion-sort $(properties) : path-order ] ;
 
         local components ;
@@ -467,7 +469,8 @@
 # Assumes that all feature values that start with '@' are names of rules, used
 # in 'context-module'. Such rules can be either local to the module or global.
 # Converts such values into 'indirect-rule' format (see indirect.jam), so they
-# can be called from other modules.
+# can be called from other modules. Does nothing for such values that are
+# already in the 'indirect-rule' format.
 #
 rule translate-indirect ( specification * : context-module )
 {
@@ -480,7 +483,7 @@
             local v ;
             if [ MATCH "^([^%]*)%([^%]+)$" : $(m) ]
             {
- # Rule is already in indirect format.
+ # Rule is already in the 'indirect-rule' format.
                 v = $(m) ;
             }
             else
@@ -510,7 +513,7 @@
 }
 
 
-# Class which maintains a property set -> string mapping.
+# Class maintaining a property set -> string mapping.
 #
 class property-map
 {
@@ -536,7 +539,7 @@
 
     # Returns the value associated with 'properties' or any subset of it. If
     # more than one subset has a value assigned to it, returns the value for the
- # longest subset, if it's unique.
+ # longest subset, if it is unique.
     #
     rule find ( properties + )
     {
@@ -548,7 +551,7 @@
     #
     rule find-replace ( properties + : value ? )
     {
- # First find all matches
+ # First find all matches.
         local matches ;
         local match-ranks ;
         for local i in $(self.all-flags)

Modified: branches/proto/v4/tools/build/v2/build/toolset.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/toolset.jam (original)
+++ branches/proto/v4/tools/build/v2/build/toolset.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -21,8 +21,8 @@
 
 .ignore-requirements = ;
 
-# This is used only for testing, to make sure we don't get random extra elements
-# in paths.
+# This is used only for testing, to make sure we do not get random extra
+# elements in paths.
 if --ignore-toolset-requirements in [ modules.peek : ARGV ]
 {
     .ignore-requirements = 1 ;
@@ -101,7 +101,7 @@
                      # <architecture>ia64/<address-model>
                      #
                      # Where both features are optional. Without this syntax
- # we'd be forced to define "default" values.
+ # we would be forced to define "default" values.
 
     values * : # The value to add to variable. If <feature> is specified,
                      # then the value of 'feature' will be added.
@@ -138,7 +138,7 @@
     if $(condition) && ! $(condition:G=) && ! $(hack-hack)
     {
         # We have condition in the form '<feature>', that is, without value.
- # That's a previous syntax:
+ # That is an older syntax:
         # flags gcc.link RPATH <dll-path> ;
         # for compatibility, convert it to
         # flags gcc.link RPATH : <dll-path> ;
@@ -162,10 +162,10 @@
 {
     .$(rule-or-module).flags += $(.flag-no) ;
 
- # Store all flags for a module
+ # Store all flags for a module.
     local module_ = [ MATCH "([^.]*).*" : $(rule-or-module) ] ;
     .module-flags.$(module_) += $(.flag-no) ;
- # Store flag-no -> rule-or-module mapping
+ # Store flag-no -> rule-or-module mapping.
     .rule-or-module.$(.flag-no) = $(rule-or-module) ;
 
     .$(rule-or-module).variable.$(.flag-no) += $(variable-name) ;
@@ -177,7 +177,7 @@
 
 
 # Returns the first element of 'property-sets' which is a subset of
-# 'properties', or an empty list if no such element exists.
+# 'properties' or an empty list if no such element exists.
 #
 rule find-property-subset ( property-sets * : properties * )
 {
@@ -225,6 +225,9 @@
 }
 
 
+# Returns a value to be added to some flag for some target based on the flag's
+# value definition and the given target's property set.
+#
 rule handle-flag-value ( value * : properties * )
 {
     local result ;
@@ -245,8 +248,8 @@
                 local values ;
                 # Treat features with && in the value specially -- each
                 # &&-separated element is considered a separate value. This is
- # needed to handle searched libraries, which must be in a
- # specific order.
+ # needed to handle searched libraries or include paths, which
+ # may need to be in a specific order.
                 if ! [ MATCH (&&) : $(p:G=) ]
                 {
                     values = $(p:G=) ;

Modified: branches/proto/v4/tools/build/v2/build/virtual-target.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/virtual-target.jam (original)
+++ branches/proto/v4/tools/build/v2/build/virtual-target.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -358,7 +358,7 @@
     rule grist ( )
     {
         # Depending on target, there may be different approaches to generating
- # unique prefixes. We'll generate prefixes in the form
+ # unique prefixes. We generate prefixes in the form:
         # <one letter approach code> <the actual prefix>
         local path = [ path ] ;
         if $(path)

Modified: branches/proto/v4/tools/build/v2/doc/src/fragments.xml
==============================================================================
--- branches/proto/v4/tools/build/v2/doc/src/fragments.xml (original)
+++ branches/proto/v4/tools/build/v2/doc/src/fragments.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,53 +6,54 @@
   <section id="root_option">
     <varlistentry>
       <term><literal>root</literal></term>
-
- <!-- At present, this option is only used to set LD_LIBRARY_PATH
- when running tests, and matters only if compiler's lib directory
- is not in LD_LIBRARY_PATH -->
-
- <listitem><para>Specifies root directory of the compiler
- installation. This option is necessary only if it's not possible
- to detect this information from the compiler command&#x2014;for
- example if the specified compiler command is a user script. </para>
- </listitem>
+
+ <!-- At present, this option is only used to set LD_LIBRARY_PATH when
+ running tests, and matters only if compiler's lib directory is not in
+ LD_LIBRARY_PATH. -->
+
+ <listitem><para>Specifies root directory of the compiler installation.
+ This option is necessary only if it is not possible to detect this
+ information from the compiler command&#x2014;for example if the specified
+ compiler command is a user script.</para></listitem>
     </varlistentry>
   </section>
 
   <section id="common_options">
-
+
+ <!-- This most likely needs splitting into common_options,
+ common_cxx_options & common_fortran_options or something similar. We also
+ need to document the fortran specific fflags option. Possibly related Boost
+ Build code should be updated as well so that fortran options may not be
+ specified for non-fortran toolsets and C/C++ options may not be specified
+ for non-C/C++ ones. -->
+
     <varlistentry>
       <term><literal>cflags</literal></term>
-
- <listitem><para>Specifies additional compiler flags that
- will be used when compiling C sources.</para>
- </listitem>
+
+ <listitem><para>Specifies additional compiler flags that will be used when
+ compiling C sources.</para></listitem>
     </varlistentry>
-
+
     <varlistentry>
       <term><literal>cxxflags</literal></term>
-
- <listitem><para>Specifies additional compiler flags that
- will be used when compiling C++ sources.</para>
- </listitem>
+
+ <listitem><para>Specifies additional compiler flags that will be used when
+ compiling C++ sources.</para></listitem>
     </varlistentry>
 
     <varlistentry>
       <term><literal>compileflags</literal></term>
-
- <listitem><para>Specifies additional compiler flags that
- will be used when compiling both C and C++ sources.</para>
- </listitem>
+
+ <listitem><para>Specifies additional compiler flags that will be used when
+ compiling both C and C++ sources.</para></listitem>
     </varlistentry>
 
     <varlistentry>
       <term><literal>linkflags</literal></term>
-
- <listitem><para>Specifies additional command line options
- that will be passed to the linker.</para>
+
+ <listitem><para>Specifies additional command line options that will be
+ passed to the linker.</para>
       </listitem>
     </varlistentry>
-
   </section>
-
 </chapter>

Modified: branches/proto/v4/tools/build/v2/doc/src/reference.xml
==============================================================================
--- branches/proto/v4/tools/build/v2/doc/src/reference.xml (original)
+++ branches/proto/v4/tools/build/v2/doc/src/reference.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -150,13 +150,11 @@
 
           <listitem>
             <para>
- An argument containing either slashes or
- the <code>=</code> symbol specifies a number of build
- request elements (see <xref
- linkend="bbv2.advanced.build_request"/>). In its simplest
- form, it's just a set of properties, separated by
- slashes, which become a single build request element,
- for example:
+ An argument containing either slashes or the <code>=</code> symbol
+ specifies a number of build request elements (see <xref linkend=
+ "bbv2.advanced.build_request"/>). In its simplest form, it is just
+ a set of properties, separated by slashes, which become a single
+ build request element, for example:
 
 <programlisting>
 borland/runtime-link=static
@@ -184,13 +182,13 @@
               part should have either the form
 
 <programlisting>
-<emphasis>feature-name</emphasis>=<emphasis>feature-value1</emphasis>[","<emphasis>feature-valueN</emphasis>]*
+<emphasis>feature-name</emphasis>=<emphasis>feature-value1</emphasis>[","<emphasis>feature-valueN</emphasis>]*
 </programlisting>
 
               or, in case of implicit features
 
 <programlisting>
-<emphasis>feature-value1</emphasis>[","<emphasis>feature-valueN</emphasis>;]*
+<emphasis>feature-value1</emphasis>[","<emphasis>feature-valueN</emphasis>;]*
 </programlisting>
 
               will be converted into the property set
@@ -225,7 +223,7 @@
           They are described in the following table.</para>
 
         <para>FIXME: That table has moved into "User documentation" section
- and there's nothing we can add here. Remove this part?</para>
+ and there is nothing we can add here. Remove this part?</para>
 
 
       </section>
@@ -244,36 +242,36 @@
     <variablelist>
       <varlistentry>
         <term><literal>exe</literal></term>
-
- <listitem><para>Creates an executable file. See
+
+ <listitem><para>Creates an executable file. See
         <xref linkend="bbv2.tasks.programs"/>.</para></listitem>
       </varlistentry>
 
       <varlistentry>
         <term><literal>lib</literal></term>
-
- <listitem><para>Creates an library file. See
+
+ <listitem><para>Creates an library file. See
         <xref linkend="bbv2.tasks.libraries"/>.</para></listitem>
       </varlistentry>
 
       <varlistentry>
         <term><literal>install</literal></term>
-
- <listitem><para>Installs built targets and other files. See
+
+ <listitem><para>Installs built targets and other files. See
         <xref linkend="bbv2.tasks.installing"/>.</para></listitem>
       </varlistentry>
 
       <varlistentry>
         <term><literal>alias</literal></term>
-
- <listitem><para>Creates an alias for other targets. See
+
+ <listitem><para>Creates an alias for other targets. See
         <xref linkend="bbv2.tasks.alias"/>.</para></listitem>
       </varlistentry>
 
       <varlistentry>
         <term><literal>unit-test</literal></term>
-
- <listitem><para>Creates an executable that will be automatically run. See
+
+ <listitem><para>Creates an executable that will be automatically run. See
         <xref linkend="bbv2.tutorial.testing"/>.</para></listitem>
       </varlistentry>
 
@@ -284,23 +282,23 @@
         <term><literal>link-fail</literal></term>
         <term><literal>run</literal></term>
         <term><literal>run-fail</literal></term>
-
- <listitem><para>Specialized rules for testing. See
+
+ <listitem><para>Specialized rules for testing. See
         <xref linkend="bbv2.tutorial.testing"/>.</para></listitem>
       </varlistentry>
 
 
       <varlistentry>
         <term><literal>obj</literal></term>
-
+
         <listitem><para>Creates an object file. Useful when a single source
         file must be compiled with special properties.</para></listitem>
       </varlistentry>
 
       <varlistentry>
         <term><literal>glob</literal></term>
-
- <listitem><para>The <code>glob</code> rule takes a list shell pattern
+
+ <listitem><para>The <code>glob</code> rule takes a list shell pattern
         and returns the list of files in the project's source directory that
         match the pattern. For example:
         <programlisting>
@@ -319,15 +317,15 @@
       <varlistentry id="bbv2.reference.glob-tree">
         <indexterm><primary>glob-tree</primary></indexterm>
         <term><literal>glob-tree</literal></term>
-
+
         <listitem><para>The <code>glob-tree</code> is similar to the
         <code>glob</code> except that it operates recursively from
         the directory of the containing Jamfile. For example:
         <programlisting>
 ECHO [ glob-tree *.cpp : .svn ] ;
         </programlisting>
- will print the names of all C++ files in your project. The
- <literal>.svn</literal> exclude pattern prevents the
+ will print the names of all C++ files in your project. The
+ <literal>.svn</literal> exclude pattern prevents the
         <code>glob-tree</code> rule from entering administrative
         directories of the Subversion version control system.
         </para></listitem>
@@ -335,7 +333,7 @@
 
       <varlistentry>
         <term><literal>project</literal></term>
-
+
         <listitem><para>Declares project id and attributes, including
         project requirements. See <xref linkend="bbv2.advanced.projects"/>.
         </para></listitem>
@@ -343,15 +341,15 @@
 
       <varlistentry>
         <term><literal>use-project</literal></term>
-
- <listitem><para>Assigns a symbolic project ID to a project at
+
+ <listitem><para>Assigns a symbolic project ID to a project at
         a given path. This rule must be better documented!
         </para></listitem>
       </varlistentry>
 
       <varlistentry>
         <term><literal>explicit</literal></term>
-
+
         <listitem><para>The <literal>explicit</literal> rule takes a single
         parameter&#x2014;a list of target names. The named targets will
         be marked explicit, and will be built only if they are explicitly
@@ -362,7 +360,7 @@
 
       <varlistentry>
         <term><literal>constant</literal></term>
-
+
         <listitem><para>Sets project-wide constant. Takes two
         parameters: variable name and a value and makes the specified
         variable name accessible in this Jamfile and any child Jamfiles.
@@ -375,7 +373,7 @@
 
       <varlistentry>
         <term><literal>path-constant</literal></term>
-
+
         <listitem><para>Same as <literal>constant</literal> except that
         the value is treated as path relative to Jamfile location. For example,
         if <command>bjam</command> is invoked in the current directory,
@@ -383,17 +381,17 @@
         <programlisting>
 path-constant DATA : data/a.txt ;
         </programlisting>
- then the variable <varname>DATA</varname> will be set to
+ then the variable <varname>DATA</varname> will be set to
         <literal>helper/data/a.txt</literal>, and if <command>bjam</command>
         is invoked from the <filename>helper</filename> directory, then
- the variable <varname>DATA</varname> will be set to
+ the variable <varname>DATA</varname> will be set to
         <literal>data/a.txt</literal>.
         </para></listitem>
       </varlistentry>
 
       <varlistentry>
         <term><literal>build-project</literal></term>
-
+
         <listitem><para>Cause some other project to be built. This rule
         takes a single parameter&#x2014;a directory name relative to
         the containing Jamfile. When the containing Jamfile is built,
@@ -405,7 +403,7 @@
 
       <varlistentry>
         <term><literal>test-suite</literal></term>
-
+
         <listitem><para>This rule is deprecated and equivalent to
         <code>alias</code>.</para></listitem>
       </varlistentry>
@@ -415,67 +413,82 @@
   </section>
 
   <section id="bbv2.advanced.builtins.features">
- <title>Builtin features</title>
-
+ <title>Builtin features</title>
+
     <variablelist>
       <varlistentry><term><literal>variant</literal></term>
-
+
         <listitem>
           <para>
- A feature that combines several low-level features, making
- it easy to request common build configurations.
+ A feature combining several low-level features, making it easy to
+ request common build configurations.
+ </para>
+
+ <para>
+ <emphasis role="bold">Allowed values:</emphasis>
+ <literal>debug</literal>, <literal>release</literal>,
+ <literal>profile</literal>.
+ </para>
+
+ <para>
+ The value <literal>debug</literal> expands to
           </para>
-
- <para><emphasis role="bold">Allowed values:</emphasis> <literal>debug</literal>, <literal>release</literal>,
- <literal>profile</literal>.</para>
-
- <para>The value <literal>debug</literal> expands to</para>
-
+
 <programlisting>
 &lt;optimization&gt;off &lt;debug-symbols&gt;on &lt;inlining&gt;off &lt;runtime-debugging&gt;on
 </programlisting>
-
- <para>The value <literal>release</literal> expands to</para>
-
+
+ <para>
+ The value <literal>release</literal> expands to
+ </para>
+
 <programlisting>
 &lt;optimization&gt;speed &lt;debug-symbols&gt;off &lt;inlining&gt;full &lt;runtime-debugging&gt;off
 </programlisting>
-
- <para>The value <literal>profile</literal> expands to the same as
- <literal>release</literal>, plus:</para>
-
+
+ <para>
+ The value <literal>profile</literal> expands to the same as
+ <literal>release</literal>, plus:
+ </para>
+
 <programlisting>
 &lt;profiling&gt;on &lt;debug-symbols&gt;on
 </programlisting>
 
- <para>User can define his own build variants using the <code>variant</code> rule from the <code>common</code>
- module.</para>
-
- <para><emphasis role="bold">Notee:</emphasis> Runtime
- debugging is on in debug builds to suit the expectations of
- people used to various IDEs.
- <!-- Define "runtime debugging." Why will those people expect it to be on in debug builds? -->
+ <para>
+ Users can define their own build variants using the
+ <code>variant</code> rule from the <code>common</code> module.
           </para>
- </listitem></varlistentry>
-
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> Runtime debugging is on in
+ debug builds to suit the expectations of people used to various
+ IDEs.
+ <!-- Define "runtime debugging". Why will those people expect it to
+ be on in debug builds? -->
+ </para>
+ </listitem>
+ </varlistentry>
+
       <varlistentry id="bbv2.advanced.builtins.features.link">
         <term><literal>link</literal></term>
-
+
         <listitem>
 
           <para><emphasis role="bold">Allowed values:</emphasis> <literal>shared</literal>,
             <literal>static</literal></para>
 
           <simpara>
- A feature that controls how libraries are built.
+ A feature controling how libraries are built.
           </simpara>
-
- </listitem></varlistentry>
+
+ </listitem>
+ </varlistentry>
 
       <varlistentry id="bbv2.advanced.builtins.features.runtime-link">
         <indexterm><primary>runtime linking</primary></indexterm>
         <term><literal>runtime-link</literal></term>
-
+
         <listitem>
           <para><emphasis role="bold">Allowed values:</emphasis> <literal>shared</literal>,
             <literal>static</literal></para>
@@ -488,33 +501,33 @@
             mixing static and shared runtime requires extreme care. Check
             your compiler documentation for more details.
           </simpara>
-
+
         </listitem>
       </varlistentry>
-
+
       <varlistentry><term><literal>source</literal></term>
-
+
         <listitem>
           <simpara>
- The <code>&lt;source&gt;X</code> feature has the same effect on
- building a target as putting X in the list of sources.
- It's useful when you want to add
- the same source to all targets in the project
+ The <code>&lt;source&gt;X</code> feature has the same effect on
+ building a target as putting X in the list of sources. It is useful
+ when you want to add the same source to all targets in the project
             (you can put &lt;source&gt; in requirements) or to conditionally
- include a source (using conditional requirements, see <xref linkend="bbv2.tutorial.conditions"/>)
- See also the <code>&lt;library&gt;</code> feature.
+ include a source (using conditional requirements, see <xref linkend=
+ "bbv2.tutorial.conditions"/>). See also the <code>&lt;library&gt;
+ </code> feature.
           </simpara>
         </listitem>
       </varlistentry>
-
+
       <varlistentry><term><literal>library</literal></term>
-
+
         <listitem>
           <simpara>
- This feature is almost equivalent to the <code>&lt;source&gt;</code> feature,
- except that it takes effect only for linking. When you want to
- link all targets in a Jamfile to certain library, the
- <code>&lt;library&gt;</code> feature is preferred over
+ This feature is almost equivalent to the <code>&lt;source&gt;</code>
+ feature, except that it takes effect only for linking. When you want
+ to link all targets in a Jamfile to certain library, the
+ <code>&lt;library&gt;</code> feature is preferred over
             <code>&lt;source&gt;X</code> -- the latter will add the library to
             all targets, even those that have nothing to do with libraries.
           </simpara>
@@ -523,55 +536,65 @@
 
       <varlistentry><term><anchor id="bbv2.builtin.features.dependency"/>
           <literal>dependency</literal></term>
-
+
         <listitem>
           <simpara>
- Introduces a dependency on the target named by the
- value of this feature (so it will be brought
- up-to-date whenever the target being declared is).
- The dependency is not used in any other way. For example, in
- application with plugins, the plugins are not used when linking
- the application,
- application might have dependency on its plugins, even though
-
+ Introduces a dependency on the target named by the value of this
+ feature (so it will be brought up-to-date whenever the target being
+ declared is). The dependency is not used in any other way.
+
+ <!--
+ ====================================================================
+ An example and a motivation is needed here. Below is some commented
+ out content that used to be here but did not make any sense and
+ seems to have been left unfinished in some previous revision. Should
+ be fixed and this whole feature should be retested and fixed as
+ needed.
+ ====================================================================
+ For example, in application with plugins, the plugins are not used
+ when linking the application, application might have a dependency on
+ its plugins, even though
+
+ and
+ adds its usage requirements to the build properties
+ of the target being declared.
 
- , and
- adds its usage requirements to the build properties
- of the target being declared.
-
- The primary use case is when you want
+ The primary use case is when you want
             the usage requirements (such as <code>#include</code> paths) of some
- library to be applied, but don't want to link to it.
- <!-- It's hard to picture why anyone would want to do
- that. Please flesh out this motivation -->
+ library to be applied, but do not want to link to it.
+
+ It is hard to picture why anyone would want to do that. Please flesh
+ out this motivation.
+ ====================================================================
+ -->
           </simpara>
         </listitem>
       </varlistentry>
 
-
+
       <varlistentry><term><anchor id="bbv2.builtin.features.use"/>
           <literal>use</literal></term>
-
+
         <listitem>
           <simpara>
- Introduces a dependency on the target named by the
- value of this feature (so it will be brought
- up-to-date whenever the target being declared is), and
- adds its usage requirements to the build properties
+ Introduces a dependency on the target named by the value of this
+ feature (so it will be brought up-to-date whenever the target being
+ declared is), and adds its usage requirements to the build
+ properties
             <!-- Do you really mean "to the requirements?" -->
- of the target being declared. The dependency is not used
- in any other way. The primary use case is when you want
- the usage requirements (such as <code>#include</code> paths) of some
- library to be applied, but don't want to link to it.
- <!-- It's hard to picture why anyone would want to do
- that. Please flesh out this motivation -->
+ of the target being declared. The dependency is not used in any
+ other way. The primary use case is when you want the usage
+ requirements (such as <code>#include</code> paths) of some library
+ to be applied, but do not want to link to it.
+ <!-- It is hard to picture why anyone would want to do that. Please
+ flesh out this motivation. -->
           </simpara>
         </listitem>
       </varlistentry>
-
+
       <varlistentry><term><anchor id="bbv2.reference.features.dll-path"/>
       <literal>dll-path</literal></term>
-
+
         <listitem>
           <simpara>
             Specify an additional directory where the system should
@@ -581,53 +604,51 @@
             in <xref linkend="bbv2.faq"/> for details.
           </simpara>
         </listitem></varlistentry>
-
+
       <varlistentry><term><literal>hardcode-dll-paths</literal></term>
-
+
         <listitem>
           <simpara>
             Controls automatic generation of dll-path properties.
           </simpara>
-
+
           <para><emphasis role="bold">Allowed values:</emphasis>
- <literal>true</literal>, <literal>false</literal>. This property
- is specific to Unix systems. If an executable is built with
+ <literal>true</literal>, <literal>false</literal>. This property is
+ specific to Unix systems. If an executable is built with
             <code>&lt;hardcode-dll-paths&gt;true</code>, the generated binary
- will contain the list of all the paths to the used shared
- libraries. As the result, the executable can be run without
- changing system paths to shared libraries or installing the
- libraries to system paths. This
- <!-- you need an antecedent. This _what_? -->
- is very convenient during
- development. Plase see the <link
- linkend="bbv2.faq.dll-path">FAQ entry</link> for details.
- Note that on Mac OSX, the paths are unconditionally hardcoded by
- the linker, and it's not possible to disable that behaviour.
- </para>
- </listitem></varlistentry>
+ will contain the list of all the paths to the used shared libraries.
+ As the result, the executable can be run without changing system
+ paths to shared libraries or installing the libraries to system
+ paths. This <!-- you need an antecedent. This _what_? --> is very
+ convenient during development. Plase see the <link linkend=
+ "bbv2.faq.dll-path">FAQ entry</link> for details. Note that on Mac
+ OSX, the paths are unconditionally hardcoded by the linker, and it
+ is not possible to disable that behaviour.</para>
+ </listitem>
+ </varlistentry>
 
       <varlistentry>
         <term><literal>cflags</literal></term>
         <term><literal>cxxflags</literal></term>
         <term><literal>linkflags</literal></term>
-
+
         <listitem>
           <simpara>
             The value of those features is passed without modification to the
- corresponding tools. For <code>cflags</code> that's both the C and C++
- compilers, for <code>cxxflags</code> that's the C++ compiler and for
- <code>linkflags</code> that's the linker. The features are handy when
- you're trying to do something special that cannot be achieved by
- higher-level feature in Boost.Build.
+ corresponding tools. For <code>cflags</code> that is both the C and
+ C++ compilers, for <code>cxxflags</code> that is the C++ compiler
+ and for <code>linkflags</code> that is the linker. The features are
+ handy when you are trying to do something special that cannot be
+ achieved by a higher-level feature in Boost.Build.
           </simpara>
         </listitem>
       </varlistentry>
 
       <varlistentry><term><literal>warnings</literal></term>
-
         <listitem>
           <simpara>
- The <code>&lt;warnings&gt;</code> feature controls the warning level of compilers. It has the following values:
+ The <code>&lt;warnings&gt;</code> feature controls the warning level
+ of compilers. It has the following values:
             <itemizedlist>
               <listitem><para><code>off</code> - disables all warnings.</para></listitem>
               <listitem><para><code>on</code> - enables default warning level for the tool.</para></listitem>
@@ -639,25 +660,27 @@
       </varlistentry>
 
       <varlistentry><term><literal>warnings-as-errors</literal></term>
-
         <listitem>
           <simpara>
- The <code>&lt;warnings-as-errors&gt;</code> makes it possible to treat warnings as errors and abort
- compilation on a warning. The value <code>on</code> enables this behaviour. The default value is
+ The <code>&lt;warnings-as-errors&gt;</code> makes it possible to
+ treat warnings as errors and abort compilation on a warning. The
+ value <code>on</code> enables this behaviour. The default value is
             <code>off</code>.
           </simpara>
         </listitem>
       </varlistentry>
 
       <varlistentry><term><literal>build</literal></term>
-
+
         <listitem>
           <para><emphasis role="bold">Allowed values:</emphasis> <literal>no</literal></para>
 
           <para>
- The <code>build</code> feature is used to conditionally disable build of a target. If <code>&lt;build&gt;no</code>
- is in properties when building a target, build of that target is skipped. Combined with conditional requirements this
- allows to skip building some target in configurations where the build is known to fail.
+ The <code>build</code> feature is used to conditionally disable
+ build of a target. If <code>&lt;build&gt;no</code> is in properties
+ when building a target, build of that target is skipped. Combined
+ with conditional requirements this allows you to skip building some
+ target in configurations where the build is known to fail.
           </para>
         </listitem>
       </varlistentry>
@@ -667,32 +690,31 @@
         <listitem><para>The <literal>tag</literal> feature is used to customize
         the name of the generated files. The value should have the form:
 <programlisting>@<replaceable>rulename</replaceable></programlisting> where
- <replaceable>rulename</replaceable> should be a name of a rule with
- the following signature:
+ <replaceable>rulename</replaceable> should be a name of a rule with the
+ following signature:
 <programlisting>rule tag ( name : type ? : property-set )</programlisting>
         The rule will be called for each target with the default name computed
- by Boost.Build, the type of the target, and property set. The rule
- can either return a string that must be used as the name of the
- target, or empty string, in which case the default name will be used.
+ by Boost.Build, the type of the target, and property set. The rule can
+ either return a string that must be used as the name of the target, or
+ an empty string, in which case the default name will be used.
         </para>
 
- <para>Most typical use of the <literal>tag</literal> feature is
- to encode build properties, or library version in library target names.
- You should take care to return non-empty string from the tag rule
- only for types you care about &#x2014; otherwise, you might
- end up modifying names of object files, generated header file and
- other targets for which changing names does not make sense.</para>
+ <para>Most typical use of the <literal>tag</literal> feature is to
+ encode build properties, or library version in library target names. You
+ should take care to return non-empty string from the tag rule only for
+ types you care about &#x2014; otherwise, you might end up modifying
+ names of object files, generated header file and other targets for which
+ changing names does not make sense.</para>
         </listitem>
-
       </varlistentry>
 
       <varlistentry><term><literal>debug-symbols</literal></term>
-
- <listitem>
+
+ <listitem>
           <para><emphasis role="bold">Allowed values:</emphasis> <literal>on</literal>, <literal>off</literal>.</para>
 
           <para>The <literal>debug-symbols</literal> feature specifies if
- produced object files, executables and libraries should include
+ produced object files, executables and libraries should include
           debug information.
           Typically, the value of this feature is implicitly set by the
           <literal>variant</literal> feature, but it can be explicitly
@@ -702,48 +724,76 @@
       </varlistentry>
 
       <varlistentry><term><literal>architecture</literal></term>
- <listitem>
+ <listitem>
 
           <para>The <literal>architecture</literal> features specifies
           the general processor familty to generate code for.</para>
-
+
         </listitem>
       </varlistentry>
 
       <varlistentry><term><literal>instruction-set</literal></term>
         <indexterm><primary>instruction-set</primary></indexterm>
- <listitem>
- <para>Allowed values for this feature depend on used toolset.</para>
+ <listitem>
+ <para>
+ <emphasis role="bold">Allowed values:</emphasis> depend on the used
+ toolset.
+ </para>
 
- <para>The <literal>instruction-set</literal> specifies for which
+ <para>The <literal>instruction-set</literal> specifies for which
           specific instruction set the code should be generated. The
           code in general might not run on processors with older/different
           instruction sets.</para>
 
           <para>While Boost.Build allows a large set of possible values
           for this features, whether a given value works depends on which
- compiler you use. Please see
+ compiler you use. Please see
           <xref linkend="bbv2.reference.tools.compilers"/> for details.
           </para>
-
+
         </listitem>
       </varlistentry>
 
       <varlistentry><term><literal>address-model</literal></term>
- <indexterm><primary>64-bit compilation</primary></indexterm>
- <listitem>
+ <indexterm><primary>64-bit compilation</primary></indexterm>
+ <listitem>
           <para><emphasis role="bold">Allowed values:</emphasis> <literal>32</literal>, <literal>64</literal>.</para>
 
           <para>The <literal>address-model</literal> specifies if 32-bit or
           64-bit code should be generated by the compiler. Whether this feature
- works depends on the used compiler, it's version, how the compiler
- is configured, and the values of the <literal>architecture</literal>
+ works depends on the used compiler, its version, how the compiler is
+ configured, and the values of the <literal>architecture</literal>
           <literal>instruction-set</literal>
- features. Please see <xref linkend="bbv2.reference.tools.compilers"/>
+ features. Please see <xref linkend="bbv2.reference.tools.compilers"/>
           for details.</para>
         </listitem>
       </varlistentry>
-
+
+ <varlistentry><term><literal>c++-template-depth</literal></term>
+ <listitem>
+ <para>
+ <emphasis role="bold">Allowed values:</emphasis> Any positive
+ integer.
+ </para>
+
+ <para>
+ This feature allows configuring a C++ compiler with the maximal
+ template instantiation depth parameter. Specific toolsets may or may
+ not provide support for this feature depending on whether their
+ compilers provide a corresponding command-line option.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> Due to some internal details
+ in the current Boost Build implementation it is not possible to have
+ features whose valid values are all positive integer. As a
+ workaround a large set of allowed values has been defined for this
+ feature and, if a different one is needed, user can easily add it by
+ calling the feature.extend rule.
+ </para>
+ </listitem>
+ </varlistentry>
+
     </variablelist>
   </section>
 
@@ -754,8 +804,8 @@
       and other tools. This section documents how to use those tools.</para>
 
       <para>Before using any tool, you must declare your intention, and possibly
- specify additional information about tool's configuration. This is done
- with the <code>using</code> rule, for example:
+ specify additional information about the tool's configuration. This is
+ done with the <code>using</code> rule, for example:
 <programlisting>
 using gcc ;
 </programlisting>
@@ -776,9 +826,9 @@
         <section id="bbv2.reference.tools.compiler.gcc">
 
           <title>GNU C++</title>
-
- <para>The <code>gcc</code> module supports the
- <ulink url="http://gcc.gnu.org">GNU C++ compiler</ulink>
+
+ <para>The <code>gcc</code> module supports the
+ <ulink url="http://gcc.gnu.org">GNU C++ compiler</ulink>
           on Linux, a number of Unix-like system including MacOS X, SunOS and
           BeOS, and on Windows (either <ulink url="http://www.cygwin.com">Cygwin</ulink>
           or <ulink url="http://www.mingw.org">MinGW</ulink>).
@@ -803,11 +853,11 @@
           &option_list_intro;
           <variablelist>
 
- <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
+ parse="xml"/>
 
- <xi:include href="fragments.xml#xpointer(id('root_option')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('root_option')/*)"
+ parse="xml"/>
 
             <varlistentry>
               <term><literal>rc</literal></term>
@@ -830,7 +880,7 @@
                 or <code>rc</code> for borland's resource compiler.</para>
               </listitem>
             </varlistentry>
-
+
           </variablelist>
 
           <indexterm><primary>64-bit compilation</primary>
@@ -849,11 +899,12 @@
 
           <title>Microsoft Visual C++</title>
 
- <para>The <code>msvc</code> module supports the
+ <para>The <code>msvc</code> module supports the
           <ulink url="http://msdn.microsoft.com/visualc/">Microsoft Visual
           C++</ulink> command-line tools on Microsoft Windows. The supported
           products and versions of command line tools are listed below:</para>
           <itemizedlist>
+ <listitem><para>Visual Studio 2008&#x2014;9.0</para></listitem>
             <listitem><para>Visual Studio 2005&#x2014;8.0</para></listitem>
             <listitem><para>Visual Studio .NET 2003&#x2014;7.1</para></listitem>
             <listitem><para>Visual Studio .NET&#x2014;7.0</para></listitem>
@@ -867,12 +918,11 @@
           </programlisting>
           &using_repeation;
           <para>If the version is not explicitly specified, the most recent
- version found in the registry will be used instead. If the
- special value <code>all</code> is passed as the version, all
- versions found in the registry will be configured. If a version is
- specified, but the command is not, the compiler binary will be
- searched in standard installation paths for that version, followed
- by <envar>PATH</envar>.
+ version found in the registry will be used instead. If the special
+ value <code>all</code> is passed as the version, all versions found in
+ the registry will be configured. If a version is specified, but the
+ command is not, the compiler binary will be searched in standard
+ installation paths for that version, followed by <envar>PATH</envar>.
           </para>
 
           <para>The compiler command should be specified using forward slashes,
@@ -881,84 +931,98 @@
           &option_list_intro;
           <variablelist>
 
- <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
+ parse="xml"/>
 
             <varlistentry>
- <term><literal>setup</literal></term>
+ <term><literal>assembler</literal></term>
 
- <listitem><para>The filename of the environment setup scripts
- to run before invoking the compiler. If not specified,
- <command>vcvars32.bat</command> alongside the compiler binary
- will be used.</para>
- </listitem>
+ <listitem><para>The command that compiles assembler sources. If
+ not specified, <command>ml</command> will be used. The command
+ will be invoked after the setup script was executed and adjusted
+ the <envar>PATH</envar> variable.</para></listitem>
             </varlistentry>
 
             <varlistentry>
               <term><literal>compiler</literal></term>
 
- <listitem><para>The command that compiles C and C++ sources.
- If not specified, <command>cl</command> will be used. The
- command will be invoked after the setup script was
- executed and adjusted the <envar>PATH</envar> variable.</para>
- </listitem>
+ <listitem><para>The command that compiles C and C++ sources. If
+ not specified, <command>cl</command> will be used. The command
+ will be invoked after the setup script was executed and adjusted
+ the <envar>PATH</envar> variable.</para></listitem>
             </varlistentry>
 
             <varlistentry>
- <term><literal>linker</literal></term>
+ <term><literal>compiler-filter</literal></term>
 
- <listitem><para>The command that links executables and dynamic
- libraries.
- If not specified, <command>link</command> will be used. The
- command will be invoked after the setup script was
- executed and adjusted the <envar>PATH</envar> variable.</para>
- </listitem>
+ <listitem><para>Command through which to pipe the output of
+ running the compiler. For example to pass the output to STLfilt.
+ </para></listitem>
             </varlistentry>
 
             <varlistentry>
- <term><literal>assembler</literal></term>
+ <term><literal>idl-compiler</literal></term>
 
- <listitem><para>The command that compiles assember files.
- If not specified, <command>cl</command> will be used. The
- command will be invoked after the setup script was
+ <listitem><para>The command that compiles Microsoft COM interface
+ definition files. If not specified, <command>midl</command> will
+ be used. The command will be invoked after the setup script was
               executed and adjusted the <envar>PATH</envar> variable.</para>
               </listitem>
             </varlistentry>
 
             <varlistentry>
- <term><literal>resource-compiler</literal></term>
+ <term><literal>linker</literal></term>
 
- <listitem><para>The command that compiles resource files.
- If not specified, <command>rc</command> will be used. The
- command will be invoked after the setup script was
- executed and adjusted the <envar>PATH</envar> variable.</para>
- </listitem>
+ <listitem><para>The command that links executables and dynamic
+ libraries. If not specified, <command>link</command> will be used.
+ The command will be invoked after the setup script was executed
+ and adjusted the <envar>PATH</envar> variable.</para></listitem>
             </varlistentry>
 
             <varlistentry>
- <term><literal>idl-compiler</literal></term>
+ <term><literal>mc-compiler</literal></term>
 
- <listitem><para>The command that compiles Microsoft COM
- interface definition files.
- If not specified, <command>midl</command> will be used. The
- command will be invoked after the setup script was
+ <listitem><para>The command that compiles Microsoft message
+ catalog files. If not specified, <command>mc</command> will be
+ used. The command will be invoked after the setup script was
               executed and adjusted the <envar>PATH</envar> variable.</para>
               </listitem>
             </varlistentry>
 
             <varlistentry>
- <term><literal>mc-compiler</literal></term>
+ <term><literal>resource-compiler</literal></term>
 
- <listitem><para>The command that compiles Microsoft message
- catalog files.
- If not specified, <command>mt</command> will be used. The
- command will be invoked after the setup script was
- executed and adjusted the <envar>PATH</envar> variable.</para>
- </listitem>
+ <listitem><para>The command that compiles resource files. If not
+ specified, <command>rc</command> will be used. The command will be
+ invoked after the setup script was executed and adjusted the
+ <envar>PATH</envar> variable.</para></listitem>
             </varlistentry>
 
+ <varlistentry>
+ <term><literal>setup</literal></term>
 
- </variablelist>
+ <listitem><para>The filename of the global environment setup
+ script to run before invoking any of the tools defined in this
+ toolset. Will not be used in case a target platform specific
+ script has been explicitly specified for the current target
+ platform. Used setup script will be passed the target platform
+ identifier (x86, x86_amd64, x86_ia64, amd64 or ia64) as a
+ arameter. If not specified a default script is chosen based on the
+ used compiler binary, e.g. <command>vcvars32.bat</command> or
+ <command>vsvars32.bat</command>.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>setup-amd64</literal></term>
+ <term><literal>setup-i386</literal></term>
+ <term><literal>setup-ia64</literal></term>
+
+ <listitem><para>The filename of the target platform specific
+ environment setup script to run before invoking any of the tools
+ defined in this toolset. If not specified the global environment
+ setup script is used.</para></listitem>
+ </varlistentry>
+ </variablelist>
 
           <section>
             <title>64-bit support</title>
@@ -966,13 +1030,14 @@
             <indexterm><primary>64-bit compilation</primary>
             <secondary>Microsoft Visual Studio</secondary></indexterm>
 
- <para>Starting with version 8.0, Microsoft Visual Studio
- can generate binaries for 64-bit processor, both 64-bit
- flavours of x86 (codenamed AMD64/EM64T), and
- Itanium (codenamed IA64). In addition, compilers that are
- itself run in 64-bit mode, for better performance, are provided.
- The complete list of compiler configurations are as follows
- (we abbreviate AMD64/EM64T to just AMD64):</para>
+ <para>Starting with version 8.0, Microsoft Visual Studio can
+ generate binaries for 64-bit processor, both 64-bit flavours of x86
+ (codenamed AMD64/EM64T), and Itanium (codenamed IA64). In addition,
+ compilers that are itself run in 64-bit mode, for better
+ performance, are provided. The complete list of compiler
+ configurations are as follows (we abbreviate AMD64/EM64T to just
+ AMD64):</para>
+
             <itemizedlist>
               <listitem><para>32-bit x86 host, 32-bit x86 target</para>
               </listitem>
@@ -986,20 +1051,19 @@
               </listitem>
             </itemizedlist>
             <para>
- The 32-bit host compilers can be always used, even on 64-bit Windows.
- On the contrary, 64-bit host compilers require both 64-bit
+ The 32-bit host compilers can be always used, even on 64-bit
+ Windows. On the contrary, 64-bit host compilers require both 64-bit
             host processor and 64-bit Windows, but can be faster. By default,
- only 32-bit host, 32-bit target compiler is installed, and additional
- compilers should be installed explicitly.
+ only 32-bit host, 32-bit target compiler is installed, and
+ additional compilers need to be installed explicitly.
             </para>
 
             <para>To use 64-bit compilation you should:</para>
             <orderedlist>
- <listitem><para>Configure you compiler as usual. If you provide
- a path to the compiler explicitly, provide the path to the
- 32-bit compiler. If you try to specify the path to any of 64-bit
- compilers, configuration won't work.</para>
- </listitem>
+ <listitem><para>Configure you compiler as usual. If you provide a
+ path to the compiler explicitly, provide the path to the 32-bit
+ compiler. If you try to specify the path to any of 64-bit
+ compilers, configuration will not work.</para></listitem>
 
               <listitem><para>When compiling, use <code>address-model=64</code>,
               to generate AMD64 code.</para></listitem>
@@ -1008,22 +1072,19 @@
               <code>architecture=ia64</code></para></listitem>
             </orderedlist>
 
- <para>The (AMD64 host, AMD64 target) compiler will be used
- automatically when you're generating AMD64 code and are
- running 64-bit Windows on AMD64. The (IA64 host, IA64 target)
- compiler won't be ever used, since nobody has an IA64 machine
- to test.</para>
+ <para>The (AMD64 host, AMD64 target) compiler will be used
+ automatically when you are generating AMD64 code and are running
+ 64-bit Windows on AMD64. The (IA64 host, IA64 target) compiler will
+ never be used, since nobody has an IA64 machine to test.</para>
 
             <para>It is believed that AMD64 and EM64T targets are essentially
- compatible. The compiler options <code>/favor:AMD64</code>
- and <code>/favor:EM64T</code>, which are accepted only by
- AMD64 targeting compilers, cause the generated code to be
- tuned to a specific flavor of 64-bit x86. Boost.Build will
- make use of those options depending on the value
- of the<code>instruction-set</code> feature.</para>
-
+ compatible. The compiler options <code>/favor:AMD64</code> and
+ <code>/favor:EM64T</code>, which are accepted only by AMD64
+ targeting compilers, cause the generated code to be tuned to a
+ specific flavor of 64-bit x86. Boost.Build will make use of those
+ options depending on the value of the<code>instruction-set</code>
+ feature.</para>
           </section>
-
         </section>
 
         <section id="bbv2.reference.tools.compiler.intel">
@@ -1052,25 +1113,25 @@
           look in <envar>PATH</envar> for an executable <command>icpc</command>
           (on Linux), or <command>icc.exe</command> (on Windows).
           </para>
-
+
           &option_list_intro;
           <variablelist>
 
- <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
+ parse="xml"/>
 
           </variablelist>
-
+
           <para>The Linux version supports the following additional options:</para>
           <variablelist>
 
- <xi:include href="fragments.xml#xpointer(id('root_option')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('root_option')/*)"
+ parse="xml"/>
 
           </variablelist>
 
           <!-- the compatibility option appears to be messed up -->
-
+
         </section>
 
         <section id="bbv2.reference.tools.compiler.acc">
@@ -1095,10 +1156,10 @@
 
           &option_list_intro;
           <variablelist>
- <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
+ parse="xml"/>
           </variablelist>
-
+
         </section>
 
         <section id="bbv2.reference.tools.compiler.borland">
@@ -1130,10 +1191,10 @@
 
           &option_list_intro;
           <variablelist>
- <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
+ parse="xml"/>
           </variablelist>
-
+
         </section>
 
         <section id="bbv2.reference.tools.compiler.como">
@@ -1141,7 +1202,7 @@
           <title>Comeau C/C++ Compiler</title>
 
           <para>The <code>como-linux</code> and the <code>como-win</code>
- modules supports the
+ modules supports the
           <ulink url="http://www.comeaucomputing.com/">Comeau C/C++ Compiler</ulink>
           on Linux and Windows respectively.</para>
 
@@ -1152,21 +1213,20 @@
           &using_repeation;
 
           <para>If the command is not specified, Boost.Build will search for
- a binary named <command>como</command> in
+ a binary named <command>como</command> in
           <envar>PATH</envar>.</para>
 
           &option_list_intro;
           <variablelist>
- <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
+ parse="xml"/>
           </variablelist>
 
- <para>Before using the windows version of the compiler,
- you need to setup necessary environment variables per compiler's
- documentation. In particular, the <envar>COMO_XXX_INCLUDE</envar>
- variable should be set, where <envar>XXX</envar> corresponds to the
- used backend C compiler.</para>
-
+ <para>Before using the Windows version of the compiler, you need to
+ setup necessary environment variables per compiler's documentation. In
+ particular, the <envar>COMO_XXX_INCLUDE</envar> variable should be
+ set, where <envar>XXX</envar> corresponds to the used backend C
+ compiler.</para>
         </section>
 
         <section id="bbv2.reference.tools.compiler.cw">
@@ -1174,11 +1234,11 @@
           <title>Code Warrior</title>
 
           <para>The <code>cw</code> module support CodeWarrior compiler,
- originally produced by Metrowerks and presently developed
- by Freescale. Boost.Build supports only the versions of the compiler
- that target x86 processors. All such versions were released by
- Metrowerks before aquisition and are not sold any longer.
- The last version known to work is 9.4</para>
+ originally produced by Metrowerks and presently developed by
+ Freescale. Boost.Build supports only the versions of the compiler that
+ target x86 processors. All such versions were released by Metrowerks
+ before aquisition and are not sold any longer. The last version known
+ to work is 9.4.</para>
 
           <para>The module is initialized using the following syntax:</para>
           <programlisting>
@@ -1186,24 +1246,24 @@
 
           &using_repeation;
 
- <para>If the command is not specified, Boost.Build will search for
- a binary named <command>mwcc</command> in default installation
- paths and in <envar>PATH</envar>.</para>
+ <para>If the command is not specified, Boost.Build will search for a
+ binary named <command>mwcc</command> in default installation paths and
+ in <envar>PATH</envar>.</para>
 
           &option_list_intro;
           <variablelist>
 
- <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
+ parse="xml"/>
 
- <xi:include href="fragments.xml#xpointer(id('root_option')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('root_option')/*)"
+ parse="xml"/>
 
             <varlistentry>
               <term><literal>setup</literal></term>
 
               <listitem><para>The command that sets up environment variables
- prior to invoking the compiler. If not specified,
+ prior to invoking the compiler. If not specified,
               <command>cwenv.bat</command> alongside the compiler binary
               will be used.</para>
               </listitem>
@@ -1230,9 +1290,9 @@
               executed and adjusted the <envar>PATH</envar> variable.</para>
               </listitem>
             </varlistentry>
-
+
           </variablelist>
-
+
         </section>
 
         <section id="bbv2.reference.tools.compiler.dmc">
@@ -1250,15 +1310,15 @@
           &using_repeation;
 
           <para>If the command is not specified, Boost.Build will search for
- a binary named <command>como</command> in
+ a binary named <command>como</command> in
           <envar>PATH</envar>.</para>
 
           &option_list_intro;
           <variablelist>
- <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
+ parse="xml"/>
           </variablelist>
-
+
         </section>
 
         <section id="bbv2.reference.tools.compiler.hp_cxx">
@@ -1280,10 +1340,10 @@
 
           &option_list_intro;
           <variablelist>
- <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
+ parse="xml"/>
           </variablelist>
-
+
         </section>
 
         <section id="bbv2.reference.tools.compiler.sun">
@@ -1302,7 +1362,7 @@
 
           <para>If the command is not specified, Boost.Build will search for
           a binary named <command>CC</command>
- in <filename>/opt/SUNWspro/bin</filename> and in
+ in <filename>/opt/SUNWspro/bin</filename> and in
           <envar>PATH</envar>.</para>
 
           <para>When using this compiler on complex C++ code, such as the
@@ -1316,15 +1376,15 @@
 
           &option_list_intro;
           <variablelist>
- <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
- parse="xml"/>
+ <xi:include href="fragments.xml#xpointer(id('common_options')/*)"
+ parse="xml"/>
           </variablelist>
 
           <indexterm><primary>64-bit compilation</primary>
           <secondary>Sun Studio</secondary></indexterm>
           Starting with Sun Studio 12, you can create 64-bit applications
           by using the <code>address-model=64</code> property.
-
+
         </section>
 
         <section id="bbv2.reference.tools.compiler.vacpp">
@@ -1346,14 +1406,14 @@
 
           <para>Later versions of Visual Age are known as XL C/C++. They
           were not tested with the the <code>vacpp</code> module.</para>
-
+
         </section>
 
       </section>
 
       <section>
         <title>Third-party libraries</title>
-
+
         <para>Boost.Build provides special support for some
         third-party C++ libraries, documented below.</para>
 
@@ -1363,18 +1423,18 @@
 
           <para>The <ulink url="http://stlport.org">STLport</ulink> library
           is an alternative implementation of C++ runtime library. Boost.Build
- supports using that library on Windows platfrom. Linux is
+ supports using that library on Windows platfrom. Linux is
           hampered by different naming of libraries in each STLport
           version and is not officially supported.</para>
 
- <para>Before using STLport, you need to configure it in
+ <para>Before using STLport, you need to configure it in
           <filename>user-config.jam</filename> using the following syntax:
           </para>
           <programlisting>
 using stlport : <optional><replaceable>version</replaceable></optional> : <replaceable>header-path</replaceable> : <optional><replaceable>library-path</replaceable></optional> ;
 </programlisting>
           <para>
- Where <replaceable>version</replaceable> is the version of
+ Where <replaceable>version</replaceable> is the version of
           STLport, for example <literal>5.1.4</literal>,
           <replaceable>headers</replaceable> is the location where
           STLport headers can be found, and <replaceable>libraries</replaceable>
@@ -1392,13 +1452,13 @@
         </section>
 
       </section>
-
+
     </section>
 
   <section id="bbv2.reference.buildprocess">
     <title>Build process</title>
 
- <para>The general overview of the build process was given in the
+ <para>The general overview of the build process was given in the
       <link linkend="bbv2.advanced.build_process">user documentation</link>.
       This section provides additional details, and some specific rules.
     </para>
@@ -1432,7 +1492,7 @@
 
       <para>When there are several alternatives, one of them must be
         selected. The process is as follows:</para>
-
+
       <orderedlist>
         <listitem>
           <simpara>
@@ -1442,14 +1502,14 @@
             requirements].
           </simpara>
         </listitem>
-
+
         <listitem>
           <simpara>
             An alternative is viable only if all properties in condition
             are present in build request.
           </simpara>
         </listitem>
-
+
         <listitem>
           <simpara>
             If there's one viable alternative, it's choosen. Otherwise,
@@ -1462,8 +1522,8 @@
           </simpara>
         </listitem>
       </orderedlist>
-
- </section>
+
+ </section>
 
     <section id="bbv2.reference.buildprocess.common">
       <title>Determining common properties</title>
@@ -1484,7 +1544,7 @@
 
         <listitem><para>A non-conditional property in requirement in always
             present in common properties.</para></listitem>
-
+
         <listitem><para>A property in build request is present in
             common properties, unless (2) tells otherwise.</para></listitem>
 
@@ -1511,14 +1571,14 @@
         conditional property. For example, the following example works as
         expected:
 <programlisting>
-exe a : a.cpp
- : &lt;toolset&gt;gcc:&lt;variant&gt;release
+exe a : a.cpp
+ : &lt;toolset&gt;gcc:&lt;variant&gt;release
         &lt;variant&gt;release:&lt;define&gt;FOO ;
 </programlisting>
- </para>
+ </para>
 
   </section>
-
+
   </section>
 
 
@@ -1534,7 +1594,7 @@
         aspect of a build configuration, such as whether inlining is
         enabled. Feature names may not contain the '<literal>&gt;</literal>'
         character.</para>
-
+
   <!--
     And what about dash?
   -->
@@ -1544,7 +1604,7 @@
         may not contain the '<literal>&lt;</literal>', '<literal>:</literal>', or
         '<literal>=</literal>' characters. Feature values for free features may not
         contain the '<literal>&lt;</literal>' character.</para>
-
+
       <para>A <emphasis>property</emphasis> is a (feature,value) pair, expressed as
         &lt;feature&gt;value.</para>
 
@@ -1553,7 +1613,7 @@
         (in the context of its parent) from its value. A subfeature's
         parent can never be another subfeature. Thus, features and their
         subfeatures form a two-level hierarchy.</para>
-
+
       <para>A <emphasis>value-string</emphasis> for a feature <emphasis role="bold">F</emphasis> is a string of
         the form
         <literal>value-subvalue1-subvalue2</literal>...<literal>-subvalueN</literal>, where
@@ -1563,22 +1623,22 @@
         <literal>&lt;toolset&gt;gcc &lt;toolset-version&gt;3.0.1</literal> can be
         expressed more conscisely using a value-string, as
         <literal>&lt;toolset&gt;gcc-3.0.1</literal>.</para>
-
+
       <para>A <emphasis>property set</emphasis> is a set of properties (i.e. a
         collection without duplicates), for instance:
         <literal>&lt;toolset&gt;gcc &lt;runtime-link&gt;static</literal>.</para>
-
+
       <para>A <emphasis>property path</emphasis> is a property set whose elements have
         been joined into a single string separated by slashes. A property
         path representation of the previous example would be
         <literal>&lt;toolset&gt;gcc/&lt;runtime-link&gt;static</literal>.</para>
-
+
       <para>A <emphasis>build specification</emphasis> is a property set that fully
         describes the set of features used to build a target.</para>
-
+
       <section id="bbv2.reference.features.validity">
         <title>Property Validity</title>
-
+
         <para>
           For <link linkend=
             "bbv2.reference.features.attributes.free">free</link>
@@ -1592,11 +1652,11 @@
           property is only valid in the presence of
           <code>&lt;gcc-version&gt;2.95.2</code>.
         </para>
-
+
       </section>
       <section id="bbv2.reference.features.attributes">
         <title>Feature Attributes</title>
-
+
         <para>Each feature has a collection of zero or more of the following
           attributes. Feature attributes are low-level descriptions of how the
           build system should interpret a feature's values when they appear in
@@ -1604,31 +1664,31 @@
           that an <emphasis>incidental</emphasis> property, for example, is
           one whose feature has the <emphasis>incidental</emphasis>
           attribute.</para>
-
+
         <itemizedlist>
           <listitem>
             <para><emphasis>incidental</emphasis></para>
-
+
             <para>Incidental features are assumed not to affect build
               products at all. As a consequence, the build system may use
               the same file for targets whose build specification differs
               only in incidental features. A feature that controls a
               compiler's warning level is one example of a likely
               incidental feature.</para>
-
+
             <para>Non-incidental features are assumed to affect build
               products, so the files for targets whose build specification
               differs in non-incidental features are placed in different
               directories as described in "target paths" below. [ where? ]
             </para>
           </listitem>
-
+
           <listitem>
             <para>
               <anchor id="bbv2.reference.features.attributes.propagated"/>
               <emphasis>propagated</emphasis>
             </para>
-
+
             <para>Features of this kind are
               propagated to dependencies. That is, if a <link linkend=
                 "bbv2.advanced.targets.main">main target</link> is built using a
@@ -1640,29 +1700,29 @@
               libraries. Thus, the <literal>&lt;optimization&gt;</literal> feature is
               propagated.</para>
           </listitem>
-
+
           <listitem>
             <para>
               <anchor id="bbv2.reference.features.attributes.free"/>
               <emphasis>free</emphasis>
             </para>
-
+
             <para>Most features have a finite set of allowed values, and can
               only take on a single value from that set in a given build
               specification. Free features, on the other hand, can have
               several values at a time and each value can be an arbitrary
               string. For example, it is possible to have several
               preprocessor symbols defined simultaneously:</para>
-
+
 <programlisting>
 &lt;define&gt;NDEBUG=1 &lt;define&gt;HAS_CONFIG_H=1
 </programlisting>
 
           </listitem>
-
+
           <listitem>
             <para><emphasis>optional</emphasis></para>
-
+
             <para>An optional feature is a feature that is not required to
               appear in a build specification. Every non-optional non-free
               feature has a default value that is used when a value for
@@ -1742,25 +1802,25 @@
       </section>
       <section id="bbv2.reference.features.declaration">
         <title>Feature Declaration</title>
-
+
         <para>The low-level feature declaration interface is the
           <literal>feature</literal> rule from the
           <literal>feature</literal> module:
-
+
 <programlisting>
 rule feature ( name : allowed-values * : attributes * )
 </programlisting>
-
+
           A feature's allowed-values may be extended with the
           <code>feature.extend</code> rule.
         </para>
-
+
       </section>
     </section>
 
     <section id="bbv2.reference.variants">
       <title>Build Variants</title>
-
+
       <para>
         A build variant, or (simply variant) is a special kind of composite
         feature that automatically incorporates the default values of
@@ -1783,7 +1843,7 @@
         target requires some set of properties, it is needed to find the
         set of properties to use for building. This process is called
         <emphasis>property refinement</emphasis> and is performed by these rules</para>
-
+
       <orderedlist>
 
         <listitem>
@@ -1835,22 +1895,22 @@
 
     <section id="bbv2.reference.ids">
       <title>Target identifiers and references</title>
-
+
       <para><emphasis>Target identifier</emphasis> is used to denote a
         target. The syntax is:</para>
 
 <programlisting>
 target-id -&gt; (project-id | target-name | file-name )
- | (project-id | directory-name) "//" target-name
+ | (project-id | directory-name) "//" target-name
 project-id -&gt; path
 target-name -&gt; path
 file-name -&gt; path
-directory-name -&gt; path
+directory-name -&gt; path
 </programlisting>
 
       <para>
         This grammar allows some elements to be recognized as either
-
+
         <itemizedlist>
           <listitem>
             <simpara>
@@ -1898,7 +1958,7 @@
 
         <listitem>
           <simpara>
- It allows to have main target names with slashes.
+ It allows to have main target names with slashes.
 
             <!-- The motivation for which is:
 
@@ -1913,7 +1973,7 @@
             target name that contains slashes?
 
             3. Using sub-Jamfile in "foo" to declare extracted file "foo/b" is
- not an option, because you should not change existing tree
+ not an option, because you should not change existing tree
 
             That makes good rationale for why main target must contain names.
             -->
@@ -1937,21 +1997,21 @@
         <programlisting>
           exe compiler : compiler.cpp libs/cmdline/&lt;optimization&gt;space ;
         </programlisting>
-
+
         would cause the version of <literal>cmdline</literal> library,
         optimized for space, to be linked in even if the
         <literal>compiler</literal> executable is build with optimization for
         speed.
       </para>
     </section>
-
+
   </section>
 
   <section id="bbv2.reference.generators">
     <title>Generators</title>
 
     <warning><para>The information is this section is likely to be outdated
- and misleading.
+ and misleading.
       </para></warning>
 
     <para>To construct a main target with given properties from sources,
@@ -1999,7 +2059,7 @@
           </simpara>
         </listitem>
       </orderedlist>
-
+
       <para>
         Generator's required and optional properties may not include
         either free or incidental properties. (Allowing this would
@@ -2126,7 +2186,7 @@
 <!--
      Local Variables:
      mode: xml
- sgml-indent-data: t
+ sgml-indent-data: t
      sgml-parent-document: ("userman.xml" "chapter")
      sgml-set-face: t
      End:

Modified: branches/proto/v4/tools/build/v2/doc/src/tasks.xml
==============================================================================
--- branches/proto/v4/tools/build/v2/doc/src/tasks.xml (original)
+++ branches/proto/v4/tools/build/v2/doc/src/tasks.xml 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -657,24 +657,24 @@
       <title>Generated headers</title>
 
       <para>Usually, Boost.Build handles implicit dependendies completely
- automatically. For example, for C++ files, all <literal>#include</literal>
- statements are found and handled. The only aspect where user help
- might be needed is implicit dependency on generated files.</para>
-
- <para>By default, Boost.Build handles such dependencies within one
- main target. For example, assume that main target "app" has two
- sources, "app.cpp" and "parser.y". The latter source is converted
- into "parser.c" and "parser.h". Then, if "app.cpp" includes
- "parser.h", Boost.Build will detect this dependency. Moreover,
- since "parser.h" will be generated into a build directory, the
- path to that directory will automatically added to include
- path.</para>
+ automatically. For example, for C++ files, all
+ <literal>#include</literal> statements are found and handled. The only
+ aspect where user help might be needed is implicit dependency on
+ generated files.</para>
+
+ <para>By default, Boost.Build handles such dependencies within one main
+ target. For example, assume that main target "app" has two sources,
+ "app.cpp" and "parser.y". The latter source is converted into "parser.c"
+ and "parser.h". Then, if "app.cpp" includes "parser.h", Boost.Build will
+ detect this dependency. Moreover, since "parser.h" will be generated
+ into a build directory, the path to that directory will automatically
+ added to include path.</para>
 
       <para>Making this mechanism work across main target boundaries is
- possible, but imposes certain overhead. For that reason, if
- there's implicit dependency on files from other main targets, the
- <literal>&lt;implicit-dependency&gt;</literal> [ link ] feature must
- be used, for example:</para>
+ possible, but imposes certain overhead. For that reason, if there is
+ implicit dependency on files from other main targets, the
+ <literal>&lt;implicit-dependency&gt;</literal> [ link ] feature must be
+ used, for example:</para>
 
 <programlisting>
 lib parser : parser.y ;
@@ -682,9 +682,9 @@
 </programlisting>
 
       <para>
- The above example tells the build system that when scanning
- all sources of "app" for implicit-dependencies, it should consider
- targets from "parser" as potential dependencies.
+ The above example tells the build system that when scanning all sources
+ of "app" for implicit-dependencies, it should consider targets from
+ "parser" as potential dependencies.
       </para>
 </section>
 

Deleted: branches/proto/v4/tools/build/v2/generators_prototype.py
==============================================================================
--- branches/proto/v4/tools/build/v2/generators_prototype.py 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,731 +0,0 @@
-# Copyright 2003 Dave Abrahams
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-# Importing by a different name keeps PyChecker happy
-from __future__ import generators as generators_
-import sys
-
-
-class Generator(object):
- """Representation of a transformation from source to target types.
-
- sources and targets may be either strings or sequences of
- strings.
-
- >>> print Generator(('obj*', 'lib*'), 'exe')
- exe <- obj*,lib*
-
- >>> assert Generator('c','o').unary
- """
-
- def __init__(self, sources, targets):
- """
- >>> g = Generator(['obj*', 'z', 'cpp'], ['lib','dll'])
- >>> g.signature
- [('cpp', 1, 1), ('obj', 0, '*'), ('z', 1, 1)]
- >>> g = Generator('cpp', 'obj')
- >>> g.signature
- [('cpp', 1, 1)]
- """
- self.sources = _sequence_of_strings(sources)
- self.targets =_sequence_of_strings(targets)
- self.targets_ = _string_multiset(targets)
-
- signature = {}
- stars = {}
- for s in self.sources:
- if s.endswith('*'):
- stars[s[:-1]] = 1
- signature.setdefault(s[:-1],0)
- else:
- signature[s] = signature.get(s,0) + 1
-
- self.signature = []
- for t, n in signature.items():
- if t in stars:
- self.signature.append((t, n, '*'))
- else:
- self.signature.append((t, n, n))
-
- self.signature.sort() # makes doctests nicer
-
- # Remember whether the signature is strictly unary
- self.unary = not stars and len(self.sources) == 1
-
- def match(self, group):
- """If group satisfies an element of the signature, returns an
- amended signature that consists of all other elements.
- Otherwise, returns None.
- >>> g = Generator(['obj*', 'z', 'cpp', 'z'], ['lib','dll'])
- >>> g.match(TargetTypeGroup('obj',12))
- [('cpp', 1, 1), ('z', 2, 2)]
- >>> g.match(TargetTypeGroup('cpp',12)) # None
-
- >>> g.match(TargetTypeGroup('cpp',1))
- [('obj', 0, '*'), ('z', 2, 2)]
-
- >>> g.match(TargetTypeGroup('z',2))
- [('cpp', 1, 1), ('obj', 0, '*')]
-
- >>> Generator('cpp','obj').match(TargetTypeGroup('cpp',1))
- []
-
- >>> Generator('cpp','obj').match(TargetTypeGroup('cpp',12))
- []
- """
- if self in group.generators:
- return None
-
- for i in range(len(self.signature)):
- e = self.signature[i]
- if e[0] == group.target_type:
- if self.unary:
- return []
- if e[1] > group.size or e[2] < group.size:
- return None
- else:
- return self.signature[:i] + self.signature[i+1:]
- return None
-
- def __str__(self):
- """Make a nice human-readable representation
- >>> g = Generator(['obj*', 'z', 'cpp'], ['lib','dll'])
- >>> print g
- lib,dll <- obj*,z,cpp
- """
- return ','.join(self.targets) + ' <- ' + ','.join(self.sources)
-
- def __type_list_rep(self, type_list):
- if len(type_list) == 1:
- return repr(type_list[0])
- else:
- return repr(type_list)
-
- def __repr__(self):
- return (
- self.__module__ + '.' + type(self).__name__ + '(' +
- self.__type_list_rep(self.sources)
- + ', ' + self.__type_list_rep(self.targets) + ')'
- )
-
-def _dict_tuple(d):
- l = d.items()
- l.sort()
- return tuple(l)
-
-def _sorted(list):
- list.sort()
- return list
-
-class GeneratorSet(object):
- def __init__(self):
- self.all_generators = {}
- self.generators_by_type = {}
-
- def __iadd__(self, generator):
- """Add a generator to the set
-
- >>> s = GeneratorSet()
- >>> s += Generator('foo', 'bar')
- >>> s += Generator('foo', 'baz')
- >>> s += Generator(['foo','bar'], 'baz')
- >>> s += Generator('bar', ['baz', 'mumble'])
- >>> s += Generator('bar*', ['bing'])
- >>> print s
- {
- bar:
- baz <- foo,bar
- baz,mumble <- bar
- bing <- bar*
- foo:
- bar <- foo
- baz <- foo
- baz <- foo,bar
- }
-
- """
- if not generator in self.all_generators:
- self.all_generators[generator] = 1
- for t in generator.sources:
- if t.endswith('*'):
- t = t[:-1]
- l = self[t]
- l.append(generator)
- return self
-
- def __isub__(self, generator):
- for t in generator.sources:
- if t.endswith('*'):
- t = t[:-1]
- self[t].remove(generator)
- return self
-
- def __getitem__(self, t):
- """Given a target type, return a list of all the generators
- which can consume that target type.
- """
- return self.generators_by_type.setdefault(t,[])
-
- def __str__(self):
- # import pprint
- # return pprint.pformat(self.generators_by_type)
-
- s = []
-
- for k,v in _sorted(self.generators_by_type.items()):
- s += [ ' ' + k + ':\n ' + '\n '.join([ str(x) for x in v ]) ]
-
- return '{\n' + '\n'.join(s) + '\n}'
-
-def _dicts_intersect(d1, d2):
- """True iff d1 and d2 have a key in common
-
- >>> assert _dicts_intersect({1:0, 2:0}, {2:0})
- >>> assert _dicts_intersect({2:0}, {1:0, 2:0})
- >>> assert not _dicts_intersect({1:0, 3:0}, {2:0})
- >>> assert not _dicts_intersect({2:0}, {1:0, 3:0})
- """
- if len(d2) < len(d1):
- tmp = d1
- d1 = d2
- d2 = tmp
- for k in d1.iterkeys():
- if k in d2:
- return True
- return False
-
-class TargetTypeGroup(object):
- instances = 0
-
- def __init__(
- self
- , target_type
- , size # how many of that type are in the group.
- , parents = ()
- , generator = None):
- """
- >>> g1 = TargetTypeGroup('x', 1)
- >>> assert not g1.extra_targets
- >>> assert g1.consumed_sources == { g1:1 }
- >>> g2 = TargetTypeGroup('x', 1)
-
- >>> g3 = TargetTypeGroup('x', 1, [g1,g2])
- >>> assert g1 in g3.consumed_sources
- >>> assert g2 in g3.consumed_sources
- >>> assert not g3 in g3.consumed_sources
- """
- self.target_type = target_type
- self.size = size
- self.parents = parents
- self.generator = generator
- self.siblings = None
- self.id = TargetTypeGroup.instances
- self.ambiguous = reduce(lambda x,y: x or y.ambiguous and 1,
- parents, None)
-
- self.generators = { generator : 1 } # it doesn't hurt to store None here
- ignored = [ self.generators.update(p.generators) for p in parents ]
-
- self.__constituents = None
- self.__extra_targets = None
-
- TargetTypeGroup.instances += 1
-
- if generator:
- self.moves = { (id(generator),id(parents)) : 1 }
- else:
- self.moves = {}
-
- if not parents:
- self.consumed_sources = {self:1}
- self.__extra_targets = ()
- else:
- ignored = [ self.moves.update(p.moves) for p in parents ]
-
- if len(parents) == 1:
- self.consumed_sources = parents[0].consumed_sources
- else:
- self.consumed_sources = {}
- for c in parents:
- self.consumed_sources.update(c.consumed_sources)
-
- # constituents property - the set of all target groups consumed in
- # creating this group
- def __get_constituents(self):
- if self.__constituents is None:
- self.__constituents = {self:1}
- for c in self.parents:
- self.__constituents.update(c.constituents)
- return self.__constituents
-
- constituents = property(__get_constituents)
-
- cost = property(lambda self: len(self.moves))
-
- # extra targets property - in general, every target group sits at
- # the root of a DAG. The extra targets are the ones produced by
- # generators that run in this DAG but which are not part of the
- # DAG, i.e. are not constituents. In the example below, X and Y
- # are extra targets of A.
- #
- # A X B,C <- D
- # / \ / C,Y <- E
- # B C Y A,X <- B,C
- # \ / \ /
- # Sources: D E
- #
- # We use the extra targets to determine the equivalence of two
- # search States
- def __get_extra_targets(self):
- if self.__extra_targets is None:
-
- if len(self.parents) == 1 and not self.siblings:
- self.__extra_targets = self.parents[0].extra_targets
- else:
- # all siblings are created incidentally
- if self.siblings:
- t = tuple([s for s in self.siblings if s != self])
- else:
- t = ()
-
- # Any groups created incidentally as part of generating my
- # parents are also incidental to my generation
- for c in self.parents:
- for i in c.extra_targets:
- if i not in self.constituents:
- t += (i,)
-
- self.__extra_targets = _sort_tuple(t)
- return self.__extra_targets
-
- extra_targets = property(__get_extra_targets)
-
- def set_siblings(self, sibs):
- assert self.__extra_targets is None, \
- "can't set siblings after extra targets already computed."
-
- assert self.parents, "original source nodes don't have siblings"
- self.siblings = sibs
-
- def __repr__(self):
- return '%s.%s(#%s$%s)' % (self.size,self.target_type,self.id,self.cost)
-
- def is_compatible_with(self, other):
- """True iff self and other can be used to trigger a generator.
-
- >>> g1 = TargetTypeGroup('x', 1)
- >>> g2 = TargetTypeGroup('x', 1)
- >>> assert g1.is_compatible_with(g2)
-
- >>> g3 = TargetTypeGroup('x', 1, [g1])
- >>> g4 = TargetTypeGroup('x', 1, [g2])
- >>> assert g3.is_compatible_with(g4)
- >>> assert g3.is_compatible_with(g2)
- >>> assert not g3.is_compatible_with(g1)
- >>> assert not g2.is_compatible_with(g4)
-
- >>> g5 = TargetTypeGroup('x', 1, [g3])
- >>> assert not g5.is_compatible_with(g1)
- """
- return not _dicts_intersect(
- self.constituents, other.constituents)
-
- def all_compatible(self, others):
- """True iff self is_compatible with every element of other
- """
- for o in others:
- if not self.is_compatible_with(o):
- return False
- return True
-
- def atoms(self):
- """If this group was formed by combining other groups without
- a generator, return a set of its nearest parent groups which
- were not formed that way. Otherwise, return a set
- containing only this group.
-
- >>> g1 = TargetTypeGroup('x',1)
- >>> g2 = TargetTypeGroup('x',1)
- >>> a = TargetTypeGroup('x',2, [g1,g2]).atoms()
- >>> assert g1 in a and g2 in a and len(a) == 2
- """
- if self.generator or not self.parents:
- return (self,)
- x = ()
- for p in self.parents:
- x += p.atoms()
- return x
-
-
- def consumes(self, others):
- """True iff not self is_compatible with every element of other
- """
- for o in others:
- if self.is_compatible_with(o):
- return False
- return True
-
-def _string_multiset(s):
- x = {}
- for t in _sequence_of_strings(s):
- x[t] = x.get(t,0) + 1
- return x
-
-
-def parent_sets(chosen, signature, all_groups, generator):
- """Given an already-chosen tuple of TargetTypeGroups and a signature
- of the groups left to choose, generates all mutually-compatible
- combinations of groups starting with chosen
-
- >>> TargetTypeGroup.instances = 0
- >>> groups = {
- ... 'x': [ TargetTypeGroup('x', 1) ],
- ... 'y': [ TargetTypeGroup('y', 1), TargetTypeGroup('y',2) ],
- ... 'z': [ TargetTypeGroup('z', 1) ]
- ... }
- >>> signature = (('y',0,'*'),('z',1,'1'))
- >>> chosen = (groups['x'][0],)
- >>> [ x for x in parent_sets(chosen, signature, groups, Generator('x',('y*', 'z'))) ]
- [(1.x(#0$0), 1.z(#3$0)), (1.x(#0$0), 1.y(#1$0), 1.z(#3$0)), (1.x(#0$0), 2.y(#2$0), 1.z(#3$0))]
- """
- if len(signature) == 0:
- # The entire signature was satisfied; we can just yield the
- # one result
- yield chosen
- else:
- # find all ways to satisfy the next element of the signature
- # which are compatible with the already-chosen groups. If
- # there are no ways, we will fall off the end here and the
- # ultimate result will be empty.
- t, min, max = signature[0]
-
- if min == 0:
- for s in parent_sets(chosen, signature[1:], all_groups, generator):
- yield s
-
- for g in all_groups[t]:
-
- # can only use a generator once in any path
- if generator in g.generators:
- continue
-
- if (g.size >= min and g.size <= max and
- g.all_compatible(chosen)):
-
- for s in parent_sets(
- chosen + (g,), signature[1:], all_groups, generator
- ):
- yield s
-
-debug = None
-
-def _sort_tuple(t):
- """copies the given sequence into a new tuple in sorted order"""
- l = list(t)
- l.sort()
- return tuple(l)
-
-def _sequence_of_strings(s_or_l):
- """if the argument is a string, wraps a tuple around it.
- Otherwise, returns the argument untouched
- """
- if isinstance(s_or_l, type('')):
- return (s_or_l,)
- else:
- return s_or_l
-
-def _examine_edge(states, queue, g):
- """Handle a possible new state in the search.
- """
- g_state = State(g)
- v = states.setdefault(g_state, g_state)
-
- if v.group is g:
- queue.append(g_state)
- return False
-
- if v.group.cost > g.cost:
- if debug:
- print 'reducing cost of state(%s) via %s' % (v.group,g)
- v.group.ambiguous = None
- v.group = g
-
- elif v.group.cost < g.cost:
- if debug:
- print 'discarding %s due to lower cost state(%s)' % (g, v.group)
-
- elif not (g.generator or v.group.generator) \
- and _sort_tuple(g.atoms()) == _sort_tuple(v.group.atoms()):
- # These are two different ways of combining the same groups of
- # a given type to produce a larger group, without using a generator
- if debug:
- print 'discarding %s as a redundant formulation of %s' % (g,v.group)
- else:
- if debug:
- print '%s is an ambiguous path due to %s' % (v.group, g)
- # Remember the group which caused the ambiguity
- v.group.ambiguous = g
-
- return True
-
-class State(object):
- """A wrapper around a TargetTypeGroup which makes it hashable on
- the part of its data which determines its ability to contribute to
- producing the goal target type.
- """
- def __init__(self, group):
- self.group = group
-
- def __hash__(self):
- g = self.group
- x = g.consumed_sources.keys()
- x.sort()
- return hash((g.target_type, g.size, _sort_tuple(g.extra_targets), tuple(x)))
-
- def __eq__(self, other):
- return (
- self.group.target_type == other.group.target_type
- and self.group.size == other.group.size
- and self.group.extra_targets == other.group.extra_targets
- and self.group.consumed_sources == other.group.consumed_sources)
-
-queue_moves = 0
-
-def optimal_graphs(target_type, source_groups, generators):
- """A 'simple generator' that produces the sequence of least-cost
- solutions for producing the
- target type from a subset of the source_groups, using the given
- generators.
- """
- # An index from target type to lists of groups with that type.
- all_groups = {}
-
- # Prime the priority Queue
- q = [ State(g) for g in source_groups ]
-
- # Keep a record of all known states in the search
- states = dict([ (s,s) for s in q ])
-
- solution_cost = None
- while q:
- # remove a group from the queue
- g = q[0].group
- del q[0]
-
- global queue_moves
- queue_moves += 1
-
- global debug
- if debug:
- print '-------'
- print graph(g)
-
- if g.target_type == target_type: # and g.consumes(source_groups):
- solution_cost = g.cost
- yield g
-
- if g.consumes(source_groups): # Nothing left to find
- return
-
- # combine with all like groups which are compatible
- for g2 in all_groups.get(g.target_type,()):
-
- if g2.is_compatible_with(g):
-
- _examine_edge(
- states, q,
- TargetTypeGroup(g.target_type, g2.size + g.size, (g,g2)))
-
- # expand with all generators which can be triggered as a
- # result of adding this group
- for generator in generators[g.target_type]:
-
- match = generator.match(g)
- if match is None:
- continue
-
- if debug:
- print generator,' matched with ', match
-
- # for all sets of parents which match the generator and
- # include g
- for s in parent_sets((g,), match, all_groups, generator):
-
- # Create the products of running this generator with
- # the given parent set
- siblings = ()
- for t,n in generator.targets_.items():
- # Unary generators run as many times as necessary
- # to consume the group
- if (generator.unary):
- n *= g.size
-
- siblings += (TargetTypeGroup(t, n, s, generator),)
-
- # Make sure groups know about their siblings
- if len(siblings) > 1:
- for product in siblings:
- product.set_siblings(siblings)
-
- if debug:
- print siblings, '<-', list(s)
-
- # Add new search states to the queue
- for sib in siblings:
- _examine_edge(states, q, sib)
-
- # Add to the set of all groups so that we can combine it with
- # others in future iterations
- l = all_groups.get(g.target_type)
- if l is None:
- l = all_groups.setdefault(g.target_type,[])
- l.append(g)
-
- # Sort the queue; in 'real life' use a priority queue
- q.sort(lambda v1,v2: v1.group.cost - v2.group.cost)
-
-
-def graph(group, indent = 0, visited = None):
-
- """Produce a string representation of the search graph
- that produced the given group.
- """
- if (visited is None):
- visited = {}
- s = indent * ' '
- s += repr(group)
- if group in visited:
- s += '...\n'
- else:
- visited[group] = True
- s += '[%s]' % group.generator
-
- if group.ambiguous:
- s += ' *ambiguous* '
- if type(group.ambiguous) is not type(1):
- s += 'due to %s' % group.ambiguous
- if group.siblings:
- s += ' siblings ' + str([sib for sib in group.siblings if
- sib != group])
- s += '\n' + '\n'.join(
- [graph(g,indent+1,visited) for g in group.parents])
- return s
-
-def ambiguities(group):
- """Returns a list of groups that caused ambiguities with this one
- or its constituents.
- """
- result = []
- for g in group.parents:
- result.extend(ambiguities(g))
- if group.ambiguous and type(group.ambiguous) is not type(1):
- result.append(group.ambiguous)
- return result
-
-def search(generators, targets, sources):
- import sys
- global queue_moves
-
- TargetTypeGroup.instances = 0
- queue_moves = 0
-
- # Remember what we started with
- source_groups = tuple([
- TargetTypeGroup(i[0],i[1])
- for i in _string_multiset(sources).items() ])
-
- solutions = {}
- max_consumed = 0
-
- for g in optimal_graphs(targets, source_groups, generators):
-
- if len(g.consumed_sources) > max_consumed:
- max_consumed = len(g.consumed_sources)
-
- g2 = solutions.setdefault(len(g.consumed_sources), g)
- if g2 is not g:
- if g2.cost == g.cost:
- g2.ambiguous = g
-
- if max_consumed:
- g = solutions[max_consumed]
-
- print 80 * '='
- print graph(g)
-
- if g.ambiguous:
- print 40 * '-'
- print 'ambiguities:'
- for a in ambiguities(g):
- print graph(a)
- print
-
- print queue_moves, 'queue_moves'
- print 80 * '='
- sys.stdout.flush()
-
- print queue_moves, 'queue moves'
- print '\n\n*****\n\n'
-
-
-def test():
- """Runs Volodya's example, but doesn't get the result he'd like.
- """
- # EST_EXE <- OBJ*
- # OBJ <- CPP
- # {CPP,STATIC_DATA} <- NM_ASM
- # {CPP,CPP} <- ECPP (only first CPP must be further converted into NM_ASM)
- # NM_ASM <- CPP
- # {CPP,STATIC_DATA} <- STATIC_DATA*
- # STATIC_DATA <- NM_ASM
- # NM_OBJ <- NM_ASM
- # NM_EXE <- NM_OBJ*
- generators = GeneratorSet()
- generators += Generator('OBJ*', 'EST_EXE')
- generators += Generator('CPP', 'OBJ')
- generators += Generator('NM_ASM', ('CPP', 'STATIC_DATA'))
- generators += Generator('ECPP', ('CPP','CPP'))
- generators += Generator('CPP', 'NM_ASM')
- generators += Generator('STATIC_DATA*', ('CPP', 'STATIC_DATA'))
- generators += Generator('NM_ASM', 'NM_OBJ')
- generators += Generator('NM_OBJ*', 'NM_EXE')
-
- search(generators, 'EST_EXE', ('CPP', 'NM_ASM', 'ECPP'))
- # Try the same search with a source type that can't be consumed.
- # This will exhaust all transformations before stopping.
- search(generators, 'EST_EXE', ('CPP', 'NM_ASM', 'ECPP', 'FOO'))
- search(generators, 'NM_EXE', ('CPP'))
-
-def run(args = None):
- import doctest
- import sys
-
- if args is not None:
- sys.argv = args
-
- error = doctest.testmod(sys.modules.get(__name__))
-
- if not error[0]:
- global debug
- if '--debug' in sys.argv:
- debug = 1
- test()
-
- return error
-
-if __name__ == '__main__':
- import sys
- sys.exit(run()[0])
-
-
-
-
-
-
-
-
-
-
-
-

Modified: branches/proto/v4/tools/build/v2/test/clean.py
==============================================================================
--- branches/proto/v4/tools/build/v2/test/clean.py (original)
+++ branches/proto/v4/tools/build/v2/test/clean.py 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -5,21 +5,19 @@
 # accompanying file LICENSE_1_0.txt or copy at
 # http://www.boost.org/LICENSE_1_0.txt)
 
-from BoostBuild import Tester, List
-import string
+import BoostBuild
 
-t = Tester()
+t = BoostBuild.Tester()
 
-t.write("a.cpp", """
+t.write("a.cpp", """
 int main() {}
-
 """)
 
-t.write("Jamroot", """
-exe a : a.cpp sub1//sub1 sub2//sub2 sub3//sub3 ;
+t.write("jamroot.jam", """
+exe a : a.cpp sub1//sub1 sub2//sub2 sub3//sub3 ;
 """)
 
-t.write("sub1/Jamfile", """
+t.write("sub1/jamfile.jam", """
 lib sub1 : sub1.cpp sub1_2 ../sub2//sub2 ;
 lib sub1_2 : sub1_2.cpp ;
 """)
@@ -29,7 +27,6 @@
 __declspec(dllexport)
 #endif
 void sub1() {}
-
 """)
 
 t.write("sub1/sub1_2.cpp", """
@@ -37,12 +34,10 @@
 __declspec(dllexport)
 #endif
 void sub1() {}
-
 """)
 
-
-t.write("sub2/Jamfile", """
-lib sub2 : sub2.cpp ;
+t.write("sub2/jamfile.jam", """
+lib sub2 : sub2.cpp ;
 """)
 
 t.write("sub2/sub2.cpp", """
@@ -50,11 +45,10 @@
 __declspec(dllexport)
 #endif
 void sub2() {}
-
 """)
 
-t.write("sub3/Jamroot", """
-lib sub3 : sub3.cpp ;
+t.write("sub3/jamroot.jam", """
+lib sub3 : sub3.cpp ;
 """)
 
 t.write("sub3/sub3.cpp", """
@@ -62,11 +56,10 @@
 __declspec(dllexport)
 #endif
 void sub3() {}
-
 """)
 
 
-# The 'clean' should not remove files under separate Jamroot.
+# The 'clean' should not remove files under separate jamroot.jam.
 t.run_build_system()
 t.run_build_system("--clean")
 t.expect_removal("bin/$toolset/debug/a.obj")
@@ -77,15 +70,14 @@
 
 # The 'clean-all' removes everything it can reach.
 t.run_build_system()
-t.run_build_system("--clean")
+t.run_build_system("--clean-all")
 t.expect_removal("bin/$toolset/debug/a.obj")
 t.expect_removal("sub1/bin/$toolset/debug/sub1.obj")
 t.expect_removal("sub1/bin/$toolset/debug/sub1_2.obj")
 t.expect_removal("sub2/bin/$toolset/debug/sub2.obj")
 t.expect_nothing("sub3/bin/$toolset/debug/sub3.obj")
 
-# The 'clean' together with project target removes
-# only under that probject
+# The 'clean' together with project target removes only under that project.
 t.run_build_system()
 t.run_build_system("sub1 --clean")
 t.expect_nothing("bin/$toolset/debug/a.obj")
@@ -94,7 +86,7 @@
 t.expect_nothing("sub2/bin/$toolset/debug/sub2.obj")
 t.expect_nothing("sub3/bin/$toolset/debug/sub3.obj")
 
-# And clean-all removes everything.
+# And 'clean-all' removes everything.
 t.run_build_system()
 t.run_build_system("sub1 --clean-all")
 t.expect_nothing("bin/$toolset/debug/a.obj")
@@ -103,9 +95,8 @@
 t.expect_removal("sub2/bin/$toolset/debug/sub2.obj")
 t.expect_nothing("sub3/bin/$toolset/debug/sub3.obj")
 
-# If main target is explicitly named, we should not remove
-# files from other targets.
-
+# If main target is explicitly named, we should not remove files from other
+# targets.
 t.run_build_system()
 t.run_build_system("sub1//sub1 --clean")
 t.expect_removal("sub1/bin/$toolset/debug/sub1.obj")
@@ -113,18 +104,15 @@
 t.expect_nothing("sub2/bin/$toolset/debug/sub2.obj")
 t.expect_nothing("sub3/bin/$toolset/debug/sub3.obj")
 
-
-# Regression test: sources of the 'cast' rule were mistakenly
-# deleted.
+# Regression test: sources of the 'cast' rule were mistakenly deleted.
 t.rm(".")
-t.write("Jamroot", """
+t.write("jamroot.jam", """
 import cast ;
 cast a cpp : a.h ;
 """)
 t.write("a.h", "")
-
 t.run_build_system("--clean")
 t.expect_nothing("a.h")
 
-t.cleanup()
 
+t.cleanup()

Modified: branches/proto/v4/tools/build/v2/test/conditionals_multiple.py
==============================================================================
--- branches/proto/v4/tools/build/v2/test/conditionals_multiple.py (original)
+++ branches/proto/v4/tools/build/v2/test/conditionals_multiple.py 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -236,7 +236,7 @@
     t.expect_output_line("description: /a0-t1-b0/", False)
     t.expect_output_line("description: /a0-t1-b1/", False)
     t.expect_output_line("description: /a1-t0-b0/", False)
- t.expect_output_line("description: /a1-t0-b1/", False)
+ t.expect_output_line("description: /a1-t0-b1/" )
     t.expect_output_line("description: /b0-a1-t0/", False)
     t.expect_output_line("description: /b0-a0-t1/", False)
     t.expect_output_line("description: /b0-a1-t1/", False)

Modified: branches/proto/v4/tools/build/v2/test/example_qt4.py
==============================================================================
--- branches/proto/v4/tools/build/v2/test/example_qt4.py (original)
+++ branches/proto/v4/tools/build/v2/test/example_qt4.py 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -13,14 +13,14 @@
 
 t.set_tree("../example/qt/qt4/hello")
 t.run_build_system()
-t.expect_addition(["bin/$toolset/debug/threading-multi/user-interface-gui/arrow"])
+t.expect_addition(["bin/$toolset/debug/threading-multi/arrow"])
 
 t.set_tree("../example/qt/qt4/moccable-cpp")
 t.run_build_system()
-t.expect_addition(["bin/$toolset/debug/threading-multi/user-interface-gui/main"])
+t.expect_addition(["bin/$toolset/debug/threading-multi/main"])
 
 t.set_tree("../example/qt/qt4/uic")
 t.run_build_system()
-t.expect_addition(["bin/$toolset/debug/threading-multi/user-interface-gui/hello"])
+t.expect_addition(["bin/$toolset/debug/threading-multi/hello"])
 
 t.cleanup()

Modified: branches/proto/v4/tools/build/v2/test/test_all.py
==============================================================================
--- branches/proto/v4/tools/build/v2/test/test_all.py (original)
+++ branches/proto/v4/tools/build/v2/test/test_all.py 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -168,7 +168,8 @@
           "remove_requirement",
           "free_features_request",
           "file_name_handling",
- "sort_rule"
+ "sort_rule",
+ "ordered_include"
           ]
 
 if os.name == 'posix':
@@ -189,6 +190,7 @@
 
 if "--extras" in sys.argv:
     tests.append("boostbook")
+ tests.append("qt4")
     tests.append("example_qt4")
     # Requires ./whatever.py to work, so is
     # not guaranted to work everywhere.

Modified: branches/proto/v4/tools/build/v2/tools/acc.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/acc.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/acc.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,15 +19,15 @@
 generators.override builtin.lib-generator : acc.prebuilt ;
 generators.override acc.searched-lib-generator : searched-lib-generator ;
 
-# Configures the acc toolset.
+# Configures the acc toolset.
 rule init ( version ? : user-provided-command * : options * )
 {
- local condition = [ common.check-init-parameters acc
+ local condition = [ common.check-init-parameters acc
         : version $(version) ] ;
-
+
     local command = [ common.get-invocation-command acc : aCC
         : $(user-provided-command) ] ;
-
+
     common.handle-options acc : $(condition) : $(command) : $(options) ;
 }
 
@@ -81,6 +81,9 @@
 flags acc CFLAGS <threading>multi : -mt ;
 flags acc LINKFLAGS <threading>multi : -mt ;
 
+flags acc.compile.c++ TEMPLATE_DEPTH <c++-template-depth> ;
+
+
 actions acc.link bind NEEDLIBS
 {
     $(CONFIG_COMMAND) -AA $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS)
@@ -93,13 +96,13 @@
 }
 
 actions acc.compile.c
-{
+{
     $(CONFIG_COMMAND) -Ae -c -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" $(OPTIONS)
 }
 
 actions acc.compile.c++
 {
- $(CONFIG_COMMAND) -AA -c -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" $(OPTIONS)
+ $(CONFIG_COMMAND) -AA -c -Wc,--pending_instantiations=$(TEMPLATE_DEPTH) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" $(OPTIONS)
 }
 
 actions updated together piecemeal acc.archive

Modified: branches/proto/v4/tools/build/v2/tools/builtin.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/builtin.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/builtin.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -15,6 +15,7 @@
 import errors : error ;
 import generate ;
 import generators ;
+import numbers ;
 import os ;
 import print ;
 import project ;
@@ -125,12 +126,12 @@
 # unit-test a : a.cpp : <use>b ;
 # lib b : a.cpp b ;
 #
-# Here, if <use> is not incidental, we'll decide we have two targets for a.obj
-# with different properties, and will complain.
+# Here, if <use> is not incidental, we would decide we have two targets for
+# a.obj with different properties and complain about it.
 #
-# Note that making feature incidental does not mean it's ignored. It may be
-# ignored when creating the virtual target, but the rest of build process will
-# use them.
+# Note that making a feature incidental does not mean it is ignored. It may be
+# ignored when creating a virtual target, but the rest of build process will use
+# them.
 feature.feature use : : free dependency incidental ;
 feature.feature dependency : : free dependency incidental ;
 feature.feature implicit-dependency : : free dependency incidental ;
@@ -146,6 +147,29 @@
     on # Fail the compilation if there are warnings.
   : incidental propagated ;
 
+# Feature that allows us to configure the maximal template instantiation depth
+# level allowed by a C++ compiler. Applies only to C++ toolsets whose compilers
+# actually support this configuration setting.
+#
+# Note that Boost Build currently does not allow defining features that take any
+# positive integral value as a parameter, which is what we need here, so we just
+# define some of the values here and leave it up to the user to extend this set
+# as he needs using the feature.extend rule.
+#
+# TODO: This should be upgraded as soon as Boost Build adds support for custom
+# validated feature values or at least features allowing any positive integral
+# value. See related Boost Build related trac ticket #194.
+#
+feature.feature c++-template-depth
+ :
+ [ numbers.range 64 1024 : 64 ]
+ [ numbers.range 20 1000 : 10 ]
+ # Maximum template instantiation depth guaranteed for ANSI/ISO C++
+ # conforming programs.
+ 17
+ :
+ incidental optional propagated ;
+
 feature.feature source : : free dependency incidental ;
 feature.feature library : : free dependency incidental ;
 feature.feature file : : free dependency incidental ;
@@ -165,8 +189,8 @@
 
 
 # An internal feature that holds the paths of all dependency shared libraries.
-# On Windows, it's needed so that we can add all those paths to PATH when
-# running applications. On Linux, it's needed to add proper -rpath-link command
+# On Windows, it is needed so that we can add all those paths to PATH when
+# running applications. On Linux, it is needed to add proper -rpath-link command
 # line options.
 feature.feature xdll-path : : free path ;
 
@@ -207,7 +231,7 @@
 
     # HP/PA-RISC
     parisc
-
+
     # Advanced RISC Machines
     arm
 
@@ -247,7 +271,7 @@
 
     # HP/PA-RISC
     700 7100 7100lc 7200 7300 8000
-
+
     # Advanced RISC Machines
     armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t armv5te armv6 armv6j iwmmxt ep9312
 
@@ -386,6 +410,7 @@
     import path ;
     import regex ;
     import scanner ;
+ import sequence ;
     import virtual-target ;
 
     rule __init__ ( includes * )
@@ -394,7 +419,8 @@
 
         for local i in $(includes)
         {
- self.includes += [ path.native $(i:G=) ] ;
+ self.includes += [ sequence.transform path.native
+ : [ regex.split $(i:G=) "&&" ] ] ;
         }
     }
 

Modified: branches/proto/v4/tools/build/v2/tools/common.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/common.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/common.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -330,9 +330,9 @@
 
 # Attempts to find tool (binary) named 'name' in PATH and in 'additional-paths'.
 # If found in PATH, returns 'name' and if found in additional paths, returns
-# absolute name. If the tool is found in several directories, returns all paths.
-# Otherwise, returns an empty string. If 'path-last' is specified, PATH is
-# searched after 'additional-paths'.
+# absolute name. If the tool is found in several directories, returns the
+# first path found. Otherwise, returns an empty string. If 'path-last' is
+# specified, PATH is searched after 'additional-paths'.
 #
 rule find-tool ( name : additional-paths * : path-last ? )
 {
@@ -376,9 +376,9 @@
     {
         if [ path.exists $(command) ]
             # Both NT and Cygwin will run .exe files by their unqualified names.
- || [ os.on-windows ] && [ path.exists $(command).exe ]
+ || ( [ os.on-windows ] && [ path.exists $(command).exe ] )
             # Only NT will run .bat files by their unqualified names.
- || [ os.name ] = NT && [ path.exists $(command).bat ]
+ || ( ( [ os.name ] = NT ) && [ path.exists $(command).bat ] )
         {
             return $(command) ;
         }
@@ -409,11 +409,12 @@
 
 # Handle common options for toolset, specifically sets the following flag
 # variables:
-# - CONFIG_COMMAND to 'command'
-# - OPTIONS for compile.c to the value of <cflags> in options
-# - OPTIONS for compile.c++ to the value of <cxxflags> in options
-# - OPTIONS for compile to the value of <compileflags> in options
-# - OPTIONS for link to the value of <linkflags> in options
+# - CONFIG_COMMAND to $(command)
+# - OPTIONS for compile to the value of <compileflags> in $(options)
+# - OPTIONS for compile.c to the value of <cflags> in $(options)
+# - OPTIONS for compile.c++ to the value of <cxxflags> in $(options)
+# - OPTIONS for compile.fortran to the value of <fflags> in $(options)
+# - OPTIONS for link to the value of <linkflags> in $(options)
 #
 rule handle-options ( toolset : condition * : command * : options * )
 {
@@ -422,18 +423,25 @@
         ECHO "notice: will use '$(command)' for $(toolset), condition $(condition:E=(empty))" ;
     }
 
- # The last parameter ('true') says it's OK to set flags for another module.
- toolset.flags $(toolset) CONFIG_COMMAND $(condition) : $(command) : unchecked ;
- toolset.flags $(toolset).compile OPTIONS $(condition) :
+ # The last parameter ('unchecked') says it is OK to set flags for another
+ # module.
+ toolset.flags $(toolset) CONFIG_COMMAND $(condition) : $(command)
+ : unchecked ;
+
+ toolset.flags $(toolset).compile OPTIONS $(condition) :
         [ feature.get-values <compileflags> : $(options) ] : unchecked ;
- toolset.flags $(toolset).compile.c OPTIONS $(condition) :
- [ feature.get-values <cflags> : $(options) ] : unchecked ;
- toolset.flags $(toolset).compile.c++ OPTIONS $(condition) :
- [ feature.get-values <cxxflags> : $(options) ] : unchecked ;
+
+ toolset.flags $(toolset).compile.c OPTIONS $(condition) :
+ [ feature.get-values <cflags> : $(options) ] : unchecked ;
+
+ toolset.flags $(toolset).compile.c++ OPTIONS $(condition) :
+ [ feature.get-values <cxxflags> : $(options) ] : unchecked ;
+
     toolset.flags $(toolset).compile.fortran OPTIONS $(condition) :
- [ feature.get-values <fflags> : $(options) ] : unchecked ;
- toolset.flags $(toolset).link OPTIONS $(condition) :
- [ feature.get-values <linkflags> : $(options) ] : unchecked ;
+ [ feature.get-values <fflags> : $(options) ] : unchecked ;
+
+ toolset.flags $(toolset).link OPTIONS $(condition) :
+ [ feature.get-values <linkflags> : $(options) ] : unchecked ;
 }
 
 
@@ -498,6 +506,34 @@
     }
     else
     {
+ # (todo)
+ # The following does not work on CYGWIN and needs to be fixed. On
+ # CYGWIN the $(nl) variable holds a Windows new-line \r\n sequence that
+ # messes up the executed export command which then reports that the
+ # passed variable name is incorrect. This is most likely due to the
+ # extra \r character getting interpreted as a part of the variable name.
+ #
+ # Several ideas pop to mind on how to fix this:
+ # * One way would be to separate the commands using the ; shell
+ # command separator. This seems like the quickest possible
+ # solution but I do not know whether this would break code on any
+ # platforms I I have no access to.
+ # * Another would be to not use the terminating $(nl) but that would
+ # require updating all the using code so it does not simply
+ # prepend this variable to its own commands.
+ # * I guess the cleanest solution would be to update Boost Jam to
+ # allow explicitly specifying \n & \r characters in its scripts
+ # instead of always relying only on the 'current OS native newline
+ # sequence'.
+ #
+ # Some code found to depend on this behaviour:
+ # * This Boost Build module.
+ # * __test__ rule.
+ # * path-variable-setting-command rule.
+ # * python.jam toolset.
+ # * xsltproc.jam toolset.
+ # * fop.jam toolset.
+ # (todo) (07.07.2008.) (Jurko)
         return "$(variable)=$(value)$(nl)export $(variable)$(nl)" ;
     }
 }
@@ -529,7 +565,7 @@
 #
 rule file-creation-command ( )
 {
- if [ modules.peek : NT ]
+ if [ os.name ] = NT
     {
         return "echo. > " ;
     }
@@ -546,7 +582,7 @@
 #
 rule file-touch-command ( )
 {
- if [ os.name ] in NT
+ if [ os.name ] = NT
     {
         return "echo. >> " ;
     }
@@ -559,14 +595,23 @@
 
 rule MkDir
 {
- # If dir exists, don't update it. Do this even for $(DOT).
+ # If dir exists, do not update it. Do this even for $(DOT).
     NOUPDATE $(<) ;
 
     if $(<) != $(DOT) && ! $($(<)-mkdir)
     {
         # Cheesy gate to prevent multiple invocations on same dir.
         $(<)-mkdir = true ;
- MkDir1 $(<) ;
+
+ # Schedule the mkdir build action.
+ if [ os.name ] = NT
+ {
+ MkDir1-quick-fix-for-windows $(<) ;
+ }
+ else
+ {
+ MkDir1-quick-fix-for-unix $(<) ;
+ }
 
         # Prepare a Jam 'dirs' target that can be used to make the build only
         # construct all the target directories.
@@ -576,8 +621,7 @@
         # recurse until root.
 
         local s = $(<:P) ;
-
- if $(NT)
+ if [ os.name ] = NT
         {
             switch $(s)
             {
@@ -586,14 +630,17 @@
             }
         }
 
- if $(s) && $(s) != $(<)
- {
- DEPENDS $(<) : $(s) ;
- MkDir $(s) ;
- }
- else if $(s)
+ if $(s)
         {
- NOTFILE $(s) ;
+ if $(s) != $(<)
+ {
+ DEPENDS $(<) : $(s) ;
+ MkDir $(s) ;
+ }
+ else
+ {
+ NOTFILE $(s) ;
+ }
         }
     }
 }
@@ -605,6 +652,21 @@
 }
 
 
+# (todo)
+# The following quick-fix actions should be replaced using the original MkDir1
+# action once Boost Jam gets updated to correctly detect different paths leading
+# up to the same filesystem target and triggers their build action only once.
+# (todo) (04.07.2008.) (Jurko)
+actions MkDir1-quick-fix-for-unix
+{
+ mkdir -p "$(<)"
+}
+actions MkDir1-quick-fix-for-windows
+{
+ if not exist "$(<)\\" mkdir "$(<)"
+}
+
+
 actions piecemeal together existing Clean
 {
     $(RM) "$(>)"
@@ -737,7 +799,7 @@
 
 local rule join-tag ( joiner ? : tag ? )
 {
- if ! $(joinder) { joiner = - ; }
+ if ! $(joiner) { joiner = - ; }
     return $(joiner)$(tag) ;
 }
 
@@ -752,7 +814,7 @@
         case borland* : tag += bcb ;
         case como* : tag += como ;
         case cw : tag += cw ;
- case darwin* : tag += ;
+ case darwin* : tag += xgcc ;
         case edg* : tag += edg ;
         case gcc* :
         {
@@ -796,8 +858,8 @@
             version = 7 ;
         }
     }
- # On intel, version is not added, because it does not matter and it's the
- # version of vc used as backend that matters. Ideally, we'd encode the
+ # On intel, version is not added, because it does not matter and it is the
+ # version of vc used as backend that matters. Ideally, we should encode the
     # backend version but that would break compatibility with V1.
     if $(tag) = iw
     {

Modified: branches/proto/v4/tools/build/v2/tools/como-linux.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/como-linux.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/como-linux.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,9 +1,10 @@
-# Copyright 2004, 2005, 2006 Vladimir Prus
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+# Copyright 2004, 2005, 2006 Vladimir Prus
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 
 # The following #// line will be used by the regression test table generation
-# program as the column heading for HTML tables. Must not include version number.
+# program as the column heading for HTML tables. Must not include a version
+# number.
 #//Comeau
C++

 
 import toolset ;
@@ -12,34 +13,36 @@
 import common ;
 import generators ;
 
-import unix ;
+import unix ;
 import como ;
 
 feature.extend-subfeature toolset como : platform : linux ;
 
-toolset.inherit-generators como-linux
+toolset.inherit-generators como-linux
      <toolset>como <toolset-como:platform>linux : unix ;
-generators.override como-linux.prebuilt : builtin.lib-generator ;
+generators.override como-linux.prebuilt : builtin.lib-generator ;
 generators.override como-linux.searched-lib-generator : searched-lib-generator ;
 toolset.inherit-flags como-linux : unix ;
 toolset.inherit-rules como-linux : gcc ;
 
-generators.register-c-compiler como-linux.compile.c++ : CPP : OBJ
- : <toolset>como <toolset-como:platform>linux ;
+generators.register-c-compiler como-linux.compile.c++ : CPP : OBJ
+ : <toolset>como <toolset-como:platform>linux ;
 generators.register-c-compiler como-linux.compile.c : C : OBJ
- : <toolset>como <toolset-como:platform>linux ;
+ : <toolset>como <toolset-como:platform>linux ;
+
 
 rule init ( version ? : command * : options * )
 {
     local condition = [ common.check-init-parameters como-linux
         : version $(version) ] ;
-
- command = [ common.get-invocation-command como-linux : como
+
+ command = [ common.get-invocation-command como-linux : como
         : $(command) ] ;
-
+
     common.handle-options como-linux : $(condition) : $(command) : $(options) ;
 }
 
+
 flags como-linux C++FLAGS <exception-handling>off : --no_exceptions ;
 flags como-linux C++FLAGS <exception-handling>on : --exceptions ;
 
@@ -98,4 +101,3 @@
 {
     ar rcu $(<) $(>)
 }
-

Modified: branches/proto/v4/tools/build/v2/tools/como-win.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/como-win.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/como-win.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,7 +6,8 @@
 # http://www.boost.org/LICENSE_1_0.txt)
 
 # The following #// line will be used by the regression test table generation
-# program as the column heading for HTML tables. Must not include version number.
+# program as the column heading for HTML tables. Must not include a version
+# number.
 #//Comeau
C++

 
 import common ;
@@ -17,38 +18,42 @@
 
 feature.extend-subfeature toolset como : platform : win ;
 
-# Initializes the Comeau toolset for windows.
-# The command is the command which invokes the compiler.
-# You should either set environment variable COMO_XXX_INCLUDE where
-# XXX is the used backed (as described in documentation), or pass
-# that as part of command, e.g:
-#
+
+# Initializes the Comeau toolset for windows. The command is the command which
+# invokes the compiler. You should either set environment variable
+# COMO_XXX_INCLUDE where XXX is the used backend (as described in the
+# documentation), or pass that as part of command, e.g:
+#
 # using como-win : 4.3 : "set COMO_BCC_INCLUDE=C:/include &&" como.exe ;
+#
 rule init ( version ? : command * : options * )
 {
     local condition = [ common.check-init-parameters como-win
         : version $(version) ] ;
-
+
     command = [ common.get-invocation-command como-win : como.exe :
- $(command) ] ;
-
+ $(command) ] ;
+
     common.handle-options como-win : $(condition) : $(command) : $(options) ;
 }
 
-generators.register-c-compiler como-win.compile.c++ : CPP : OBJ
- : <toolset>como <toolset-como:platform>win ;
+generators.register-c-compiler como-win.compile.c++ : CPP : OBJ
+ : <toolset>como <toolset-como:platform>win ;
 generators.register-c-compiler como-win.compile.c : C : OBJ
- : <toolset>como <toolset-como:platform>win ;
+ : <toolset>como <toolset-como:platform>win ;
+
+
+generators.register-linker como-win.link
+ : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB
+ : EXE
+ : <toolset>como <toolset-como:platform>win ;
+
+# Note that status of shared libraries support is not clear, so we do not define
+# the link.dll generator.
+generators.register-archiver como-win.archive
+ : OBJ : STATIC_LIB
+ : <toolset>como <toolset-como:platform>win ;
 
-generators.register-linker como-win.link
- : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB
- : EXE
- : <toolset>como <toolset-como:platform>win ;
-# Note that status of shared libraries support is not clear, so we don't
-# define the link.dll generator.
-generators.register-archiver como-win.archive
- : OBJ : STATIC_LIB
- : <toolset>como <toolset-como:platform>win ;
 
 flags como-win C++FLAGS <exception-handling>off : --no_exceptions ;
 flags como-win C++FLAGS <exception-handling>on : --exceptions ;
@@ -56,16 +61,17 @@
 flags como-win CFLAGS <inlining>off : --no_inlining ;
 flags como-win CFLAGS <inlining>on <inlining>full : --inlining ;
 
-# The following seems to be VC-specific options. At least,
-# when I uncomment then, Comeau with bcc as backend reports
-# that bcc32 invocation.
+
+# The following seems to be VC-specific options. At least, when I uncomment
+# then, Comeau with bcc as backend reports that bcc32 invocation failed.
 #
 #flags como-win CFLAGS <debug-symbols>on : /Zi ;
 #flags como-win CFLAGS <optimization>off : /Od ;
 
+
 flags como-win CFLAGS <cflags> ;
-flags como-win CFLAGS : -D_WIN32 ; # make sure that we get the Boost Win32 platform config header.
-flags como-win CFLAGS <threading>multi : -D_MT ; # make sure that our config knows that threading is on.
+flags como-win CFLAGS : -D_WIN32 ; # Make sure that we get the Boost Win32 platform config header.
+flags como-win CFLAGS <threading>multi : -D_MT ; # Make sure that our config knows that threading is on.
 flags como-win C++FLAGS <cxxflags> ;
 flags como-win DEFINES <define> ;
 flags como-win UNDEFS <undef> ;
@@ -83,12 +89,12 @@
 flags como-win FINDLIBS <find-shared-library> ;
 flags como-win FINDLIBS <find-static-library> ;
 
-RM = [ common.rm-command ] ;
 nl = "
 " ;
 
 
-# for como, we repeat all libraries so that dependencies are always resolved
+# For como, we repeat all libraries so that dependencies are always resolved.
+#
 actions link bind LIBRARIES
 {
     $(CONFIG_COMMAND) --no_version --no_prelink_verbose $(LINKFLAGS) -o "$(<[1]:S=)" @"@($(<[1]:W).rsp:E=$(nl)"$(>)")" "$(LIBRARIES)" "$(FINDLIBS:S=.lib)"
@@ -109,4 +115,3 @@
     $(CONFIG_COMMAND) --no_version --no_prelink_verbose --prelink_object "$(>)"
     lib $(ARFLAGS) /nologo /out:"$(<:S=.lib)" "$(>)"
 }
-

Modified: branches/proto/v4/tools/build/v2/tools/como.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/como.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/como.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,9 +3,8 @@
 # (See accompanying file LICENSE_1_0.txt
 # or copy at http://www.boost.org/LICENSE_1_0.txt)
 
-# This is a generic 'intel' toolset. Depending on the current
-# system, it forwards either to 'intel-linux' or 'intel-win'
-# modules.
+# This is a generic 'como' toolset. Depending on the current system, it
+# forwards either to 'como-linux' or 'como-win' modules.
 
 import feature ;
 import os ;

Modified: branches/proto/v4/tools/build/v2/tools/darwin.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/darwin.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/darwin.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -17,6 +17,32 @@
 import generators ;
 import path : basename ;
 
+## Use a framework.
+feature framework : : free ;
+
+## The MacOSX versions we can target.
+.macosx-versions =
+ 10.5 10.4 10.3 10.2 10.1
+ iphone-2.0 iphone-1.x iphonesim-2.0
+ ;
+
+## The MacOSX version to compile for, which maps to the SDK to use (sysroot).
+feature macosx-version
+ : $(.macosx-versions)
+ : propagated link-incompatible symmetric optional ;
+
+## The minimal MacOSX version to target.
+feature macosx-version-min
+ : $(.macosx-versions)
+ : propagated optional ;
+
+#############################################################################
+
+if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ]
+{
+ .debug-configuration = true ;
+}
+
 feature.extend toolset : darwin ;
 import gcc ;
 toolset.inherit-generators darwin : gcc ;
@@ -41,30 +67,73 @@
      <architecture>power/<address-model>64
      <architecture>power/<instruction-set> ;
 
-# No additional initialization should be necessary
+# Options:
+#
+# <root>PATH
+# Platform root path. The common autodetection will set this to
+# "/Developer". And when a command is given it will be set to
+# the corresponding "*.platform/Developer" directory.
+#
 rule init ( version ? : command * : options * : requirement * )
 {
- condition = [ common.check-init-parameters darwin $(requirement) : version $(version) ] ;
+ # - The root directory of the tool install.
+ local root = [ feature.get-values <root> : $(options) ] ;
+
+ # - The bin directory where to find the commands to execute.
+ local bin ;
+
+ # - The configured compile driver command.
     local command = [ common.get-invocation-command darwin : g++ : $(command) ] ;
     
- common.handle-options darwin : $(condition) : $(command) : $(options) ;
+ # - Autodetect the root and bin dir if not given.
+ if $(command)
+ {
+ bin ?= [ common.get-absolute-tool-path $(command[1]) ] ;
+ if $(bin) = "/usr/bin"
+ {
+ root ?= /Developer ;
+ }
+ else
+ {
+ local r = $(bin:D) ;
+ r = $(r:D) ;
+ root ?= $(r) ;
+ }
+ }
+
+ # - Autodetect the version if not given.
+ if $(command)
+ {
+ # - The 'command' variable can have multiple elements. When calling
+ # the SHELL builtin we need a single string.
+ local command-string = $(command:J=" ") ;
+ version ?= [ MATCH "^([0-9.]+)"
+ : [ SHELL "$(command-string) -dumpversion" ] ] ;
+ }
+
+ # - Define the condition for this toolset instance.
+ local condition =
+ [ common.check-init-parameters darwin $(requirement) : version $(version) ] ;
     
- local gccversion = [ SHELL "$(command:J= ) -dumpversion" ] ;
+ # - Set the toolset generic common options.
+ common.handle-options darwin : $(condition) : $(command) : $(options) ;
     
- # GCC 4.0 and higher in Darwin does not have -fcoalesce-templates.
- if $(gccversion) < "4.0.0"
+ # - GCC 4.0 and higher in Darwin does not have -fcoalesce-templates.
+ if $(version) < "4.0.0"
     {
         flags darwin.compile.c++ OPTIONS $(condition) : -fcoalesce-templates ;
     }
- # GCC 4.2 and higher in Darwin does not have -Wno-long-double.
- if $(gccversion) < "4.2.0"
+ # - GCC 4.2 and higher in Darwin does not have -Wno-long-double.
+ if $(version) < "4.2.0"
     {
         flags darwin.compile OPTIONS $(condition) : -Wno-long-double ;
     }
 
+ # - Set the link flags common with the GCC toolset.
     gcc.init-link-flags darwin darwin $(condition) ;
 
     # - The symbol strip program.
+ local strip ;
     if <striper> in $(options)
     {
         # We can turn off strip by specifying it as empty. In which
@@ -84,7 +153,7 @@
         # also tell the link action that we need to use a strip
         # post-process.
         flags darwin.link NEED_STRIP $(condition)/<debug-symbols>off : "" ;
- local strip =
+ strip =
             [ common.get-invocation-command darwin
                 : strip : [ feature.get-values <striper> : $(options) ] : $(bin) : search-path ] ;
         flags darwin.link .STRIP $(condition) : $(strip[1]) ;
@@ -104,12 +173,82 @@
     {
         ECHO notice: using archiver :: $(condition) :: $(archiver[1]) ;
     }
+
+ # - Initialize the SDKs available in the root for this tool.
+ local sdks = [ init-available-sdk-versions $(condition) : $(root) ] ;
+
+ #~ ECHO --- ;
+ #~ ECHO --- bin :: $(bin) ;
+ #~ ECHO --- root :: $(root) ;
+ #~ ECHO --- version :: $(version) ;
+ #~ ECHO --- condition :: $(condition) ;
+ #~ ECHO --- strip :: $(strip) ;
+ #~ ECHO --- archiver :: $(archiver) ;
+ #~ ECHO --- sdks :: $(sdks) ;
+ #~ ECHO --- ;
+ #~ EXIT ;
 }
 
-feature framework : : free ;
+# Determine the MacOSX SDK versions installed and their locations.
+local rule init-available-sdk-versions ( condition * : root ? )
+{
+ root ?= /Developer ;
+ local sdks-root = $(root)/SDKs ;
+ local sdks = [ GLOB $(sdks-root) : MacOSX*.sdk iPhoneOS*.sdk iPhoneSimulator*.sdk ] ;
+ local result ;
+ for local sdk in $(sdks)
+ {
+ local sdk-match = [ MATCH ([^0-9]+)([0-9]+)[.]([0-9x]+)[.]?([0-9x]+)? : $(sdk:D=) ] ;
+ local sdk-platform = $(sdk-match[1]:L) ;
+ local sdk-version = $(sdk-match[2]).$(sdk-match[3]) ;
+ if $(sdk-version)
+ {
+ switch $(sdk-platform)
+ {
+ case macosx :
+ {
+ sdk-version = $(sdk-version) ;
+ }
+ case iphoneos :
+ {
+ sdk-version = iphone-$(sdk-version) ;
+ }
+ case iphonesimulator :
+ {
+ sdk-version = iphonesim-$(sdk-version) ;
+ }
+ case * :
+ {
+ sdk-version = $(sdk-version:J=-) ;
+ }
+ }
+ result += $(sdk-version) ;
+ flags darwin.compile OPTIONS $(condition)/<macosx-version>$(sdk-version)
+ : -isysroot $(sdk) ;
+ flags darwin.link OPTIONS $(condition)/<macosx-version>$(sdk-version)
+ : -isysroot $(sdk) ;
+ if $(.debug-configuration)
+ {
+ ECHO notice: available sdk :: $(condition)/<macosx-version>$(sdk-version) :: $(sdk) ;
+ }
+ }
+ }
+ return $(result) ;
+}
 
+# Generic options.
 flags darwin.compile OPTIONS <flags> ;
 
+# Minimal OSX target option. Note that the default is for the min-version
+# option to not be included to let the compiler default take hold.
+for local macosx-version in $(.macosx-versions)
+{
+ flags darwin.compile OPTIONS <macosx-version-min>$(macosx-version)
+ : -mmacosx-version-min=$(macosx-version) ;
+ flags darwin.link OPTIONS <macosx-version-min>$(macosx-version)
+ : -mmacosx-version-min=$(macosx-version) ;
+}
+
 # The following adds objective-c support to darwin.
 # Thanks to http://thread.gmane.org/gmane.comp.lib.boost.build/13759
 
@@ -136,46 +275,6 @@
     "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
 }
 
-# Determine the MacOSX SDK versions installed and their locations.
-local rule available-macosx-versions ( )
-{
- local sdks = [ GLOB /Developer/SDKs : MacOSX* ] ;
- for local sdk in $(sdks)
- {
- local sdk-version = [ MATCH ([0-9]+)[.]([0-9]+)[.]?([0-9]+)? : $(sdk:D=) ] ;
- sdk-version = $(sdk-version:J=.) ;
- if $(sdk-version)
- {
- .macosx-sdk = $(sdk-version) $(.macosx-sdk) ;
- .macosx-sdk.$(sdk-version) = $(sdk) ;
- }
- }
- return $(.macosx-sdk) ;
-}
-
-# Add the found SDK version only to the allowed set. The "latests" SDKs
-# will be first in the list, and hence the default.
-feature macosx-version
- : [ available-macosx-versions ]
- : propagated link-incompatible symmetric optional ;
-if 10.4 in [ feature.values macosx-version ]
-{
- feature.set-default macosx-version : 10.4 ;
-}
-
-# Add the options for all the found SDKs.
-for local sdk in $(.macosx-sdk)
-{
- flags darwin.compile OPTIONS <target-os>darwin/<macosx-version>$(sdk) :
- -isysroot $(.macosx-sdk.$(sdk))
- -mmacosx-version-min=$(sdk)
- ;
- flags darwin.link OPTIONS <target-os>darwin/<macosx-version>$(sdk) :
- -isysroot $(.macosx-sdk.$(sdk))
- -mmacosx-version-min=$(sdk)
- ;
-}
-
 # Add option selection for combined and specific architecture combinations.
 
 local rule arch-addr-flags ( toolset variable
@@ -204,15 +303,24 @@
 
 arch-addr-flags darwin OPTIONS : arm : 32 : -arch arm : default ;
 
+# Set the max header padding to allow renaming of libs for installation.
+flags darwin.link.dll OPTIONS : -headerpad_max_install_names ;
 
+# To link the static runtime we need to link to all the core runtime libraries.
 flags darwin.link OPTIONS <runtime-link>static
     : -nodefaultlibs -shared-libgcc -lstdc++-static -lgcc_eh -lgcc -lSystem ;
 
-flags darwin.link OPTIONS <variant>release : -Wl,-dead_strip -no_dead_strip_inits_and_terms ;
+# Strip as much as possible when optimizing.
+flags darwin.link OPTIONS <optimization>speed : -Wl,-dead_strip -no_dead_strip_inits_and_terms ;
+flags darwin.link OPTIONS <optimization>space : -Wl,-dead_strip -no_dead_strip_inits_and_terms ;
 
+# Dynamic/shared linking.
 flags darwin.compile OPTIONS <link>shared : -dynamic ;
+
+# Misc options.
 flags darwin.compile OPTIONS : -no-cpp-precomp -gdwarf-2 ;
 
+# Add the framework names to use.
 flags darwin.link FRAMEWORK <framework> ;
 
 # This is flag is useful for debugging the link step

Modified: branches/proto/v4/tools/build/v2/tools/doxygen.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/doxygen.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/doxygen.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -4,19 +4,18 @@
 # Distributed under the Boost Software License, Version 1.0.
 # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 
-# This module defines rules to handle generation of various outputs
-# from source files documented with doxygen comments. The supported
-# transformations are:
+# This module defines rules to handle generation of various outputs from source
+# files documented with doxygen comments. The supported transformations are:
 #
 # * Source -> Doxygen XML -> BoostBook XML
 # * Source -> Doxygen HTML
 #
-# The type of transformation is selected based on the target requested.
-# For BoostBook XML, the default, specifying a target with an ".xml" suffix,
-# or an empty suffix, will produce a <target>.xml and <target>.boostbook.
-# For Doxygen HTML specifying a target with an ".html" suffix will produce
-# a directory <target> with the Doxygen html files, and a <target>.html file
-# redirecting to that directory.
+# The type of transformation is selected based on the target requested. For
+# BoostBook XML, the default, specifying a target with an ".xml" suffix, or an
+# empty suffix, will produce a <target>.xml and <target>.boostbook. For Doxygen
+# HTML specifying a target with an ".html" suffix will produce a directory
+# <target> with the Doxygen html files, and a <target>.html file redirecting to
+# that directory.
 
 import "class" : new ;
 import targets ;
@@ -38,6 +37,7 @@
 import common ;
 import modules ;
 
+
 # Use to specify extra configuration paramters. These get translated
 # into a doxyfile which configures the building of the docs.
 feature.feature doxygen:param : : free ;
@@ -75,9 +75,11 @@
 # Redirection HTML file to HTML multifile directory.
 type.register DOXYGEN_HTML : : HTML ;
 
+
 # Initialize the Doxygen module. Parameters are:
 # name: the name of the 'doxygen' executable. If not specified, the name
 # 'doxygen' will be used
+#
 rule init ( name ? )
 {
     if ! $(.initialized)
@@ -86,6 +88,8 @@
 
         if ! $(name)
         {
+ local doxygen-path ;
+
             if [ os.name ] = NT
             {
                 local ProgramFiles = [ modules.peek : ProgramFiles ] ;
@@ -97,51 +101,40 @@
                 {
                     ProgramFiles = "C:\\Program Files" ;
                 }
-
- local doxygen-path =
+
+ doxygen-path =
                     [ GLOB
                         [ modules.peek : PATH ]
                         "$(ProgramFiles)\\doxygen\\bin"
                         : doxygen\.exe ] ;
- doxygen-path = $(doxygen-path[1]) ;
-
- if $(doxygen-path)
- {
- if --debug-configuration in [ modules.peek : ARGV ]
- {
- ECHO "notice:" using doxygen ":" $(doxygen-path) ;
- }
- .doxygen = $(doxygen-path) ;
- }
             }
             else
             {
- local doxygen-path =
+ doxygen-path =
                     [ GLOB
                         [ modules.peek : PATH ]
                         : doxygen ] ;
- doxygen-path = $(doxygen-path[1]) ;
-
- if $(doxygen-path)
- {
- if --debug-configuration in [ modules.peek : ARGV ]
- {
- ECHO "notice:" using doxygen ":" $(doxygen-path) ;
- }
- .doxygen = $(doxygen-path) ;
- }
             }
+
+ doxygen-path = $(doxygen-path[1]) ;
+
+ if $(doxygen-path)
+ {
+ .doxygen = $(doxygen-path) ;
+ }
+
+ .doxygen ?= doxygen ;
         }
         else
         {
- if --debug-configuration in [ modules.peek : ARGV ]
- {
- ECHO "notice:" using doxygen ":" $(name) ;
- }
             .doxygen = $(name) ;
         }
- .doxygen ?= doxygen ;
-
+
+ if --debug-configuration in [ modules.peek : ARGV ]
+ {
+ ECHO "notice:" using doxygen ":" $(.doxygen) ;
+ }
+
         .doxproc = [ modules.binding $(__name__) ] ;
         .doxproc = $(.doxproc:D)/doxproc.py ;
 
@@ -164,35 +157,41 @@
     }
 }
 
+
 rule name ( )
 {
     return $(.doxygen) ;
 }
 
-# Runs Doxygen on the given Doxygen configuration file (the source) to
-# generate the Doxygen files. The output is dumped according to the settings
-# in the Doxygen configuration file, not according to the target! Because
-# of this, we essentially "touch" the target file, in effect making it look
-# like we've really written something useful to it. Anyone that uses this
-# action must deal with this behavior.
+
+# Runs Doxygen on the given Doxygen configuration file (the source) to generate
+# the Doxygen files. The output is dumped according to the settings in the
+# Doxygen configuration file, not according to the target! Because of this, we
+# essentially "touch" the target file, in effect making it look like we have
+# really written something useful to it. Anyone that uses this action must deal
+# with this behavior.
+#
 actions doxygen-action
 {
- $(RM) "$(*.XML)" & "$(NAME:E=doxygen)" $(>) && echo "Stamped" > "$(<)"
+ $(RM) "$(*.XML)" & "$(NAME:E=doxygen)" "$(>)" && echo "Stamped" > "$(<)"
 }
 
+
 # Runs the Python doxproc XML processor.
+#
 actions doxproc
 {
     python "$(DOXPROC)" "--xmldir=$(>)" "--output=$(<)" "$(OPTIONS)" "--id=$(ID)" "--title=$(TITLE)"
 }
 
-# Generates a doxygen configuration file (doxyfile) given a set of C++
-# sources and a property list that may contain <doxygen:param>
-# features.
+
+# Generates a doxygen configuration file (doxyfile) given a set of C++ sources
+# and a property list that may contain <doxygen:param> features.
+#
 rule headers-to-doxyfile ( target : sources * : properties * )
 {
     local text "# Generated by Boost.Build version 2" ;
-
+
     local output-dir ;
 
     # Translate <doxygen:param> into command line flags.
@@ -205,30 +204,27 @@
             output-dir = "$(namevalue[2])" ;
         }
     }
-
+
     if ! $(output-dir)
     {
         output-dir = [ on $(target) return $(LOCATE) ] ;
- text += "OUTPUT_DIRECTORY = $(output-dir)" ;
+ text += "OUTPUT_DIRECTORY = \"$(output-dir)\"" ;
     }
 
- local headers = "" ;
- for local source in $(sources:G=)
- {
- headers = "$(headers) $(source)" ;
- }
+ local headers = \"$(sources:G=)\" ;
 
- # Doxygen generates LaTex by default. So disable it unconditionally,
- # or at least until someone needs, and hence writes support for, LaTex
- # output.
+ # Doxygen generates LaTex by default. So disable it unconditionally, or at
+ # least until someone needs, and hence writes support for, LaTex output.
     text += "GENERATE_LATEX = NO" ;
- text += "INPUT = $(headers) " ;
+ text += "INPUT = $(headers:J= )" ;
     print.output $(target) plain ;
     print.text $(text) : true ;
 }
 
-# Run Doxygen. See doxygen-action for a description of the strange
-# properties of this rule
+
+# Run Doxygen. See doxygen-action for a description of the strange properties of
+# this rule.
+#
 rule run ( target : source : properties * )
 {
     doxygen-action $(target) : $(source) ;
@@ -239,14 +235,13 @@
             [ path.join
                 [ path.make [ on $(target) return $(LOCATE) ] ]
                 $(target:B:S=)
- *.xml ]
- ]
- ;
+ *.xml ] ] ;
 }
 
-# The rules below require Boost.Book stylesheets, so we need
-# some code to check that the boostbook module is actaully
-# initialized.
+
+# The rules below require Boost.Book stylesheets, so we need some code to check
+# that the boostbook module has actualy been initialized.
+#
 rule check-boostbook ( )
 {
     if ! [ modules.peek boostbook : .initialized ]
@@ -259,37 +254,39 @@
     }
 }
 
-# Collect the set of Doxygen XML files into a single XML source file
-# that can be handled by an XSLT processor. The source is completely
-# ignored (see doxygen-action), because this action picks up the
-# Doxygen XML index file xml/index.xml. This is because we can't teach
-# Doxygen to act like a NORMAL program and take a "-o output.xml"
-# argument (grrrr). The target of the collection will be a single
-# Doxygen XML file.
+
+# Collect the set of Doxygen XML files into a single XML source file that can be
+# handled by an XSLT processor. The source is completely ignored (see
+# doxygen-action), because this action picks up the Doxygen XML index file
+# xml/index.xml. This is because we can not teach Doxygen to act like a NORMAL
+# program and take a "-o output.xml" argument (grrrr). The target of the
+# collection will be a single Doxygen XML file.
+#
 rule collect ( target : source : properties * )
 {
     check-boostbook ;
- local collect-xsl-dir = [ path.native
- [ path.join [ boostbook.xsl-dir ] doxygen collect ]
- ] ;
+ local collect-xsl-dir
+ = [ path.native [ path.join [ boostbook.xsl-dir ] doxygen collect ] ] ;
     local source-path
         = [ path.make [ on $(source) return $(LOCATE) ] ] ;
     local collect-path
- = [ path.join [ path.pwd ] $(source-path) $(source:B) ] ;
+ = [ path.root [ path.join $(source-path) $(source:B) ] [ path.pwd ] ] ;
+ local native-path
+ = [ path.native $(collect-path) ] ;
     local real-source
- = [ path.native [ path.join [ path.native $(collect-path) ] index.xml ] ] ;
+ = [ path.native [ path.join $(collect-path) index.xml ] ] ;
     xsltproc.xslt $(target) : $(real-source) $(collect-xsl-dir:S=.xsl)
- : <xsl:param>doxygen.xml.path=$(collect-path)
- ;
+ : <xsl:param>doxygen.xml.path=$(native-path) ;
 }
 
-# Translate Doxygen XML into BoostBook
+
+# Translate Doxygen XML into BoostBook.
+#
 rule xml-to-boostbook ( target : source : properties * )
 {
     check-boostbook ;
     local xsl-dir = [ boostbook.xsl-dir ] ;
- local d2b-xsl = [ path.native
- [ path.join [ boostbook.xsl-dir ] doxygen
+ local d2b-xsl = [ path.native [ path.join [ boostbook.xsl-dir ] doxygen
         doxygen2boostbook.xsl ] ] ;
 
     local xslt-properties = $(properties) ;
@@ -305,20 +302,24 @@
     xsltproc.xslt $(target) : $(source) $(d2b-xsl) : $(xslt-properties) ;
 }
 
+
 flags doxygen.xml-dir-to-boostbook OPTIONS <doxygen.doxproc.index>yes : --enable-index ;
 flags doxygen.xml-dir-to-boostbook ID <doxygen.doxproc.id> ;
 flags doxygen.xml-dir-to-boostbook TITLE <doxygen.doxproc.title> ;
 
+
 rule xml-dir-to-boostbook ( target : source : properties * )
 {
     DOXPROC on $(target) = $(.doxproc) ;
-
+
     LOCATE on $(source:S=) = [ on $(source) return $(LOCATE) ] ;
-
+
     doxygen.doxproc $(target) : $(source:S=) ;
 }
 
+
 # Generate the HTML redirect to HTML dir index.html file.
+#
 rule html-redirect ( target : source : properties * )
 {
     local uri = "$(target:B)/index.html" ;
@@ -342,7 +343,9 @@
         : true ;
 }
 
+
 # User-level rule to generate BoostBook XML from a set of headers via Doxygen.
+#
 rule doxygen ( target : sources * : requirements * : default-build * : usage-requirements * )
 {
     local project = [ project.current ] ;
@@ -353,11 +356,10 @@
         local html-location = [ feature.get-values <location> : $(requirements) ] ;
         local output-dir = [ path.root
             [ path.join [ $(project).get build-dir ] $(html-location:E=html) ]
- [ path.pwd ]
- ] ;
+ [ path.pwd ] ] ;
         local output-dir-native = [ path.native $(output-dir) ] ;
         requirements = [ property.change $(requirements) : <location> ] ;
-
+
         ## The doxygen configuration file.
         targets.main-target-alternative
             [ new typed-target $(target:S=.tag) : $(project) : DOXYFILE
@@ -365,13 +367,13 @@
                 : [ targets.main-target-requirements $(requirements)
                     <doxygen:param>GENERATE_HTML=YES
                     <doxygen:param>GENERATE_XML=NO
- <doxygen:param>"OUTPUT_DIRECTORY=$(output-dir-native)"
+ <doxygen:param>"OUTPUT_DIRECTORY=\"$(output-dir-native)\""
                     <doxygen:param>HTML_OUTPUT=$(target:B)
                     : $(project) ]
                 : [ targets.main-target-default-build $(default-build) : $(project) ]
             ] ;
         $(project).mark-target-as-explicit $(target:S=.tag) ;
-
+
         ## The html directory to generate by running doxygen.
         targets.main-target-alternative
             [ new typed-target $(target:S=.dir) : $(project) : DOXYGEN_HTML_MULTIFILE
@@ -381,7 +383,7 @@
                 : [ targets.main-target-default-build $(default-build) : $(project) ]
                 ] ;
         $(project).mark-target-as-explicit $(target:S=.dir) ;
-
+
         ## The redirect html file into the generated html.
         targets.main-target-alternative
             [ new typed-target $(target) : $(project) : DOXYGEN_HTML
@@ -398,7 +400,7 @@
         local location-xml = [ feature.get-values <location> : $(requirements) ] ;
         requirements = [ property.change $(requirements) : <location> ] ;
         local target-xml = $(target:B=$(target:B)-xml) ;
-
+
         ## The doxygen configuration file.
         targets.main-target-alternative
             [ new typed-target $(target-xml:S=.tag) : $(project) : DOXYFILE
@@ -411,7 +413,7 @@
                 : [ targets.main-target-default-build $(default-build) : $(project) ]
             ] ;
         $(project).mark-target-as-explicit $(target-xml:S=.tag) ;
-
+
         ## The Doxygen XML directory of the processed source files.
         targets.main-target-alternative
             [ new typed-target $(target-xml:S=.dir) : $(project) : DOXYGEN_XML_MULTIFILE
@@ -421,7 +423,7 @@
                 : [ targets.main-target-default-build $(default-build) : $(project) ]
             ] ;
         $(project).mark-target-as-explicit $(target-xml:S=.dir) ;
-
+
         ## The resulting BoostBook file is generated by the processor tool. The
         ## tool can be either the xsltproc plus accompanying XSL scripts. Or it
         ## can be the python doxproc.py script.
@@ -444,10 +446,10 @@
                 : [ targets.main-target-default-build $(default-build) : $(project) ]
             ] ;
         $(project).mark-target-as-explicit $(target:S=.xml) ;
-
+
         targets.main-target-alternative
             [ new alias-target-class $(target) : $(project)
- :
+ :
                 : [ targets.main-target-requirements $(requirements)
                     : $(project) ]
                 : [ targets.main-target-default-build $(default-build) : $(project) ]

Modified: branches/proto/v4/tools/build/v2/tools/gcc.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/gcc.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/gcc.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -57,16 +57,16 @@
 # xxx.dll DLL
 # libxxx.dll.a import library
 #
-# Note: user can always override by using the <tag>@rule
-# This settings have been choosen, so that mingw
-# is in line with msvc naming conventions. For
-# cygwin the cygwin naming convention has been choosen.
+# Implementation notes:
+# * User can always override this by using the <tag>@rule.
+# * These settings have been chosen so that mingw is in line with msvc naming
+# conventions.
+# * For cygwin the cygwin naming convention has been chosen.
 
-# Make the "o" suffix used for gcc toolset on all
-# platforms
+# Make gcc toolset object files use the "o" suffix on all platforms.
 type.set-generated-target-suffix OBJ : <toolset>gcc : o ;
-type.set-generated-target-suffix STATIC_LIB : <toolset>gcc <target-os>cygwin : a ;
 
+type.set-generated-target-suffix STATIC_LIB : <toolset>gcc <target-os>cygwin : a ;
 type.set-generated-target-suffix IMPORT_LIB : <toolset>gcc <target-os>cygwin : dll.a ;
 type.set-generated-target-prefix IMPORT_LIB : <toolset>gcc <target-os>cygwin : lib ;
 
@@ -76,10 +76,11 @@
 # be used to specify where the compiler is located. The parameter 'options' is a
 # space-delimited list of options, each one specified as
 # <option-name>option-value. Valid option names are: cxxflags, linkflags and
-# linker-type. Accepted linker-type values are gnu, darwin, osf, hpux or sun
-# and the default value will be selected based on the current OS.
+# linker-type. Accepted linker-type values are aix, darwin, gnu, hpux, osf or
+# sun and the default value will be selected based on the current OS.
 # Example:
 # using gcc : 3.4 : : <cxxflags>foo <linkflags>bar <linker-type>sun ;
+#
 rule init ( version ? : command * : options * )
 {
     # Information about the gcc command...
@@ -141,6 +142,10 @@
         {
             linker = hpux ;
         }
+ else if [ os.name ] = AIX
+ {
+ linker = aix ;
+ }
         else
         {
             linker = gnu ;
@@ -282,7 +287,7 @@
 
 flags gcc.compile PCH_FILE <pch>on : <pch-file> ;
 
-# Declare flags and action for compilation
+# Declare flags and action for compilation.
 flags gcc.compile OPTIONS <optimization>off : -O0 ;
 flags gcc.compile OPTIONS <optimization>speed : -O3 ;
 flags gcc.compile OPTIONS <optimization>space : -Os ;
@@ -302,10 +307,10 @@
 
 # On cygwin and mingw, gcc generates position independent code by default, and
 # warns if -fPIC is specified. This might not be the right way of checking if
-# we're using cygwin. For example, it's possible to run cygwin gcc from NT
-# shell, or using crosscompiling. But we'll solve that problem when it's time.
-# In that case we'll just add another parameter to 'init' and move this login
-# inside 'init'.
+# we are using cygwin. For example, it is possible to run cygwin gcc from NT
+# shell, or using crosscompiling. But we shall solve that problem at a later
+# time. In that case we shall just add another parameter to 'init' and move this
+# login inside 'init'.
 if [ os.name ] != CYGWIN && [ os.name ] != NT
 {
     # This logic will add -fPIC for all compilations:
@@ -316,20 +321,20 @@
     # obj d : d.cpp ;
     #
     # This all is fine, except that 'd' will be compiled with -fPIC even though
- # it's not needed, as 'd' is used only in exe. However, it's hard to detect
- # where a target is going to be used. Alternative, we can set -fPIC only
- # when main target type is LIB but than 'b' will be compiled without -fPIC.
- # In x86-64 that will lead to link errors. So, compile everything with
- # -fPIC.
+ # it is not needed, as 'd' is used only in exe. However, it is hard to
+ # detect where a target is going to be used. Alternatively, we can set -fPIC
+ # only when main target type is LIB but than 'b' would be compiled without
+ # -fPIC which would lead to link errors on x86-64. So, compile everything
+ # with -fPIC.
     #
- # Yet another alternative would be to create propagated <sharedable>
- # feature, and set it when building shared libraries, but that's hard to
- # implement and will increase target path length even more.
+ # Yet another alternative would be to create a propagated <sharedable>
+ # feature and set it when building shared libraries, but that would be hard
+ # to implement and would increase the target path length even more.
     flags gcc.compile OPTIONS <link>shared : -fPIC ;
 }
-if [ os.name ] != NT && [ os.name ] != OSF && [ os.name ] != HPUX
+if [ os.name ] != NT && [ os.name ] != OSF && [ os.name ] != HPUX && [ os.name ] != AIX
 {
- # OSF does have an option called -soname but it doesn't seem to work as
+ # OSF does have an option called -soname but it does not seem to work as
     # expected, therefore it has been disabled.
     HAVE_SONAME = "" ;
     SONAME_OPTION = -h ;
@@ -340,6 +345,8 @@
 flags gcc.compile.c++ USER_OPTIONS <cxxflags> ;
 flags gcc.compile DEFINES <define> ;
 flags gcc.compile INCLUDES <include> ;
+flags gcc.compile.c++ TEMPLATE_DEPTH <c++-template-depth> ;
+
 
 actions compile.c++.pch
 {
@@ -360,6 +367,21 @@
         LANG on $(<) = "-x c++" ;
     }
     DEPENDS $(<) : [ on $(<) return $(PCH_FILE) ] ;
+
+ # Here we want to raise the template-depth parameter value to something
+ # higher than the default value of 17. Note that we could do this using the
+ # feature.set-default rule but we do not want to set the default value for
+ # all toolsets as well.
+ #
+ # TODO: This 'modified default' has been inherited from some 'older Boost
+ # Build implementation' and has most likely been added to make some Boost
+ # library parts compile correctly. We should see what exactly prompted this
+ # and whether we can get around the problem more locally.
+ local template-depth = [ on $(<) return $(TEMPLATE_DEPTH) ] ;
+ if ! $(template-depth)
+ {
+ TEMPLATE_DEPTH on $(<) = 128 ;
+ }
 }
 
 rule compile.c
@@ -376,7 +398,7 @@
 
 actions compile.c++ bind PCH_FILE
 {
- "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-128 $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)"
+ "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)"
 }
 
 actions compile.c bind PCH_FILE
@@ -501,7 +523,7 @@
 }
 
 # Now, the vendor specific flags.
-# The parameter linker can be either gnu, darwin, osf, hpux or sun.
+# The parameter linker can be either aix, darwin, gnu, hpux, osf or sun.
 rule init-link-flags ( toolset linker condition )
 {
     switch $(linker)
@@ -611,13 +633,40 @@
             flags $(toolset).link OPTIONS $(condition)/<link>shared
                 : -fPIC : unchecked ;
         }
+
+ case aix :
+ {
+ #
+ # On AIX we *have* to use the native linker.
+ #
+ # Using -brtl, the AIX linker will look for libraries with both the .a and .so
+ # extensions, such as libfoo.a and libfoo.so. Without -brtl, the AIX linker
+ # looks only for libfoo.a. Note that libfoo.a is an archived file that may
+ # contain shared objects and is different from static libs as on Linux.
+ #
+ # The -bnoipath strips the prepending (relative) path of libraries from
+ # the loader section in the target library or executable. Hence, during load-
+ # time LIBPATH (identical to LD_LIBRARY_PATH) or a hard-coded -blibpath
+ # (*similar* to -lrpath/-lrpath-link) is searched. Without this option,
+ # the prepending (relative) path + library name is hard-coded in the loader
+ # section, causing *only* this path to be searched during load-time.
+ # Note that the AIX linker does not have an -soname equivalent, this
+ # is as close as it gets.
+ #
+ # The above options are definately for AIX 5.x, and most likely also for
+ # AIX 4.x and AIX 6.x. For details about AIX linker:
+ # http://download.boulder.ibm.com/ibmdl/pub/software/dw/aix/es-aix_ll.pdf
+ #
+
+ flags $(toolset).link OPTIONS : -Wl,-brtl -Wl,-bnoipath : unchecked ;
+ }
 
     case * :
         {
- errors.user-error
+ errors.user-error
             "$(toolset) initialization: invalid linker '$(linker)'" :
             "The value '$(linker)' specified for <linker> is not recognized." :
- "Possible values are 'gnu', 'darwin', 'osf', 'hpux' or 'sun'" ;
+ "Possible values are 'aix', 'darwin', 'gnu', 'hpux', 'osf' or 'sun'" ;
         }
     }
 }
@@ -648,7 +697,7 @@
 
 rule archive ( targets * : sources * : properties * )
 {
- # Always remove archive and start again. Here's rationale from
+ # Always remove archive and start again. Here is the rationale from
     #
     # Andre Hentz:
     #
@@ -692,13 +741,13 @@
     JAM_SEMAPHORE on $(targets) = <s>gcc-link-semaphore ;
 }
 
-# Differ from 'link' above only by -shared.
+# Differs from 'link' above only by -shared.
 actions link.dll bind LIBRARIES
 {
     "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])" -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)
 }
 
-# Set up threading support. It's somewhat contrived, so perform it at the end,
+# Set up threading support. It is somewhat contrived, so perform it at the end,
 # to avoid cluttering other code.
 
 if [ os.on-windows ]
@@ -716,26 +765,27 @@
         }
     case BeOS :
         {
- # BeOS has no threading options, don't set anything here.
+ # BeOS has no threading options, so do not set anything here.
         }
     case *BSD :
         {
         flags gcc OPTIONS <threading>multi : -pthread ;
- # there is no -lrt on BSD
+ # There is no -lrt on BSD.
         }
     case DragonFly :
         {
         flags gcc OPTIONS <threading>multi : -pthread ;
- # there is no -lrt on BSD - DragonFly is a FreeBSD variant,
- # which anoyingly doesn't say it's a *BSD.
+ # There is no -lrt on BSD - DragonFly is a FreeBSD variant, which
+ # annoyingly does not say it is a *BSD.
         }
     case IRIX :
         {
- # gcc on IRIX does not support multi-threading, don't set anything here.
+ # gcc on IRIX does not support multi-threading so do not set anything
+ # here.
         }
     case Darwin :
         {
- # Darwin has no threading options, don't set anything here.
+ # Darwin has no threading options so do not set anything here.
         }
     case * :
         {
@@ -817,7 +867,6 @@
 # RS/6000 & PowerPC
 flags gcc OPTIONS <architecture>power/<address-model>32 : -m32 ;
 flags gcc OPTIONS <architecture>power/<address-model>64 : -m64 ;
-flags gcc OPTIONS <architecture>power/<address-model>/<instruction-set> : -mcpu=common ;
 cpu-flags gcc OPTIONS : power : 403 : -mcpu=403 ;
 cpu-flags gcc OPTIONS : power : 505 : -mcpu=505 ;
 cpu-flags gcc OPTIONS : power : 601 : -mcpu=601 ;

Modified: branches/proto/v4/tools/build/v2/tools/hp_cxx.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/hp_cxx.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/hp_cxx.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -124,6 +124,8 @@
 flags hp_cxx.link FINDLIBS-ST <find-static-library> ;
 flags hp_cxx.link FINDLIBS-SA <find-shared-library> ;
 
+flags hp_cxx.compile.c++ TEMPLATE_DEPTH <c++-template-depth> ;
+
 actions link bind LIBRARIES
 {
     $(CONFIG_COMMAND) -noimplicit_include $(OPTIONS) -o "$(<)" -L$(LIBPATH) "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) -lrt -lm
@@ -154,9 +156,20 @@
 # Note: We deliberately don't suppress any warnings on the compiler command
 # line, the user can always do this in a customized toolset later on.
 
+rule compile.c++
+{
+ # We preprocess the TEMPLATE_DEPTH command line option here because we found
+ # no way to do it correctly in the actual action code. There we either get
+ # the -pending_instantiations parameter when no c++-template-depth property
+ # has been specified or we get additional quotes around
+ # "-pending_instantiations ".
+ local template-depth = [ on $(1) return $(TEMPLATE_DEPTH) ] ;
+ TEMPLATE_DEPTH on $(1) = "-pending_instantiations "$(template-depth) ;
+}
+
 actions compile.c++
 {
- $(CONFIG_COMMAND) -x cxx -c -std strict_ansi -nopure_cname -noimplicit_include -timplicit_local -ptr "$(<[1]:D)/cxx_repository" $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -o "$(<)" "$(>)"
+ $(CONFIG_COMMAND) -x cxx -c -std strict_ansi -nopure_cname -noimplicit_include -timplicit_local -ptr "$(<[1]:D)/cxx_repository" $(OPTIONS) $(TEMPLATE_DEPTH) -D$(DEFINES) -I"$(INCLUDES)" -o "$(<)" "$(>)"
 }
 
 # Always create archive from scratch. See the gcc toolet for rationale.

Modified: branches/proto/v4/tools/build/v2/tools/msvc.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/msvc.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/msvc.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -86,13 +86,13 @@
 # "x.y" - refers to a detected version;
 # "a.b" - refers to an undetected version.
 #
-# Note: for free VC7.1 tools, we don't correctly find vcvars32.bar when user
+# Note: for free VC7.1 tools, we do not correctly find vcvars32.bar when user
 # explicitly provides a path.
 #
 rule init (
     # The msvc version being configured. When omitted the tools invoked when no
     # explicit version is given will be configured.
- version ?
+ version ?
 
     # The command used to invoke the compiler. If not specified:
     # - if version is given, default location for that version will be
@@ -105,7 +105,11 @@
     # searched.
     : command *
 
- # Options can include:
+ # Options may include:
+ #
+ # All options shared by multiple toolset types as handled by the
+ # common.handle-options() rule, e.g. <cflags>, <compileflags>, <cxxflags>,
+ # <fflags> & <linkflags>.
     #
     # <assembler>
     # <compiler>
@@ -322,7 +326,7 @@
             # be used instead. Setup scripts may be global or arhitecture/
             # /platform/cpu specific. Setup options are used only in case of
             # global setup scripts.
-
+
             # Default setup scripts provided with different VC distributions:
             #
             # VC 7.1 had only the vcvars32.bat script specific to 32 bit i386
@@ -384,7 +388,7 @@
             if ! [ os.name ] in NT
             {
                 setup-prefix = "cmd.exe /S /C call " ;
- setup-suffix = " >nul \"&&\" " ;
+ setup-suffix = " \">nul\" \"&&\" " ;
             }
 
             for local c in $(cpu)
@@ -398,7 +402,7 @@
                     if $(global-setup)-is-not-empty
                     {
                         setup-$(c) = $(global-setup) ;
-
+
                         # If needed we can easily add using configuration flags
                         # here for overriding which options get passed to the
                         # global setup command for which target platform:
@@ -790,7 +794,7 @@
 
 rule get-rspline ( target : lang-opt )
 {
- CC_RSPLINE on $(target) = [ on $(target) return $(lang-opt) -U$(UNDEFS) $(CFLAGS) $(C++FLAGS) $(OPTIONS) -c $(nl)-D$(DEFINES) $(nl)\"-I$(INCLUDES)\" ] ;
+ CC_RSPLINE on $(target) = [ on $(target) return $(lang-opt) -U$(UNDEFS) $(CFLAGS) $(C++FLAGS) $(OPTIONS) -c $(nl)-D$(DEFINES) $(nl)\"-I$(INCLUDES:W)\" ] ;
 }
 
 
@@ -875,7 +879,7 @@
 
 actions compile.rc
 {
- $(.RC) -l 0x409 -U$(UNDEFS) -D$(DEFINES) -I"$(INCLUDES)" -fo "$(<:W)" "$(>:W)"
+ $(.RC) -l 0x409 -U$(UNDEFS) -D$(DEFINES) -I"$(INCLUDES:W)" -fo "$(<:W)" "$(>:W)"
 }
 
 
@@ -885,7 +889,7 @@
 
 actions compile.idl
 {
- $(.IDL) /nologo @"@($(<[1]:W).rsp:E=$(nl)"$(>:W)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)" $(nl)-U$(UNDEFS) $(nl)$(MIDLFLAGS) $(nl)/tlb "$(<[1]:W)" $(nl)/h "$(<[2]:W)" $(nl)/iid "$(<[3]:W)" $(nl)/proxy "$(<[4]:W)" $(nl)/dlldata "$(<[5]:W)")"
+ $(.IDL) /nologo @"@($(<[1]:W).rsp:E=$(nl)"$(>:W)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES:W)" $(nl)-U$(UNDEFS) $(nl)$(MIDLFLAGS) $(nl)/tlb "$(<[1]:W)" $(nl)/h "$(<[2]:W)" $(nl)/iid "$(<[3]:W)" $(nl)/proxy "$(<[4]:W)" $(nl)/dlldata "$(<[5]:W)")"
     $(TOUCH_FILE) "$(<[4]:W)"
     $(TOUCH_FILE) "$(<[5]:W)"
 }
@@ -964,9 +968,9 @@
 
 
 # Incremental linking a DLL causes no end of problems: if the actual exports
-# don't change, the import .lib file is never updated. Therefore, the .lib is
+# do not change, the import .lib file is never updated. Therefore, the .lib is
 # always out-of-date and gets rebuilt every time. I'm not sure that incremental
-# linking is such a great idea in general, but in this case I'm sure we don't
+# linking is such a great idea in general, but in this case I am sure we do not
 # want it.
 
 # Windows manifest is a new way to specify dependencies on managed DotNet

Modified: branches/proto/v4/tools/build/v2/tools/python.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/python.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/python.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -114,7 +114,7 @@
 }
 
 # A simpler version of SHELL that grabs stderr as well as stdout, but returns
-# nothing if there's an error.
+# nothing if there was an error.
 #
 local rule shell-cmd ( cmd )
 {
@@ -134,7 +134,7 @@
 # Try to identify Cygwin symlinks. Invoking such a file directly as an NT
 # executable from a native Windows build of bjam would be fatal to the bjam
 # process. One /can/ invoke them through sh.exe or bash.exe, if you can prove
-# that those aren't also symlinks. ;-)
+# that those are not also symlinks. ;-)
 #
 # If a symlink is found returns non-empty; we try to extract the target of the
 # symlink from the file and return that.
@@ -201,6 +201,7 @@
 # cygwin symlink.
 #
 # Note: only works on NT.
+#
 local rule invokes-cygwin-symlink ( cmd )
 {
     local dirs = $(cmd:D) ;
@@ -345,6 +346,7 @@
 
 # Return nonempty if path looks like a windows path, i.e. it starts with a drive
 # letter or contains backslashes.
+#
 local rule guess-windows-path ( path )
 {
     return [ SUBST $(path) ($(.windows-drive-letter-re)|.*([\\]).*) $1 ] ;
@@ -387,9 +389,9 @@
 }
 
 
-# Build a list of versions from 3.0 down to 1.5. Because bjam can't enumerate
+# Build a list of versions from 3.0 down to 1.5. Because bjam can not enumerate
 # registry sub-keys, we have no way of finding a version with a 2-digit minor
-# version, e.g. 2.10 -- let's hope that never happens.
+# version, e.g. 2.10 -- let us hope that never happens.
 #
 .version-countdown = ;
 for local v in [ numbers.range 15 30 ]
@@ -463,8 +465,8 @@
         # Prepare a List of Python format strings and expressions that can be
         # used to print the constants we want from the sys module.
 
- # We don't really want sys.version since that's a complicated string, so
- # get the information from sys.version_info instead.
+ # We do not really want sys.version since that is a complicated string,
+ # so get the information from sys.version_info instead.
         local format = "version=%d.%d" ;
         local exprs = "version_info[0]" "version_info[1]" ;
 
@@ -612,11 +614,11 @@
 #
 # Even where Python itself uses pthreads, it never allows extension modules to
 # be entered concurrently (unless they explicitly give up the interpreter lock).
-# Therefore, extension modules don't need the efficiency overhead of threadsafe
+# Therefore, extension modules do not need the efficiency overhead of threadsafe
 # code as produced by <threading>multi, and we handle libpthread along with
 # other libraries here. Note: this optimization is based on an assumption that
 # the compiler generates link-compatible code in both the single- and
-# multi-threaded cases, and that system libraries don't change their ABIs
+# multi-threaded cases, and that system libraries do not change their ABIs
 # either.
 #
 # Returns a list of usage-requirements that link to the necessary system
@@ -629,14 +631,14 @@
         case s[uo][nl]* : # solaris, sun, sunos
             # Add a librt dependency for the gcc toolset on SunOS (the sun
             # toolset adds -lrt unconditionally). While this appears to
- # duplicate the logic already in gcc.jam, it doesn't as long as
- # we're not forcing <threading>multi.
+ # duplicate the logic already in gcc.jam, it does not as long as
+ # we are not forcing <threading>multi.
 
             # On solaris 10, distutils.sysconfig.get_config_var('LIBS') yields
- # '-lresolv -lsocket -lnsl -lrt -ldl'. However, that doesn't seem to
- # be the right list for extension modules. For example, on my
+ # '-lresolv -lsocket -lnsl -lrt -ldl'. However, that does not seem
+ # to be the right list for extension modules. For example, on my
             # installation, adding -ldl causes at least one test to fail because
- # the library can't be found and removing it causes no failures.
+ # the library can not be found and removing it causes no failures.
 
             # Apparently, though, we need to add -lrt for gcc.
             return <toolset>gcc:<library>rt ;
@@ -648,6 +650,7 @@
         case windows : return ;
 
         case hpux : return <library>rt ;
+ case *bsd : return <library>pthread <toolset>gcc:<library>util ;
 
         case aix : return <library>pthread <library>dl ;
 
@@ -717,7 +720,7 @@
 
     if ! $(cmd-or-prefix) || [ GLOB $(cmd-or-prefix) : * ]
     {
- # If the user didn't pass a command, whatever we got was a prefix.
+ # If the user did not pass a command, whatever we got was a prefix.
         prefix = $(cmd-or-prefix) ;
         cmds-to-try = [ candidate-interpreters $(version) : $(prefix) : $(target-os) ] ;
     }
@@ -726,7 +729,7 @@
         # Work with the command the user gave us.
         cmds-to-try = $(cmd-or-prefix) ;
 
- # On windows, don't nail down the interpreter command just yet in case
+ # On Windows, do not nail down the interpreter command just yet in case
         # the user specified something that turns out to be a cygwin symlink,
         # which could bring down bjam if we invoke it.
         if $(target-os) != windows
@@ -735,7 +738,7 @@
         }
     }
 
- # Values to use in case we can't really find anything in the system.
+ # Values to use in case we can not really find anything in the system.
     local fallback-cmd = $(cmds-to-try[1]) ;
     local fallback-version ;
 
@@ -748,8 +751,8 @@
         local sys.$(sys-elements) ;
 
         # Compute the string Python's sys.platform needs to match. If not
- # targeting windows or cygwin we'll assume only native builds can
- # possibly run, so we won't require a match and we leave sys.platform
+ # targeting Windows or cygwin we will assume only native builds can
+ # possibly run, so we will not require a match and we leave sys.platform
         # blank.
         local platform ;
         switch $(target-os)
@@ -878,8 +881,8 @@
 
     local dll-path = $(libraries) ;
 
- # Make sure that we can find the Python DLL on windows.
- if $(target-os) = windows && $(exec-prefix)
+ # Make sure that we can find the Python DLL on Windows.
+ if ( $(target-os) = windows ) && $(exec-prefix)
     {
         dll-path += $(exec-prefix) ;
     }
@@ -894,7 +897,7 @@
         if $(target-os) = windows
         {
             # In pyconfig.h, Py_DEBUG is set if _DEBUG is set. If we define
- # Py_DEBUG we'll get multiple definition warnings.
+ # Py_DEBUG we will get multiple definition warnings.
             usage-requirements += <define>_DEBUG ;
         }
         else
@@ -952,7 +955,7 @@
           : $(target-requirements)
           :
             # Why python.lib must be listed here instead of along with the
- # system libs is a mystery, but if we don't do it, on cygwin,
+ # system libs is a mystery, but if we do not do it, on cygwin,
             # -lpythonX.Y never appears in the command line (although it does on
             # linux).
           : $(usage-requirements)
@@ -961,10 +964,11 @@
           ;
     }
 
- # On *nix, we don't want to link either Boost.Python or Python extensions to
- # libpython, because the Python interpreter itself provides all those
- # symbols. If we linked to libpython, we'd get duplicate symbols. So declare
- # two targets -- one for building extensions and another for embedding.
+ # On *nix, we do not want to link either Boost.Python or Python extensions
+ # to libpython, because the Python interpreter itself provides all those
+ # symbols. If we linked to libpython, we would get duplicate symbols. So
+ # declare two targets -- one for building extensions and another for
+ # embedding.
     #
     # Unlike most *nix systems, Mac OS X's linker does not permit undefined
     # symbols when linking a shared library. So, we still need to link against
@@ -1154,12 +1158,12 @@
 generators.register-standard testing.expect-success
   : RUN_PYD_OUTPUT : RUN_PYD ;
 
-
+
 # There are two different ways of spelling OS names. One is used for [ os.name ]
 # and the other is used for the <host-os> and <target-os> properties. Until that
 # is remedied, this sets up a crude mapping from the latter to the former, that
-# will work *for the purposes of cygwin/NT cross-builds only*. Couldn't think of
-# a better name than "translate".
+# will work *for the purposes of cygwin/NT cross-builds only*. Could not think
+# of a better name than "translate".
 #
 .translate-os-windows = NT ;
 .translate-os-cygwin = CYGWIN ;
@@ -1186,8 +1190,8 @@
 
 rule capture-output ( target : sources * : properties * )
 {
- # Setup up proper DLL search path. Here, $(sources[1]) is python module and
- # $(sources[2]) is DLL. Only $(sources[1]) is passed to
+ # Setup up a proper DLL search path. Here, $(sources[1]) is a python module
+ # and $(sources[2]) is a DLL. Only $(sources[1]) is passed to
     # testing.capture-output, so RUN_PATH variable on $(sources[2]) is not
     # consulted. Move it over explicitly.
     RUN_PATH on $(sources[1]) = [ on $(sources[2-]) return $(RUN_PATH) ] ;
@@ -1201,10 +1205,10 @@
 
     # PYTHONPATH is different; it will be interpreted by whichever Python is
     # invoked and so must follow path rules for the target os. The only OSes
- # where we can run pythons for other OSes currently are NT and CYGWIN, so we
+ # where we can run python for other OSes currently are NT and CYGWIN so we
     # only need to handle those cases.
     local target-os = [ feature.get-values target-os : $(properties) ] ;
- # Oddly, host-os isn't in properties, so grab the default value.
+ # Oddly, host-os is not in properties, so grab the default value.
     local host-os = [ feature.defaults host-os ] ;
     host-os = $(host-os:G=) ;
     if $(target-os) != $(host-os)
@@ -1215,16 +1219,15 @@
     local path-separator = [ os.path-separator [ translate-os $(target-os) ] ] ;
     local set-PYTHONPATH = [ common.variable-setting-command PYTHONPATH :
         $(PYTHONPATH:J=$(path-separator)) ] ;
- LAUNCHER on $(target) = $(set-PYTHONPATH) [ on $(target) return $(PYTHON) ] ;
+ LAUNCHER on $(target) = $(set-PYTHONPATH) [ on $(target) return \"$(PYTHON)\" ] ;
 }
 
 
 rule bpl-test ( name : sources * : requirements * )
 {
     sources ?= $(name).py $(name).cpp ;
- return [ testing.make-test
- run-pyd : $(sources) /boost/python//boost_python
- : $(requirements) : $(name) ] ;
+ return [ testing.make-test run-pyd : $(sources) /boost/python//boost_python
+ : $(requirements) : $(name) ] ;
 }
 
 

Modified: branches/proto/v4/tools/build/v2/tools/qcc.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/qcc.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/qcc.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,41 +26,38 @@
 toolset.inherit-rules qcc : unix ;
 
 
-
-# Make the "o" suffix used for qcc toolset on all
-# platforms
-type.set-generated-target-suffix OBJ : <toolset>qcc : o ;
+# Set typed target suffixes used by the qcc toolset.
+type.set-generated-target-suffix OBJ : <toolset>qcc : o ;
 type.set-generated-target-suffix STATIC_LIB : <toolset>qcc : a ;
 
 
-# Initializes the qcc toolset for the given version.
-# If necessary, command may be used to specify where the compiler
-# is located.
-# The parameter 'options' is a space-delimited list of options, each
-# one being specified as <option-name>option-value. Valid option names
-# are: cxxflags, linkflags and linker-type. Accepted values for linker-type
-# are gnu and sun, gnu being the default.
+# Initializes the qcc toolset for the given version. If necessary, command may
+# be used to specify where the compiler is located. The parameter 'options' is a
+# space-delimited list of options, each one being specified as
+# <option-name>option-value. Valid option names are: cxxflags, linkflags and
+# linker-type. Accepted values for linker-type are gnu and sun, gnu being the
+# default.
+#
 # Example:
 # using qcc : 3.4 : : <cxxflags>foo <linkflags>bar <linker-type>sun ;
+#
 rule init ( version ? : command * : options * )
 {
     local condition = [ common.check-init-parameters qcc : version $(version) ] ;
-
     local command = [ common.get-invocation-command qcc : QCC : $(command) ] ;
-
     common.handle-options qcc : $(condition) : $(command) : $(options) ;
 }
 
 
 generators.register-c-compiler qcc.compile.c++ : CPP : OBJ : <toolset>qcc ;
-generators.register-c-compiler qcc.compile.c : C : OBJ : <toolset>qcc ;
+generators.register-c-compiler qcc.compile.c : C : OBJ : <toolset>qcc ;
 generators.register-c-compiler qcc.compile.asm : ASM : OBJ : <toolset>qcc ;
 
 
-# Declare flags for compilation
+# Declare flags for compilation.
 flags qcc.compile OPTIONS <debug-symbols>on : -gstabs+ ;
 
-# Declare flags and action for compilation
+# Declare flags and action for compilation.
 flags qcc.compile OPTIONS <optimization>off : -O0 ;
 flags qcc.compile OPTIONS <optimization>speed : -O3 ;
 flags qcc.compile OPTIONS <optimization>space : -Os ;
@@ -82,72 +79,93 @@
 
 flags qcc.compile OPTIONS <link>shared : -shared ;
 
+flags qcc.compile.c++ TEMPLATE_DEPTH <c++-template-depth> ;
+
+
+rule compile.c++
+{
+ # Here we want to raise the template-depth parameter value to something
+ # higher than the default value of 17. Note that we could do this using the
+ # feature.set-default rule but we do not want to set the default value for
+ # all toolsets as well.
+ #
+ # TODO: This 'modified default' has been inherited from some 'older Boost
+ # Build implementation' and has most likely been added to make some Boost
+ # library parts compile correctly. We should see what exactly prompted this
+ # and whether we can get around the problem more locally.
+ local template-depth = [ on $(1) return $(TEMPLATE_DEPTH) ] ;
+ if ! $(template-depth)
+ {
+ TEMPLATE_DEPTH on $(1) = 100 ;
+ }
+}
 
 actions compile.c++
 {
- "$(CONFIG_COMMAND)" -Wc,-ftemplate-depth-100 $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
+ "$(CONFIG_COMMAND)" -Wc,-ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
 }
 
 actions compile.c
 {
- "$(CONFIG_COMMAND)" $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
+ "$(CONFIG_COMMAND)" $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
 }
 
 actions compile.asm
 {
- "$(CONFIG_COMMAND)" $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
+ "$(CONFIG_COMMAND)" $(OPTIONS) -D$(DEFINES) -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
 }
 
-# The class which check that we don't try to use
-# the <runtime-link>static property while creating or using shared library,
-# since it's not supported by qcc/libc.
+
+# The class checking that we do not try to use the <runtime-link>static property
+# while creating or using a shared library, since it is not supported by qcc/
+# /libc.
+#
 class qcc-linking-generator : unix-linking-generator
 {
     rule generated-targets ( sources + : property-set : project name ? )
     {
- if <runtime-link>static in [ $(property-set).raw ]
+ if <runtime-link>static in [ $(property-set).raw ]
         {
             local m ;
             if [ id ] = "qcc.link.dll"
             {
                 m = "on qcc, DLL can't be build with <runtime-link>static" ;
- }
- if ! $(m) {
+ }
+ if ! $(m)
+ {
                 for local s in $(sources)
                 {
                     local type = [ $(s).type ] ;
- if $(type) && [ type.is-derived $(type) SHARED_LIB ]
+ if $(type) && [ type.is-derived $(type) SHARED_LIB ]
                     {
                         m = "on qcc, using DLLS together with the <runtime-link>static options is not possible " ;
- }
- }
+ }
+ }
             }
             if $(m)
             {
- errors.user-error $(m) :
- "it's suggested to use <runtime-link>static together with the <link>static" ;
+ errors.user-error $(m) : "It is suggested to use"
+ "<runtime-link>static together with <link>static." ;
             }
-
         }
-
- return [ unix-linking-generator.generated-targets
+
+ return [ unix-linking-generator.generated-targets
             $(sources) : $(property-set) : $(project) $(name) ] ;
- }
+ }
 }
 
-generators.register [ new qcc-linking-generator qcc.link : LIB OBJ : EXE
+generators.register [ new qcc-linking-generator qcc.link : LIB OBJ : EXE
     : <toolset>qcc ] ;
 
-generators.register [ new qcc-linking-generator qcc.link.dll : LIB OBJ : SHARED_LIB
- : <toolset>qcc ] ;
+generators.register [ new qcc-linking-generator qcc.link.dll : LIB OBJ
+ : SHARED_LIB : <toolset>qcc ] ;
 
 generators.override qcc.prebuilt : builtin.prebuilt ;
 generators.override qcc.searched-lib-generator : searched-lib-generator ;
 
 
-
-# Declare flags for linking
-# First, the common flags
+# Declare flags for linking.
+# First, the common flags.
 flags qcc.link OPTIONS <debug-symbols>on : -gstabs+ ;
 flags qcc.link OPTIONS <profiling>on : -p ;
 flags qcc.link OPTIONS <linkflags> ;
@@ -158,8 +176,8 @@
 
 flags qcc.link FINDLIBS-SA : m ;
 
-# For <runtime-link>static we made sure there are no dynamic libraries
-# in the link
+# For <runtime-link>static we made sure there are no dynamic libraries in the
+# link.
 flags qcc.link OPTIONS <runtime-link>static : -static ;
 
 # Assuming this is just like with gcc.
@@ -167,47 +185,42 @@
 flags qcc.link RPATH_LINK : <xdll-path> : unchecked ;
 
 
-
-# Declare actions for linking
+# Declare actions for linking.
+#
 rule link ( targets * : sources * : properties * )
 {
- SPACE on $(targets) = " " ;
- # Serialize execution of the 'link' action, since
- # running N links in parallel is just slower.
- # For now, serialize only qcc links, it might be a good
- # idea to serialize all links.
+ SPACE on $(targets) = " " ;
+ # Serialize execution of the 'link' action, since running N links in
+ # parallel is just slower. For now, serialize only qcc links while it might
+ # be a good idea to serialize all links.
     JAM_SEMAPHORE on $(targets) = <s>qcc-link-semaphore ;
 }
 
 actions link bind LIBRARIES
 {
- "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS)
+ "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -Wl,-rpath-link$(SPACE)-Wl,"$(RPATH_LINK)" -o "$(<)" "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS)
 }
 
 
-# Always remove archive and start again. Here's rationale from
-# Andre Hentz:
-# I had a file, say a1.c, that was included into liba.a.
-# I moved a1.c to a2.c, updated my Jamfiles and rebuilt.
-# My program was crashing with absurd errors.
-# After some debugging I traced it back to the fact that a1.o was *still*
-# in liba.a
+# Always remove archive and start again. Here is the rationale from Andre Hentz:
+# I had a file, say a1.c, that was included into liba.a. I moved a1.c to a2.c,
+# updated my Jamfiles and rebuilt. My program was crashing with absurd errors.
+# After some debugging I traced it back to the fact that a1.o was *still* in
+# liba.a
 RM = [ common.rm-command ] ;
-
 if [ os.name ] = NT
 {
     RM = "if exist \"$(<[1])\" DEL \"$(<[1])\"" ;
 }
 
 
-# Declare action for creating static libraries
-# The 'r' letter means to add files to the archive with replacement
-# Since we remove archive, we don't care about replacement, but
-# there's no option "add without replacement".
-# The 'c' letter means suppresses warning in case the archive
-# does not exists yet. That warning is produced only on
-# some platforms, for whatever reasons.
-actions piecemeal archive
+# Declare action for creating static libraries. The 'r' letter means to add
+# files to the archive with replacement. Since we remove the archive, we do not
+# care about replacement, but there is no option to "add without replacement".
+# The 'c' letter suppresses warnings in case the archive does not exists yet.
+# That warning is produced only on some platforms, for whatever reasons.
+#
+actions piecemeal archive
 {
     $(RM) "$(<)"
     ar rc "$(<)" "$(>)"
@@ -216,13 +229,14 @@
 
 rule link.dll ( targets * : sources * : properties * )
 {
- SPACE on $(targets) = " " ;
+ SPACE on $(targets) = " " ;
     JAM_SEMAPHORE on $(targets) = <s>qcc-link-semaphore ;
 }
 
+
 # Differ from 'link' above only by -shared.
+#
 actions link.dll bind LIBRARIES
 {
- "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -o "$(<)" $(HAVE_SONAME)-Wl,-h$(SPACE)-Wl,$(<[1]:D=) -shared "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS)
+ "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -o "$(<)" $(HAVE_SONAME)-Wl,-h$(SPACE)-Wl,$(<[1]:D=) -shared "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS)
 }
-

Modified: branches/proto/v4/tools/build/v2/tools/qt4.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/qt4.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/qt4.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -161,24 +161,17 @@
         # dependency scanner for wrapped files.
         type.set-scanner QRC : qrc-scanner ;
         
- # List of all Qt libraries
- local all-libraries = QtCore QtGui QtNetwork QtXml QtSql QtSvg QtOpenGL Qt3Support QtTest QtAssistantClient QtDesigner QtUiTools QtDBus QtScript QtHelp QtXmlPatterns QtWebKit phonon ;
-
         # Test for a buildable Qt.
         if [ glob $(.prefix)/Jamroot ]
         {
- # Import all Qt Modules
- for local l in $(all-libraries)
- {
- alias $(l)
- : $(.prefix)//$(l)
- :
- :
- : <allow>qt4 ;
- }
+ .bjam-qt = true
+
+ # this will declare QtCore (and qtmain on <target-os>windows)
+ add-shared-library QtCore ;
         }
         else
- # Use pre-built Qt.
+ # Setup common pre-built Qt.
+ # Special setup for QtCore on which everything depends
         {
             local usage-requirements =
                 <include>$(.incprefix)
@@ -193,12 +186,12 @@
                 # On NT, the libs have "4" suffix, and "d" suffix in debug
                 # builds. Also, on NT we must link against the qtmain library
                 # (for WinMain).
- suffix_version = "4" ;
- suffix_debug = "d" ;
+ .suffix_version = "4" ;
+ .suffix_debug = "d" ;
                 lib qtmain
                     : # sources
                     : # requirements
- <name>qtmain$(suffix_debug)
+ <name>qtmain$(.suffix_debug)
                       <variant>debug
                     ;
 
@@ -212,20 +205,20 @@
             else if [ os.name ] = MACOSX
             {
                 # On MacOS X, both debug and release libraries are available.
- suffix_version = "" ;
- suffix_debug = "_debug" ;
+ .suffix_version = "" ;
+ .suffix_debug = "_debug" ;
             }
             else
             {
                 # Since Qt-4.2, debug versions on unix have to be built
                 # separately and therefore have no suffix.
- suffix_version = "" ;
- suffix_debug = "" ;
+ .suffix_version = "" ;
+ .suffix_debug = "" ;
             }
 
             lib QtCore : $(main)
                 : # requirements
- <name>QtCore$(suffix_version)
+ <name>QtCore$(.suffix_version)
                 : # default-build
                 : # usage-requirements
                   <define>QT_CORE_LIB
@@ -235,7 +228,7 @@
                 ;
             lib QtCore : $(main)
                 : # requirements
- <name>QtCore$(suffix_debug)$(suffix_version)
+ <name>QtCore$(.suffix_debug)$(.suffix_version)
                   <variant>debug
                 : # default-build
                 : # usage-requirements
@@ -243,333 +236,60 @@
                   <include>$(.incprefix)/QtCore
                   $(usage-requirements)
                 ;
+ }
 
- lib QtGui : QtCore
- : # requirements
- <name>QtGui$(suffix_version)
- : # default-build
- : # usage-requirements
- <define>QT_GUI_LIB
- <include>$(.incprefix)/QtGui
- ;
+ # Initialising the remaining libraries is canonical
+ add-shared-library QtGui : QtCore : QT_GUI_LIB ;
+ add-shared-library QtNetwork : QtCore : QT_NETWORK_LIB ;
+ add-shared-library QtSql : QtCore : QT_SQL_LIB ;
+ add-shared-library QtXml : QtCore : QT_XML_LIB ;
 
- lib QtGui : QtCore
- : # requirements
- <name>QtGui$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_GUI_LIB
- <include>$(.incprefix)/QtGui
- ;
+ add-shared-library Qt3Support : QtGui QtNetwork QtXml QtSql
+ : QT_QT3SUPPORT_LIB QT3_SUPPORT
+ : <qt3support>on ;
 
- lib QtNetwork : QtCore
- : # requirements
- <name>QtNetwork$(suffix_version)
- : # default-build
- : # usage-requirements
- <define>QT_NETWORK_LIB
- <include>$(.incprefix)/QtNetwork
- ;
- lib QtNetwork : QtCore
- : # requirements
- <name>QtNetwork$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_NETWORK_LIB
- <include>$(.incprefix)/QtNetwork
- ;
+ # Dummy target to enable "<qt3support>off" and
+ # "<library>/qt//Qt3Support" at the same time. This enables quick
+ # switching from one to the other for test/porting purposes.
+ alias Qt3Support : : : : <qt3support>off ;
 
- lib QtSql : QtCore
- : # requirements
- <name>QtSql$(suffix_version)
- : # default-build
- : # usage-requirements
- <define>QT_SQL_LIB
- <include>$(.incprefix)/QtSql
- ;
- lib QtSql : QtCore
- : # requirements
- <name>QtSql$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_SQL_LIB
- <include>$(.incprefix)/QtSql
- ;
+ # OpenGl Support
+ add-shared-library QtOpenGL : QtGui : QT_OPENGL_LIB ;
 
- lib QtXml : QtCore
- : # requirements
- <name>QtXml$(suffix_version)
- : # default-build
- : # usage-requirements
- <define>QT_XML_LIB
- <include>$(.incprefix)/QtXml
- ;
- lib QtXml : QtCore
- : # requirements
- <name>QtXml$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_XML_LIB
- <include>$(.incprefix)/QtXml
- ;
+ # SVG-Support (Qt 4.1)
+ add-shared-library QtSvg : QtXml QtOpenGL : QT_SVG_LIB ;
 
- lib Qt3Support : QtGui QtNetwork QtXml QtSql
- : # requirements
- <name>Qt3Support$(suffix_version)
- <qt3support>on
- : # default-build
- : # usage-requirements
- <define>QT_QT3SUPPORT_LIB
- <define>QT3_SUPPORT
- <include>$(.incprefix)/Qt3Support
- ;
+ # Test-Support (Qt 4.1)
+ add-shared-library QtTest : QtCore ;
 
- lib Qt3Support : QtGui QtNetwork QtXml QtSql
- : # requirements
- <name>Qt3Support$(suffix_debug)$(suffix_version)
- <qt3support>on
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_QT3SUPPORT_LIB
- <define>QT3_SUPPORT
- <include>$(.incprefix)/Qt3Support
- ;
+ # Qt designer library
+ add-shared-library QtDesigner : QtGui QtXml ;
 
- # Dummy target to enable "<qt3support>off" and
- # "<library>/qt//Qt3Support" at the same time. This enables quick
- # switching from one to the other for test/porting purposes.
- alias Qt3Support : : <qt3support>off ;
+ # Support for dynamic Widgets (Qt 4.1)
+ add-static-library QtUiTools : QtGui QtXml ;
 
- # OpenGl Support
- lib QtOpenGL : QtGui
- : # requirements
- <name>QtOpenGL$(suffix_version)
- : # default-build
- : # usage-requirements
- <define>QT_OPENGL_LIB
- <include>$(.incprefix)/QtOpenGL
- ;
- lib QtOpenGL : QtGui
- : # requirements
- <name>QtOpenGL$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_OPENGL_LIB
- <include>$(.incprefix)/QtOpenGL
- ;
+ # DBus-Support (Qt 4.2)
+ add-shared-library QtDBus : QtXml ;
 
- # SVG-Support (Qt 4.1)
- lib QtSvg : QtXml QtOpenGL
- : # requirements
- <name>QtSvg$(suffix_version)
- : # default-build
- : # usage-requirements
- <define>QT_SVG_LIB
- <include>$(.incprefix)/QtSvg
- ;
- lib QtSvg : QtXml QtOpenGL
- : # requirements
- <name>QtSvg$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_SVG_LIB
- <include>$(.incprefix)/QtSvg
- ;
+ # Script-Engine (Qt 4.3)
+ add-shared-library QtScript : QtGui QtXml ;
 
- # Test-Support (Qt 4.1)
- lib QtTest : QtCore
- : # requirements
- <name>QtTest$(suffix_version)
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtTest
- ;
- lib QtTest : QtCore
- : # requirements
- <name>QtTest$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtTest
- ;
+ # WebKit (Qt 4.4)
+ add-shared-library QtWebKit : QtGui : QT_WEBKIT_LIB ;
 
- # Qt designer library
- lib QtDesigner : QtGui QtXml
- : # requirements
- <name>QtDesigner$(suffix_version)
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtDesigner
- ;
+ # Phonon Multimedia (Qt 4.4)
+ add-shared-library phonon : QtGui QtXml : QT_PHONON_LIB ;
 
- lib QtDesigner : QtGui QtXml
- : # requirements
- <name>QtDesigner$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtDesigner
- ;
+ # XmlPatterns-Engine (Qt 4.4)
+ add-shared-library QtXmlPatterns : QtNetwork : QT_XMLPATTERNS_LIB ;
 
- # Support for dynamic Widgets (Qt 4.1)
- # Static library without version number
- lib QtUiTools : QtGui QtXml
- : # requirements
- <name>QtUiTools
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtUiTools
- ;
- lib QtUiTools : QtGui QtXml
- : # requirements
- <name>QtUiTools$(suffix_debug)
- <variant>debug
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtUiTools
- ;
-
- # DBus-Support (Qt 4.2)
- lib QtDBus : QtXml
- : # requirements
- <name>QtDBus$(suffix_version)
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtDBus
- ;
- lib QtDBus : QtXml
- : # requirements
- <name>QtDBus$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtDBus
- ;
-
- # Script-Engine (Qt 4.3)
- lib QtScript : QtGui QtXml
- : # requirements
- <name>QtScript$(suffix_version)
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtScript
- ;
- lib QtScript : QtGui QtXml
- : # requirements
- <name>QtScript$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtScript
- ;
-
- # WebKit (Qt 4.4)
- lib QtWebKit : QtGui
- : # requirements
- <name>QtWebKit$(suffix_version)
- : # default-build
- : # usage-requirements
- <define>QT_WEBKIT_LIB
- <include>$(.incprefix)/QtWebKit
- ;
- lib QtWebKit : QtGui
- : # requirements
- <name>QtWebKit$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_WEBKIT_LIB
- <include>$(.incprefix)/QtWebKit
- ;
-
- # Phonon Multimedia (Qt 4.4)
- lib phonon : QtGui QtXml
- : # requirements
- <name>phonon$(suffix_version)
- : # default-build
- : # usage-requirements
- <define>QT_PHONON_LIB
- <include>$(.incprefix)/phonon
- ;
- lib phonon : QtGui QtXml
- : # requirements
- <name>phonon$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_PHONON_LIB
- <include>$(.incprefix)/phonon
- ;
-
- # XmlPatterns-Engine (Qt 4.4)
- lib QtXmlPatterns : QtNetwork
- : # requirements
- <name>QtXmlPatterns$(suffix_version)
- : # default-build
- : # usage-requirements
- <define>QT_XMLPATTERNS_LIB
- <include>$(.incprefix)/QtXmlPatterns
- ;
- lib QtXmlPatterns : QtNetwork
- : # requirements
- <name>QtXmlPatterns$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <define>QT_XMLPATTERNS_LIB
- <include>$(.incprefix)/QtXmlPatterns
- ;
+ # Help-Engine (Qt 4.4)
+ add-shared-library QtHelp : QtGui QtSql QtXml ;
 
- # Help-Engine (Qt 4.4)
- lib QtHelp : QtGui QtSql QtXml
- : # requirements
- <name>QtHelp$(suffix_version)
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtHelp
- ;
- lib QtHelp : QtGui QtSql QtXml
- : # requirements
- <name>QtHelp$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtHelp
- ;
-
- # AssistantClient Support
- # Compat library
- # Pre-4.4 help system, use QtHelp for new programs
- lib QtAssistantClient : QtGui
- : # requirements
- <name>QtAssistantClient$(suffix_version)
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtAssistant
- ;
- lib QtAssistantClient : QtGui
- : # requirements
- <name>QtAssistantClient$(suffix_debug)$(suffix_version)
- <variant>debug
- : # default-build
- : # usage-requirements
- <include>$(.incprefix)/QtAssistant
- ;
- }
-
- # Make library names explicit so that a simple <use>qt4 will not bring in everything.
- # And some components like QtDBus/Phonon may not be available on some platforms.
- for local l in $(all-libraries)
- {
- explicit $(l) ;
- }
+ # AssistantClient Support
+ # Compat library
+ # Pre-4.4 help system, use QtHelp for new programs
+ add-shared-library QtAssistantClient : QtGui : : : QtAssistant ;
     }
 
     project.pop-current ;
@@ -703,6 +423,77 @@
     return $(.prefix) ;
 }
 
+# Add a shared Qt library.
+rule add-shared-library ( lib-name : depends-on * : usage-defines * : requirements * : include ? )
+{
+ add-library $(lib-name) : $(.suffix_version) : $(depends-on) : $(usage-defines) : $(requirements) : $(include) ;
+}
+
+# Add a static Qt library.
+rule add-static-library ( lib-name : depends-on * : usage-defines * : requirements * : include ? )
+{
+ add-library $(lib-name) : : $(depends-on) : $(usage-defines) : $(requirements) : $(include) ;
+}
+
+# Add a Qt library.
+# Static libs are unversioned, whereas shared libs have the major number as suffix.
+# Creates both release and debug versions on platforms where both are enabled by Qt configure.
+# Flags:
+# - lib-name Qt library Name
+# - version Qt major number used as shared library suffix (QtCore4.so)
+# - depends-on other Qt libraries
+# - usage-defines those are set by qmake, so set them when using this library
+# - requirements addional requirements
+# - include non-canonical include path. The canonical path is $(.incprefix)/$(lib-name).
+rule add-library ( lib-name : version ? : depends-on * : usage-defines * : requirements * : include ? )
+{
+ if $(.bjam-qt)
+ {
+ # Import Qt module
+ # Eveything will be setup there
+ alias $(lib-name)
+ : $(.prefix)//$(lib-name)
+ :
+ :
+ : <allow>qt4 ;
+ }
+ else
+ {
+ local real_include ;
+ real_include ?= $(include) ;
+ real_include ?= $(lib-name) ;
+
+ lib $(lib-name)
+ : # sources
+ $(depends-on)
+ : # requirements
+ <name>$(lib-name)$(version)
+ $(requirements)
+ : # default-build
+ : # usage-requirements
+ <define>$(usage-defines)
+ <include>$(.incprefix)/$(real_include)
+ ;
+
+ lib $(lib-name)
+ : # sources
+ $(depends-on)
+ : # requirements
+ <name>$(lib-name)$(.suffix_debug)$(version)
+ $(requirements)
+ <variant>debug
+ : # default-build
+ : # usage-requirements
+ <define>$(usage-defines)
+ <include>$(.incprefix)/$(real_include)
+ ;
+ }
+
+ # Make library explicit so that a simple <use>qt4 will not bring in everything.
+ # And some components like QtDBus/Phonon may not be available on all platforms.
+ explicit $(lib-name) ;
+}
+
 
 # Get <include> and <defines> from current toolset.
 flags qt4.moc INCLUDES <include> ;

Modified: branches/proto/v4/tools/build/v2/tools/quickbook.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/quickbook.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/quickbook.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -113,6 +113,7 @@
 import project ;
 import targets ;
 
+
 # The one and only QUICKBOOK type!
 type.register QUICKBOOK : qbk ;
 
@@ -121,15 +122,17 @@
 feature.feature <quickbook-binary> : : free ;
 feature.feature <quickbook-binary-dependencies> : : free dependency ;
 
+
 # quickbook-binary-generator handles generation of the QuickBook executable, by
 # marking it as a dependency for QuickBook docs.
 #
 # If the user supplied the QuickBook command that will be used.
 #
-# Otherwise we search some sensible places for the QuickBook sources and
-# compile from scratch using the default toolset.
+# Otherwise we search some sensible places for the QuickBook sources and compile
+# from scratch using the default toolset.
 #
 # As a last resort we rely on the shell to find 'quickbook'.
+#
 class quickbook-binary-generator : generator
 {
     import common modules path targets build-system ;
@@ -181,21 +184,20 @@
                 local quickbook-main-target = [ targets.resolve-reference $(quickbook-dir) : $(project) ] ;
 
                 # The first element are actual targets, the second are
- # properties found in target-id. We don't care about these since
- # we've passed the id ourselves.
+ # properties found in target-id. We do not care about these
+ # since we have passed the id ourselves.
                 quickbook-main-target =
                     [ $(quickbook-main-target[1]).main-target quickbook ] ;
 
                 quickbook-binary-dependencies =
- [ $(quickbook-main-target).generate $(property-set) ] ;
+ [ $(quickbook-main-target).generate [ $(property-set).propagated ] ] ;
 
                 # Ignore usage-requirements returned as first element.
                 quickbook-binary-dependencies = $(quickbook-binary-dependencies[2-]) ;
 
- # Some toolsets generate extra targets (e.g. RSP).
- # We must mark all targets as dependencies for the project, but
- # we'll only use the EXE target for quickbook-to-boostbook
- # translation.
+ # Some toolsets generate extra targets (e.g. RSP). We must mark
+ # all targets as dependencies for the project, but we will only
+ # use the EXE target for quickbook-to-boostbook translation.
                 for local target in $(quickbook-binary-dependencies)
                 {
                     if [ $(target).type ] = EXE
@@ -225,8 +227,8 @@
                 ECHO " or site-config.jam with the call" ;
                 ECHO " using quickbook : /path/to/quickbook ;" ;
 
- # As a last resort, search for 'quickbook' command in path.
- # Note that even if the 'quickbook' command is not found,
+ # As a last resort, search for 'quickbook' command in path. Note
+ # that even if the 'quickbook' command is not found,
                 # get-invocation-command will still return 'quickbook' and might
                 # generate an error while generating the virtual-target.
 
@@ -234,8 +236,8 @@
             }
         }
 
- # Add $(quickbook-binary-dependencies) as a dependency of the current project
- # and set it as the <quickbook-binary> feature for the
+ # Add $(quickbook-binary-dependencies) as a dependency of the current
+ # project and set it as the <quickbook-binary> feature for the
         # quickbook-to-boostbook rule, below.
         property-set = [ $(property-set).add-raw
             <dependency>$(quickbook-binary-dependencies)
@@ -247,7 +249,9 @@
     }
 }
 
-# Define a scanner for tracking QBK include dependencies
+
+# Define a scanner for tracking QBK include dependencies.
+#
 class qbk-scanner : common-scanner
 {
     rule pattern ( )
@@ -258,10 +262,12 @@
     }
 }
 
+
 scanner.register qbk-scanner : include ;
 
 type.set-scanner QUICKBOOK : qbk-scanner ;
 
+
 # Initialization of toolset.
 #
 # Parameters:
@@ -270,8 +276,9 @@
 # When command is not supplied toolset will search for QuickBook directory and
 # compile the executable from source. If that fails we still search the path for
 # 'quickbook'.
+#
 rule init (
- command ? # path to QuickBook executable.
+ command ? # path to the QuickBook executable.
     )
 {
     if ! $(.initialized)
@@ -281,13 +288,16 @@
     }
 }
 
+
 generators.register [ new quickbook-binary-generator quickbook.quickbook-to-boostbook : QUICKBOOK : XML ] ;
 
+
 # <quickbook-binary> shell command to run QuickBook
 # <quickbook-binary-dependencies> targets to build QuickBook from sources.
-toolset.flags quickbook.quickbook-to-boostbook QB-COMMAND <quickbook-binary> ;
-toolset.flags quickbook.quickbook-to-boostbook QB-DEPENDENCIES <quickbook-binary-dependencies> ;
-toolset.flags quickbook.quickbook-to-boostbook INCLUDES <include> ;
+toolset.flags quickbook.quickbook-to-boostbook QB-COMMAND <quickbook-binary> ;
+toolset.flags quickbook.quickbook-to-boostbook QB-DEPENDENCIES <quickbook-binary-dependencies> ;
+toolset.flags quickbook.quickbook-to-boostbook INCLUDES <include> ;
+
 
 rule quickbook-to-boostbook ( target : source : properties * )
 {
@@ -296,13 +306,15 @@
     DEPENDS $(target) : [ on $(target) return $(QB-DEPENDENCIES) ] ;
 }
 
+
 actions quickbook-to-boostbook
 {
- "$(QB-COMMAND)" -I"$(INCLUDES)" --output-file=$(1) $(2)
+ "$(QB-COMMAND)" -I"$(INCLUDES)" --output-file="$(1)" "$(2)"
 }
 
-# Declare a main target to convert a quickbook source into a boostbook
-# XML file.
+
+# Declare a main target to convert a quickbook source into a boostbook XML file.
+#
 rule to-boostbook ( target-name : sources * : requirements * : default-build * )
 {
   local project = [ project.current ] ;

Modified: branches/proto/v4/tools/build/v2/tools/stage.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/stage.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/stage.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -44,8 +44,8 @@
 
     rule __init__ ( name-and-dir : project : sources * : requirements * : default-build * )
     {
- basic-target.__init__ $(name-and-dir) : $(project) : $(sources) : $(requirements)
- : $(default-build) ;
+ basic-target.__init__ $(name-and-dir) : $(project) : $(sources) :
+ $(requirements) : $(default-build) ;
     }
 
     # If <location> is not set, sets it based on the project data.
@@ -75,8 +75,8 @@
             ps-raw = [ $(ps).raw ] ;
 
             # Unless <hardcode-dll-paths>true is in properties, which can happen
- # only if the user has explicitly requested it, nuke all
- # <dll-path> properties
+ # only if the user has explicitly requested it, nuke all <dll-path>
+ # properties.
             if [ $(property-set).get <hardcode-dll-paths> ] != true
             {
                 ps-raw = [ property.change $(ps-raw) : <dll-path> ] ;
@@ -96,7 +96,7 @@
         # Remove the <tag> feature on original targets.
         ps-raw = [ property.change $(ps-raw) : <tag> ] ;
         # And <location>. If stage target has another stage target in sources,
- # then we'll get virtual targets with <location> property set.
+ # then we shall get virtual targets with <location> property set.
         ps-raw = [ property.change $(ps-raw) : <location> ] ;
 
         local d = [ $(build-property-set).get <dependency> ] ;
@@ -109,7 +109,7 @@
         ps-raw += $(ns:G=<install-no-version-symlinks>) ;
 
         local d = [ $(build-property-set).get <install-source-root> ] ;
- # Make the path absolute: we'll use it to compute relative paths and
+ # Make the path absolute: we shall use it to compute relative paths and
         # making the path absolute will help.
         if $(d)
         {

Modified: branches/proto/v4/tools/build/v2/tools/testing.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/testing.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/testing.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -111,9 +111,9 @@
     }
 
     # Remember the test (for --dump-tests). A good way would be to collect all
- # given a project. This has some technical problems: e.g. we can't call this
- # dump from Jamfile since projects referred by 'build-project' are not
- # available until the whole Jamfile is loaded.
+ # given a project. This has some technical problems: e.g. we can not call
+ # this dump from a Jamfile since projects referred by 'build-project' are
+ # not available until the whole Jamfile has been loaded.
     .all-tests += $(t) ;
     return $(t) ;
 }

Modified: branches/proto/v4/tools/build/v2/tools/xsltproc.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/xsltproc.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/xsltproc.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,16 +1,14 @@
-# Copyright (C) 2003 Doug Gregor. Permission to copy, use, modify,
-# sell and distribute this software is granted provided this
-# copyright notice appears in all copies. This software is provided
-# "as is" without express or implied warranty, and with no claim as
-# to its suitability for any purpose.
+# Copyright (C) 2003 Doug Gregor. Permission to copy, use, modify, sell and
+# distribute this software is granted provided this copyright notice appears in
+# all copies. This software is provided "as is" without express or implied
+# warranty, and with no claim as to its suitability for any purpose.
 
-# This module defines rules to apply an XSLT stylesheet to an XML file
-# using the xsltproc driver, part of libxslt.
+# This module defines rules to apply an XSLT stylesheet to an XML file using the
+# xsltproc driver, part of libxslt.
 #
-# Note: except for 'init', this modules does not provide any rules
-# for end users.
+# Note: except for 'init', this modules does not provide any rules for end
+# users.
 
-import toolset : flags ;
 import feature ;
 import regex ;
 import sequence ;
@@ -20,60 +18,64 @@
 feature.feature xsl:path : : free ;
 feature.feature catalog : : free ;
 
+
 # Initialize xsltproc support. The parameters are:
 # xsltproc: The xsltproc executable
+#
 rule init ( xsltproc ? )
 {
- if ! $(xsltproc)
- {
- xsltproc = [ modules.peek : XSLTPROC ] ;
- }
-
- if ! $(.initialized)
- {
- $(.initialized) = true ;
- .xsltproc = $(xsltproc) ;
- }
+ if ! $(xsltproc)
+ {
+ xsltproc = [ modules.peek : XSLTPROC ] ;
+ }
+
+ if ! $(.initialized)
+ {
+ $(.initialized) = true ;
+ .xsltproc = $(xsltproc) ;
+ }
 }
 
+
 rule compute-xslt-flags ( target : properties * )
 {
- local flags ;
-
- # Raw flags.
- flags += [ feature.get-values <flags> : $(properties) ] ;
-
- # Translate <xsl:param> into command line flags.
- for local param in [ feature.get-values <xsl:param> : $(properties) ]
- {
- local namevalue = [ regex.split $(param) "=" ] ;
- flags += --stringparam $(namevalue[1]) \"$(namevalue[2])\" ;
- }
- # Translate <xsl:path>
- for local path in [ feature.get-values <xsl:path> : $(properties) ]
- {
- flags += --path \"$(path:G=)\" ;
- }
-
- # Take care of implicit dependencies
- local other-deps ;
- for local dep in [ feature.get-values <implicit-dependency> : $(properties) ]
- {
- other-deps += [ $(dep:G=).creating-subvariant ] ;
- }
-
- local implicit-target-directories ;
- for local dep in [ sequence.unique $(other-deps) ]
- {
- implicit-target-directories += [ $(dep).all-target-directories ] ;
- }
-
- for local dir in $(implicit-target-directories)
- {
- flags += --path \"$(dir)\" ;
- }
+ local flags ;
+
+ # Raw flags.
+ flags += [ feature.get-values <flags> : $(properties) ] ;
+
+ # Translate <xsl:param> into command line flags.
+ for local param in [ feature.get-values <xsl:param> : $(properties) ]
+ {
+ local namevalue = [ regex.split $(param) "=" ] ;
+ flags += --stringparam $(namevalue[1]) \"$(namevalue[2])\" ;
+ }
+
+ # Translate <xsl:path>.
+ for local path in [ feature.get-values <xsl:path> : $(properties) ]
+ {
+ flags += --path \"$(path:G=)\" ;
+ }
+
+ # Take care of implicit dependencies.
+ local other-deps ;
+ for local dep in [ feature.get-values <implicit-dependency> : $(properties) ]
+ {
+ other-deps += [ $(dep:G=).creating-subvariant ] ;
+ }
+
+ local implicit-target-directories ;
+ for local dep in [ sequence.unique $(other-deps) ]
+ {
+ implicit-target-directories += [ $(dep).all-target-directories ] ;
+ }
+
+ for local dir in $(implicit-target-directories)
+ {
+ flags += --path \"$(dir)\" ;
+ }
 
- return $(flags) ;
+ return $(flags) ;
 }
 
 
@@ -82,31 +84,35 @@
     STYLESHEET on $(target) = $(stylesheet) ;
     FLAGS on $(target) += [ compute-xslt-flags $(target) : $(properties) ] ;
     NAME on $(target) = $(.xsltproc) ;
-
+
     for local catalog in [ feature.get-values <catalog> : $(properties) ]
     {
         CATALOG = [ common.variable-setting-command XML_CATALOG_FILES : $(catalog) ] ;
     }
-
+
     $(action) $(target) : $(source) ;
 }
 
+
 rule xslt ( target : source stylesheet : properties * )
-{
+{
     return [ .xsltproc $(target) : $(source) $(stylesheet) : $(properties) : : xslt-xsltproc ] ;
 }
 
+
 rule xslt-dir ( target : source stylesheet : properties * : dirname )
-{
+{
     return [ .xsltproc $(target) : $(source) $(stylesheet) : $(properties) : $(dirname) : xslt-xsltproc-dir ] ;
 }
 
+
 actions xslt-xsltproc bind STYLESHEET
 {
- $(CATALOG) "$(NAME:E=xsltproc)" $(FLAGS) --xinclude -o "$(<)" "$(STYLESHEET)" "$(>)"
+ $(CATALOG) "$(NAME:E=xsltproc)" $(FLAGS) --xinclude -o "$(<)" "$(STYLESHEET)" "$(>)"
 }
 
+
 actions xslt-xsltproc-dir bind STYLESHEET
 {
- $(CATALOG) "$(NAME:E=xsltproc)" $(FLAGS) --xinclude -o "$(<:D)/" "$(STYLESHEET)" "$(>)"
+ $(CATALOG) "$(NAME:E=xsltproc)" $(FLAGS) --xinclude -o "$(<:D)/" "$(STYLESHEET)" "$(>)"
 }

Modified: branches/proto/v4/tools/build/v2/util/numbers.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/numbers.jam (original)
+++ branches/proto/v4/tools/build/v2/util/numbers.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -187,7 +187,7 @@
     assert.result 10000123456 : trim-leading-zeroes 10000123456 ;
     assert.result 10000 : trim-leading-zeroes 10000 ;
     assert.result 10000 : trim-leading-zeroes 00010000 ;
-
+
     assert.true less 1 2 ;
     assert.true less 1 12 ;
     assert.true less 1 21 ;

Modified: branches/proto/v4/tools/build/v2/util/path.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/path.jam (original)
+++ branches/proto/v4/tools/build/v2/util/path.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -194,7 +194,7 @@
 }
 
 
-# If 'path' is relative, it is rooted at 'root'. Otherwise, it's unchanged.
+# If 'path' is relative, it is rooted at 'root'. Otherwise, it is unchanged.
 #
 rule root ( path root )
 {
@@ -292,13 +292,15 @@
     {
         excluded = [ GLOB $(roots) : $(exclude-patterns) ] ;
     }
- local result = [ set.difference
- [ GLOB $(roots) : $(patterns) ] : $(excluded) ] ;
+ local result = [ set.difference [ GLOB $(roots) : $(patterns) ] :
+ $(excluded) ] ;
     local subdirs ;
- for local d in [ set.difference
- [ GLOB $(roots) : * ] : $(excluded) ]
+ for local d in [ set.difference [ GLOB $(roots) : * ] : $(excluded) ]
     {
- if ! ( $(d:D=) in . .. ) && ! [ CHECK_IF_FILE $(d) ] { subdirs += $(d) ; }
+ if ! ( $(d:D=) in . .. ) && ! [ CHECK_IF_FILE $(d) ]
+ {
+ subdirs += $(d) ;
+ }
     }
     if $(subdirs)
     {
@@ -308,7 +310,7 @@
 }
 
 
-# Returns true is the specified file exists.
+# Returns true is the specified file exists.
 #
 rule exists ( file )
 {

Modified: branches/proto/v4/tools/build/v2/util/regex.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/regex.jam (original)
+++ branches/proto/v4/tools/build/v2/util/regex.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,17 +1,18 @@
-# Copyright 2001, 2002 Dave Abrahams
-# Copyright 2003 Douglas Gregor
-# Copyright 2003 Rene Rivera
-# Copyright 2002, 2003, 2004, 2005 Vladimir Prus
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+# Copyright 2001, 2002 Dave Abrahams
+# Copyright 2003 Douglas Gregor
+# Copyright 2003 Rene Rivera
+# Copyright 2002, 2003, 2004, 2005 Vladimir Prus
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 
 #
 # Returns a list of the following substrings:
-# 1) from beginning till the first occurence of 'separator' or till the end,
-# 2) between each occurence of 'separator' and the next occurence,
-# 3) from the last occurence of 'separator' till the end.
+# 1) from beginning till the first occurrence of 'separator' or till the end,
+# 2) between each occurrence of 'separator' and the next occurrence,
+# 3) from the last occurrence of 'separator' till the end.
 # If no separator is present, the result will contain only one element.
 #
+
 rule split ( string separator )
 {
     local result ;
@@ -22,20 +23,23 @@
     while $(match)
     {
         match = [ MATCH ^(.*)($(separator))(.*) : $(s) ] ;
- if $(match) {
- match += "" ; # in case 3rd item was empty - works around MATCH bug
+ if $(match)
+ {
+ match += "" ; # in case 3rd item was empty - works around MATCH bug
             result = $(match[3]) $(result) ;
             s = $(match[1]) ;
         }
     }
     # Combine the remaining part at the beginning, which does not have
- # separators, with the pieces broken off.
- # Note that rule's signature does not allow initial s to be empty.
+ # separators, with the pieces broken off. Note that the rule's signature
+ # does not allow the initial s to be empty.
     return $(s) $(result) ;
 }
 
-# Returns the concatenated results of Applying regex.split to every
-# element of list using the separator pattern.
+
+# Returns the concatenated results of Applying regex.split to every element of
+# the list using the separator pattern.
+#
 rule split-list ( list * : separator )
 {
     local result ;
@@ -45,9 +49,10 @@
     }
     return $(result) ;
 }
-
-# Match string against pattern, and return the elements indicated by
-# indices.
+
+
+# Match string against pattern, and return the elements indicated by indices.
+#
 rule match ( pattern : string : indices * )
 {
     indices ?= 1 2 3 4 5 6 7 8 9 ;
@@ -55,10 +60,10 @@
     return $(x[$(indices)]) ;
 }
 
-# Matches all elements of 'list' agains the 'pattern'
-# and returns a list of the elements indicated by indices of
-# all successfull matches. If 'indices' is omitted returns
-# a list of first paranthethised groups of all successfull
+
+# Matches all elements of 'list' agains the 'pattern' and returns a list of
+# elements indicated by indices of all successful matches. If 'indices' is
+# omitted returns a list of first paranthethised groups of all successful
 # matches.
 #
 rule transform ( list * : pattern : indices * )
@@ -71,41 +76,44 @@
         if $(m)
         {
             result += $(m[$(indices)]) ;
- }
+ }
     }
     return $(result) ;
 }
 
 NATIVE_RULE regex : transform ;
 
-# Escapes all of the characters in symbols using the escape symbol
-# escape-symbol for the given string, and returns the escaped string
+
+# Escapes all of the characters in symbols using the escape symbol escape-symbol
+# for the given string, and returns the escaped string.
+#
 rule escape ( string : symbols : escape-symbol )
 {
- local result = "" ;
- local m = 1 ;
- while $(m)
- {
- m = [ MATCH ^([^$(symbols)]*)([$(symbols)])(.*) : $(string) ] ;
- if $(m)
- {
- m += "" ; # Supposedly a bug fix; borrowed from regex.split
- result = "$(result)$(m[1])$(escape-symbol)$(m[2])" ;
- string = $(m[3]) ;
- }
- }
- string ?= "" ;
- result = "$(result)$(string)" ;
- return $(result) ;
+ local result = "" ;
+ local m = 1 ;
+ while $(m)
+ {
+ m = [ MATCH ^([^$(symbols)]*)([$(symbols)])(.*) : $(string) ] ;
+ if $(m)
+ {
+ m += "" ; # Supposedly a bug fix; borrowed from regex.split
+ result = "$(result)$(m[1])$(escape-symbol)$(m[2])" ;
+ string = $(m[3]) ;
+ }
+ }
+ string ?= "" ;
+ result = "$(result)$(string)" ;
+ return $(result) ;
 }
 
-# Replaces occurances of a match string in a given string. Returns the
-# new string. The match string can be a regex expression.
+
+# Replaces occurrences of a match string in a given string and returns the new
+# string. The match string can be a regex expression.
 #
 rule replace (
- string # The string to modify.
- match # The characters to replace.
- replacement # The string to replace with.
+ string # The string to modify.
+ match # The characters to replace.
+ replacement # The string to replace with.
     )
 {
     local result = "" ;
@@ -125,9 +133,9 @@
     return $(result) ;
 }
 
-# Replaces occurances of a match string in a given list of strings.
-# Returns the list of new strings. The match string can be a regex
-# expression.
+
+# Replaces occurrences of a match string in a given list of strings and returns
+# a list of new strings. The match string can be a regex expression.
 #
 # list - the list of strings to modify.
 # match - the search expression.
@@ -143,6 +151,7 @@
     return $(result) ;
 }
 
+
 rule __test__ ( )
 {
     import assert ;
@@ -153,28 +162,28 @@
     assert.result "" a "" b c : split "/a//b/c" / ;
     assert.result "" a "" b c "" : split "/a//b/c/" / ;
     assert.result "" a "" b c "" "" : split "/a//b/c//" / ;
-
+
     assert.result a c b d
- : match (.)(.)(.)(.) : abcd : 1 3 2 4 ;
-
+ : match (.)(.)(.)(.) : abcd : 1 3 2 4 ;
+
     assert.result a b c d
- : match (.)(.)(.)(.) : abcd ;
-
+ : match (.)(.)(.)(.) : abcd ;
+
     assert.result ababab cddc
- : match ((ab)*)([cd]+) : abababcddc : 1 3 ;
+ : match ((ab)*)([cd]+) : abababcddc : 1 3 ;
 
- assert.result a.h c.h
- : transform <a.h> \"b.h\" <c.h> : <(.*)> ;
+ assert.result a.h c.h
+ : transform <a.h> \"b.h\" <c.h> : <(.*)> ;
 
- assert.result a.h b.h c.h
- : transform <a.h> \"b.h\" <c.h> : <([^>]*)>|\"([^\"]*)\" : 1 2 ;
+ assert.result a.h b.h c.h
+ : transform <a.h> \"b.h\" <c.h> : <([^>]*)>|\"([^\"]*)\" : 1 2 ;
 
     assert.result "^<?xml version=\"1.0\"^>"
- : escape "<?xml version=\"1.0\">" : "&|()<>^" : "^" ;
-
+ : escape "<?xml version=\"1.0\">" : "&|()<>^" : "^" ;
+
     assert.result "<?xml version=\\\"1.0\\\">"
- : escape "<?xml version=\"1.0\">" : "\\\"" : "\\" ;
-
+ : escape "<?xml version=\"1.0\">" : "\\\"" : "\\" ;
+
     assert.result "string&nbsp;string&nbsp;" : replace "string string " " " "&nbsp;" ;
     assert.result "&nbsp;string&nbsp;string" : replace " string string" " " "&nbsp;" ;
     assert.result "string&nbsp;&nbsp;string" : replace "string string" " " "&nbsp;" ;

Modified: branches/proto/v4/tools/build/v2/util/sequence.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/sequence.jam (original)
+++ branches/proto/v4/tools/build/v2/util/sequence.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -204,8 +204,8 @@
 }
 
 
-# Returns the maximum number in 'elements'. Uses 'ordered' for comparisons, or
-# 'numbers.less' is none is provided.
+# Returns the maximum number in 'elements'. Uses 'ordered' for comparisons or
+# 'numbers.less' if none is provided.
 #
 rule max-element ( elements + : ordered ? )
 {

Modified: branches/proto/v4/tools/build/v2/util/set.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/set.jam (original)
+++ branches/proto/v4/tools/build/v2/util/set.jam 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,17 +1,17 @@
-# Copyright 2001, 2002 Dave Abrahams
-# Copyright 2003 Vladimir Prus
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-# difference
-# returns the elements of B that are not in A
-rule difference ( B * : A * )
+# Copyright 2001, 2002 Dave Abrahams
+# Copyright 2003 Vladimir Prus
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+
+# Returns the elements of set1 that are not in set2.
+#
+rule difference ( set1 * : set2 * )
 {
     local result = ;
- local element ;
- for element in $(B)
+ for local element in $(set1)
     {
- if ! ( $(element) in $(A) )
+ if ! ( $(element) in $(set2) )
         {
             result += $(element) ;
         }
@@ -21,9 +21,9 @@
 
 NATIVE_RULE set : difference ;
 
-# intersection set1 : set2
+
+# Removes all the items appearing in both set1 & set2.
 #
-# Removes from set1 any items which don't appear in set2 and returns the result.
 rule intersection ( set1 * : set2 * )
 {
     local result ;
@@ -37,6 +37,10 @@
     return $(result) ;
 }
 
+
+# Returns whether set1 & set2 contain the same elements. Note that this ignores
+# any element ordering differences as well as any element duplication.
+#
 rule equal ( set1 * : set2 * )
 {
     if $(set1) in $(set2) && ( $(set2) in $(set1) )
@@ -45,18 +49,15 @@
     }
 }
 
+
 rule __test__ ( )
 {
     import assert ;
-
- assert.result 0 1 4 6 8 9
- : difference 0 1 2 3 4 5 6 7 8 9 : 2 3 5 7 ;
-
- assert.result 2 5 7 : intersection 0 1 2 4 5 6 7 8 9 : 2 3 5 7 ;
-
- assert.true equal 1 1 2 3 : 3 2 2 1 ;
-
- assert.false equal 2 3 : 3 2 2 1 ;
-}
 
+ assert.result 0 1 4 6 8 9 : difference 0 1 2 3 4 5 6 7 8 9 : 2 3 5 7 ;
+ assert.result 2 5 7 : intersection 0 1 2 4 5 6 7 8 9 : 2 3 5 7 ;
 
+ assert.true equal : ;
+ assert.true equal 1 1 2 3 : 3 2 2 1 ;
+ assert.false equal 2 3 : 3 2 2 1 ;
+}

Modified: branches/proto/v4/tools/inspect/ascii_check.cpp
==============================================================================
--- branches/proto/v4/tools/inspect/ascii_check.cpp (original)
+++ branches/proto/v4/tools/inspect/ascii_check.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,12 +1,12 @@
 // ascii_check implementation ------------------------------------------------//
 
 // Copyright Marshall Clow 2007.
-// Based on the tab-check checker by Beman Dawes
+// Based on the tab-check checker by Beman Dawes
 //
 // Distributed under the 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 is a test.
+// √ -- this is a test.
 
 #include "ascii_check.hpp"
 #include <functional>
@@ -16,8 +16,8 @@
   namespace inspect
   {
 
- static const string gPunct ( "$_{}[]#()<>%:;.?*+-/ˆ&|~!=,\\\"'@^`" );
-
+ static const string gPunct ( "$_{}[]#()<>%:;.?*+-/ˆ&|~!=,\\\"'@^`" );
+
    // Legal characters for a source file are defined in section 2.2 of the standard
    // I have added '@', '^', and '`' to the "legal" chars because they are commonly
    // used in comments, and they are strictly ASCII.
@@ -37,6 +37,38 @@
       }
    };
 
+ struct is_CRLF : public std::unary_function<char, bool> {
+ public:
+ is_CRLF () {}
+ ~is_CRLF () {}
+ bool operator () ( char c ) const
+ {
+ return c == '\015' || c == '\012';
+ }
+ };
+
+ const char *kCRLF = "\012\015";
+
+// Given a position in the file, extract and return the line
+ std::string find_line ( const std::string &contents, std::string::const_iterator iter_pos )
+ {
+ std::size_t pos = iter_pos - contents.begin ();
+
+ // Search backwards for a CR or LR
+ std::size_t start_pos = contents.find_last_of ( kCRLF, pos );
+ std::string::const_iterator line_start = contents.begin () + ( start_pos == std::string::npos ? 0 : start_pos + 1 );
+
+
+ // Search forwards for a CR or LF
+ std::size_t end_pos = contents.find_first_of ( kCRLF, pos + 1 );
+ std::string::const_iterator line_end;
+ if ( end_pos == std::string::npos )
+ line_end = contents.end ();
+ else
+ line_end = contents.begin () + end_pos - 1;
+
+ return std::string ( line_start, line_end );
+ }
 
    ascii_check::ascii_check() : m_files_with_errors(0)
    {
@@ -55,11 +87,12 @@
       const string & contents ) // contents of file to be inspected
     {
       if (contents.find( "boostinspect:" "noascii" ) != string::npos) return;
-
- if ( std::find_if ( contents.begin (), contents.end (), non_ascii ()) != contents.end ())
+ string::const_iterator bad_char = std::find_if ( contents.begin (), contents.end (), non_ascii ());
+ if ( bad_char != contents.end ())
       {
         ++m_files_with_errors;
- error( library_name, full_path, name() );
+ string the_line = find_line ( contents, bad_char );
+ error( library_name, full_path, string ( name()) + " non-ASCII: " + the_line );
       }
     }
   } // namespace inspect

Modified: branches/proto/v4/tools/inspect/ascii_check.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/ascii_check.hpp (original)
+++ branches/proto/v4/tools/inspect/ascii_check.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,7 +1,7 @@
 // ascii_check header --------------------------------------------------------//
 
 // Copyright Marshall Clow 2007.
-// Based on the tab-check checker by Beman Dawes
+// Based on the tab-check checker by Beman Dawes
 // Distributed under the Boost Software License, Version 1.0.
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
@@ -21,7 +21,7 @@
     public:
 
       ascii_check();
- virtual const char * name() const { return "*A*"; }
+ virtual const char * name() const { return "*ASCII*"; }
       virtual const char * desc() const { return "non-ASCII chars in file"; }
 
       virtual void inspect(
@@ -30,7 +30,7 @@
         const std::string & contents );
 
       virtual ~ascii_check()
- { std::cout << " " << m_files_with_errors << " files with non-ASCII chars\n"; }
+ { std::cout << " " << m_files_with_errors << " files with non-ASCII chars" << line_break(); }
     };
   }
 }

Modified: branches/proto/v4/tools/inspect/build/Jamfile.v2
==============================================================================
--- branches/proto/v4/tools/inspect/build/Jamfile.v2 (original)
+++ branches/proto/v4/tools/inspect/build/Jamfile.v2 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -14,7 +14,7 @@
 
 exe inspect
     :
- inspect.cpp license_check.cpp link_check.cpp long_name_check.cpp tab_check.cpp crlf_check.cpp unnamed_namespace_check.cpp ascii_check.cpp
+ inspect.cpp license_check.cpp link_check.cpp path_name_check.cpp tab_check.cpp crlf_check.cpp unnamed_namespace_check.cpp ascii_check.cpp
     copyright_check.cpp minmax_check.cpp
     /boost//filesystem/<link>static
     /boost//regex/<link>static

Modified: branches/proto/v4/tools/inspect/copyright_check.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/copyright_check.hpp (original)
+++ branches/proto/v4/tools/inspect/copyright_check.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -31,7 +31,7 @@
         const std::string & contents );
 
       virtual ~copyright_check()
- { std::cout << " " << m_files_with_errors << " files " << desc() << '\n'; }
+ { std::cout << " " << m_files_with_errors << " files " << desc() << line_break(); }
     };
   }
 }

Modified: branches/proto/v4/tools/inspect/crlf_check.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/crlf_check.hpp (original)
+++ branches/proto/v4/tools/inspect/crlf_check.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -23,7 +23,7 @@
     public:
 
       crlf_check();
- virtual const char * name() const { return "*R*"; }
+ virtual const char * name() const { return "*EOL*"; }
       virtual const char * desc() const { return "invalid (cr only) line-ending"; }
 
       virtual void inspect(
@@ -32,7 +32,7 @@
         const std::string & contents );
 
       virtual ~crlf_check()
- { std::cout << " " << m_files_with_errors << " files with invalid line endings\n"; }
+ { std::cout << " " << m_files_with_errors << " files with invalid line endings" << line_break(); }
     };
   }
 }

Modified: branches/proto/v4/tools/inspect/index.html
==============================================================================
--- branches/proto/v4/tools/inspect/index.html (original)
+++ branches/proto/v4/tools/inspect/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -38,10 +38,15 @@
   <li>tab_check.hpp and <a href="tab_check.cpp">
   tab_check.cpp</a></li>
 </ul>
-<p>A Jamfile is provided to build the program.</p>
+<p>A Jamfile is provided to build the program
+using Boost.Build.</p>
+<p>A Microsoft Visual Studio <a href="build/msvc/boost_inspect.suo">solution
+file</a> is provided to aid maintenance. See
+readme.txt
+before using it.</p>
 <hr>
 <p>Revised
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->29 December, 2003<!--webbot bot="Timestamp" endspan i-checksum="38523" --></p>
+<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->29 June, 2008<!--webbot bot="Timestamp" endspan i-checksum="19976" --></p>
 
 <p>© Copyright Beman Dawes, 2003</p>
 <p> Distributed under the Boost Software
@@ -51,4 +56,4 @@
 
 </body>
 
-</html>
+</html>
\ No newline at end of file

Modified: branches/proto/v4/tools/inspect/inspect.cpp
==============================================================================
--- branches/proto/v4/tools/inspect/inspect.cpp (original)
+++ branches/proto/v4/tools/inspect/inspect.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -34,7 +34,7 @@
 #include "crlf_check.hpp"
 #include "license_check.hpp"
 #include "link_check.hpp"
-#include "long_name_check.hpp"
+#include "path_name_check.hpp"
 #include "tab_check.hpp"
 #include "ascii_check.hpp"
 #include "minmax_check.hpp"
@@ -46,6 +46,8 @@
 
 namespace fs = boost::filesystem;
 
+using namespace boost::inspect;
+
 namespace
 {
   class inspector_element
@@ -63,6 +65,7 @@
   long file_count = 0;
   long directory_count = 0;
   long error_count = 0;
+ const int max_offenders = 5; // maximum "worst offenders" to display
 
   boost::inspect::string_set content_signatures;
 
@@ -85,6 +88,20 @@
   typedef std::vector< error_msg > error_msg_vector;
   error_msg_vector msgs;
 
+ struct lib_error_count
+ {
+ int error_count;
+ string library;
+
+ bool operator<( const lib_error_count & rhs ) const
+ {
+ return error_count > rhs.error_count;
+ }
+ };
+
+ typedef std::vector< lib_error_count > lib_error_count_vector;
+ lib_error_count_vector libs;
+
 // get info (as a string) if inspect_root is svn working copy --------------//
 
   string info( const fs::path & inspect_root )
@@ -263,11 +280,11 @@
     else
     {
       std::cout
- << " <tr><td><a href=\"#"
+ << " <a href=\"#"
         << current_library // what about malformed for URI refs? [gps]
         << "\">" << current_library
- << "</a></td><td align=\"center\">"
- << err_count << "</td></tr>\n";
+ << "</a> ("
+ << err_count << ")<br>\n";
     }
   }
 
@@ -281,14 +298,9 @@
     }
     else
     {
- std::cout
- << "</pre>\n"
+ std::cout <<
         "<h2>Summary</h2>\n"
- "<table border=\"1\" cellpadding=\"5\" cellspacing=\"0\">\n"
- " <tr>\n"
- " <td><b>Library</b></td>\n"
- " <td><b>Problems</b></td>\n"
- " </tr>\n"
+ "<blockquote>\n"
         ;
     }
 
@@ -308,13 +320,9 @@
     display_summary_helper( current_library, err_count );
 
     if (display_text == display_format)
- {
       std::cout << "\n";
- }
     else
- {
- std::cout << "</table>\n";
- }
+ std::cout << "</blockquote>\n";
   }
 
 
@@ -413,6 +421,83 @@
     }
   }
 
+
+// worst_offenders_count_helper --------------------------------------------------//
+
+ void worst_offenders_count_helper( const string & current_library, int err_count )
+ {
+ lib_error_count lec;
+ lec.library = current_library;
+ lec.error_count = err_count;
+ libs.push_back( lec );
+ }
+// worst_offenders_count -----------------------------------------------------//
+
+ void worst_offenders_count()
+ {
+ string current_library( msgs.begin()->library );
+ int err_count = 0;
+ for ( error_msg_vector::iterator itr ( msgs.begin() );
+ itr != msgs.end(); ++itr )
+ {
+ if ( current_library != itr->library )
+ {
+ worst_offenders_count_helper( current_library, err_count );
+ current_library = itr->library;
+ err_count = 0;
+ }
+ ++err_count;
+ }
+ worst_offenders_count_helper( current_library, err_count );
+ }
+
+// display_worst_offenders -------------------------------------------------//
+
+ void display_worst_offenders()
+ {
+ if (display_text == display_format)
+ {
+ std::cout << "Worst Offenders:\n";
+ }
+ else
+ {
+ std::cout <<
+ "<h2>Worst Offenders</h2>\n"
+ "<blockquote>\n"
+ ;
+ }
+
+ int display_count = 0;
+ int last_error_count = 0;
+ for ( lib_error_count_vector::iterator itr ( libs.begin() );
+ itr != libs.end()
+ && (display_count < max_offenders
+ || itr->error_count == last_error_count);
+ ++itr, ++display_count )
+ {
+ if (display_text == display_format)
+ {
+ std::cout << itr->library << " " << itr->error_count << "\n";
+ }
+ else
+ {
+ std::cout
+ << " <a href=\"#"
+ << itr->library
+ << "\">" << itr->library
+ << "</a> ("
+ << itr->error_count << ")<br>\n";
+ }
+ last_error_count = itr->error_count;
+ }
+
+ if (display_text == display_format)
+ std::cout << "\n";
+ else
+ std::cout << "</blockquote>\n";
+ }
+
+
   const char * options()
   {
     return
@@ -420,7 +505,7 @@
          " -copyright\n"
          " -crlf\n"
          " -link\n"
- " -long_name\n"
+ " -path_name\n"
          " -tab\n"
          " -ascii\n"
          " -minmax\n"
@@ -454,6 +539,14 @@
   namespace inspect
   {
 
+// line_break --------------------------------------------------------------//
+
+ const char * line_break()
+ {
+ return display_format ? "\n" : "<br>\n";
+ }
+
+
 // register_signature ------------------------------------------------------//
 
     void inspector::register_signature( const string & signature )
@@ -581,7 +674,7 @@
   bool copyright_ck = true;
   bool crlf_ck = true;
   bool link_ck = true;
- bool long_name_ck = true;
+ bool path_name_ck = true;
   bool tab_ck = true;
   bool ascii_ck = true;
   bool minmax_ck = true;
@@ -612,7 +705,7 @@
     copyright_ck = false;
     crlf_ck = false;
     link_ck = false;
- long_name_ck = false;
+ path_name_ck = false;
     tab_ck = false;
     ascii_ck = false;
     minmax_ck = false;
@@ -630,10 +723,8 @@
         crlf_ck = true;
     else if ( std::strcmp( argv[1], "-link" ) == 0 )
       link_ck = true;
- else if ( std::strcmp( argv[1], "-long_name" ) == 0 )
- long_name_ck = true;
- else if ( std::strcmp( argv[1], "-long-name" ) == 0 )
- long_name_ck = true;
+ else if ( std::strcmp( argv[1], "-path_name" ) == 0 )
+ path_name_ck = true;
     else if ( std::strcmp( argv[1], "-tab" ) == 0 )
       tab_ck = true;
     else if ( std::strcmp( argv[1], "-ascii" ) == 0 )
@@ -658,9 +749,9 @@
   fs::initial_path();
   
 
- {
+ { // begin reporting block
 
- // note how this is in its own block; reporting will happen
+ // since this is in its own block; reporting will happen
   // automatically, from each registered inspector, when
   // leaving, due to destruction of the inspector_list object
   inspector_list inspectors;
@@ -673,7 +764,7 @@
     inspectors.push_back( inspector_element( new boost::inspect::crlf_check ) );
   if ( link_ck )
     inspectors.push_back( inspector_element( new boost::inspect::link_check ) );
- if ( long_name_ck )
+ if ( path_name_ck )
     inspectors.push_back( inspector_element( new boost::inspect::file_name_check ) );
   if ( tab_ck )
       inspectors.push_back( inspector_element( new boost::inspect::tab_check ) );
@@ -731,6 +822,7 @@
     std::cout
       << "<html>\n"
       "<head>\n"
+ "<style> body { font-family: sans-serif; } </style>\n"
       "<title>Boost Inspection Report</title>\n"
       "</head>\n"
 
@@ -758,38 +850,43 @@
 
 
     std::cout
- << "<h2>Totals</h2>\n<pre>"
- << file_count << " files scanned\n"
- << directory_count << " directories scanned (including root)\n"
- << error_count << " problems reported\n";
+ << "<h2>Totals</h2>\n"
+ << file_count << " files scanned<br>\n"
+ << directory_count << " directories scanned (including root)<br>\n"
+ << error_count << " problems reported\n<p>";
   }
 
   for ( inspector_list::iterator itr = inspectors.begin();
         itr != inspectors.end(); ++itr )
   {
- const string line_break (
- display_text == display_format? "\n" : "<br>\n"); // gps
 
     inspector_keys += static_cast<string>(" ")
         + itr->inspector->name()
         + ' ' + itr->inspector->desc()
- + line_break
+ + line_break()
         ;
   }
 
-
- std::cout
- << "\nProblem counts:\n";
+ if (display_text == display_format)
+ std::cout << "\nProblem counts:\n";
+ else
+ std::cout << "\n<h2>Problem counts</h2>\n<blockquote><p>\n" ;
 
   } // end of block: starts reporting
 
   if (display_text == display_format)
- {
     std::cout << "\n" ;
- }
+ else
+ std::cout << "</blockquote>\n";
 
   std::sort( msgs.begin(), msgs.end() );
 
+ worst_offenders_count();
+ std::stable_sort( libs.begin(), libs.end() );
+
+ if ( !libs.empty() )
+ display_worst_offenders();
+
   if ( !msgs.empty() )
   {
     display_summary();

Modified: branches/proto/v4/tools/inspect/inspector.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/inspector.hpp (original)
+++ branches/proto/v4/tools/inspect/inspector.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -26,6 +26,8 @@
   {
     typedef std::set< string > string_set;
 
+ const char * line_break();
+
     class inspector
     {
     protected:

Modified: branches/proto/v4/tools/inspect/license_check.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/license_check.hpp (original)
+++ branches/proto/v4/tools/inspect/license_check.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -22,7 +22,7 @@
     public:
 
       license_check();
- virtual const char * name() const { return "*L*"; }
+ virtual const char * name() const { return "*Lic*"; }
       virtual const char * desc() const { return "missing Boost license info, or wrong reference text"; }
 
       virtual void inspect(
@@ -32,7 +32,7 @@
 
       virtual ~license_check()
         { std::cout << " "
- << m_files_with_errors << " files missing Boost license info or having wrong reference text\n"; }
+ << m_files_with_errors << " files missing Boost license info or having wrong reference text" << line_break(); }
     };
   }
 }

Modified: branches/proto/v4/tools/inspect/link_check.cpp
==============================================================================
--- branches/proto/v4/tools/inspect/link_check.cpp (original)
+++ branches/proto/v4/tools/inspect/link_check.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -127,6 +127,12 @@
       const path & source_path, bool no_link_errors )
         // precondition: source_path.is_complete()
     {
+ if(url.empty()) {
+ ++m_invalid_errors;
+ error( library_name, source_path, string(name()) + " empty URL." );
+ return;
+ }
+
       boost::smatch m;
       if(!boost::regex_match(url, m, url_decompose_regex)) {
         if(!no_link_errors) {
@@ -150,10 +156,13 @@
       // Protocol checks
       if(scheme_matched) {
         if(scheme == "http" || scheme == "https") {
+ // All http links should have a hostname. Generally if they don't
+ // it's by mistake. If they shouldn't, then a protocol isn't
+ // required.
           if(!authority_matched) {
             if(!no_link_errors) {
               ++m_invalid_errors;
- error( library_name, source_path, string(name()) + " http protocol without hostname: " + url );
+ error( library_name, source_path, string(name()) + " no hostname: " + url );
             }
           }
 

Modified: branches/proto/v4/tools/inspect/link_check.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/link_check.hpp (original)
+++ branches/proto/v4/tools/inspect/link_check.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -36,7 +36,7 @@
     public:
 
       link_check();
- virtual const char * name() const { return "*A*"; }
+ virtual const char * name() const { return "*HTML*"; }
       virtual const char * desc() const { return "invalid bookmarks, invalid urls, broken links, unlinked files"; }
 
       virtual void inspect(
@@ -52,10 +52,10 @@
 
       virtual ~link_check()
         {
- std::cout << " " << m_bookmark_errors << " bookmarks with invalid characters\n";
- std::cout << " " << m_invalid_errors << " invalid urls\n";
- std::cout << " " << m_broken_errors << " broken links\n";
- std::cout << " " << m_unlinked_errors << " unlinked files\n";
+ std::cout << " " << m_bookmark_errors << " bookmarks with invalid characters" << line_break();
+ std::cout << " " << m_invalid_errors << " invalid urls" << line_break();
+ std::cout << " " << m_broken_errors << " broken links" << line_break();
+ std::cout << " " << m_unlinked_errors << " unlinked files" << line_break();
         }
     };
   }

Deleted: branches/proto/v4/tools/inspect/long_name_check.cpp
==============================================================================
--- branches/proto/v4/tools/inspect/long_name_check.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,110 +0,0 @@
-// long_name_check implementation ------------------------------------------//
-
-// Copyright Beman Dawes 2002.
-// Copyright Gennaro Prota 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)
-
-#include "long_name_check.hpp"
-
-#include "boost/filesystem/operations.hpp"
-#include "boost/lexical_cast.hpp"
-
-#include <locale>
-#include <algorithm>
-
-namespace { namespace aux {
-
-bool starts_with_nonalnum( path const & p )
-{
- const string & x = p.string();
- assert(!x.empty());
-
- const string::value_type first = x[0];
-
- return !std::isalnum( first, std::locale::classic() )
- && first != '_'
- && x != ".cvsignore"
- && x != ".svn"
- ;
-}
-
-}}
-
-
-namespace boost
-{
- namespace inspect
- {
- const char file_name_check::limits::name[] = "ISO 9660:1999 Level 3";
-
- file_name_check::file_name_check() : m_name_errors(0) {}
-
- void file_name_check::inspect(
- const string & library_name,
- const path & full_path )
- {
- std::string const leaf( full_path.leaf() );
-
- if ( *leaf.rbegin() == '.' )
- {
- ++m_name_errors;
- error( library_name, full_path, string(name())
- + " filename ends with the dot character ('.')" );
- }
-
- path const relative_path(
- relative_to( full_path, filesystem::initial_path() )
- , &filesystem::no_check );
-
-
- // checks on the directory name --------------------------- //
-
- if( aux::starts_with_nonalnum( path(leaf)) )
- {
- ++m_name_errors;
- error( library_name, full_path, string(name())
- + " leading character of \""
- + leaf + "\""
- + " is not alphanumeric" );
- }
-
- const unsigned max_relative_path = 207; // ISO 9660:1999 sets this limit
- const string generic_root( "boost_X_XX_X/" );
- if ( relative_path.string().size() >
- ( max_relative_path - generic_root.size() ) )
- {
- ++m_name_errors;
- error( library_name, full_path,
- string(name())
- + " file path will exceed "
- + boost::lexical_cast<string>(max_relative_path)
- + " characters in a directory tree with a root of the form "
- + generic_root + ", and this exceeds ISO 9660:1999 limit of 207" )
- ;
- }
-
- if (relative_path.leaf() != ".cvsignore" && relative_path.leaf() != ".svn")
- {
- try
- {
- path const check_portability( relative_path.string(), &filesystem::portable_name );
- }
- catch ( filesystem::filesystem_error const& )
- {
- ++m_name_errors;
- error( library_name, full_path, string(name()) + " nonportable path" );
- }
- }
- }
-
- file_name_check::~file_name_check()
- {
- std::cout << " " << m_name_errors << " " << desc() << '\n';
- }
-
-
- } // namespace inspect
-} // namespace boost

Deleted: branches/proto/v4/tools/inspect/long_name_check.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/long_name_check.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
+++ (empty file)
@@ -1,57 +0,0 @@
-// long_name_check header --------------------------------------------------//
-// (main class renamed to: file_name_check) - gps
-
-// Copyright Beman Dawes 2002.
-// Copyright Gennaro Prota 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_FILE_NAME_CHECK_HPP
-#define BOOST_FILE_NAME_CHECK_HPP
-
-#include "inspector.hpp"
-
-namespace boost
-{
- namespace inspect
- {
- class file_name_check : public inspector
- {
- long m_name_errors;
-
- // ISO 9660 Level 3
- //
- struct iso_9660_limits
- {
- static const char name[];
- };
-
- public:
-
- typedef iso_9660_limits limits;
-
- file_name_check();
- virtual ~file_name_check();
-
- virtual const char * name() const { return "*N*"; }
- virtual const char * desc() const { return "file/directory names issues"; }
-
- virtual void inspect(
- const string & library_name,
- const path & full_path );
-
- virtual void inspect(
- const string &, // "filesystem"
- const path &, // "c:/foo/boost/filesystem/path.hpp"
- const string &)
- { /* empty */ }
-
-
-
- };
- }
-}
-
-#endif // BOOST_FILE_NAME_CHECK_HPP

Modified: branches/proto/v4/tools/inspect/minmax_check.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/minmax_check.hpp (original)
+++ branches/proto/v4/tools/inspect/minmax_check.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -36,7 +36,7 @@
 
       virtual ~minmax_check()
       {
- std::cout << " " << m_errors << " violations of the Boost min/max guidelines\n";
+ std::cout << " " << m_errors << " violations of the Boost min/max guidelines" << line_break();
       }
     };
   }

Modified: branches/proto/v4/tools/inspect/tab_check.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/tab_check.hpp (original)
+++ branches/proto/v4/tools/inspect/tab_check.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -20,7 +20,7 @@
     public:
 
       tab_check();
- virtual const char * name() const { return "*T*"; }
+ virtual const char * name() const { return "*Tab*"; }
       virtual const char * desc() const { return "tabs in file"; }
 
       virtual void inspect(
@@ -29,7 +29,7 @@
         const std::string & contents );
 
       virtual ~tab_check()
- { std::cout << " " << m_files_with_errors << " files with tabs\n"; }
+ { std::cout << " " << m_files_with_errors << " files with tabs" << line_break(); }
     };
   }
 }

Modified: branches/proto/v4/tools/inspect/time_string.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/time_string.hpp (original)
+++ branches/proto/v4/tools/inspect/time_string.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -16,6 +16,8 @@
 #include <string>
 #include <ctime>
 
+#include <boost/config/warning_disable.hpp>
+
 namespace boost {
 
 // Many of the boost tools just need a quick way to obtain

Modified: branches/proto/v4/tools/inspect/unnamed_namespace_check.hpp
==============================================================================
--- branches/proto/v4/tools/inspect/unnamed_namespace_check.hpp (original)
+++ branches/proto/v4/tools/inspect/unnamed_namespace_check.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -30,7 +30,7 @@
         const std::string & contents );
 
       virtual ~unnamed_namespace_check()
- { std::cout << " " << m_errors << " usages of unnamed namespaces in headers (including .ipp files)\n"; }
+ { std::cout << " " << m_errors << " usages of unnamed namespaces in headers (including .ipp files)" << line_break(); }
     };
   }
 }

Modified: branches/proto/v4/tools/jam/src/execnt.c
==============================================================================
--- branches/proto/v4/tools/jam/src/execnt.c (original)
+++ branches/proto/v4/tools/jam/src/execnt.c 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -564,16 +564,20 @@
     BJAM_FREE( args );
 }
 
+/* For more details on Windows cmd.exe shell command-line length limitations see
+ * the following MSDN article:
+ *
+ * http://support.microsoft.com/default.aspx?scid=kb;en-us;830473
+ */
 int maxline()
 {
     OSVERSIONINFO os_info;
     os_info.dwOSVersionInfoSize = sizeof(os_info);
     GetVersionEx(&os_info);
     
- return (os_info.dwMajorVersion == 3)
- ? 996 /* NT 3.5.1 */
- : 2047 /* NT >= 4.x */
- ;
+ if (os_info.dwMajorVersion >= 5) return 8191; /* XP > */
+ if (os_info.dwMajorVersion == 4) return 2047; /* NT 4.x */
+ return 996; /* NT 3.5.1 */
 }
 
 /* Convert a command string into arguments for spawnvp. The original

Modified: branches/proto/v4/tools/quickbook/detail/actions_class.cpp
==============================================================================
--- branches/proto/v4/tools/quickbook/detail/actions_class.cpp (original)
+++ branches/proto/v4/tools/quickbook/detail/actions_class.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -113,6 +113,8 @@
         , headerref_post(phrase, headerref_post_)
         , conceptref_pre(phrase, conceptref_pre_)
         , conceptref_post(phrase, conceptref_post_)
+ , globalref_pre(phrase, globalref_pre_)
+ , globalref_post(phrase, globalref_post_)
 
         , bold_pre(phrase, bold_pre_)
         , bold_post(phrase, bold_post_)

Modified: branches/proto/v4/tools/quickbook/detail/actions_class.hpp
==============================================================================
--- branches/proto/v4/tools/quickbook/detail/actions_class.hpp (original)
+++ branches/proto/v4/tools/quickbook/detail/actions_class.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -136,6 +136,8 @@
         markup_action headerref_post;
         link_action conceptref_pre;
         markup_action conceptref_post;
+ link_action globalref_pre;
+ markup_action globalref_post;
 
         markup_action bold_pre;
         markup_action bold_post;

Modified: branches/proto/v4/tools/quickbook/detail/markups.hpp
==============================================================================
--- branches/proto/v4/tools/quickbook/detail/markups.hpp (original)
+++ branches/proto/v4/tools/quickbook/detail/markups.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -90,6 +90,8 @@
     const char* headerref_post_ = "</headername>";
     const char* conceptref_pre_ = "<conceptname alt=\"";
     const char* conceptref_post_ = "</conceptname>";
+ const char* globalref_pre_ = "<globalname alt=\"";
+ const char* globalref_post_ = "</globalname>";
     const char* footnote_pre_ = "<footnote><para>";
     const char* footnote_post_ = "</para></footnote>";
     const char* escape_pre_ = "<!--quickbook-escape-prefix-->";

Modified: branches/proto/v4/tools/quickbook/doc/html/index.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/index.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/index.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,17 +3,17 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Quickbook 1.4</title>
 <link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="index.html" title="Quickbook 1.4">
-<link rel="next" href="quickbook/intro.html" title=" Introduction">
+<link rel="next" href="quickbook/intro.html" title="Introduction">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -34,7 +34,7 @@
 <div><p class="copyright">Copyright © 2002, 2004, 2006 Joel de Guzman,
       Eric Niebler</p></div>
 <div><div class="legalnotice">
-<a name="id385774"></a><p>
+<a name="id4946499"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -70,7 +70,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: May 21, 2008 at 03:54:31 GMT</small></p></td>
+<td align="left"><p><small>Last revised: July 29, 2008 at 05:49:54 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/change_log.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/change_log.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/change_log.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Change Log</title>
+<title>Change Log</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Quickbook 1.4">
 <link rel="up" href="../index.html" title="Quickbook 1.4">
-<link rel="prev" href="intro.html" title=" Introduction">
-<link rel="next" href="syntax.html" title=" Syntax Summary">
+<link rel="prev" href="intro.html" title="Introduction">
+<link rel="next" href="syntax.html" title="Syntax Summary">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,11 +24,12 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="quickbook.change_log"></a> Change Log</h2></div></div></div>
-<a name="quickbook.change_log.version_1_3"></a><h3>
-<a name="id386592"></a>
- Version 1.3
- </h3>
+<a name="quickbook.change_log"></a><a class="link" href="change_log.html" title="Change Log"> Change Log</a>
+</h2></div></div></div>
+<a name="quickbook.change_log.version_1_3"></a><h4>
+<a name="id4910849"></a>
+ <a class="link" href="change_log.html#quickbook.change_log.version_1_3">Version 1.3</a>
+ </h4>
 <div class="itemizedlist"><ul type="disc">
 <li>
         Quickbook file inclusion [include].
@@ -58,14 +59,13 @@
 <li>
         Better (intuitive) paragraph termination. Some markups may terminate a paragraph.
         Example:
-<pre class="programlisting">
-<span class="special">[</span><span class="identifier">section</span> <span class="identifier">x</span><span class="special">]</span>
+<pre class="programlisting"><span class="special">[</span><span class="identifier">section</span> <span class="identifier">x</span><span class="special">]</span>
 <span class="identifier">blah</span><span class="special">...</span>
 <span class="special">[</span><span class="identifier">endsect</span><span class="special">]</span></pre>
 </li>
 <li>
         Fully qualified section and headers. Subsection names are concatenated to
- the ID to avoid clashing. Example: <tt class="computeroutput"><span class="identifier">doc_name</span><span class="special">.</span><span class="identifier">sect_name</span><span class="special">.</span><span class="identifier">sub_sect_name</span><span class="special">.</span><span class="identifier">sub_sub_sect_name</span></tt>
+ the ID to avoid clashing. Example: <code class="computeroutput"><span class="identifier">doc_name</span><span class="special">.</span><span class="identifier">sect_name</span><span class="special">.</span><span class="identifier">sub_sect_name</span><span class="special">.</span><span class="identifier">sub_sub_sect_name</span></code>
 </li>
 <li>
         Better &amp;nbsp; and whitespace handling in code snippets.
@@ -93,10 +93,10 @@
         Replaceable, with the [~replacement] syntax.
       </li>
 </ul></div>
-<a name="quickbook.change_log.version_1_4"></a><h3>
-<a name="id387357"></a>
- Version 1.4
- </h3>
+<a name="quickbook.change_log.version_1_4"></a><h4>
+<a name="id4912575"></a>
+ <a class="link" href="change_log.html#quickbook.change_log.version_1_4">Version 1.4</a>
+ </h4>
 <div class="itemizedlist"><ul type="disc">
 <li>
         Generic Headers
@@ -115,7 +115,7 @@
       </li>
 <li>
         Allow escape of spaces. The escaped space is removed from the output. Syntax:
- <tt class="computeroutput"><span class="special">\</span> </tt>.
+ <code class="computeroutput"><span class="special">\</span> </code>.
       </li>
 <li>
         Nested comments are now allowed.
@@ -124,7 +124,7 @@
         Quickbook blocks can nest inside comments.
       </li>
 <li>
-Import facility.
+<a class="link" href="syntax/block.html#quickbook.syntax.block.import" title="Import">Import</a> facility.
       </li>
 <li>
         Callouts on imported code
@@ -133,21 +133,21 @@
         Simple markups can now span a whole block.
       </li>
 <li>
-Blurbs, Admonitions
- and table cells (see Tables)
+<a class="link" href="syntax/block.html#quickbook.syntax.block.blurbs" title="Blurbs">Blurbs</a>, <a class="link" href="syntax/block.html#quickbook.syntax.block.admonitions" title="Admonitions">Admonitions</a>
+ and table cells (see <a class="link" href="syntax/block.html#quickbook.syntax.block.tables" title="Tables">Tables</a>)
         may now contain paragraphs.
       </li>
 <li>
-<tt class="computeroutput"><span class="special">\</span><span class="identifier">n</span></tt>
- and <tt class="computeroutput"><span class="special">[</span><span class="identifier">br</span><span class="special">]</span></tt> are now deprecated.
+<code class="computeroutput"><span class="special">\</span><span class="identifier">n</span></code>
+ and <code class="computeroutput"><span class="special">[</span><span class="identifier">br</span><span class="special">]</span></code> are now deprecated.
       </li>
 <li>
-Conditional Generation.
+<a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.cond" title="Conditional Generation">Conditional Generation</a>.
         Ala C++ #ifdef.
       </li>
 <li>
         Searching of included and imported files in an extensible search path with
- <tt class="computeroutput"><span class="special">--</span><span class="identifier">include</span><span class="special">-</span><span class="identifier">path</span></tt> (<tt class="computeroutput"><span class="special">-</span><span class="identifier">I</span></tt>) option.
+ <code class="computeroutput"><span class="special">--</span><span class="identifier">include</span><span class="special">-</span><span class="identifier">path</span></code> (<code class="computeroutput"><span class="special">-</span><span class="identifier">I</span></code>) option.
       </li>
 </ul></div>
 </div>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/editors.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/editors.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/editors.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Editor Support</title>
+<title>Editor Support</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Quickbook 1.4">
 <link rel="up" href="../index.html" title="Quickbook 1.4">
-<link rel="prev" href="install/linux.html" title=" Debian, Ubuntu">
-<link rel="next" href="editors/scite.html" title=" Scintilla Text Editor">
+<link rel="prev" href="install/linux.html" title="Debian, Ubuntu">
+<link rel="next" href="editors/scite.html" title="Scintilla Text Editor">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="quickbook.editors"></a> Editor Support</h2></div></div></div>
+<a name="quickbook.editors"></a><a class="link" href="editors.html" title="Editor Support"> Editor Support</a>
+</h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"> Scintilla Text Editor</span></dt>
 <dt><span class="section">KDE Support</span></dt>
@@ -34,11 +35,14 @@
       The following sections list the settings for some editors which can help make
       editing quickbook files a bit easier.
     </p>
-<div class="sidebar"><p>
+<div class="sidebar">
+<p class="title"><b></b></p>
+<p>
       <span class="inlinemediaobject"><img src="../images/note.png" alt="note"></span> You may submit your settings, tips, and suggestions to
       the authors, or through the <a href="https://lists.sourceforge.net/lists/listinfo/boost-" target="_top">docs
       Boost Docs mailing list</a>.
- </p></div>
+ </p>
+</div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/editors/kde_support.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/editors/kde_support.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/editors/kde_support.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,19 +3,19 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>KDE Support</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Quickbook 1.4">
-<link rel="up" href="../editors.html" title=" Editor Support">
-<link rel="prev" href="scite.html" title=" Scintilla Text Editor">
-<link rel="next" href="../faq.html" title=" Frequently Asked Questions">
+<link rel="up" href="../editors.html" title="Editor Support">
+<link rel="prev" href="scite.html" title="Scintilla Text Editor">
+<link rel="next" href="../faq.html" title="Frequently Asked Questions">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,11 +24,12 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="quickbook.editors.kde_support"></a>KDE Support</h3></div></div></div>
-<a name="quickbook.editors.kde_support.boost__hs__quickbook"></a><h4>
-<a name="id466336"></a>
- boost::hs::quickbook
- </h4>
+<a name="quickbook.editors.kde_support"></a><a class="link" href="kde_support.html" title="KDE Support">KDE Support</a>
+</h3></div></div></div>
+<a name="quickbook.editors.kde_support.boost__hs__quickbook"></a><h5>
+<a name="id4963116"></a>
+ <a class="link" href="kde_support.html#quickbook.editors.kde_support.boost__hs__quickbook">boost::hs::quickbook</a>
+ </h5>
 <p>
         boost::hs::quickbook is a syntax highlighting designed to work with Katepart.
         It can be used in KWrite, Kate, Konqueror and KDevelop, and supports all
@@ -48,11 +49,11 @@
 </dl>
 </div>
 <p>
- <span class="bold"><b>html generated from this .qbk file</b></span>
+ <span class="bold"><strong>html generated from this .qbk file</strong></span>
       </p>
 <div class="table">
-<a name="id466438"></a><p class="title"><b>Table 7. Code examples</b></p>
-<table class="table" summary="Code examples">
+<a name="id4963207"></a><p class="title"><b>Table 7. Code examples</b></p>
+<div class="table-contents"><table class="table" summary="Code examples">
 <colgroup>
 <col>
 <col>
@@ -84,8 +85,8 @@
             </td>
 <td>
             <p>
- <tt class="computeroutput"> <span class="keyword">for</span><span class="special">(</span><span class="identifier">int</span> <span class="identifier">k</span><span class="special">=</span><span class="number">0</span><span class="special">;</span>
- <span class="identifier">k</span><span class="special">&lt;</span><span class="number">10</span><span class="special">;</span> <span class="identifier">k</span><span class="special">++)</span> <span class="identifier">v</span><span class="special">+=</span><span class="identifier">k</span><span class="special">;</span> </tt>
+ <code class="computeroutput"> <span class="keyword">for</span><span class="special">(</span><span class="identifier">int</span> <span class="identifier">k</span><span class="special">=</span><span class="number">0</span><span class="special">;</span>
+ <span class="identifier">k</span><span class="special">&lt;</span><span class="number">10</span><span class="special">;</span> <span class="identifier">k</span><span class="special">++)</span> <span class="identifier">v</span><span class="special">+=</span><span class="identifier">k</span><span class="special">;</span> </code>
             </p>
             </td>
 <td>
@@ -102,12 +103,12 @@
             </td>
 <td>
             <p>
- <tt class="computeroutput"> <span class="special">{</span> <span class="identifier">int</span>
+ <code class="computeroutput"> <span class="special">{</span> <span class="identifier">int</span>
               <span class="identifier">k</span><span class="special">;</span>
               <span class="keyword">while</span><span class="special">(</span>
               <span class="identifier">k</span> <span class="special">&lt;</span>
               <span class="number">10</span> <span class="special">)</span>
- <span class="special">{</span> <span class="identifier">v</span><span class="special">+=</span><span class="identifier">k</span><span class="special">;</span> <span class="identifier">k</span><span class="special">++</span> <span class="special">}</span> <span class="special">}</span> </tt>
+ <span class="special">{</span> <span class="identifier">v</span><span class="special">+=</span><span class="identifier">k</span><span class="special">;</span> <span class="identifier">k</span><span class="special">++</span> <span class="special">}</span> <span class="special">}</span> </code>
             </p>
             </td>
 <td>
@@ -124,10 +125,10 @@
             </td>
 <td>
             <p>
- <tt class="computeroutput"> <span class="keyword">while</span><span class="special">(</span>
+ <code class="computeroutput"> <span class="keyword">while</span><span class="special">(</span>
               <span class="identifier">true</span> <span class="special">)</span>
               <span class="special">{</span> <span class="identifier">v</span><span class="special">+=</span><span class="number">1</span><span class="special">;</span>
- <span class="special">}</span> </tt>
+ <span class="special">}</span> </code>
             </p>
             </td>
 <td>
@@ -137,34 +138,34 @@
             </td>
 </tr>
 </tbody>
-</table>
+</table></div>
 </div>
-<a name="quickbook.editors.kde_support.code_folding_"></a><h4>
-<a name="id466844"></a>
- <a href="kde_support.html#quickbook.editors.kde_support.code_folding_">Code Folding
+<br class="table-break"><a name="quickbook.editors.kde_support.code_folding_"></a><h5>
+<a name="id4963573"></a>
+ <a class="link" href="kde_support.html#quickbook.editors.kde_support.code_folding_">Code Folding
         </a>
- </h4>
+ </h5>
 <p>
         boost::hs goes far beyond simple coloring. One useful thing you can get the
         editor to do is to mark regions. They appear in a small grey line and each
         region can be folded or unfolded independently.
       </p>
-<a name="quickbook.editors.kde_support.auto_comment___uncomment_"></a><h4>
-<a name="id466877"></a>
- <a href="kde_support.html#quickbook.editors.kde_support.auto_comment___uncomment_">Auto
+<a name="quickbook.editors.kde_support.auto_comment___uncomment_"></a><h5>
+<a name="id4963602"></a>
+ <a class="link" href="kde_support.html#quickbook.editors.kde_support.auto_comment___uncomment_">Auto
         Comment / Uncomment </a>
- </h4>
+ </h5>
 <p>
         Another important feature is the possibility to auto-comment or uncomment
         some piece of code (<span class="emphasis"><em>Tools - Comment</em></span>). Commented regions
         can be uncommented simple calling the <span class="emphasis"><em>uncomment</em></span> command
         while being in it.
       </p>
-<a name="quickbook.editors.kde_support.styles_reference_"></a><h4>
-<a name="id466918"></a>
- <a href="kde_support.html#quickbook.editors.kde_support.styles_reference_">Styles reference
+<a name="quickbook.editors.kde_support.styles_reference_"></a><h5>
+<a name="id4963639"></a>
+ <a class="link" href="kde_support.html#quickbook.editors.kde_support.styles_reference_">Styles reference
         </a>
- </h4>
+ </h5>
 <div class="informaltable"><table class="table">
 <colgroup>
 <col>
@@ -192,7 +193,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>plain text</b></span>
+ <span class="bold"><strong>plain text</strong></span>
               </p>
               </td>
 <td>
@@ -209,7 +210,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>formatted text</b></span>
+ <span class="bold"><strong>formatted text</strong></span>
               </p>
               </td>
 <td>
@@ -226,7 +227,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>structure</b></span>
+ <span class="bold"><strong>structure</strong></span>
               </p>
               </td>
 <td>
@@ -244,7 +245,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>macros</b></span>
+ <span class="bold"><strong>macros</strong></span>
               </p>
               </td>
 <td>
@@ -262,7 +263,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>templates</b></span>
+ <span class="bold"><strong>templates</strong></span>
               </p>
               </td>
 <td>
@@ -279,7 +280,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>anchors</b></span>
+ <span class="bold"><strong>anchors</strong></span>
               </p>
               </td>
 <td>
@@ -296,7 +297,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>comments</b></span>
+ <span class="bold"><strong>comments</strong></span>
               </p>
               </td>
 <td>
@@ -313,7 +314,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>tables</b></span>
+ <span class="bold"><strong>tables</strong></span>
               </p>
               </td>
 <td>
@@ -330,7 +331,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>variable lists</b></span>
+ <span class="bold"><strong>variable lists</strong></span>
               </p>
               </td>
 <td>
@@ -347,7 +348,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>c++ code</b></span>
+ <span class="bold"><strong>c++ code</strong></span>
               </p>
               </td>
 <td>
@@ -364,7 +365,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>paths</b></span>
+ <span class="bold"><strong>paths</strong></span>
               </p>
               </td>
 <td>
@@ -381,7 +382,7 @@
 <tr>
 <td>
               <p>
- <span class="bold"><b>IDE specific</b></span>
+ <span class="bold"><strong>IDE specific</strong></span>
               </p>
               </td>
 <td>
@@ -397,10 +398,10 @@
 </tr>
 </tbody>
 </table></div>
-<a name="quickbook.editors.kde_support.about_boost__hs"></a><h4>
-<a name="id467367"></a>
- About boost::hs
- </h4>
+<a name="quickbook.editors.kde_support.about_boost__hs"></a><h5>
+<a name="id4964040"></a>
+ <a class="link" href="kde_support.html#quickbook.editors.kde_support.about_boost__hs">About boost::hs</a>
+ </h5>
 <p>
         <span class="inlinemediaobject"><img src="../../images/extra/katepart/boost.hs.logo.png" alt="boost.hs.logo"></span>
       </p>
@@ -414,15 +415,15 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
+<tr><td align="left" valign="top"><p>
           boost::hs::cpp support QuickBook code import comments style!
         </p></td></tr>
 </table></div>
-<a name="quickbook.editors.kde_support.installing_boost__hs"></a><h4>
-<a name="id467435"></a>
- <a href="kde_support.html#quickbook.editors.kde_support.installing_boost__hs">Installing
+<a name="quickbook.editors.kde_support.installing_boost__hs"></a><h5>
+<a name="id4964100"></a>
+ <a class="link" href="kde_support.html#quickbook.editors.kde_support.installing_boost__hs">Installing
         boost::hs</a>
- </h4>
+ </h5>
 <p>
         There exist an ongoing effort to push boost::hs upstream to the KatePart
         project. In a few months KDE may have native Quickbook support! For the moment
@@ -436,13 +437,13 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
- A copy of boost::hs::quickbook and boost::hs::cpp is available in <tt class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">quickbook</span><span class="special">/</span><span class="identifier">extra</span><span class="special">/</span><span class="identifier">katepart</span></tt>.
+<tr><td align="left" valign="top"><p>
+ A copy of boost::hs::quickbook and boost::hs::cpp is available in <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">quickbook</span><span class="special">/</span><span class="identifier">extra</span><span class="special">/</span><span class="identifier">katepart</span></code>.
         </p></td></tr>
 </table></div>
 <p>
- In order to install it you must copy the content in the folder <span class="bold"><b>katepart/syntax/</b></span> to the appropriate katepart syntax
- folder in your machine. In general this folder will be in <span class="bold"><b>/usr/share/apps/katepart/syntax</b></span>.
+ In order to install it you must copy the content in the folder <span class="bold"><strong>katepart/syntax/</strong></span> to the appropriate katepart syntax
+ folder in your machine. In general this folder will be in <span class="bold"><strong>/usr/share/apps/katepart/syntax</strong></span>.
         A bash script named <span class="emphasis"><em>install.sh</em></span> is included that copy
         the files to this folder.
       </p>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/editors/scite.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/editors/scite.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/editors/scite.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,12 +1,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Scintilla Text Editor</title>
+<title>Scintilla Text Editor</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Quickbook 1.4">
-<link rel="up" href="../editors.html" title=" Editor Support">
-<link rel="prev" href="../editors.html" title=" Editor Support">
+<link rel="up" href="../editors.html" title="Editor Support">
+<link rel="prev" href="../editors.html" title="Editor Support">
 <link rel="next" href="kde_support.html" title="KDE Support">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="quickbook.editors.scite"></a> Scintilla Text Editor</h3></div></div></div>
+<a name="quickbook.editors.scite"></a><a class="link" href="scite.html" title="Scintilla Text Editor"> Scintilla Text Editor</a>
+</h3></div></div></div>
 <div class="blockquote"><blockquote class="blockquote">
 <p>
           </p>
@@ -38,9 +39,12 @@
         The Scintilla Text Editor (SciTE) is a free source code editor for Win32
         and X. It uses the SCIntilla source code editing component.
       </p>
-<div class="sidebar"><p>
+<div class="sidebar">
+<p class="title"><b></b></p>
+<p>
         <span class="inlinemediaobject"><img src="../../images/tip.png" alt="tip"></span> SciTE can be downloaded from http://www.scintilla.org/SciTE.html
- </p></div>
+ </p>
+</div>
 <p>
         You can use the following settings to highlight quickbook tags when editing
         quickbook files.
@@ -57,9 +61,12 @@
 comment.box.middle.props=
 comment.box.end.props=]
 </pre>
-<div class="sidebar"><p>
+<div class="sidebar">
+<p class="title"><b></b></p>
+<p>
         <span class="inlinemediaobject"><img src="../../images/note.png" alt="note"></span> Thanks to Rene Rivera for the above SciTE settings.
- </p></div>
+ </p>
+</div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/faq.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/faq.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/faq.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Frequently Asked Questions</title>
+<title>Frequently Asked Questions</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Quickbook 1.4">
 <link rel="up" href="../index.html" title="Quickbook 1.4">
 <link rel="prev" href="editors/kde_support.html" title="KDE Support">
-<link rel="next" href="ref.html" title=" Quick Reference">
+<link rel="next" href="ref.html" title="Quick Reference">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,12 +24,13 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="quickbook.faq"></a> Frequently Asked Questions</h2></div></div></div>
-<a name="quickbook.faq.can_i_use_quickbook_for_non_boost_documentation_"></a><h3>
-<a name="id467587"></a>
- <a href="faq.html#quickbook.faq.can_i_use_quickbook_for_non_boost_documentation_">Can
+<a name="quickbook.faq"></a><a class="link" href="faq.html" title="Frequently Asked Questions"> Frequently Asked Questions</a>
+</h2></div></div></div>
+<a name="quickbook.faq.can_i_use_quickbook_for_non_boost_documentation_"></a><h4>
+<a name="id4964235"></a>
+ <a class="link" href="faq.html#quickbook.faq.can_i_use_quickbook_for_non_boost_documentation_">Can
       I use QuickBook for non-Boost documentation?</a>
- </h3>
+ </h4>
 <p>
       QuickBook can be used for non-Boost documentation with a little extra work.
     </p>
@@ -60,18 +61,18 @@
     :
         my_doc
     :
- &lt;xsl:param&gt;boost.image.src<tt class="literal">images/my_project_logo.png
- &lt;xsl:param&gt;boost.image.alt</tt>"\"My Project\""
+ &lt;xsl:param&gt;boost.image.src<code class="literal">images/my_project_logo.png
+ &lt;xsl:param&gt;boost.image.alt</code>"\"My Project\""
         &lt;xsl:param&gt;boost.image.w=100
         &lt;xsl:param&gt;boost.image.h=50
         &lt;xsl:param&gt;nav.layout=none
     ;
 </pre>
-<a name="quickbook.faq.is_there_an_easy_way_to_convert_boostbook_docs_to_quickbook_"></a><h3>
-<a name="id467675"></a>
- <a href="faq.html#quickbook.faq.is_there_an_easy_way_to_convert_boostbook_docs_to_quickbook_">Is
+<a name="quickbook.faq.is_there_an_easy_way_to_convert_boostbook_docs_to_quickbook_"></a><h4>
+<a name="id4964312"></a>
+ <a class="link" href="faq.html#quickbook.faq.is_there_an_easy_way_to_convert_boostbook_docs_to_quickbook_">Is
       there an easy way to convert BoostBook docs to QuickBook?</a>
- </h3>
+ </h4>
 <p>
       There's a stylesheet that allows Boostbook generated HTML to be viewed as quickbook
       source, see http://svn.boost.org/trac/boost/wiki/QuickbookSourceStylesheetProject,

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/install.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/install.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/install.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Installation and configuration</title>
+<title>Installation and configuration</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Quickbook 1.4">
 <link rel="up" href="../index.html" title="Quickbook 1.4">
-<link rel="prev" href="syntax/block.html" title=" Block Level Elements">
-<link rel="next" href="install/macosx.html" title=" Mac OS X">
+<link rel="prev" href="syntax/block.html" title="Block Level Elements">
+<link rel="next" href="install/macosx.html" title="Mac OS X">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="quickbook.install"></a> Installation and configuration</h2></div></div></div>
+<a name="quickbook.install"></a><a class="link" href="install.html" title="Installation and configuration"> Installation and configuration</a>
+</h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"> Mac OS X</span></dt>
 <dt><span class="section"> Windows 2000, XP, 2003, Vista</span></dt>
@@ -37,8 +38,8 @@
 <p>
       Before continuing, it is very important that you keep this in mind: if you
       try to build some documents and the process breaks due to misconfiguration,
- be absolutely sure to delete any <tt class="computeroutput"><span class="identifier">bin</span></tt>
- and <tt class="computeroutput"><span class="identifier">bin</span><span class="special">.</span><span class="identifier">v2</span></tt> directories generated by the build before
+ be absolutely sure to delete any <code class="computeroutput"><span class="identifier">bin</span></code>
+ and <code class="computeroutput"><span class="identifier">bin</span><span class="special">.</span><span class="identifier">v2</span></code> directories generated by the build before
       trying again. Otherwise your configuration fixes will not take any effect.
     </p>
 </div>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/install/linux.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/install/linux.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/install/linux.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Debian, Ubuntu</title>
+<title>Debian, Ubuntu</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Quickbook 1.4">
-<link rel="up" href="../install.html" title=" Installation and configuration">
-<link rel="prev" href="windows.html" title=" Windows 2000, XP, 2003, Vista">
-<link rel="next" href="../editors.html" title=" Editor Support">
+<link rel="up" href="../install.html" title="Installation and configuration">
+<link rel="prev" href="windows.html" title="Windows 2000, XP, 2003, Vista">
+<link rel="next" href="../editors.html" title="Editor Support">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,34 +24,33 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="quickbook.install.linux"></a> Debian, Ubuntu</h3></div></div></div>
+<a name="quickbook.install.linux"></a><a class="link" href="linux.html" title="Debian, Ubuntu"> Debian, Ubuntu</a>
+</h3></div></div></div>
 <p>
         The following instructions apply to Debian and its derivatives. They are
         based on a Ubuntu Edgy install but should work on other Debian based systems.
       </p>
 <p>
- First install the <tt class="computeroutput"><span class="identifier">bjam</span></tt>,
- <tt class="computeroutput"><span class="identifier">xsltproc</span></tt>, <tt class="computeroutput"><span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xsl</span></tt> and
- <tt class="computeroutput"><span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xml</span></tt> packages. For example, using <tt class="computeroutput"><span class="identifier">apt</span><span class="special">-</span><span class="identifier">get</span></tt>:
+ First install the <code class="computeroutput"><span class="identifier">bjam</span></code>,
+ <code class="computeroutput"><span class="identifier">xsltproc</span></code>, <code class="computeroutput"><span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xsl</span></code> and
+ <code class="computeroutput"><span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xml</span></code> packages. For example, using <code class="computeroutput"><span class="identifier">apt</span><span class="special">-</span><span class="identifier">get</span></code>:
       </p>
-<pre class="programlisting">
-<span class="identifier">sudo</span> <span class="identifier">apt</span><span class="special">-</span><span class="identifier">get</span> <span class="identifier">install</span> <span class="identifier">xsltproc</span> <span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xsl</span> <span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xml</span>
+<pre class="programlisting"><span class="identifier">sudo</span> <span class="identifier">apt</span><span class="special">-</span><span class="identifier">get</span> <span class="identifier">install</span> <span class="identifier">xsltproc</span> <span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xsl</span> <span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xml</span>
 </pre>
 <p>
         If you're planning on building boost's documentation, you'll also need to
- install the <tt class="computeroutput"><span class="identifier">doxygen</span></tt> package
+ install the <code class="computeroutput"><span class="identifier">doxygen</span></code> package
         as well.
       </p>
 <p>
         Next, we need to configure Boost Build to compile BoostBook files. Add the
- following to your <tt class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></tt> file, which should be in your home
+ following to your <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code> file, which should be in your home
         directory. If you don't have one, create a file containing this text. For
- more information on setting up <tt class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></tt>, see
+ more information on setting up <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code>, see
         the <a href="http://boost.org/boost-build2/doc/html/bbv2/advanced/configuration.html" target="_top">Boost
         Build documentation</a>.
       </p>
-<pre class="programlisting">
-<span class="identifier">using</span> <span class="identifier">xsltproc</span> <span class="special">;</span>
+<pre class="programlisting"><span class="identifier">using</span> <span class="identifier">xsltproc</span> <span class="special">;</span>
 
 <span class="identifier">using</span> <span class="identifier">boostbook</span>
     <span class="special">:</span> <span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">share</span><span class="special">/</span><span class="identifier">xml</span><span class="special">/</span><span class="identifier">docbook</span><span class="special">/</span><span class="identifier">stylesheet</span><span class="special">/</span><span class="identifier">nwalsh</span>
@@ -67,24 +66,23 @@
       </p>
 <div class="orderedlist"><ol type="1">
 <li>
- Go to Quickbook's source directory (<tt class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">quickbook</span></tt>).
+ Go to Quickbook's source directory (<code class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">quickbook</span></code>).
         </li>
 <li>
- Build the utility by issuing <tt class="computeroutput"><span class="identifier">bjam</span>
- <span class="special">--</span><span class="identifier">v2</span></tt>.
+ Build the utility by issuing <code class="computeroutput"><span class="identifier">bjam</span>
+ <span class="special">--</span><span class="identifier">v2</span></code>.
         </li>
 <li>
- Copy the resulting <tt class="computeroutput"><span class="identifier">quickbook</span></tt>
- binary (located under the <tt class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">bin</span><span class="special">.</span><span class="identifier">v2</span></tt> hierarchy)
- to a safe place. The traditional location is <tt class="computeroutput"><span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">bin</span></tt>.
+ Copy the resulting <code class="computeroutput"><span class="identifier">quickbook</span></code>
+ binary (located under the <code class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">bin</span><span class="special">.</span><span class="identifier">v2</span></code> hierarchy)
+ to a safe place. The traditional location is <code class="computeroutput"><span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">bin</span></code>.
         </li>
 <li>
- Add the following to your <tt class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></tt>
+ Add the following to your <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code>
           file, using the full path of the quickbook executable:
         </li>
 </ol></div>
-<pre class="programlisting">
-<span class="identifier">using</span> <span class="identifier">quickbook</span>
+<pre class="programlisting"><span class="identifier">using</span> <span class="identifier">quickbook</span>
     <span class="special">:</span> <span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">bin</span><span class="special">/</span><span class="identifier">quickbook</span>
     <span class="special">;</span>
 </pre>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/install/macosx.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/install/macosx.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/install/macosx.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Mac OS X</title>
+<title>Mac OS X</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Quickbook 1.4">
-<link rel="up" href="../install.html" title=" Installation and configuration">
-<link rel="prev" href="../install.html" title=" Installation and configuration">
-<link rel="next" href="windows.html" title=" Windows 2000, XP, 2003, Vista">
+<link rel="up" href="../install.html" title="Installation and configuration">
+<link rel="prev" href="../install.html" title="Installation and configuration">
+<link rel="next" href="windows.html" title="Windows 2000, XP, 2003, Vista">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="quickbook.install.macosx"></a> Mac OS X</h3></div></div></div>
+<a name="quickbook.install.macosx"></a><a class="link" href="macosx.html" title="Mac OS X"> Mac OS X</a>
+</h3></div></div></div>
 <div class="blockquote"><blockquote class="blockquote">
 <p>
           </p>
@@ -44,13 +45,13 @@
 <p>
         The text below assumes you want to install all the necessary utilities in
         a system-wide location, allowing any user in the machine to have access to
- them. Therefore, all files will be put in the <tt class="computeroutput"><span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span></tt>
+ them. Therefore, all files will be put in the <code class="computeroutput"><span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span></code>
         hierarchy. If you do not want this, you can choose any other prefix such
- as <tt class="computeroutput"><span class="special">~/</span><span class="identifier">Applications</span></tt>
+ as <code class="computeroutput"><span class="special">~/</span><span class="identifier">Applications</span></code>
         for a single-user installation.
       </p>
 <p>
- Mac OS X comes with <tt class="computeroutput"><span class="identifier">xsltproc</span></tt>
+ Mac OS X comes with <code class="computeroutput"><span class="identifier">xsltproc</span></code>
         and all related libraries preinstalled, so you do not need to take any extra
         steps to set them up. It is probable that future versions will include them
         too, but these instructions may not apply to older versions.
@@ -61,22 +62,21 @@
 <div class="orderedlist"><ol type="1">
 <li>
           Download <a href="http://www.docbook.org/xml/4.2/docbook-xml-4.2.zip" target="_top">Docbook
- XML 4.2</a> and unpack it inside <tt class="computeroutput"><span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">share</span><span class="special">/</span><span class="identifier">xml</span><span class="special">/</span><span class="identifier">docbook</span><span class="special">/</span><span class="number">4.2</span></tt>.
+ XML 4.2</a> and unpack it inside <code class="computeroutput"><span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">share</span><span class="special">/</span><span class="identifier">xml</span><span class="special">/</span><span class="identifier">docbook</span><span class="special">/</span><span class="number">4.2</span></code>.
         </li>
 <li>
           Download the latest <a href="http://sourceforge.net/project/showfiles.php?group_id=21935&amp;package_id=16608" target="_top">Docbook
- XSL</a> version and unpack it. Put the results in <tt class="computeroutput"><span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">share</span><span class="special">/</span><span class="identifier">xsl</span><span class="special">/</span><span class="identifier">docbook</span></tt>, thus effectively removing the
+ XSL</a> version and unpack it. Put the results in <code class="computeroutput"><span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">share</span><span class="special">/</span><span class="identifier">xsl</span><span class="special">/</span><span class="identifier">docbook</span></code>, thus effectively removing the
           version number from the directory name (for simplicity).
         </li>
 <li>
- Add the following to your <tt class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></tt>
- file, which should live in your home directory (<tt class="computeroutput"><span class="special">/</span><span class="identifier">Users</span><span class="special">/&lt;</span><span class="identifier">your_username</span><span class="special">&gt;</span></tt>).
+ Add the following to your <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code>
+ file, which should live in your home directory (<code class="computeroutput"><span class="special">/</span><span class="identifier">Users</span><span class="special">/&lt;</span><span class="identifier">your_username</span><span class="special">&gt;</span></code>).
           You must already have it somewhere or otherwise you could not be building
           Boost (i.e. missing tools configuration).
         </li>
 </ol></div>
-<pre class="programlisting">
-<span class="keyword">using</span> <span class="identifier">xsltproc</span> <span class="special">;</span>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">xsltproc</span> <span class="special">;</span>
 
 <span class="keyword">using</span> <span class="identifier">boostbook</span>
     <span class="special">:</span> <span class="string">"/usr/local/share/xsl/docbook"</span>
@@ -90,25 +90,24 @@
       </p>
 <div class="orderedlist"><ol type="1">
 <li>
- Go to Quickbook's source directory (<tt class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">quickbook</span></tt>).
+ Go to Quickbook's source directory (<code class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">quickbook</span></code>).
         </li>
 <li>
- Build the utility by issuing <tt class="computeroutput"><span class="identifier">bjam</span>
- <span class="special">--</span><span class="identifier">v2</span></tt>.
+ Build the utility by issuing <code class="computeroutput"><span class="identifier">bjam</span>
+ <span class="special">--</span><span class="identifier">v2</span></code>.
         </li>
 <li>
- Copy the resulting <tt class="computeroutput"><span class="identifier">quickbook</span></tt>
- binary (located under the <tt class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">bin</span><span class="special">.</span><span class="identifier">v2</span></tt> hierarchy)
+ Copy the resulting <code class="computeroutput"><span class="identifier">quickbook</span></code>
+ binary (located under the <code class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">bin</span><span class="special">.</span><span class="identifier">v2</span></code> hierarchy)
           to a safe place. Following our previous example, you can install it into:
- <tt class="computeroutput"><span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">bin</span></tt>.
+ <code class="computeroutput"><span class="special">/</span><span class="identifier">usr</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">bin</span></code>.
         </li>
 <li>
- Add the following to your <tt class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></tt>
+ Add the following to your <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code>
           file:
         </li>
 </ol></div>
-<pre class="programlisting">
-<span class="keyword">using</span> <span class="identifier">quickbook</span>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">quickbook</span>
     <span class="special">:</span> <span class="string">"/usr/local/bin/quickbook"</span> <span class="special">;</span>
     <span class="special">;</span>
 </pre>
@@ -119,19 +118,18 @@
 <div class="orderedlist"><ol type="1">
 <li>
           Go to the <a href="http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc" target="_top">downloads
- section</a> and get the disk image (<tt class="computeroutput"><span class="identifier">dmg</span></tt>
+ section</a> and get the disk image (<code class="computeroutput"><span class="identifier">dmg</span></code>
           file) for Mac OS X.
         </li>
 <li>
- Open the disk image and drag the Doxygen application to your <tt class="computeroutput"><span class="identifier">Applications</span></tt> folder to install it.
+ Open the disk image and drag the Doxygen application to your <code class="computeroutput"><span class="identifier">Applications</span></code> folder to install it.
         </li>
 <li>
- Add the following to your <tt class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></tt>
+ Add the following to your <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code>
           file:
         </li>
 </ol></div>
-<pre class="programlisting">
-<span class="keyword">using</span> <span class="identifier">doxygen</span>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">doxygen</span>
     <span class="special">:</span> <span class="special">/</span><span class="identifier">Applications</span><span class="special">/</span><span class="identifier">Doxygen</span><span class="special">.</span><span class="identifier">app</span><span class="special">/</span><span class="identifier">Contents</span><span class="special">/</span><span class="identifier">Resources</span><span class="special">/</span><span class="identifier">doxygen</span>
     <span class="special">;</span>
 </pre>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/install/windows.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/install/windows.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/install/windows.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Windows 2000, XP, 2003, Vista</title>
+<title>Windows 2000, XP, 2003, Vista</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Quickbook 1.4">
-<link rel="up" href="../install.html" title=" Installation and configuration">
-<link rel="prev" href="macosx.html" title=" Mac OS X">
-<link rel="next" href="linux.html" title=" Debian, Ubuntu">
+<link rel="up" href="../install.html" title="Installation and configuration">
+<link rel="prev" href="macosx.html" title="Mac OS X">
+<link rel="next" href="linux.html" title="Debian, Ubuntu">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="quickbook.install.windows"></a> Windows 2000, XP, 2003, Vista</h3></div></div></div>
+<a name="quickbook.install.windows"></a><a class="link" href="windows.html" title="Windows 2000, XP, 2003, Vista"> Windows 2000, XP, 2003, Vista</a>
+</h3></div></div></div>
 <p>
       </p>
 <div class="blockquote"><blockquote class="blockquote">
@@ -44,45 +45,44 @@
       </p>
 <div class="orderedlist"><ol type="1">
 <li>
- First of all you need to have a copy of <tt class="computeroutput"><span class="identifier">xsltproc</span></tt>
+ First of all you need to have a copy of <code class="computeroutput"><span class="identifier">xsltproc</span></code>
           for Windows. There are many ways to get this tool, but to keep things simple,
           use the binary packages
           made by Igor Zlatkovic. At the very least, you need to download the following
- packages: <tt class="computeroutput"><span class="identifier">iconv</span></tt>, <tt class="computeroutput"><span class="identifier">zlib</span></tt>, <tt class="computeroutput"><span class="identifier">libxml2</span></tt>
- and <tt class="computeroutput"><span class="identifier">libxslt</span></tt>.
+ packages: <code class="computeroutput"><span class="identifier">iconv</span></code>, <code class="computeroutput"><span class="identifier">zlib</span></code>, <code class="computeroutput"><span class="identifier">libxml2</span></code>
+ and <code class="computeroutput"><span class="identifier">libxslt</span></code>.
         </li>
 <li>
           Unpack all these packages in the same directory so that you get unique
- <tt class="computeroutput"><span class="identifier">bin</span></tt>, <tt class="computeroutput"><span class="identifier">include</span></tt>
- and <tt class="computeroutput"><span class="identifier">lib</span></tt> directories within
- the hierarchy. These instructions use <tt class="computeroutput"><span class="identifier">C</span><span class="special">:\</span><span class="identifier">Users</span><span class="special">\</span><span class="identifier">example</span><span class="special">\</span><span class="identifier">Documents</span><span class="special">\</span><span class="identifier">boost</span><span class="special">\</span><span class="identifier">xml</span></tt>
+ <code class="computeroutput"><span class="identifier">bin</span></code>, <code class="computeroutput"><span class="identifier">include</span></code>
+ and <code class="computeroutput"><span class="identifier">lib</span></code> directories within
+ the hierarchy. These instructions use <code class="computeroutput"><span class="identifier">C</span><span class="special">:\</span><span class="identifier">Users</span><span class="special">\</span><span class="identifier">example</span><span class="special">\</span><span class="identifier">Documents</span><span class="special">\</span><span class="identifier">boost</span><span class="special">\</span><span class="identifier">xml</span></code>
           as the root for all files.
         </li>
 <li>
- From the command line, go to the <tt class="computeroutput"><span class="identifier">bin</span></tt>
- directory and launch <tt class="computeroutput"><span class="identifier">xsltproc</span><span class="special">.</span><span class="identifier">exe</span></tt>
+ From the command line, go to the <code class="computeroutput"><span class="identifier">bin</span></code>
+ directory and launch <code class="computeroutput"><span class="identifier">xsltproc</span><span class="special">.</span><span class="identifier">exe</span></code>
           to ensure it works. You should get usage information on screen.
         </li>
 <li>
           Download <a href="http://www.docbook.org/xml/4.2/docbook-xml-4.2.zip" target="_top">Docbook
           XML 4.2</a> and unpack it in the same directory used above. That is:
- <tt class="computeroutput"><span class="identifier">C</span><span class="special">:\</span><span class="identifier">Users</span><span class="special">\</span><span class="identifier">example</span><span class="special">\</span><span class="identifier">Documents</span><span class="special">\</span><span class="identifier">boost</span><span class="special">\</span><span class="identifier">xml</span><span class="special">\</span><span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xml</span></tt>.
+ <code class="computeroutput"><span class="identifier">C</span><span class="special">:\</span><span class="identifier">Users</span><span class="special">\</span><span class="identifier">example</span><span class="special">\</span><span class="identifier">Documents</span><span class="special">\</span><span class="identifier">boost</span><span class="special">\</span><span class="identifier">xml</span><span class="special">\</span><span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xml</span></code>.
         </li>
 <li>
           Download the latest <a href="http://sourceforge.net/project/showfiles.php?group_id=21935&amp;package_id=16608" target="_top">Docbook
           XSL</a> version and unpack it, again in the same directory used before.
           To make things easier, rename the directory created during the extraction
- to <tt class="computeroutput"><span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xsl</span></tt> (bypassing the version name): <tt class="computeroutput"><span class="identifier">C</span><span class="special">:\</span><span class="identifier">Users</span><span class="special">\</span><span class="identifier">example</span><span class="special">\</span><span class="identifier">Documents</span><span class="special">\</span><span class="identifier">boost</span><span class="special">\</span><span class="identifier">xml</span><span class="special">\</span><span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xsl</span></tt>.
+ to <code class="computeroutput"><span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xsl</span></code> (bypassing the version name): <code class="computeroutput"><span class="identifier">C</span><span class="special">:\</span><span class="identifier">Users</span><span class="special">\</span><span class="identifier">example</span><span class="special">\</span><span class="identifier">Documents</span><span class="special">\</span><span class="identifier">boost</span><span class="special">\</span><span class="identifier">xml</span><span class="special">\</span><span class="identifier">docbook</span><span class="special">-</span><span class="identifier">xsl</span></code>.
         </li>
 <li>
- Add the following to your <tt class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></tt>
- file, which should live in your home directory (<tt class="computeroutput"><span class="special">%</span><span class="identifier">HOMEDRIVE</span><span class="special">%%</span><span class="identifier">HOMEPATH</span><span class="special">%</span></tt>).
+ Add the following to your <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code>
+ file, which should live in your home directory (<code class="computeroutput"><span class="special">%</span><span class="identifier">HOMEDRIVE</span><span class="special">%%</span><span class="identifier">HOMEPATH</span><span class="special">%</span></code>).
           You must already have it somewhere or otherwise you could not be building
           Boost (i.e. missing tools configuration).
         </li>
 </ol></div>
-<pre class="programlisting">
-<span class="identifier">using</span> <span class="identifier">xsltproc</span>
+<pre class="programlisting"><span class="identifier">using</span> <span class="identifier">xsltproc</span>
     <span class="special">:</span> <span class="string">"C:/Users/example/Documents/boost/xml/bin/xsltproc.exe"</span>
     <span class="special">;</span>
 
@@ -97,25 +97,24 @@
       </p>
 <div class="orderedlist"><ol type="1">
 <li>
- Go to Quickbook's source directory (<tt class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">\</span><span class="identifier">tools</span><span class="special">\</span><span class="identifier">quickbook</span></tt>).
+ Go to Quickbook's source directory (<code class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">\</span><span class="identifier">tools</span><span class="special">\</span><span class="identifier">quickbook</span></code>).
         </li>
 <li>
- Build the utility by issuing <tt class="computeroutput"><span class="identifier">bjam</span>
- <span class="special">--</span><span class="identifier">v2</span></tt>.
+ Build the utility by issuing <code class="computeroutput"><span class="identifier">bjam</span>
+ <span class="special">--</span><span class="identifier">v2</span></code>.
         </li>
 <li>
- Copy the resulting <tt class="computeroutput"><span class="identifier">quickbook</span><span class="special">.</span><span class="identifier">exe</span></tt>
- binary (located under the <tt class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">\</span><span class="identifier">bin</span><span class="special">.</span><span class="identifier">v2</span></tt> hierarchy)
+ Copy the resulting <code class="computeroutput"><span class="identifier">quickbook</span><span class="special">.</span><span class="identifier">exe</span></code>
+ binary (located under the <code class="computeroutput"><span class="identifier">BOOST_ROOT</span><span class="special">\</span><span class="identifier">bin</span><span class="special">.</span><span class="identifier">v2</span></code> hierarchy)
           to a safe place. Following our previous example, you can install it into:
- <tt class="computeroutput"><span class="identifier">C</span><span class="special">:\</span><span class="identifier">Users</span><span class="special">\</span><span class="identifier">example</span><span class="special">\</span><span class="identifier">Documents</span><span class="special">\</span><span class="identifier">boost</span><span class="special">\</span><span class="identifier">xml</span><span class="special">\</span><span class="identifier">bin</span></tt>.
+ <code class="computeroutput"><span class="identifier">C</span><span class="special">:\</span><span class="identifier">Users</span><span class="special">\</span><span class="identifier">example</span><span class="special">\</span><span class="identifier">Documents</span><span class="special">\</span><span class="identifier">boost</span><span class="special">\</span><span class="identifier">xml</span><span class="special">\</span><span class="identifier">bin</span></code>.
         </li>
 <li>
- Add the following to your <tt class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></tt>
+ Add the following to your <code class="computeroutput"><span class="identifier">user</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">jam</span></code>
           file:
         </li>
 </ol></div>
-<pre class="programlisting">
-<span class="identifier">using</span> <span class="identifier">quickbook</span>
+<pre class="programlisting"><span class="identifier">using</span> <span class="identifier">quickbook</span>
     <span class="special">:</span> <span class="string">"C:/Users/example/Documents/boost/xml/bin/quickbook.exe"</span>
     <span class="special">;</span>
 </pre>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/intro.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/intro.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/intro.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Introduction</title>
+<title>Introduction</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Quickbook 1.4">
 <link rel="up" href="../index.html" title="Quickbook 1.4">
 <link rel="prev" href="../index.html" title="Quickbook 1.4">
-<link rel="next" href="change_log.html" title=" Change Log">
+<link rel="next" href="change_log.html" title="Change Log">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,13 +24,14 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="quickbook.intro"></a> Introduction</h2></div></div></div>
+<a name="quickbook.intro"></a><a class="link" href="intro.html" title="Introduction"> Introduction</a>
+</h2></div></div></div>
 <div class="blockquote"><blockquote class="blockquote">
 <p>
         </p>
 <p>
- <span class="bold"><b><span class="emphasis"><em>&#8220;<span class="quote">Why program by hand in five days
- what you can spend five years of your life automating?</span>&#8221;</em></span></b></span>
+ <span class="bold"><strong><span class="emphasis"><em>&#8220;<span class="quote">Why program by hand in five days
+ what you can spend five years of your life automating?</span>&#8221;</em></span></strong></span>
         </p>
 <p>
         </p>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/ref.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/ref.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/ref.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,20 +1,20 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Quick Reference</title>
+<title>Quick Reference</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Quickbook 1.4">
 <link rel="up" href="../index.html" title="Quickbook 1.4">
-<link rel="prev" href="faq.html" title=" Frequently Asked Questions">
+<link rel="prev" href="faq.html" title="Frequently Asked Questions">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -23,12 +23,13 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="quickbook.ref"></a> Quick Reference</h2></div></div></div>
+<a name="quickbook.ref"></a><a class="link" href="ref.html" title="Quick Reference"> Quick Reference</a>
+</h2></div></div></div>
 <p>
     </p>
 <div class="table">
-<a name="id467737"></a><p class="title"><b>Table 8. Syntax Compendium</b></p>
-<table class="table" summary="Syntax Compendium">
+<a name="id4964367"></a><p class="title"><b>Table 8. Syntax Compendium</b></p>
+<div class="table-contents"><table class="table" summary="Syntax Compendium">
 <colgroup>
 <col>
 <col>
@@ -60,12 +61,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[/ some comment]</tt>
+ <code class="literal">[/ some comment]</code>
           </p>
           </td>
 <td>
           <p>
- Comments
+ <a class="link" href="syntax/comments.html" title="Comments">Comments</a>
           </p>
           </td>
 </tr>
@@ -77,13 +78,13 @@
           </td>
 <td>
           <p>
- <tt class="literal">['italics] or /italics/</tt>
+ <code class="literal">['italics] or /italics/</code>
           </p>
           </td>
 <td>
           <p>
- Font Styles
- and <a href="syntax/phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.font_styles" title="Font Styles">Font Styles</a>
+ and <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple
             formatting</a>
           </p>
           </td>
@@ -91,18 +92,18 @@
 <tr>
 <td>
           <p>
- <span class="bold"><b>bold</b></span>
+ <span class="bold"><strong>bold</strong></span>
           </p>
           </td>
 <td>
           <p>
- <tt class="literal">[*bold] or *bold*</tt>
+ <code class="literal">[*bold] or *bold*</code>
           </p>
           </td>
 <td>
           <p>
- Font Styles
- and <a href="syntax/phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.font_styles" title="Font Styles">Font Styles</a>
+ and <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple
             formatting</a>
           </p>
           </td>
@@ -115,13 +116,13 @@
           </td>
 <td>
           <p>
- <tt class="literal">[_underline] or _underline_</tt>
+ <code class="literal">[_underline] or _underline_</code>
           </p>
           </td>
 <td>
           <p>
- Font Styles
- and <a href="syntax/phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.font_styles" title="Font Styles">Font Styles</a>
+ and <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple
             formatting</a>
           </p>
           </td>
@@ -129,18 +130,18 @@
 <tr>
 <td>
           <p>
- <tt class="literal">teletype</tt>
+ <code class="literal">teletype</code>
           </p>
           </td>
 <td>
           <p>
- <tt class="literal">[^teletype] or =teletype=</tt>
+ <code class="literal">[^teletype] or =teletype=</code>
           </p>
           </td>
 <td>
           <p>
- Font Styles
- and <a href="syntax/phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.font_styles" title="Font Styles">Font Styles</a>
+ and <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple
             formatting</a>
           </p>
           </td>
@@ -153,13 +154,13 @@
           </td>
 <td>
           <p>
- <tt class="literal">[-strikethrough]</tt>
+ <code class="literal">[-strikethrough]</code>
           </p>
           </td>
 <td>
           <p>
- Font Styles
- and <a href="syntax/phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.font_styles" title="Font Styles">Font Styles</a>
+ and <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple
             formatting</a>
           </p>
           </td>
@@ -167,19 +168,19 @@
 <tr>
 <td>
           <p>
- <i class="replaceable"><tt>
+ <em class="replaceable"><code>
               replaceable
- </tt></i>
+ </code></em>
           </p>
           </td>
 <td>
           <p>
- <tt class="literal">[~replaceable]</tt>
+ <code class="literal">[~replaceable]</code>
           </p>
           </td>
 <td>
           <p>
- Replaceble
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.replaceable" title="Replaceable">Replaceble</a>
           </p>
           </td>
 </tr>
@@ -191,12 +192,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[c++]</tt> or <tt class="literal">[python]</tt>
+ <code class="literal">[c++]</code> or <code class="literal">[python]</code>
           </p>
           </td>
 <td>
           <p>
- Source Mode
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.source_mode" title="Source Mode">Source Mode</a>
           </p>
           </td>
 </tr>
@@ -208,12 +209,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">`int main();`</tt>
+ <code class="literal">`int main();`</code>
           </p>
           </td>
 <td>
           <p>
- Inline code
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.inline_code" title="Inline code">Inline code</a>
           </p>
           </td>
 </tr>
@@ -225,12 +226,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">``int main();``</tt>
+ <code class="literal">``int main();``</code>
           </p>
           </td>
 <td>
           <p>
- Code
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.code" title="Code">Code</a>
           </p>
           </td>
 </tr>
@@ -242,13 +243,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">``from c++ to QuickBook``</tt>
+ <code class="literal">``from c++ to QuickBook``</code>
           </p>
           </td>
 <td>
           <p>
- <a href="syntax/block.html#quickbook.syntax.block.escape_back" title=" Escaping Back
- To QuickBook">Escaping Back To QuickBook</a>
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.escape_back" title="Escaping Back To QuickBook">Escaping Back To QuickBook</a>
           </p>
           </td>
 </tr>
@@ -260,13 +260,13 @@
           </td>
 <td>
           <p>
- <tt class="literal">[br] or \n</tt>
+ <code class="literal">[br] or \n</code>
           </p>
           </td>
 <td>
           <p>
- line-break
- <span class="bold"><b>DEPRECATED</b></span>
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.line_break" title="line-break">line-break</a>
+ <span class="bold"><strong>DEPRECATED</strong></span>
           </p>
           </td>
 </tr>
@@ -278,12 +278,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[#anchor]</tt>
+ <code class="literal">[#anchor]</code>
           </p>
           </td>
 <td>
           <p>
- Anchors
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.anchors" title="Anchors">Anchors</a>
           </p>
           </td>
 </tr>
@@ -295,12 +295,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[@http://www.boost.org Boost]</tt>
+ <code class="literal">[@http://www.boost.org Boost]</code>
           </p>
           </td>
 <td>
           <p>
- Links
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.links" title="Links">Links</a>
           </p>
           </td>
 </tr>
@@ -312,12 +312,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[link section.anchor Link text]</tt>
+ <code class="literal">[link section.anchor Link text]</code>
           </p>
           </td>
 <td>
           <p>
- Anchor links
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.anchor_links" title="Anchor links">Anchor links</a>
           </p>
           </td>
 </tr>
@@ -329,12 +329,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[link xml.refentry Link text]</tt>
+ <code class="literal">[link xml.refentry Link text]</code>
           </p>
           </td>
 <td>
           <p>
- refentry links
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.refentry_links" title="refentry links">refentry links</a>
           </p>
           </td>
 </tr>
@@ -346,12 +346,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[funcref fully::qualified::function_name Link text]</tt>
+ <code class="literal">[funcref fully::qualified::function_name Link text]</code>
           </p>
           </td>
 <td>
           <p>
- <a href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title=" Code Links">function, class, member,
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title="Code Links">function, class, member,
             enum, macro, concept or header links</a>
           </p>
           </td>
@@ -364,12 +364,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[classref fully::qualified::class_name Link text]</tt>
+ <code class="literal">[classref fully::qualified::class_name Link text]</code>
           </p>
           </td>
 <td>
           <p>
- <a href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title=" Code Links">function, class, member,
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title="Code Links">function, class, member,
             enum, macro, concept or header links</a>
           </p>
           </td>
@@ -382,12 +382,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[memberref fully::qualified::member_name Link text]</tt>
+ <code class="literal">[memberref fully::qualified::member_name Link text]</code>
           </p>
           </td>
 <td>
           <p>
- <a href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title=" Code Links">function, class, member,
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title="Code Links">function, class, member,
             enum, macro, concept or header links</a>
           </p>
           </td>
@@ -400,12 +400,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[enumref fully::qualified::enum_name Link text]</tt>
+ <code class="literal">[enumref fully::qualified::enum_name Link text]</code>
           </p>
           </td>
 <td>
           <p>
- <a href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title=" Code Links">function, class, member,
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title="Code Links">function, class, member,
             enum, macro, concept or header links</a>
           </p>
           </td>
@@ -418,12 +418,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[macroref MACRO_NAME Link text]</tt>
+ <code class="literal">[macroref MACRO_NAME Link text]</code>
           </p>
           </td>
 <td>
           <p>
- <a href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title=" Code Links">function, class, member,
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title="Code Links">function, class, member,
             enum, macro, concept or header links</a>
           </p>
           </td>
@@ -436,12 +436,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[conceptref ConceptName Link text]</tt>
+ <code class="literal">[conceptref ConceptName Link text]</code>
           </p>
           </td>
 <td>
           <p>
- <a href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title=" Code Links">function, class, member,
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title="Code Links">function, class, member,
             enum, macro, concept or header links</a>
           </p>
           </td>
@@ -454,12 +454,30 @@
           </td>
 <td>
           <p>
- <tt class="literal">[headerref path/to/header.hpp Link text]</tt>
+ <code class="literal">[headerref path/to/header.hpp Link text]</code>
           </p>
           </td>
 <td>
           <p>
- <a href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title=" Code Links">function, class, member,
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title="Code Links">function, class, member,
+ enum, macro, concept or header links</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ global link
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">[globalref fully::qualified::global Link text]</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.code_links" title="Code Links">function, class, member,
             enum, macro, concept or header links</a>
           </p>
           </td>
@@ -472,12 +490,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">'''escaped text (no processing/formatting)'''</tt>
+ <code class="literal">'''escaped text (no processing/formatting)'''</code>
           </p>
           </td>
 <td>
           <p>
- Escape
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.escape" title="Escape">Escape</a>
           </p>
           </td>
 </tr>
@@ -489,13 +507,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">\c</tt>
+ <code class="literal">\c</code>
           </p>
           </td>
 <td>
           <p>
- <a href="syntax/phrase.html#quickbook.syntax.phrase.single_char_escape" title="Single
- char escape">Single char
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.single_char_escape" title="Single char escape">Single char
             escape</a>
           </p>
           </td>
@@ -508,12 +525,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[$image.jpg]</tt>
+ <code class="literal">[$image.jpg]</code>
           </p>
           </td>
 <td>
           <p>
- Images
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.images" title="Images">Images</a>
           </p>
           </td>
 </tr>
@@ -525,12 +542,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[section The Section Title]</tt>
+ <code class="literal">[section The Section Title]</code>
           </p>
           </td>
 <td>
           <p>
- Section
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.section" title="Section">Section</a>
           </p>
           </td>
 </tr>
@@ -542,12 +559,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[endsect]</tt>
+ <code class="literal">[endsect]</code>
           </p>
           </td>
 <td>
           <p>
- Section
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.section" title="Section">Section</a>
           </p>
           </td>
 </tr>
@@ -565,7 +582,7 @@
           </td>
 <td>
           <p>
- Paragraphs
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.paragraphs" title="Paragraphs">Paragraphs</a>
           </p>
           </td>
 </tr>
@@ -588,8 +605,7 @@
           </td>
 <td>
           <p>
- <a href="syntax/block.html#quickbook.syntax.block.lists.ordered_lists" title="Ordered
- lists">Ordered lists</a>
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.lists.ordered_lists" title="Ordered lists">Ordered lists</a>
           </p>
           </td>
 </tr>
@@ -612,8 +628,7 @@
           </td>
 <td>
           <p>
- <a href="syntax/block.html#quickbook.syntax.block.lists.unordered_lists" title="Unordered
- lists">Unordered
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.lists.unordered_lists" title="Unordered lists">Unordered
             lists</a>
           </p>
           </td>
@@ -631,7 +646,7 @@
           </td>
 <td>
           <p>
- Code
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.code" title="Code">Code</a>
           </p>
           </td>
 </tr>
@@ -643,12 +658,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[pre preformatted]</tt>
+ <code class="literal">[pre preformatted]</code>
           </p>
           </td>
 <td>
           <p>
- Preformatted
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.preformatted" title="Preformatted">Preformatted</a>
           </p>
           </td>
 </tr>
@@ -660,12 +675,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[:sometext...]</tt>
+ <code class="literal">[:sometext...]</code>
           </p>
           </td>
 <td>
           <p>
- Blockquote
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.blockquote" title="Blockquote">Blockquote</a>
           </p>
           </td>
 </tr>
@@ -677,12 +692,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[h1 Heading 1]</tt>
+ <code class="literal">[h1 Heading 1]</code>
           </p>
           </td>
 <td>
           <p>
- Heading
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.headings" title="Headings">Heading</a>
           </p>
           </td>
 </tr>
@@ -694,12 +709,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[h2 Heading 2]</tt>
+ <code class="literal">[h2 Heading 2]</code>
           </p>
           </td>
 <td>
           <p>
- Heading
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.headings" title="Headings">Heading</a>
           </p>
           </td>
 </tr>
@@ -711,12 +726,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[h3 Heading 3]</tt>
+ <code class="literal">[h3 Heading 3]</code>
           </p>
           </td>
 <td>
           <p>
- Heading
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.headings" title="Headings">Heading</a>
           </p>
           </td>
 </tr>
@@ -728,12 +743,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[h4 Heading 4]</tt>
+ <code class="literal">[h4 Heading 4]</code>
           </p>
           </td>
 <td>
           <p>
- Heading
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.headings" title="Headings">Heading</a>
           </p>
           </td>
 </tr>
@@ -745,12 +760,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[h5 Heading 5]</tt>
+ <code class="literal">[h5 Heading 5]</code>
           </p>
           </td>
 <td>
           <p>
- Heading
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.headings" title="Headings">Heading</a>
           </p>
           </td>
 </tr>
@@ -762,12 +777,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[h6 Heading 6]</tt>
+ <code class="literal">[h6 Heading 6]</code>
           </p>
           </td>
 <td>
           <p>
- Heading
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.headings" title="Headings">Heading</a>
           </p>
           </td>
 </tr>
@@ -779,12 +794,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[def macro_identifier some text]</tt>
+ <code class="literal">[def macro_identifier some text]</code>
           </p>
           </td>
 <td>
           <p>
- Macros
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.macros" title="Macros">Macros</a>
           </p>
           </td>
 </tr>
@@ -796,12 +811,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[template[a b] [a] body [b]]</tt>
+ <code class="literal">[template[a b] [a] body [b]]</code>
           </p>
           </td>
 <td>
           <p>
- Templates
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.templates" title="Templates">Templates</a>
           </p>
           </td>
 </tr>
@@ -813,12 +828,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[blurb advertisement or note...]</tt>
+ <code class="literal">[blurb advertisement or note...]</code>
           </p>
           </td>
 <td>
           <p>
- Blurbs
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.blurbs" title="Blurbs">Blurbs</a>
           </p>
           </td>
 </tr>
@@ -830,12 +845,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[warning Warning text...]</tt>
+ <code class="literal">[warning Warning text...]</code>
           </p>
           </td>
 <td>
           <p>
- Admonitions
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.admonitions" title="Admonitions">Admonitions</a>
           </p>
           </td>
 </tr>
@@ -859,7 +874,7 @@
           </td>
 <td>
           <p>
- Tables
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.tables" title="Tables">Tables</a>
           </p>
           </td>
 </tr>
@@ -883,7 +898,7 @@
           </td>
 <td>
           <p>
- Variable Lists
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.variable_lists" title="Variable Lists">Variable Lists</a>
           </p>
           </td>
 </tr>
@@ -895,12 +910,12 @@
           </td>
 <td>
           <p>
- <tt class="literal">[include someother.qbk]</tt>
+ <code class="literal">[include someother.qbk]</code>
           </p>
           </td>
 <td>
           <p>
- Include
+ <a class="link" href="syntax/block.html#quickbook.syntax.block.include" title="Include">Include</a>
           </p>
           </td>
 </tr>
@@ -912,18 +927,19 @@
           </td>
 <td>
           <p>
- <tt class="literal">[? symbol phrase]</tt>
+ <code class="literal">[? symbol phrase]</code>
           </p>
           </td>
 <td>
           <p>
- Conditional Generation
+ <a class="link" href="syntax/phrase.html#quickbook.syntax.phrase.cond" title="Conditional Generation">Conditional Generation</a>
           </p>
           </td>
 </tr>
 </tbody>
-</table>
+</table></div>
 </div>
+<br class="table-break">
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,12 +1,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Syntax Summary</title>
+<title>Syntax Summary</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../index.html" title="Quickbook 1.4">
 <link rel="up" href="../index.html" title="Quickbook 1.4">
-<link rel="prev" href="change_log.html" title=" Change Log">
+<link rel="prev" href="change_log.html" title="Change Log">
 <link rel="next" href="syntax/comments.html" title="Comments">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -14,8 +14,8 @@
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="quickbook.syntax"></a> Syntax Summary</h2></div></div></div>
+<a name="quickbook.syntax"></a><a class="link" href="syntax.html" title="Syntax Summary"> Syntax Summary</a>
+</h2></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">Comments</span></dt>
 <dt><span class="section"> Phrase Level Elements</span></dt>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/block.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/block.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/block.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Block Level Elements</title>
+<title>Block Level Elements</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Quickbook 1.4">
-<link rel="up" href="../syntax.html" title=" Syntax Summary">
-<link rel="prev" href="phrase.html" title=" Phrase Level Elements">
-<link rel="next" href="../install.html" title=" Installation and configuration">
+<link rel="up" href="../syntax.html" title="Syntax Summary">
+<link rel="prev" href="phrase.html" title="Phrase Level Elements">
+<link rel="next" href="../install.html" title="Installation and configuration">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="quickbook.syntax.block"></a> Block Level Elements</h3></div></div></div>
+<a name="quickbook.syntax.block"></a><a class="link" href="block.html" title="Block Level Elements"> Block Level Elements</a>
+</h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">Document</span></dt>
 <dt><span class="section">Section</span></dt>
@@ -51,7 +52,8 @@
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.document"></a>Document</h4></div></div></div>
+<a name="quickbook.syntax.block.document"></a><a class="link" href="block.html#quickbook.syntax.block.document" title="Document">Document</a>
+</h4></div></div></div>
 <p>
           Every document must begin with a Document Info section, which should look
           like this:
@@ -112,21 +114,22 @@
           for. In its absence, version 1.1 is assumed.
         </p>
 <p>
- <tt class="literal">version</tt>, <tt class="literal">id</tt>, <tt class="literal">dirname</tt>,
- <tt class="literal">copyright</tt>, <tt class="literal">purpose</tt>, <tt class="literal">category</tt>,
- <tt class="literal">authors</tt>, <tt class="literal">license</tt>, <tt class="literal">last-revision</tt>
- and <tt class="literal">source-mode</tt> are optional information.
+ <code class="literal">version</code>, <code class="literal">id</code>, <code class="literal">dirname</code>,
+ <code class="literal">copyright</code>, <code class="literal">purpose</code>, <code class="literal">category</code>,
+ <code class="literal">authors</code>, <code class="literal">license</code>, <code class="literal">last-revision</code>
+ and <code class="literal">source-mode</code> are optional information.
         </p>
 <p>
- <tt class="literal">source-type</tt> is a lowercase string setting the initial
- Source Mode.
- If the <tt class="literal">source-mode</tt> field is omitted, a default value
- of <tt class="literal">c++</tt> will be used.
+ <code class="literal">source-type</code> is a lowercase string setting the initial
+ <a class="link" href="phrase.html#quickbook.syntax.phrase.source_mode" title="Source Mode">Source Mode</a>.
+ If the <code class="literal">source-mode</code> field is omitted, a default value
+ of <code class="literal">c++</code> will be used.
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.section"></a>Section</h4></div></div></div>
+<a name="quickbook.syntax.block.section"></a><a class="link" href="block.html#quickbook.syntax.block.section" title="Section">Section</a>
+</h4></div></div></div>
 <p>
           Starting a new section is accomplished with:
         </p>
@@ -135,8 +138,8 @@
 <p>
           where <span class="emphasis"><em>id</em></span> is optional. id will be the filename of the
           generated section. If it is not present, "The Section Title"
- will be normalized and become the id. Valid characters are <tt class="literal">a-Z</tt>,
- <tt class="literal">A-Z</tt>, <tt class="literal">0-9</tt> and <tt class="literal">_</tt>.
+ will be normalized and become the id. Valid characters are <code class="literal">a-Z</code>,
+ <code class="literal">A-Z</code>, <code class="literal">0-9</code> and <code class="literal">_</code>.
           All non-valid characters are converted to underscore and all upper-case
           are converted to lower case. Thus: "The Section Title" will be
           normalized to "the_section_title".
@@ -152,7 +155,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.xinclude"></a>xinclude</h4></div></div></div>
+<a name="quickbook.syntax.block.xinclude"></a><a class="link" href="block.html#quickbook.syntax.block.xinclude" title="xinclude">xinclude</a>
+</h4></div></div></div>
 <p>
           You can include another XML file with:
         </p>
@@ -165,7 +169,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.paragraphs"></a>Paragraphs</h4></div></div></div>
+<a name="quickbook.syntax.block.paragraphs"></a><a class="link" href="block.html#quickbook.syntax.block.paragraphs" title="Paragraphs">Paragraphs</a>
+</h4></div></div></div>
 <p>
           Paragraphs start left-flushed and are terminated by two or more newlines.
           No markup is needed for paragraphs. QuickBook automatically detects paragraphs
@@ -179,7 +184,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.lists"></a>Lists</h4></div></div></div>
+<a name="quickbook.syntax.block.lists"></a><a class="link" href="block.html#quickbook.syntax.block.lists" title="Lists">Lists</a>
+</h4></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="block.html#quickbook.syntax.block.lists.ordered_lists">Ordered
           lists</a></span></dt>
@@ -193,9 +199,9 @@
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h5 class="title">
-<a name="quickbook.syntax.block.lists.ordered_lists"></a><a href="block.html#quickbook.syntax.block.lists.ordered_lists" title="Ordered
- lists">Ordered
- lists</a></h5></div></div></div>
+<a name="quickbook.syntax.block.lists.ordered_lists"></a><a class="link" href="block.html#quickbook.syntax.block.lists.ordered_lists" title="Ordered lists">Ordered
+ lists</a>
+</h5></div></div></div>
 <pre class="programlisting"># One
 # Two
 # Three
@@ -217,9 +223,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h5 class="title">
-<a name="quickbook.syntax.block.lists.list_hierarchies"></a><a href="block.html#quickbook.syntax.block.lists.list_hierarchies" title="List
- Hierarchies">List
- Hierarchies</a></h5></div></div></div>
+<a name="quickbook.syntax.block.lists.list_hierarchies"></a><a class="link" href="block.html#quickbook.syntax.block.lists.list_hierarchies" title="List Hierarchies">List
+ Hierarchies</a>
+</h5></div></div></div>
 <p>
             List hierarchies are supported. Example:
           </p>
@@ -280,9 +286,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h5 class="title">
-<a name="quickbook.syntax.block.lists.long_list_lines"></a><a href="block.html#quickbook.syntax.block.lists.long_list_lines" title="Long
- List Lines">Long
- List Lines</a></h5></div></div></div>
+<a name="quickbook.syntax.block.lists.long_list_lines"></a><a class="link" href="block.html#quickbook.syntax.block.lists.long_list_lines" title="Long List Lines">Long
+ List Lines</a>
+</h5></div></div></div>
 <p>
             Long lines will be wrapped appropriately. Example:
           </p>
@@ -311,9 +317,9 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h5 class="title">
-<a name="quickbook.syntax.block.lists.unordered_lists"></a><a href="block.html#quickbook.syntax.block.lists.unordered_lists" title="Unordered
- lists">Unordered
- lists</a></h5></div></div></div>
+<a name="quickbook.syntax.block.lists.unordered_lists"></a><a class="link" href="block.html#quickbook.syntax.block.lists.unordered_lists" title="Unordered lists">Unordered
+ lists</a>
+</h5></div></div></div>
 <pre class="programlisting">* First
 * Second
 * Third
@@ -335,7 +341,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h5 class="title">
-<a name="quickbook.syntax.block.lists.mixed_lists"></a>Mixed lists</h5></div></div></div>
+<a name="quickbook.syntax.block.lists.mixed_lists"></a><a class="link" href="block.html#quickbook.syntax.block.lists.mixed_lists" title="Mixed lists">Mixed lists</a>
+</h5></div></div></div>
 <p>
             Mixed lists (ordered and unordered) are supported. Example:
           </p>
@@ -446,16 +453,16 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.code"></a>Code</h4></div></div></div>
+<a name="quickbook.syntax.block.code"></a><a class="link" href="block.html#quickbook.syntax.block.code" title="Code">Code</a>
+</h4></div></div></div>
 <p>
           Preformatted code starts with a space or a tab. The code will be syntax
- highlighted according to the current <a href="phrase.html#quickbook.syntax.phrase.source_mode" title="Source Mode">Source
+ highlighted according to the current <a class="link" href="phrase.html#quickbook.syntax.phrase.source_mode" title="Source Mode">Source
           Mode</a>:
         </p>
 <p>
         </p>
-<pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
 
 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
 <span class="special">{</span>
@@ -466,8 +473,7 @@
 </pre>
 <p>
         </p>
-<pre class="programlisting">
-<span class="keyword">import</span> <span class="identifier">cgi</span>
+<pre class="programlisting"><span class="keyword">import</span> <span class="identifier">cgi</span>
 
 <span class="keyword">def</span> <span class="identifier">cookForHtml</span><span class="special">(</span><span class="identifier">text</span><span class="special">):</span>
     <span class="string">'''"Cooks" the input text for HTML.'''</span>
@@ -487,15 +493,14 @@
 <p>
           Generates:
         </p>
-<pre class="programlisting">
-<span class="keyword">using</span> boost<span class="special">::</span>array<span class="special">;</span>
+<pre class="programlisting"><span class="keyword">using</span> boost<span class="special">::</span>array<span class="special">;</span>
 </pre>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.escape_back"></a><a href="block.html#quickbook.syntax.block.escape_back" title=" Escaping Back
- To QuickBook"> Escaping Back
- To QuickBook</a></h4></div></div></div>
+<a name="quickbook.syntax.block.escape_back"></a><a class="link" href="block.html#quickbook.syntax.block.escape_back" title="Escaping Back To QuickBook"> Escaping Back
+ To QuickBook</a>
+</h4></div></div></div>
 <p>
           Inside code, code blocks and inline code, QuickBook does not allow any
           markup to avoid conflicts with the target syntax (e.g. c++). In case you
@@ -511,8 +516,7 @@
 <p>
           Will generate:
         </p>
-<pre class="programlisting">
-<span class="keyword">void</span> foo<span class="special">()</span>
+<pre class="programlisting"><span class="keyword">void</span> foo<span class="special">()</span>
 <span class="special">{</span>
 <span class="special">}</span>
 </pre>
@@ -523,10 +527,11 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.preformatted"></a>Preformatted</h4></div></div></div>
+<a name="quickbook.syntax.block.preformatted"></a><a class="link" href="block.html#quickbook.syntax.block.preformatted" title="Preformatted">Preformatted</a>
+</h4></div></div></div>
 <p>
           Sometimes, you don't want some preformatted text to be parsed as C++. In
- such cases, use the <tt class="literal">[pre ... ]</tt> markup block.
+ such cases, use the <code class="literal">[pre ... ]</code> markup block.
         </p>
 <pre class="programlisting">[pre
 
@@ -543,21 +548,22 @@
           level markup, pre (and Code) are the only ones that allow multiple newlines.
           The markup above will generate:
         </p>
-<pre class="programlisting">Some <span class="bold"><b>preformatted</b></span> text Some <span class="bold"><b>preformatted</b></span> text
+<pre class="programlisting">Some <span class="bold"><strong>preformatted</strong></span> text Some <span class="bold"><strong>preformatted</strong></span> text
 
- Some <span class="bold"><b>preformatted</b></span> text Some <span class="bold"><b>preformatted</b></span> text
+ Some <span class="bold"><strong>preformatted</strong></span> text Some <span class="bold"><strong>preformatted</strong></span> text
 
- Some <span class="bold"><b>preformatted</b></span> text Some <span class="bold"><b>preformatted</b></span> text
+ Some <span class="bold"><strong>preformatted</strong></span> text Some <span class="bold"><strong>preformatted</strong></span> text
 
 </pre>
 <p>
           Notice that unlike Code, phrase markup such as font style is still permitted
- inside <tt class="literal">pre</tt> blocks.
+ inside <code class="literal">pre</code> blocks.
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.blockquote"></a>Blockquote</h4></div></div></div>
+<a name="quickbook.syntax.block.blockquote"></a><a class="link" href="block.html#quickbook.syntax.block.blockquote" title="Blockquote">Blockquote</a>
+</h4></div></div></div>
 <pre class="programlisting">[:sometext...]
 </pre>
 <div class="blockquote"><blockquote class="blockquote">
@@ -572,7 +578,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.admonitions"></a>Admonitions</h4></div></div></div>
+<a name="quickbook.syntax.block.admonitions"></a><a class="link" href="block.html#quickbook.syntax.block.admonitions" title="Admonitions">Admonitions</a>
+</h4></div></div></div>
 <pre class="programlisting">[note This is a note]
 [tip This is a tip]
 [important This is important]
@@ -587,7 +594,7 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
+<tr><td align="left" valign="top"><p>
             This is a note
           </p></td></tr>
 </table></div>
@@ -596,7 +603,7 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../../doc/html/images/tip.png"></td>
 <th align="left">Tip</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
+<tr><td align="left" valign="top"><p>
             This is a tip
           </p></td></tr>
 </table></div>
@@ -605,7 +612,7 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/html/images/important.png"></td>
 <th align="left">Important</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
+<tr><td align="left" valign="top"><p>
             This is important
           </p></td></tr>
 </table></div>
@@ -614,7 +621,7 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../../../doc/html/images/caution.png"></td>
 <th align="left">Caution</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
+<tr><td align="left" valign="top"><p>
             This is a caution
           </p></td></tr>
 </table></div>
@@ -623,19 +630,20 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
 <th align="left">Warning</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
+<tr><td align="left" valign="top"><p>
             This is a warning
           </p></td></tr>
 </table></div>
 <p>
           These are the only admonitions supported by DocBook.
- So, for example <tt class="literal">[information This is some information]</tt>
+ So, for example <code class="literal">[information This is some information]</code>
           is unlikely to produce the desired effect.
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.headings"></a>Headings</h4></div></div></div>
+<a name="quickbook.syntax.block.headings"></a><a class="link" href="block.html#quickbook.syntax.block.headings" title="Headings">Headings</a>
+</h4></div></div></div>
 <pre class="programlisting">[h1 Heading 1]
 [h2 Heading 2]
 [h3 Heading 3]
@@ -643,50 +651,51 @@
 [h5 Heading 5]
 [h6 Heading 6]
 </pre>
-<a name="quickbook.syntax.block.headings.heading_1"></a><h1>
-<a name="id459731"></a>
- Heading 1
- </h1>
-<a name="quickbook.syntax.block.headings.heading_2"></a><h2>
-<a name="id459755"></a>
- Heading 2
+<a name="quickbook.syntax.block.headings.heading_1"></a><h2>
+<a name="id4957165"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.headings.heading_1">Heading 1</a>
         </h2>
-<a name="quickbook.syntax.block.headings.heading_3"></a><h3>
-<a name="id459780"></a>
- Heading 3
+<a name="quickbook.syntax.block.headings.heading_2"></a><h3>
+<a name="id4957186"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.headings.heading_2">Heading 2</a>
         </h3>
-<a name="quickbook.syntax.block.headings.heading_4"></a><h4>
-<a name="id459804"></a>
- Heading 4
+<a name="quickbook.syntax.block.headings.heading_3"></a><h4>
+<a name="id4957206"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.headings.heading_3">Heading 3</a>
         </h4>
-<a name="quickbook.syntax.block.headings.heading_5"></a><h5>
-<a name="id459829"></a>
- Heading 5
+<a name="quickbook.syntax.block.headings.heading_4"></a><h5>
+<a name="id4957227"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.headings.heading_4">Heading 4</a>
         </h5>
+<a name="quickbook.syntax.block.headings.heading_5"></a><h6>
+<a name="id4957248"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.headings.heading_5">Heading 5</a>
+ </h6>
 <a name="quickbook.syntax.block.headings.heading_6"></a><h5>
-<a name="id459854"></a>
- Heading 6
+<a name="id4957268"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.headings.heading_6">Heading 6</a>
         </h5>
 <p>
           Headings 1-3 [h1 h2 and h3] will automatically have anchors with normalized
- names with <tt class="literal">name="section_id.normalized_header_text"</tt>
- (i.e. valid characters are <tt class="literal">a-z</tt>, <tt class="literal">A-Z</tt>,
- <tt class="literal">0-9</tt> and <tt class="literal">_</tt>. All non-valid characters
+ names with <code class="literal">name="section_id.normalized_header_text"</code>
+ (i.e. valid characters are <code class="literal">a-z</code>, <code class="literal">A-Z</code>,
+ <code class="literal">0-9</code> and <code class="literal">_</code>. All non-valid characters
           are converted to underscore and all upper-case are converted to lower-case.
- For example: Heading 1 in section Section 2 will be normalized to <tt class="literal">section_2.heading_1</tt>).
+ For example: Heading 1 in section Section 2 will be normalized to <code class="literal">section_2.heading_1</code>).
           You can use:
         </p>
 <pre class="programlisting">[link section_id.normalized_header_text The link text]
 </pre>
 <p>
- to link to them. See <a href="phrase.html#quickbook.syntax.phrase.anchor_links" title="Anchor links">Anchor
- links</a> and Section
+ to link to them. See <a class="link" href="phrase.html#quickbook.syntax.phrase.anchor_links" title="Anchor links">Anchor
+ links</a> and <a class="link" href="block.html#quickbook.syntax.block.section" title="Section">Section</a>
           for more info.
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.generic_heading"></a>Generic Heading</h4></div></div></div>
+<a name="quickbook.syntax.block.generic_heading"></a><a class="link" href="block.html#quickbook.syntax.block.generic_heading" title="Generic Heading">Generic Heading</a>
+</h4></div></div></div>
 <p>
           In cases when you don't want to care about the heading level (1 to 6),
           you can use the <span class="emphasis"><em>Generic Heading</em></span>:
@@ -733,7 +742,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.macros"></a>Macros</h4></div></div></div>
+<a name="quickbook.syntax.block.macros"></a><a class="link" href="block.html#quickbook.syntax.block.macros" title="Macros">Macros</a>
+</h4></div></div></div>
 <pre class="programlisting">[def macro_identifier some text]
 </pre>
 <p>
@@ -757,19 +767,19 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../../../doc/html/images/tip.png"></td>
 <th align="left">Tip</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
+<tr><td align="left" valign="top"><p>
             It's a good idea to use macro identifiers that are distinguishable. For
             instance, in this document, macro identifiers have two leading and trailing
- underscores (e.g. <tt class="literal">__spirit__</tt>). The reason is to avoid unwanted
+ underscores (e.g. <code class="literal">__spirit__</code>). The reason is to avoid unwanted
             macro replacement.
           </p></td></tr>
 </table></div>
 <p>
- Links (URLS) and images are good candidates for macros. <span class="bold"><b>1</b></span>)
+ Links (URLS) and images are good candidates for macros. <span class="bold"><strong>1</strong></span>)
           They tend to change a lot. It is a good idea to place all links and images
- in one place near the top to make it easy to make changes. <span class="bold"><b>2</b></span>)
- The syntax is not pretty. It's easier to read and write, e.g. <tt class="literal">__spirit__</tt>
- than <tt class="literal">[@http://spirit.sourceforge.net Spirit]</tt>.
+ in one place near the top to make it easy to make changes. <span class="bold"><strong>2</strong></span>)
+ The syntax is not pretty. It's easier to read and write, e.g. <code class="literal">__spirit__</code>
+ than <code class="literal">[@http://spirit.sourceforge.net Spirit]</code>.
         </p>
 <p>
           Some more examples:
@@ -778,8 +788,8 @@
 [def __spirit__ [@http://spirit.sourceforge.net Spirit]]
 </pre>
 <p>
- (See Images and
- Links)
+ (See <a class="link" href="phrase.html#quickbook.syntax.phrase.images" title="Images">Images</a> and
+ <a class="link" href="phrase.html#quickbook.syntax.phrase.links" title="Links">Links</a>)
         </p>
 <p>
           Invoking these macros:
@@ -795,15 +805,15 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.predefined_macros"></a><a href="block.html#quickbook.syntax.block.predefined_macros" title="Predefined
- Macros">Predefined
- Macros</a></h4></div></div></div>
+<a name="quickbook.syntax.block.predefined_macros"></a><a class="link" href="block.html#quickbook.syntax.block.predefined_macros" title="Predefined Macros">Predefined
+ Macros</a>
+</h4></div></div></div>
 <p>
           Quickbook has some predefined macros that you can already use.
         </p>
 <div class="table">
-<a name="id460310"></a><p class="title"><b>Table 3. Predefined Macros</b></p>
-<table class="table" summary="Predefined Macros">
+<a name="id4957675"></a><p class="title"><b>Table 3. Predefined Macros</b></p>
+<div class="table-contents"><table class="table" summary="Predefined Macros">
 <colgroup>
 <col>
 <col>
@@ -840,7 +850,7 @@
               </td>
 <td>
               <p>
- 2008-May-21
+ 2008-Jul-28
               </p>
               </td>
 </tr>
@@ -857,7 +867,7 @@
               </td>
 <td>
               <p>
- 11:54:31 AM
+ 10:49:54 PM
               </p>
               </td>
 </tr>
@@ -874,17 +884,19 @@
               </td>
 <td>
               <p>
- C:\dev\boost\tools\quickbook\doc\quickbook.qbk
+ C:\cygwin\home\ericne\boost\org\trunk\tools\quickbook\doc\quickbook.qbk
               </p>
               </td>
 </tr>
 </tbody>
-</table>
+</table></div>
 </div>
+<br class="table-break">
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.templates"></a>Templates</h4></div></div></div>
+<a name="quickbook.syntax.block.templates"></a><a class="link" href="block.html#quickbook.syntax.block.templates" title="Templates">Templates</a>
+</h4></div></div></div>
 <p>
           Templates provide a more versatile text substitution mechanism. Templates
           come in handy when you need to create parameterizable, multi-line, boilerplate
@@ -902,11 +914,11 @@
 
 ]
 </pre>
-<a name="quickbook.syntax.block.templates.template_identifier"></a><h5>
-<a name="id460490"></a>
- <a href="block.html#quickbook.syntax.block.templates.template_identifier">Template
+<a name="quickbook.syntax.block.templates.template_identifier"></a><h6>
+<a name="id4957835"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.templates.template_identifier">Template
           Identifier</a>
- </h5>
+ </h6>
 <p>
           Template identifiers can either consist of:
         </p>
@@ -920,11 +932,11 @@
             A single character punctuation (a non-alphanumeric printable character)
           </li>
 </ul></div>
-<a name="quickbook.syntax.block.templates.formal_template_arguments"></a><h5>
-<a name="id460537"></a>
- <a href="block.html#quickbook.syntax.block.templates.formal_template_arguments">Formal
+<a name="quickbook.syntax.block.templates.formal_template_arguments"></a><h6>
+<a name="id4957876"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.templates.formal_template_arguments">Formal
           Template Arguments</a>
- </h5>
+ </h6>
 <p>
           Template formal arguments are identifiers consisting of an initial alphabetic
           character or the underscore, followed by zero or more alphanumeric characters
@@ -932,19 +944,19 @@
         </p>
 <p>
           A template formal argument temporarily hides a template of the same name
- at the point where the <a href="block.html#quickbook.syntax.block.templates.template_expansion">template
- is expanded</a>. Note that the body of the <tt class="literal">person</tt>
- template above refers to <tt class="literal">name</tt> <tt class="literal">age</tt>
- and <tt class="literal">what</tt> as <tt class="literal">[name]</tt> <tt class="literal">[age]</tt>
- and <tt class="literal">[what]</tt>. <tt class="literal">name</tt> <tt class="literal">age</tt>
- and <tt class="literal">what</tt> are actually templates that exist in the duration
+ at the point where the <a class="link" href="block.html#quickbook.syntax.block.templates.template_expansion">template
+ is expanded</a>. Note that the body of the <code class="literal">person</code>
+ template above refers to <code class="literal">name</code> <code class="literal">age</code>
+ and <code class="literal">what</code> as <code class="literal">[name]</code> <code class="literal">[age]</code>
+ and <code class="literal">[what]</code>. <code class="literal">name</code> <code class="literal">age</code>
+ and <code class="literal">what</code> are actually templates that exist in the duration
           of the template call.
         </p>
-<a name="quickbook.syntax.block.templates.template_body"></a><h5>
-<a name="id460656"></a>
- <a href="block.html#quickbook.syntax.block.templates.template_body">Template
+<a name="quickbook.syntax.block.templates.template_body"></a><h6>
+<a name="id4957984"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.templates.template_body">Template
           Body</a>
- </h5>
+ </h6>
 <p>
           The template body can be just about any QuickBook block or phrase. There
           are actually two forms. Templates may be phrase or block level. Phrase
@@ -965,11 +977,11 @@
           Phrase templates are typically expanded as part of phrases. Like macros,
           block level elements are not allowed in phrase templates.
         </p>
-<a name="quickbook.syntax.block.templates.template_expansion"></a><h5>
-<a name="id460715"></a>
- <a href="block.html#quickbook.syntax.block.templates.template_expansion">Template
+<a name="quickbook.syntax.block.templates.template_expansion"></a><h6>
+<a name="id4958041"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.templates.template_expansion">Template
           Expansion</a>
- </h5>
+ </h6>
 <p>
           You expand a template this way:
         </p>
@@ -1002,7 +1014,7 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Caution]" src="../../../../../../doc/html/images/caution.png"></td>
 <th align="left">Caution</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
+<tr><td align="left" valign="top"><p>
             A word of caution: Templates are recursive. A template can call another
             template or even itself, directly or indirectly. There are no control
             structures in QuickBook (yet) so this will always mean infinite recursion.
@@ -1012,15 +1024,15 @@
 </table></div>
 <p>
           Each actual argument can be a word, a text fragment or just about any
- QuickBook phrase. Arguments
- are separated by the double dot <tt class="literal">".."</tt> and terminated
+ <a class="link" href="phrase.html" title="Phrase Level Elements">QuickBook phrase</a>. Arguments
+ are separated by the double dot <code class="literal">".."</code> and terminated
           by the close parenthesis.
         </p>
-<a name="quickbook.syntax.block.templates.nullary_templates"></a><h5>
-<a name="id460822"></a>
- <a href="block.html#quickbook.syntax.block.templates.nullary_templates">Nullary
+<a name="quickbook.syntax.block.templates.nullary_templates"></a><h6>
+<a name="id4958138"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.templates.nullary_templates">Nullary
           Templates</a>
- </h5>
+ </h6>
 <p>
           Nullary templates look and act like simple macros. Example:
         </p>
@@ -1035,14 +1047,14 @@
           We have:
         </p>
 <p>
- Some squiggles...<span class="bold"><b>&#945;&#946;</b></span>
+ Some squiggles...<span class="bold"><strong>&#945;&#946;</strong></span>
         </p>
 <p>
           The difference with macros are
         </p>
 <div class="itemizedlist"><ul type="disc">
 <li>
- The explicit <a href="block.html#quickbook.syntax.block.templates.template_expansion">template
+ The explicit <a class="link" href="block.html#quickbook.syntax.block.templates.template_expansion">template
             expansion syntax</a>. This is an advantage because, now, we don't
             have to use obscure naming conventions like double underscores (e.g.
             __alpha__) to avoid unwanted macro replacement.
@@ -1055,7 +1067,7 @@
           </li>
 </ul></div>
 <p>
- The empty brackets after the template identifier (<tt class="literal">alpha[]</tt>)
+ The empty brackets after the template identifier (<code class="literal">alpha[]</code>)
           indicates no arguments. If the template body does not look like a template
           argument list, we can elide the empty brackets. Example:
         </p>
@@ -1071,15 +1083,15 @@
           We have:
         </p>
 <p>
- Here's a quote from Aristotle: <span class="bold"><b><span class="emphasis"><em>Education
- is the best provision for the journey to old age.</em></span></b></span>.
+ Here's a quote from Aristotle: <span class="bold"><strong><span class="emphasis"><em>Education
+ is the best provision for the journey to old age.</em></span></strong></span>.
         </p>
 <p>
           The disadvantage is that you can't avoid the space between the template
- identifier, <tt class="computeroutput"><span class="identifier">aristotle_quote</span></tt>,
+ identifier, <code class="computeroutput"><span class="identifier">aristotle_quote</span></code>,
           and the template body "Aristotle...". This space will be part
           of the template body. If that space is unwanted, use empty brackets or
- use the space escape: "<tt class="computeroutput"><span class="special">\</span> </tt>".
+ use the space escape: "<code class="computeroutput"><span class="special">\</span> </code>".
           Example:
         </p>
 <pre class="programlisting">[template tag\ _tag]
@@ -1093,26 +1105,26 @@
           We have:
         </p>
 <p>
- <tt class="computeroutput"><span class="keyword">struct</span></tt> x_tag;
+ <code class="computeroutput"><span class="keyword">struct</span></code> x_tag;
         </p>
 <p>
           You have a couple of ways to do it. I personally prefer the explicit empty
           brackets, though.
         </p>
-<a name="quickbook.syntax.block.templates.simple_arguments"></a><h5>
-<a name="id461056"></a>
- <a href="block.html#quickbook.syntax.block.templates.simple_arguments">Simple
+<a name="quickbook.syntax.block.templates.simple_arguments"></a><h6>
+<a name="id4958354"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.templates.simple_arguments">Simple
           Arguments</a>
- </h5>
+ </h6>
 <p>
- As mentioned, arguments are separated by the double dot <tt class="literal">".."</tt>.
+ As mentioned, arguments are separated by the double dot <code class="literal">".."</code>.
           If there are less arguments passed than expected, QuickBook attempts to
           break the last argument into two or more arguments following this logic:
         </p>
 <div class="itemizedlist"><ul type="disc">
 <li>
- Break the last argument into two, at the first space found (<tt class="literal">'',
- '\n', \t' or '\r'</tt>).
+ Break the last argument into two, at the first space found (<code class="literal">'',
+ '\n', \t' or '\r'</code>).
           </li>
 <li>
             Repeat until there are enough arguments or if there are no more spaces
@@ -1133,8 +1145,8 @@
         </p>
 <p>
           "w x y z" is initially treated as a single argument because we
- didn't supply any <tt class="literal">".."</tt> separators. However,
- since <tt class="literal">simple</tt> expects 4 arguments, "w x y z"
+ didn't supply any <code class="literal">".."</code> separators. However,
+ since <code class="literal">simple</code> expects 4 arguments, "w x y z"
           is broken down iteratively (applying the logic above) until we have "w",
           "x", "y" and "z".
         </p>
@@ -1155,8 +1167,8 @@
         </p>
 <p>
           It should be obvious now that for simple arguments with no spaces, we can
- get by without separating the arguments with <tt class="literal">".."</tt>
- separators. It is possible to combine <tt class="literal">".."</tt>
+ get by without separating the arguments with <code class="literal">".."</code>
+ separators. It is possible to combine <code class="literal">".."</code>
           separators with the argument passing simplification presented above. Example:
         </p>
 <pre class="programlisting">[simple what do you think ..m a n?]
@@ -1167,17 +1179,17 @@
 <p>
           what do you think man?
         </p>
-<a name="quickbook.syntax.block.templates.punctuation_templates"></a><h5>
-<a name="id461226"></a>
- <a href="block.html#quickbook.syntax.block.templates.punctuation_templates">Punctuation
+<a name="quickbook.syntax.block.templates.punctuation_templates"></a><h6>
+<a name="id4958508"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.templates.punctuation_templates">Punctuation
           Templates</a>
- </h5>
+ </h6>
 <p>
           With templates, one of our objectives is to allow us to rewrite QuickBook
           in QuickBook (as a qbk library). For that to happen, we need to accommodate
           single character punctuation templates which are fairly common in QuickBook.
           You might have noticed that single character punctuations are allowed as
- <a href="block.html#quickbook.syntax.block.templates.template_identifier">template
+ <a class="link" href="block.html#quickbook.syntax.block.templates.template_identifier">template
           identifiers</a>. Example:
         </p>
 <pre class="programlisting">[template ![bar] &lt;hey&gt;[bar]&lt;/hey&gt;]
@@ -1195,7 +1207,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.blurbs"></a>Blurbs</h4></div></div></div>
+<a name="quickbook.syntax.block.blurbs"></a><a class="link" href="block.html#quickbook.syntax.block.blurbs" title="Blurbs">Blurbs</a>
+</h4></div></div></div>
 <pre class="programlisting">[blurb :-) [*An eye catching advertisement or note...]
 
     __spirit__ is an object-oriented recursive-descent parser generator framework
@@ -1208,9 +1221,10 @@
           will generate this:
         </p>
 <div class="sidebar">
+<p class="title"><b></b></p>
 <p>
- <span class="inlinemediaobject"><img src="../../images/smiley.png" alt="smiley"></span> <span class="bold"><b>An eye catching advertisement
- or note...</b></span>
+ <span class="inlinemediaobject"><img src="../../images/smiley.png" alt="smiley"></span> <span class="bold"><strong>An eye catching advertisement
+ or note...</strong></span>
         </p>
 <p>
           <a href="http://spirit.sourceforge.net" target="_top">Spirit</a> is an object-oriented
@@ -1224,15 +1238,16 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
- Prefer admonitions
+<tr><td align="left" valign="top"><p>
+ Prefer <a class="link" href="block.html#quickbook.syntax.block.admonitions" title="Admonitions">admonitions</a>
             wherever appropriate.
           </p></td></tr>
 </table></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.tables"></a>Tables</h4></div></div></div>
+<a name="quickbook.syntax.block.tables"></a><a class="link" href="block.html#quickbook.syntax.block.tables" title="Tables">Tables</a>
+</h4></div></div></div>
 <pre class="programlisting">[table A Simple Table
     [[Heading 1] [Heading 2] [Heading 3]]
     [[R0-C0] [R0-C1] [R0-C2]]
@@ -1244,8 +1259,8 @@
           will generate:
         </p>
 <div class="table">
-<a name="id461429"></a><p class="title"><b>Table 4. A Simple Table</b></p>
-<table class="table" summary="A Simple Table">
+<a name="id4958692"></a><p class="title"><b>Table 4. A Simple Table</b></p>
+<div class="table-contents"><table class="table" summary="A Simple Table">
 <colgroup>
 <col>
 <col>
@@ -1321,11 +1336,11 @@
               </td>
 </tr>
 </tbody>
-</table>
+</table></div>
 </div>
-<p>
+<br class="table-break"><p>
           The table title is optional. The first row of the table is automatically
- treated as the table header; that is, it is wrapped in <tt class="literal">&lt;thead&gt;...&lt;/thead&gt;</tt>
+ treated as the table header; that is, it is wrapped in <code class="literal">&lt;thead&gt;...&lt;/thead&gt;</code>
           XML tags. Note that unlike the original QuickDoc, the columns are nested
           in [ cells... ]. The syntax is free-format and allows big cells to be formatted
           nicely. Example:
@@ -1355,8 +1370,8 @@
           and thus:
         </p>
 <div class="table">
-<a name="id461593"></a><p class="title"><b>Table 5. Table with fat cells</b></p>
-<table class="table" summary="Table with fat cells">
+<a name="id4958841"></a><p class="title"><b>Table 5. Table with fat cells</b></p>
+<div class="table-contents"><table class="table" summary="Table with fat cells">
 <colgroup>
 <col>
 <col>
@@ -1408,9 +1423,9 @@
               </td>
 </tr>
 </tbody>
-</table>
+</table></div>
 </div>
-<p>
+<br class="table-break"><p>
           Here's how to have preformatted blocks of code in a table cell:
         </p>
 <pre class="programlisting">[table Table with code
@@ -1430,8 +1445,8 @@
 ]
 </pre>
 <div class="table">
-<a name="id461711"></a><p class="title"><b>Table 6. Table with code</b></p>
-<table class="table" summary="Table with code">
+<a name="id4958948"></a><p class="title"><b>Table 6. Table with code</b></p>
+<div class="table-contents"><table class="table" summary="Table with code">
 <colgroup>
 <col>
 <col>
@@ -1458,8 +1473,7 @@
               <p>
                 
 </p>
-<pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
 
 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
 <span class="special">{</span>
@@ -1471,12 +1485,14 @@
               </p>
               </td>
 </tr></tbody>
-</table>
+</table></div>
 </div>
+<br class="table-break">
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.variable_lists"></a>Variable Lists</h4></div></div></div>
+<a name="quickbook.syntax.block.variable_lists"></a><a class="link" href="block.html#quickbook.syntax.block.variable_lists" title="Variable Lists">Variable Lists</a>
+</h4></div></div></div>
 <pre class="programlisting">[variablelist A Variable List
     [[term 1] [The definition of term 1]]
     [[term 2] [The definition of term 2]]
@@ -1521,7 +1537,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.include"></a>Include</h4></div></div></div>
+<a name="quickbook.syntax.block.include"></a><a class="link" href="block.html#quickbook.syntax.block.include" title="Include">Include</a>
+</h4></div></div></div>
 <p>
           You can include one QuickBook file from another. The syntax is simply:
         </p>
@@ -1541,7 +1558,7 @@
           </li>
 </ul></div>
 <p>
- The <tt class="literal">[include]</tt> directive lets you specify a document
+ The <code class="literal">[include]</code> directive lets you specify a document
           id to use for the included file. When this id is not explicitly specified,
           the id defaults to the filename ("someother", in the example
           above). You can specify the id like this:
@@ -1552,12 +1569,13 @@
           All auto-generated anchors will use the document id as a unique prefix.
           So for instance, if there is a top section in someother.qbk named "Intro",
           the named anchor for that section will be "someid.intro", and
- you can link to it with <tt class="literal">[link someid.intro The Intro]</tt>.
+ you can link to it with <code class="literal">[link someid.intro The Intro]</code>.
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.block.import"></a>Import</h4></div></div></div>
+<a name="quickbook.syntax.block.import"></a><a class="link" href="block.html#quickbook.syntax.block.import" title="Import">Import</a>
+</h4></div></div></div>
 <p>
           When documenting code, you'd surely need to present code from actual source
           files. While it is possible to copy some code and paste them in your QuickBook
@@ -1569,10 +1587,10 @@
 <p>
           QuickBook's import facility provides a nice solution.
         </p>
-<a name="quickbook.syntax.block.import.example"></a><h5>
-<a name="id462135"></a>
- Example
- </h5>
+<a name="quickbook.syntax.block.import.example"></a><h6>
+<a name="id4959336"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.import.example">Example</a>
+ </h6>
 <p>
           You can effortlessly import code snippets from source code into your QuickBook.
           The following illustrates how this is done:
@@ -1589,8 +1607,8 @@
 <p>
           collects specially marked-up code snippets from stub.cpp
           and places them in your QuickBook file as virtual templates. Each of the
- specially marked-up code snippets has a name (e.g. <tt class="computeroutput"><span class="identifier">foo</span></tt>
- and <tt class="computeroutput"><span class="identifier">bar</span></tt> in the example
+ specially marked-up code snippets has a name (e.g. <code class="computeroutput"><span class="identifier">foo</span></code>
+ and <code class="computeroutput"><span class="identifier">bar</span></code> in the example
           above). This shall be the template identifier for that particular code
           snippet. The second and third line above does the actual template expansion:
         </p>
@@ -1603,7 +1621,7 @@
 <p>
           </p>
 <p>
- This is the <span class="bold"><b><span class="emphasis"><em>foo</em></span></b></span>
+ This is the <span class="bold"><strong><span class="emphasis"><em>foo</em></span></strong></span>
             function.
           </p>
 <p>
@@ -1631,8 +1649,7 @@
 <p>
             
 </p>
-<pre class="programlisting">
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">foo</span><span class="special">()</span>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">foo</span><span class="special">()</span>
 <span class="special">{</span>
     <span class="comment">// return 'em, foo man!
 </span> <span class="keyword">return</span> <span class="string">"foo"</span><span class="special">;</span>
@@ -1643,7 +1660,7 @@
 <p>
           </p>
 <p>
- This is the <span class="bold"><b><span class="emphasis"><em>bar</em></span></b></span>
+ This is the <span class="bold"><strong><span class="emphasis"><em>bar</em></span></strong></span>
             function
           </p>
 <p>
@@ -1651,8 +1668,7 @@
 <p>
             
 </p>
-<pre class="programlisting">
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">bar</span><span class="special">()</span>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">bar</span><span class="special">()</span>
 <span class="special">{</span>
     <span class="comment">// return 'em, bar man!
 </span> <span class="keyword">return</span> <span class="string">"bar"</span><span class="special">;</span>
@@ -1666,43 +1682,40 @@
           </p>
 <p>
         </p>
-<a name="quickbook.syntax.block.import.code_snippet_markup"></a><h5>
-<a name="id462439"></a>
- <a href="block.html#quickbook.syntax.block.import.code_snippet_markup">Code
+<a name="quickbook.syntax.block.import.code_snippet_markup"></a><h6>
+<a name="id4959612"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.import.code_snippet_markup">Code
           Snippet Markup</a>
- </h5>
+ </h6>
 <p>
           Note how the code snippets in stub.cpp
           get marked up. We use distinguishable comments following the form:
         </p>
-<pre class="programlisting">
-<span class="comment">//[id
+<pre class="programlisting"><span class="comment">//[id
 </span><span class="identifier">some</span> <span class="identifier">code</span> <span class="identifier">here</span>
 <span class="comment">//]
 </span></pre>
 <p>
           The first comment line above initiates a named code-snippet. This prefix
- will not be visible in quickbook. The entire code-snippet in between <tt class="computeroutput"><span class="comment">//[id</span></tt> and <tt class="computeroutput"><span class="comment">//]</span></tt>
+ will not be visible in quickbook. The entire code-snippet in between <code class="computeroutput"><span class="comment">//[id</span></code> and <code class="computeroutput"><span class="comment">//]</span></code>
           will be inserted as a template in quickbook with name <span class="emphasis"><em><span class="emphasis"><em>id</em></span></em></span>.
- The comment <tt class="computeroutput"><span class="comment">//]</span></tt> ends a code-snippet
+ The comment <code class="computeroutput"><span class="comment">//]</span></code> ends a code-snippet
           This too will not be visible in quickbook.
         </p>
-<a name="quickbook.syntax.block.import.special_comments"></a><h5>
-<a name="id462565"></a>
- <a href="block.html#quickbook.syntax.block.import.special_comments">Special
+<a name="quickbook.syntax.block.import.special_comments"></a><h6>
+<a name="id4959722"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.import.special_comments">Special
           Comments</a>
- </h5>
+ </h6>
 <p>
           Special comments of the form:
         </p>
-<pre class="programlisting">
-<span class="comment">//` some [*quickbook] markup here
+<pre class="programlisting"><span class="comment">//` some [*quickbook] markup here
 </span></pre>
 <p>
           and:
         </p>
-<pre class="programlisting">
-<span class="comment">/*` some [*quickbook] markup here */</span>
+<pre class="programlisting"><span class="comment">/*` some [*quickbook] markup here */</span>
 </pre>
 <p>
           will be parsed by QuickBook. This can contain quickbook <span class="emphasis"><em>blocks</em></span>
@@ -1713,20 +1726,17 @@
 <p>
           Special comments of the form:
         </p>
-<pre class="programlisting">
-<span class="comment">/*&lt;- this C++ comment will be ignored -&gt;*/</span>
+<pre class="programlisting"><span class="comment">/*&lt;- this C++ comment will be ignored -&gt;*/</span>
 </pre>
 <p>
           or
         </p>
-<pre class="programlisting">
-<span class="comment">/*&lt;-*/</span> <span class="string">"this c++ code will be ignored"</span> <span class="comment">/*-&gt;*/</span>
+<pre class="programlisting"><span class="comment">/*&lt;-*/</span> <span class="string">"this c++ code will be ignored"</span> <span class="comment">/*-&gt;*/</span>
 </pre>
 <p>
           or
         </p>
-<pre class="programlisting">
-<span class="comment">//&lt;-
+<pre class="programlisting"><span class="comment">//&lt;-
 </span><span class="keyword">private</span><span class="special">:</span>
     <span class="keyword">int</span> <span class="identifier">some_member</span><span class="special">;</span>
 <span class="comment">//-&gt;
@@ -1735,15 +1745,14 @@
           can be used to inhibit code from passing through to quickbook. All text
           between the delimeters will simply be ignored.
         </p>
-<a name="quickbook.syntax.block.import.callouts"></a><h5>
-<a name="id462744"></a>
- Callouts
- </h5>
+<a name="quickbook.syntax.block.import.callouts"></a><h6>
+<a name="id4959882"></a>
+ <a class="link" href="block.html#quickbook.syntax.block.import.callouts">Callouts</a>
+ </h6>
 <p>
           Special comments of the form:
         </p>
-<pre class="programlisting">
-<span class="comment">/*&lt; some [*quickbook] markup here &gt;*/</span>
+<pre class="programlisting"><span class="comment">/*&lt; some [*quickbook] markup here &gt;*/</span>
 </pre>
 <p>
           will be regarded as callouts. These will be collected, numbered and rendered
@@ -1756,10 +1765,9 @@
 <p>
             
 </p>
-<pre class="programlisting">
-<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">foo_bar</span><span class="special">()</span> <span class="callout_bug"><a name="quickbook0co" href="block.html#quickbook0"><img src="../../images/callouts/1.png" alt="1" border="0"></a></span>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">foo_bar</span><span class="special">()</span> <span class="callout_bug"><a class="co" name="quickbook0co" href="block.html#quickbook0"><img src="../../images/callouts/1.png" alt="1" border="0"></a></span>
 <span class="special">{</span>
- <span class="keyword">return</span> <span class="string">"foo-bar"</span><span class="special">;</span> <span class="callout_bug"><a name="quickbook1co" href="block.html#quickbook1"><img src="../../images/callouts/2.png" alt="2" border="0"></a></span>
+ <span class="keyword">return</span> <span class="string">"foo-bar"</span><span class="special">;</span> <span class="callout_bug"><a class="co" name="quickbook1co" href="block.html#quickbook1"><img src="../../images/callouts/2.png" alt="2" border="0"></a></span>
 <span class="special">}</span>
 </pre>
 <p>
@@ -1770,14 +1778,12 @@
             </p>
 <div class="calloutlist"><table border="0" summary="Callout list">
 <tr>
-<td width="5%" valign="top" align="left">
-<a name="quickbook0"></a>1 </td>
+<td width="5%" valign="top" align="left"><p><a name="quickbook0"></a>1 </p></td>
 <td valign="top" align="left"><p> The <span class="emphasis"><em>Mythical</em></span> FooBar. See <a href="http://en.wikipedia.org/wiki/Foobar" target="_top">Foobar
             for details</a> </p></td>
 </tr>
 <tr>
-<td width="5%" valign="top" align="left">
-<a name="quickbook1"></a>2 </td>
+<td width="5%" valign="top" align="left"><p><a name="quickbook1"></a>2 </p></td>
 <td valign="top" align="left"><p> return 'em, foo-bar man! </p></td>
 </tr>
 </table></div>
@@ -1788,8 +1794,7 @@
 <p>
           This is the actual code:
         </p>
-<pre class="programlisting">
-<span class="comment">//[ foo_bar
+<pre class="programlisting"><span class="comment">//[ foo_bar
 </span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">foo_bar</span><span class="special">()</span> <span class="comment">/*&lt; The /Mythical/ FooBar.
                       See [@http://en.wikipedia.org/wiki/Foobar Foobar for details] &gt;*/</span>
 <span class="special">{</span>
@@ -1803,8 +1808,7 @@
           however. They get in the way of the clarity of the code. Another special
           callout comment style is available:
         </p>
-<pre class="programlisting">
-<span class="comment">/*&lt;&lt; some [*quickbook] markup here &gt;&gt;*/</span>
+<pre class="programlisting"><span class="comment">/*&lt;&lt; some [*quickbook] markup here &gt;&gt;*/</span>
 </pre>
 <p>
           This is the line-oriented version of the callout. With this, the "bug"
@@ -1816,25 +1820,24 @@
 <p>
             
 </p>
-<pre class="programlisting">
-<span class="keyword">class</span> <span class="identifier">x</span>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">x</span>
 <span class="special">{</span>
 <span class="keyword">public</span><span class="special">:</span>
 
- <span class="line_callout_bug"><a name="quickbook2co" href="block.html#quickbook2"><img src="../../images/callouts/1.png" alt="1" border="0"></a></span><span class="identifier">x</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">n</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+ <span class="line_callout_bug"><a class="co" name="quickbook2co" href="block.html#quickbook2"><img src="../../images/callouts/1.png" alt="1" border="0"></a></span><span class="identifier">x</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">n</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
     <span class="special">{</span>
     <span class="special">}</span>
 
- <span class="line_callout_bug"><a name="quickbook3co" href="block.html#quickbook3"><img src="../../images/callouts/2.png" alt="2" border="0"></a></span><span class="special">~</span><span class="identifier">x</span><span class="special">()</span>
+ <span class="line_callout_bug"><a class="co" name="quickbook3co" href="block.html#quickbook3"><img src="../../images/callouts/2.png" alt="2" border="0"></a></span><span class="special">~</span><span class="identifier">x</span><span class="special">()</span>
     <span class="special">{</span>
     <span class="special">}</span>
 
- <span class="line_callout_bug"><a name="quickbook4co" href="block.html#quickbook4"><img src="../../images/callouts/3.png" alt="3" border="0"></a></span><span class="keyword">int</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="line_callout_bug"><a class="co" name="quickbook4co" href="block.html#quickbook4"><img src="../../images/callouts/3.png" alt="3" border="0"></a></span><span class="keyword">int</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span>
     <span class="special">{</span>
         <span class="keyword">return</span> <span class="identifier">n</span><span class="special">;</span>
     <span class="special">}</span>
 
- <span class="line_callout_bug"><a name="quickbook5co" href="block.html#quickbook5"><img src="../../images/callouts/4.png" alt="4" border="0"></a></span><span class="keyword">void</span> <span class="identifier">set</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n_</span><span class="special">)</span>
+ <span class="line_callout_bug"><a class="co" name="quickbook5co" href="block.html#quickbook5"><img src="../../images/callouts/4.png" alt="4" border="0"></a></span><span class="keyword">void</span> <span class="identifier">set</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n_</span><span class="special">)</span>
     <span class="special">{</span>
         <span class="identifier">n</span> <span class="special">=</span> <span class="identifier">n_</span><span class="special">;</span>
     <span class="special">}</span>
@@ -1848,25 +1851,21 @@
             </p>
 <div class="calloutlist"><table border="0" summary="Callout list">
 <tr>
-<td width="5%" valign="top" align="left">
-<a name="quickbook2"></a>1 </td>
+<td width="5%" valign="top" align="left"><p><a name="quickbook2"></a>1 </p></td>
 <td valign="top" align="left"><p> Constructor </p></td>
 </tr>
 <tr>
-<td width="5%" valign="top" align="left">
-<a name="quickbook3"></a>2 </td>
+<td width="5%" valign="top" align="left"><p><a name="quickbook3"></a>2 </p></td>
 <td valign="top" align="left"><p> Destructor </p></td>
 </tr>
 <tr>
-<td width="5%" valign="top" align="left">
-<a name="quickbook4"></a>3 </td>
-<td valign="top" align="left"><p> Get the <tt class="computeroutput"><span class="identifier">n</span></tt>
+<td width="5%" valign="top" align="left"><p><a name="quickbook4"></a>3 </p></td>
+<td valign="top" align="left"><p> Get the <code class="computeroutput"><span class="identifier">n</span></code>
             member variable </p></td>
 </tr>
 <tr>
-<td width="5%" valign="top" align="left">
-<a name="quickbook5"></a>4 </td>
-<td valign="top" align="left"><p> Set the <tt class="computeroutput"><span class="identifier">n</span></tt>
+<td width="5%" valign="top" align="left"><p><a name="quickbook5"></a>4 </p></td>
+<td valign="top" align="left"><p> Set the <code class="computeroutput"><span class="identifier">n</span></code>
             member variable </p></td>
 </tr>
 </table></div>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/comments.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/comments.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/comments.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -3,19 +3,19 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Comments</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Quickbook 1.4">
-<link rel="up" href="../syntax.html" title=" Syntax Summary">
-<link rel="prev" href="../syntax.html" title=" Syntax Summary">
-<link rel="next" href="phrase.html" title=" Phrase Level Elements">
+<link rel="up" href="../syntax.html" title="Syntax Summary">
+<link rel="prev" href="../syntax.html" title="Syntax Summary">
+<link rel="next" href="phrase.html" title="Phrase Level Elements">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="quickbook.syntax.comments"></a>Comments</h3></div></div></div>
+<a name="quickbook.syntax.comments"></a><a class="link" href="comments.html" title="Comments">Comments</a>
+</h3></div></div></div>
 <p>
         Can be placed anywhere.
       </p>

Modified: branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/phrase.html
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/phrase.html (original)
+++ branches/proto/v4/tools/quickbook/doc/html/quickbook/syntax/phrase.html 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -1,21 +1,21 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title> Phrase Level Elements</title>
+<title>Phrase Level Elements</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
 <link rel="start" href="../../index.html" title="Quickbook 1.4">
-<link rel="up" href="../syntax.html" title=" Syntax Summary">
+<link rel="up" href="../syntax.html" title="Syntax Summary">
 <link rel="prev" href="comments.html" title="Comments">
-<link rel="next" href="block.html" title=" Block Level Elements">
+<link rel="next" href="block.html" title="Block Level Elements">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
 <td align="center">Home</td>
 <td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
 <td align="center">More</td>
 </tr></table>
 <hr>
@@ -24,7 +24,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="quickbook.syntax.phrase"></a> Phrase Level Elements</h3></div></div></div>
+<a name="quickbook.syntax.phrase"></a><a class="link" href="phrase.html" title="Phrase Level Elements"> Phrase Level Elements</a>
+</h3></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section">Font Styles</span></dt>
 <dt><span class="section">Replaceable</span></dt>
@@ -48,14 +49,15 @@
 </dl></div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.font_styles"></a>Font Styles</h4></div></div></div>
+<a name="quickbook.syntax.phrase.font_styles"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.font_styles" title="Font Styles">Font Styles</a>
+</h4></div></div></div>
 <pre class="programlisting">['italic], [*bold], [_underline], [^teletype], [-strikethrough]
 </pre>
 <p>
           will generate:
         </p>
 <p>
- <span class="emphasis"><em>italic</em></span>, <span class="bold"><b>bold</b></span>, <span class="underline">underline</span>, <tt class="literal">teletype</tt>, <span class="strikethrough">strikethrough</span>
+ <span class="emphasis"><em>italic</em></span>, <span class="bold"><strong>bold</strong></span>, <span class="underline">underline</span>, <code class="literal">teletype</code>, <span class="strikethrough">strikethrough</span>
         </p>
 <p>
           Like all non-terminal phrase level elements, this can of course be nested:
@@ -66,12 +68,13 @@
           will generate:
         </p>
 <p>
- <span class="bold"><b><span class="emphasis"><em>bold-italic</em></span></b></span>
+ <span class="bold"><strong><span class="emphasis"><em>bold-italic</em></span></strong></span>
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.replaceable"></a>Replaceable</h4></div></div></div>
+<a name="quickbook.syntax.phrase.replaceable"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.replaceable" title="Replaceable">Replaceable</a>
+</h4></div></div></div>
 <p>
           When you want content that may or must be replaced by the user, use the
           syntax:
@@ -82,14 +85,15 @@
           This will generate:
         </p>
 <p>
- <i class="replaceable"><tt>
+ <em class="replaceable"><code>
             replacement
- </tt></i>
+ </code></em>
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.quotations"></a>Quotations</h4></div></div></div>
+<a name="quickbook.syntax.phrase.quotations"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.quotations" title="Quotations">Quotations</a>
+</h4></div></div></div>
 <pre class="programlisting">["A question that sometimes drives me hazy: am I or are the others crazy?]--Einstein
 </pre>
 <p>
@@ -120,7 +124,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.simple_formatting"></a>Simple formatting</h4></div></div></div>
+<a name="quickbook.syntax.phrase.simple_formatting"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.simple_formatting" title="Simple formatting">Simple formatting</a>
+</h4></div></div></div>
 <p>
           Simple markup for formatting text, common in many applications, is now
           supported:
@@ -131,12 +136,12 @@
           will generate:
         </p>
 <p>
- <span class="emphasis"><em>italic</em></span>, <span class="bold"><b>bold</b></span>, <span class="underline">underline</span>, <tt class="literal">teletype</tt>
+ <span class="emphasis"><em>italic</em></span>, <span class="bold"><strong>bold</strong></span>, <span class="underline">underline</span>, <code class="literal">teletype</code>
         </p>
 <p>
           Unlike QuickBook's standard formatting scheme, the rules for simpler alternatives
           are much stricter
- <sup>[<a name="id456069" href="#ftn.id456069">1</a>]</sup>
+ <sup>[<a name="id4913148" href="#ftn.id4913148" class="footnote">1</a>]</sup>
           .
         </p>
 <div class="itemizedlist"><ul type="disc">
@@ -166,14 +171,13 @@
           </li>
 <li>
             A line starting with the star will be interpreted as an unordered list.
- See <a href="block.html#quickbook.syntax.block.lists.unordered_lists" title="Unordered
- lists">Unordered
+ See <a class="link" href="block.html#quickbook.syntax.block.lists.unordered_lists" title="Unordered lists">Unordered
             lists</a>.
           </li>
 </ul></div>
 <div class="table">
-<a name="id456153"></a><p class="title"><b>Table 1. More Formatting Samples</b></p>
-<table class="table" summary="More Formatting Samples">
+<a name="id4913229"></a><p class="title"><b>Table 1. More Formatting Samples</b></p>
+<div class="table-contents"><table class="table" summary="More Formatting Samples">
 <colgroup>
 <col>
 <col>
@@ -194,31 +198,31 @@
 <tr>
 <td>
               <p>
- <tt class="literal">*Bold*</tt>
+ <code class="literal">*Bold*</code>
               </p>
               </td>
 <td>
               <p>
- <span class="bold"><b>Bold</b></span>
+ <span class="bold"><strong>Bold</strong></span>
               </p>
               </td>
 </tr>
 <tr>
 <td>
               <p>
- <tt class="literal">*Is bold*</tt>
+ <code class="literal">*Is bold*</code>
               </p>
               </td>
 <td>
               <p>
- <span class="bold"><b>Is bold</b></span>
+ <span class="bold"><strong>Is bold</strong></span>
               </p>
               </td>
 </tr>
 <tr>
 <td>
               <p>
- <tt class="literal">* Not bold* *Not bold * * Not bold *</tt>
+ <code class="literal">* Not bold* *Not bold * * Not bold *</code>
               </p>
               </td>
 <td>
@@ -230,7 +234,7 @@
 <tr>
 <td>
               <p>
- <tt class="literal">This*Isn't*Bold (no bold)</tt>
+ <code class="literal">This*Isn't*Bold (no bold)</code>
               </p>
               </td>
 <td>
@@ -242,31 +246,31 @@
 <tr>
 <td>
               <p>
- <tt class="literal">(*Bold Inside*) (parenthesis not bold)</tt>
+ <code class="literal">(*Bold Inside*) (parenthesis not bold)</code>
               </p>
               </td>
 <td>
               <p>
- (<span class="bold"><b>Bold Inside</b></span>) (parenthesis not bold)
+ (<span class="bold"><strong>Bold Inside</strong></span>) (parenthesis not bold)
               </p>
               </td>
 </tr>
 <tr>
 <td>
               <p>
- <tt class="literal">*(Bold Outside)* (parenthesis bold)</tt>
+ <code class="literal">*(Bold Outside)* (parenthesis bold)</code>
               </p>
               </td>
 <td>
               <p>
- <span class="bold"><b>(Bold Outside)</b></span> (parenthesis bold)
+ <span class="bold"><strong>(Bold Outside)</strong></span> (parenthesis bold)
               </p>
               </td>
 </tr>
 <tr>
 <td>
               <p>
- <tt class="literal">3*4*5 = 60 (no bold)</tt>
+ <code class="literal">3*4*5 = 60 (no bold)</code>
               </p>
               </td>
 <td>
@@ -278,7 +282,7 @@
 <tr>
 <td>
               <p>
- <tt class="literal">3 * 4 * 5 = 60 (no bold)</tt>
+ <code class="literal">3 * 4 * 5 = 60 (no bold)</code>
               </p>
               </td>
 <td>
@@ -290,79 +294,79 @@
 <tr>
 <td>
               <p>
- <tt class="literal">3 *4* 5 = 60 (4 is bold)</tt>
+ <code class="literal">3 *4* 5 = 60 (4 is bold)</code>
               </p>
               </td>
 <td>
               <p>
- 3 <span class="bold"><b>4</b></span> 5 = 60 (4 is bold)
+ 3 <span class="bold"><strong>4</strong></span> 5 = 60 (4 is bold)
               </p>
               </td>
 </tr>
 <tr>
 <td>
               <p>
- <tt class="literal">*This is bold* this is not *but this is*</tt>
+ <code class="literal">*This is bold* this is not *but this is*</code>
               </p>
               </td>
 <td>
               <p>
- <span class="bold"><b>This is bold</b></span> this is not <span class="bold"><b>but this is</b></span>
+ <span class="bold"><strong>This is bold</strong></span> this is not <span class="bold"><strong>but this is</strong></span>
               </p>
               </td>
 </tr>
 <tr>
 <td>
               <p>
- <tt class="literal">*This is bold*.</tt>
+ <code class="literal">*This is bold*.</code>
               </p>
               </td>
 <td>
               <p>
- <span class="bold"><b>This is bold</b></span>.
+ <span class="bold"><strong>This is bold</strong></span>.
               </p>
               </td>
 </tr>
 <tr>
 <td>
               <p>
- <tt class="literal">*B*. (bold B)</tt>
+ <code class="literal">*B*. (bold B)</code>
               </p>
               </td>
 <td>
               <p>
- <span class="bold"><b>B</b></span>. (bold B)
+ <span class="bold"><strong>B</strong></span>. (bold B)
               </p>
               </td>
 </tr>
 <tr>
 <td>
               <p>
- <tt class="literal">['*Bold-Italic*]</tt>
+ <code class="literal">['*Bold-Italic*]</code>
               </p>
               </td>
 <td>
               <p>
- <span class="emphasis"><em><span class="bold"><b>Bold-Italic</b></span></em></span>
+ <span class="emphasis"><em><span class="bold"><strong>Bold-Italic</strong></span></em></span>
               </p>
               </td>
 </tr>
 <tr>
 <td>
               <p>
- <tt class="literal">*side-by*/-side/</tt>
+ <code class="literal">*side-by*/-side/</code>
               </p>
               </td>
 <td>
               <p>
- <span class="bold"><b>side-by</b></span><span class="emphasis"><em>-side</em></span>
+ <span class="bold"><strong>side-by</strong></span><span class="emphasis"><em>-side</em></span>
               </p>
               </td>
 </tr>
 </tbody>
-</table>
+</table></div>
 </div>
-<p>
+<br class="table-break"><p>
           As mentioned, simple markups cannot go past a single block. The text from
           "have" to "full" in the following paragraph will be
           rendered as bold:
@@ -373,8 +377,8 @@
 And one for the little boy who lives down the lane.
 </pre>
 <p>
- Baa baa black sheep, <span class="bold"><b>have you any wool? Yes sir,
- yes sir, three bags full!</b></span> One for the master, one for the dame,
+ Baa baa black sheep, <span class="bold"><strong>have you any wool? Yes sir,
+ yes sir, three bags full!</strong></span> One for the master, one for the dame,
           And one for the little boy who lives down the lane.
         </p>
 <p>
@@ -393,7 +397,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.inline_code"></a>Inline code</h4></div></div></div>
+<a name="quickbook.syntax.phrase.inline_code"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.inline_code" title="Inline code">Inline code</a>
+</h4></div></div></div>
 <p>
           Inlining code in paragraphs is quite common when writing C++ documentation.
           We provide a very simple markup for this. For example, this:
@@ -404,7 +409,7 @@
           will generate:
         </p>
 <p>
- This text has inlined code <tt class="computeroutput"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span></tt>
+ This text has inlined code <code class="computeroutput"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span></code>
           in it. The code will be syntax highlighted.
         </p>
 <div class="note"><table border="0" summary="Note">
@@ -412,24 +417,23 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
- We simply enclose the code with the tick: <tt class="literal">"`"</tt>, not the
- single quote: <tt class="computeroutput"><span class="string">"'"</span></tt>.
- Note too that <tt class="literal">`some code`</tt> is preferred over <tt class="literal">[^some code]</tt>.
+<tr><td align="left" valign="top"><p>
+ We simply enclose the code with the tick: <code class="literal">"`"</code>, not the
+ single quote: <code class="computeroutput"><span class="string">"'"</span></code>.
+ Note too that <code class="literal">`some code`</code> is preferred over <code class="literal">[^some code]</code>.
           </p></td></tr>
 </table></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.code_blocks"></a>Code blocks</h4></div></div></div>
+<a name="quickbook.syntax.phrase.code_blocks"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.code_blocks" title="Code blocks">Code blocks</a>
+</h4></div></div></div>
 <p>
- Preformatted code simply starts with a space or a tab (See Code).
+ Preformatted code simply starts with a space or a tab (See <a class="link" href="block.html#quickbook.syntax.block.code" title="Code">Code</a>).
           However, such a simple syntax cannot be used as phrase elements in lists
- (See <a href="block.html#quickbook.syntax.block.lists.ordered_lists" title="Ordered
- lists">Ordered
- lists</a> and <a href="block.html#quickbook.syntax.block.lists.unordered_lists" title="Unordered
- lists">Unordered
- lists</a>), tables (See Tables),
+ (See <a class="link" href="block.html#quickbook.syntax.block.lists.ordered_lists" title="Ordered lists">Ordered
+ lists</a> and <a class="link" href="block.html#quickbook.syntax.block.lists.unordered_lists" title="Unordered lists">Unordered
+ lists</a>), tables (See <a class="link" href="block.html#quickbook.syntax.block.tables" title="Tables">Tables</a>),
           etc. Inline code (see above) can. The problem is, inline code does not
           allow formatting with newlines, spaces, and tabs. These are lost.
         </p>
@@ -454,8 +458,7 @@
 <p>
           
 </p>
-<pre class="programlisting">
-<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
 
 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
 <span class="special">{</span>
@@ -468,17 +471,18 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.source_mode"></a>Source Mode</h4></div></div></div>
+<a name="quickbook.syntax.phrase.source_mode"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.source_mode" title="Source Mode">Source Mode</a>
+</h4></div></div></div>
 <p>
           If a document contains more than one type of source code then the source
           mode may be changed dynamically as the document is processed. All QuickBook
           documents are initially in C++ mode by default, though an alternative initial
- value may be set in the Document
+ value may be set in the <a class="link" href="block.html#quickbook.syntax.block.document" title="Document">Document</a>
           section.
         </p>
 <p>
- To change the source mode, use the <tt class="literal">[source-mode]</tt> markup,
- where <tt class="literal">source-mode</tt> is one of the supported modes. For
+ To change the source mode, use the <code class="literal">[source-mode]</code> markup,
+ where <code class="literal">source-mode</code> is one of the supported modes. For
           example, this:
         </p>
 <pre class="programlisting">Python's [python] `import` is rather like C++'s [c++] `#include`. A
@@ -489,14 +493,14 @@
           will generate:
         </p>
 <p>
- Python's <tt class="computeroutput"><span class="keyword">import</span></tt> is rather
- like C++'s <tt class="computeroutput"><span class="preprocessor">#include</span></tt>.
- A C++ comment <tt class="computeroutput"><span class="comment">// looks like this</span></tt>
- whereas a Python comment <tt class="computeroutput"><span class="comment">#looks like this</span></tt>.
+ Python's <code class="computeroutput"><span class="keyword">import</span></code> is rather
+ like C++'s <code class="computeroutput"><span class="preprocessor">#include</span></code>.
+ A C++ comment <code class="computeroutput"><span class="comment">// looks like this</span></code>
+ whereas a Python comment <code class="computeroutput"><span class="comment">#looks like this</span></code>.
         </p>
 <div class="table">
-<a name="id457134"></a><p class="title"><b>Table 2. Supported Source Modes</b></p>
-<table class="table" summary="Supported Source Modes">
+<a name="id4904787"></a><p class="title"><b>Table 2. Supported Source Modes</b></p>
+<div class="table-contents"><table class="table" summary="Supported Source Modes">
 <colgroup>
 <col>
 <col>
@@ -522,7 +526,7 @@
               </td>
 <td>
               <p>
- <tt class="literal">[c++]</tt>
+ <code class="literal">[c++]</code>
               </p>
               </td>
 </tr>
@@ -534,26 +538,27 @@
               </td>
 <td>
               <p>
- <tt class="literal">[python]</tt>
+ <code class="literal">[python]</code>
               </p>
               </td>
 </tr>
 </tbody>
-</table>
+</table></div>
 </div>
-<div class="note"><table border="0" summary="Note">
+<br class="table-break"><div class="note"><table border="0" summary="Note">
 <tr>
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/html/images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
+<tr><td align="left" valign="top"><p>
             The source mode strings are lowercase.
           </p></td></tr>
 </table></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.line_break"></a>line-break</h4></div></div></div>
+<a name="quickbook.syntax.phrase.line_break"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.line_break" title="line-break">line-break</a>
+</h4></div></div></div>
 <pre class="programlisting">[br]
 </pre>
 <div class="warning"><table border="0" summary="Warning">
@@ -561,37 +566,39 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
 <th align="left">Warning</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
- <tt class="computeroutput"><span class="special">[</span><span class="identifier">br</span><span class="special">]</span></tt> is now deprecated. Blurbs,
- Admonitions
- and table cells (see Tables)
+<tr><td align="left" valign="top"><p>
+ <code class="computeroutput"><span class="special">[</span><span class="identifier">br</span><span class="special">]</span></code> is now deprecated. <a class="link" href="block.html#quickbook.syntax.block.blurbs" title="Blurbs">Blurbs</a>,
+ <a class="link" href="block.html#quickbook.syntax.block.admonitions" title="Admonitions">Admonitions</a>
+ and table cells (see <a class="link" href="block.html#quickbook.syntax.block.tables" title="Tables">Tables</a>)
             may now contain paragraphs.
           </p></td></tr>
 </table></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.anchors"></a>Anchors</h4></div></div></div>
+<a name="quickbook.syntax.phrase.anchors"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.anchors" title="Anchors">Anchors</a>
+</h4></div></div></div>
 <pre class="programlisting">[#named_anchor]
 </pre>
 <p>
           A named anchor is a hook that can be referenced by a link elsewhere in
- the document. You can then reference an anchor with <tt class="literal">[link named_anchor
-Some link text]</tt>.
- See Anchor links,
- Section and Heading.
+ the document. You can then reference an anchor with <code class="literal">[link named_anchor
+Some link text]</code>.
+ See <a class="link" href="phrase.html#quickbook.syntax.phrase.anchor_links" title="Anchor links">Anchor links</a>,
+ <a class="link" href="block.html#quickbook.syntax.block.section" title="Section">Section</a> and <a class="link" href="block.html#quickbook.syntax.block.headings" title="Headings">Heading</a>.
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.links"></a>Links</h4></div></div></div>
+<a name="quickbook.syntax.phrase.links"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.links" title="Links">Links</a>
+</h4></div></div></div>
 <pre class="programlisting">[@http://www.boost.org this is [*boost's] website....]
 </pre>
 <p>
           will generate:
         </p>
 <p>
- <a href="http://www.boost.org" target="_top">this is <span class="bold"><b>boost's</b></span>
+ <a href="http://www.boost.org" target="_top">this is <span class="bold"><strong>boost's</strong></span>
           website....</a>
         </p>
 <p>
@@ -613,29 +620,31 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.anchor_links"></a>Anchor links</h4></div></div></div>
+<a name="quickbook.syntax.phrase.anchor_links"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.anchor_links" title="Anchor links">Anchor links</a>
+</h4></div></div></div>
 <p>
           You can link within a document using:
         </p>
 <pre class="programlisting">[link section_id.normalized_header_text The link text]
 </pre>
 <p>
- See sections Section
- and Heading for
+ See sections <a class="link" href="block.html#quickbook.syntax.block.section" title="Section">Section</a>
+ and <a class="link" href="block.html#quickbook.syntax.block.headings" title="Headings">Heading</a> for
           more info.
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.refentry_links"></a>refentry links</h4></div></div></div>
+<a name="quickbook.syntax.phrase.refentry_links"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.refentry_links" title="refentry links">refentry links</a>
+</h4></div></div></div>
 <p>
           In addition, you can link internally to an XML refentry like:
         </p>
 <pre class="programlisting">[link xml.refentry The link text]
 </pre>
 <p>
- This gets converted into <tt class="literal">&lt;link linkend="xml.refentry"&gt;The
- link text&lt;/link&gt;</tt>.
+ This gets converted into <code class="literal">&lt;link linkend="xml.refentry"&gt;The
+ link text&lt;/link&gt;</code>.
         </p>
 <p>
           Like URLs, the link text is optional. If this is not present, the link
@@ -644,15 +653,16 @@
 <pre class="programlisting">[link xml.refentry]
 </pre>
 <p>
- This gets converted into <tt class="literal">&lt;link linkend="xml.refentry"&gt;xml.refentry&lt;/link&gt;</tt>.
+ This gets converted into <code class="literal">&lt;link linkend="xml.refentry"&gt;xml.refentry&lt;/link&gt;</code>.
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.code_links"></a> Code Links</h4></div></div></div>
+<a name="quickbook.syntax.phrase.code_links"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.code_links" title="Code Links"> Code Links</a>
+</h4></div></div></div>
 <p>
- If you want to link to a function, class, member, enum, concept or header
- in the reference section, you can use:
+ If you want to link to a function, class, member, enum, concept, global,
+ or header in the reference section, you can use:
         </p>
 <pre class="programlisting">[funcref fully::qualified::function_name The link text]
 [classref fully::qualified::class_name The link text]
@@ -661,11 +671,12 @@
 [macroref MACRO_NAME The link text]
 [conceptref ConceptName The link text]
 [headerref path/to/header.hpp The link text]
+[globalref fully::qualified::global The link text]
 </pre>
 <p>
           Again, the link text is optional. If this is not present, the link text
- will automatically be the function, class, member, enum, macro, concept
- or header. Example:
+ will automatically be the function, class, member, enum, macro, concept,
+ global, or header name. Example:
         </p>
 <pre class="programlisting">[classref boost::bar::baz]
 </pre>
@@ -675,7 +686,8 @@
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.escape"></a>Escape</h4></div></div></div>
+<a name="quickbook.syntax.phrase.escape"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.escape" title="Escape">Escape</a>
+</h4></div></div></div>
 <p>
           The escape mark-up is used when we don't want to do any processing.
         </p>
@@ -692,31 +704,31 @@
 '''
 </pre>
 <p>
- <span class="bold"><b>This is direct XML markup</b></span>
+ <span class="bold"><strong>This is direct XML markup</strong></span>
         </p>
 <div class="important"><table border="0" summary="Important">
 <tr>
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/html/images/important.png"></td>
 <th align="left">Important</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
+<tr><td align="left" valign="top"><p>
             Be careful when using the escape. The text must conform to BoostBook/DocBook syntax.
           </p></td></tr>
 </table></div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.single_char_escape"></a><a href="phrase.html#quickbook.syntax.phrase.single_char_escape" title="Single
- char escape">Single
- char escape</a></h4></div></div></div>
+<a name="quickbook.syntax.phrase.single_char_escape"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.single_char_escape" title="Single char escape">Single
+ char escape</a>
+</h4></div></div></div>
 <p>
           The backslash may be used to escape a single punctuation character. The
           punctuation immediately after the backslash is passed without any processing.
- This is useful when we need to escape QuickBook punctuations such as <tt class="computeroutput"><span class="special">[</span></tt> and <tt class="computeroutput"><span class="special">]</span></tt>.
- For example, how do you escape the triple quote? Simple: <tt class="literal">\'\'\'</tt>
+ This is useful when we need to escape QuickBook punctuations such as <code class="computeroutput"><span class="special">[</span></code> and <code class="computeroutput"><span class="special">]</span></code>.
+ For example, how do you escape the triple quote? Simple: <code class="literal">\'\'\'</code>
         </p>
 <p>
- <tt class="computeroutput"><span class="special">\</span><span class="identifier">n</span></tt>
+ <code class="computeroutput"><span class="special">\</span><span class="identifier">n</span></code>
           has a special meaning. It is used to generate line breaks.
         </p>
 <div class="warning"><table border="0" summary="Warning">
@@ -724,28 +736,30 @@
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/html/images/warning.png"></td>
 <th align="left">Warning</th>
 </tr>
-<tr><td colspan="2" align="left" valign="top"><p>
- <tt class="computeroutput"><span class="special">\</span><span class="identifier">n</span></tt>
- and <tt class="computeroutput"><span class="special">[</span><span class="identifier">br</span><span class="special">]</span></tt> are now deprecated. Blurbs,
- Admonitions
- and table cells (see Tables)
+<tr><td align="left" valign="top"><p>
+ <code class="computeroutput"><span class="special">\</span><span class="identifier">n</span></code>
+ and <code class="computeroutput"><span class="special">[</span><span class="identifier">br</span><span class="special">]</span></code> are now deprecated. <a class="link" href="block.html#quickbook.syntax.block.blurbs" title="Blurbs">Blurbs</a>,
+ <a class="link" href="block.html#quickbook.syntax.block.admonitions" title="Admonitions">Admonitions</a>
+ and table cells (see <a class="link" href="block.html#quickbook.syntax.block.tables" title="Tables">Tables</a>)
             may now contain paragraphs.
           </p></td></tr>
 </table></div>
 <p>
- The escaped space: <tt class="computeroutput"><span class="special">\</span> </tt> also
+ The escaped space: <code class="computeroutput"><span class="special">\</span> </code> also
           has a special meaning. The escaped space is removed from the output.
         </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.images"></a>Images</h4></div></div></div>
+<a name="quickbook.syntax.phrase.images"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.images" title="Images">Images</a>
+</h4></div></div></div>
 <pre class="programlisting">[$image.jpg]
 </pre>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.footnotes"></a>Footnotes</h4></div></div></div>
+<a name="quickbook.syntax.phrase.footnotes"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.footnotes" title="Footnotes">Footnotes</a>
+</h4></div></div></div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="phrase.html#quickbook.syntax.phrase.footnotes.macro_expansion">Macro
           Expansion</a></span></dt>
@@ -754,45 +768,46 @@
 </dl></div>
 <p>
           As of version 1.3, QuickBook supports footnotes. Just put the text of the
- footnote in a <tt class="computeroutput"><span class="special">[</span><span class="identifier">footnote</span><span class="special">]</span></tt> block, and the text will be put at the
+ footnote in a <code class="computeroutput"><span class="special">[</span><span class="identifier">footnote</span><span class="special">]</span></code> block, and the text will be put at the
           bottom of the current page. For example, this:
         </p>
 <pre class="programlisting">[footnote A sample footnote]
 </pre>
 <p>
           will generate this
- <sup>[<a name="id457975" href="#ftn.id457975">2</a>]</sup>
+ <sup>[<a name="id4905586" href="#ftn.id4905586" class="footnote">2</a>]</sup>
           .
         </p>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h5 class="title">
-<a name="quickbook.syntax.phrase.footnotes.macro_expansion"></a><a href="phrase.html#quickbook.syntax.phrase.footnotes.macro_expansion" title="Macro
- Expansion">Macro
- Expansion</a></h5></div></div></div>
+<a name="quickbook.syntax.phrase.footnotes.macro_expansion"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.footnotes.macro_expansion" title="Macro Expansion">Macro
+ Expansion</a>
+</h5></div></div></div>
 <pre class="programlisting">__a_macro_identifier__
 </pre>
 <p>
- See Macros for details.
+ See <a class="link" href="block.html#quickbook.syntax.block.macros" title="Macros">Macros</a> for details.
           </p>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h5 class="title">
-<a name="quickbook.syntax.phrase.footnotes.template_expansion"></a><a href="phrase.html#quickbook.syntax.phrase.footnotes.template_expansion" title="Template
- Expansion">Template
- Expansion</a></h5></div></div></div>
+<a name="quickbook.syntax.phrase.footnotes.template_expansion"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.footnotes.template_expansion" title="Template Expansion">Template
+ Expansion</a>
+</h5></div></div></div>
 <pre class="programlisting">[a_template_identifier]
 </pre>
 <p>
- See Templates
+ See <a class="link" href="block.html#quickbook.syntax.block.templates" title="Templates">Templates</a>
             for details.
           </p>
 </div>
 </div>
 <div class="section" lang="en">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="quickbook.syntax.phrase.cond"></a> Conditional Generation</h4></div></div></div>
+<a name="quickbook.syntax.phrase.cond"></a><a class="link" href="phrase.html#quickbook.syntax.phrase.cond" title="Conditional Generation"> Conditional Generation</a>
+</h4></div></div></div>
 <p>
- Like C++ <tt class="computeroutput"><span class="comment">#ifdef</span></tt>, you can generate
+ Like C++ <code class="computeroutput"><span class="comment">#ifdef</span></code>, you can generate
           phrases depending on the presence of a macro. Example:
         </p>
 <pre class="programlisting">[? __to_be__ To be or not to be]
@@ -814,22 +829,22 @@
         </p>
 <p>
           Yes!
- <sup>[<a name="id458150" href="#ftn.id458150">3</a>]</sup>
+ <sup>[<a name="id4905742" href="#ftn.id4905742" class="footnote">3</a>]</sup>
         </p>
 </div>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id456069" href="#id456069">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id4913148" href="#id4913148" class="para">1</a>] </sup>
               Thanks to David Barrett, author of Qwiki,
               for sharing these samples and teaching me these obscure formatting
               rules. I wasn't sure at all if Spirit,
               being more or less a formal EBNF parser, can handle the context sensitivity
               and ambiguity.
             </p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id457975" href="#id457975">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id4905586" href="#id4905586" class="para">2</a>] </sup>
               A sample footnote
             </p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id458150" href="#id458150">3</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id4905742" href="#id4905742" class="para">3</a>] </sup>
               Conditional Generation makes quickbook turing complete.
             </p></div>
 </div>

Modified: branches/proto/v4/tools/quickbook/doc/quickbook.qbk
==============================================================================
--- branches/proto/v4/tools/quickbook/doc/quickbook.qbk (original)
+++ branches/proto/v4/tools/quickbook/doc/quickbook.qbk 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -522,8 +522,8 @@
 [endsect]
 [section:code_links Code Links]
 
-If you want to link to a function, class, member, enum, concept or header in the reference
-section, you can use:
+If you want to link to a function, class, member, enum, concept, global, or header in
+the reference section, you can use:
 
 [pre'''
 [funcref fully::qualified::function_name The link text]
@@ -533,10 +533,12 @@
 [macroref MACRO_NAME The link text]
 [conceptref ConceptName The link text]
 [headerref path/to/header.hpp The link text]
+[globalref fully::qualified::global The link text]
 ''']
 
 Again, the link text is optional. If this is not present, the link text will
-automatically be the function, class, member, enum, macro, concept or header. Example:
+automatically be the function, class, member, enum, macro, concept, global, or header name.
+Example:
 
 [pre'''
 [classref boost::bar::baz]
@@ -2139,6 +2141,7 @@
     [[macro link] [[^'''[macroref MACRO_NAME Link text]''']] [__code_links__]]
     [[concept link] [[^'''[conceptref ConceptName Link text]''']] [__code_links__]]
     [[header link] [[^'''[headerref path/to/header.hpp Link text]''']] [__code_links__]]
+ [[global link] [[^'''[globalref fully::qualified::global Link text]''']] [__code_links__]]
     [[escape] [[^\'\'\'escaped text (no processing/formatting)\'\'\']] [__escape__]]
     [[single char escape] [[^\\c]] [__single_char_escape__]]
     [[images] [[^'''[$image.jpg]''']] [__images__]]

Modified: branches/proto/v4/tools/quickbook/phrase.hpp
==============================================================================
--- branches/proto/v4/tools/quickbook/phrase.hpp (original)
+++ branches/proto/v4/tools/quickbook/phrase.hpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -224,6 +224,7 @@
                         | macroref
                         | headerref
                         | conceptref
+ | globalref
                         | bold
                         | italic
                         | underline
@@ -354,6 +355,15 @@
                         ) [actions.conceptref_post]
                     ;
 
+ globalref =
+ "globalref" >> hard_space
+ >> (*(anychar_p -
+ (']' | hard_space))) [actions.globalref_pre]
+ >> ( eps_p(']')
+ | (hard_space >> phrase)
+ ) [actions.globalref_post]
+ ;
+
                 bold =
                         ch_p('*') [actions.bold_pre]
>> blank >> phrase [actions.bold_post]
@@ -404,8 +414,8 @@
 
             rule<Scanner> space, blank, comment, phrase, phrase_markup, image,
                             phrase_end, bold, italic, underline, teletype,
- strikethrough, escape, url, common, funcref,
- classref, memberref, enumref, macroref, headerref, conceptref,
+ strikethrough, escape, url, common, funcref, classref,
+ memberref, enumref, macroref, headerref, conceptref, globalref,
                             anchor, link, hard_space, eol, inline_code, simple_format,
                             simple_bold, simple_italic, simple_underline,
                             simple_teletype, source_mode, template_, template_arg,

Modified: branches/proto/v4/tools/regression/src/compiler_status.cpp
==============================================================================
--- branches/proto/v4/tools/regression/src/compiler_status.cpp (original)
+++ branches/proto/v4/tools/regression/src/compiler_status.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -19,8 +19,11 @@
 
 *******************************************************************************/
 
+#include <boost/config/warning_disable.hpp>
+
 #include "boost/config.hpp"
 #include "boost/filesystem/operations.hpp"
+#include "boost/filesystem/convenience.hpp"
 #include "boost/filesystem/fstream.hpp"
 #include "detail/tiny_xml.hpp"
 namespace fs = boost::filesystem;
@@ -90,10 +93,10 @@
   std::vector<int> error_count;
 
   // prefix for library and test hyperlink prefix
- string cvs_root ( "http://boost.cvs.sourceforge.net/" );
- string url_prefix_dir_view( cvs_root + "boost/boost" );
- string url_prefix_checkout_view( cvs_root + "*checkout*/boost/boost" );
- string url_suffix_text_view( "?view=markup&rev=HEAD" );
+ string svn_root ( "http://svn.boost.org/trac/boost/browser/trunk/" );
+ string url_prefix_dir_view( svn_root );
+ string url_prefix_checkout_view( svn_root );
+ string url_suffix_text_view( "" );
 
 // get revision number (as a string) if boost_root is svn working copy -----//
 
@@ -191,11 +194,11 @@
     if ( !fs::exists( dir_path ) ) return false;
     for ( fs::directory_iterator itr( dir_path ); itr != end_itr; ++itr )
       if ( fs::is_directory( *itr )
- && itr->leaf() != ignore_dir_named )
+ && itr->filename() != ignore_dir_named )
       {
         if ( find_file( *itr, name, path_found ) ) return true;
       }
- else if ( itr->leaf() == name )
+ else if ( itr->filename() == name )
       {
         path_found = *itr;
         return true;
@@ -281,16 +284,16 @@
         // SunCC creates an internal subdirectory everywhere it writes
         // object files. This confuses the target_directory() algorithm.
         // This patch ignores the SunCC internal directory. Jens Maurer
- if ( (*itr).leaf() == "SunWS_cache" ) continue;
+ if ( (*itr).filename() == "SunWS_cache" ) continue;
         // SGI does something similar for template instantiations. Jens Maurer
- if( (*itr).leaf() == "ii_files" ) continue;
+ if( (*itr).filename() == "ii_files" ) continue;
 
         if ( child.empty() ) child = *itr;
         else
         {
           std::cout << "Warning: only first of two target possibilities will be reported for: \n "
- << root.string() << ": " << child.leaf()
- << " and " << (*itr).leaf() << "\n";
+ << root.string() << ": " << child.filename()
+ << " and " << (*itr).filename() << "\n";
         }
       }
     }
@@ -349,7 +352,14 @@
   fs::path bin_path;
   if (boost_build_v2)
   {
- bin_path = locate_root / "bin.v2" / relative;
+ if ( relative == "status" )
+ bin_path = locate_root / "bin.v2" / "libs";
+ else
+ {
+ bin_path = locate_root / "bin.v2" / relative;
+ if (!fs::exists(bin_path))
+ bin_path = locate_root / "bin" / relative;
+ }
     if (!fs::exists(bin_path))
     {
       std::cerr << "warning: could not find build results for '"
@@ -726,12 +736,38 @@
       {
         results.push_back( std::string() );
         do_row( *itr,
- itr->leaf().substr( 0, itr->leaf().size()-5 ),
+ itr->filename().substr( 0, itr->filename().size()-5 ),
                 results[results.size()-1] );
       }
     }
   }
 
+// find_compilers ------------------------------------------------------------//
+
+ void find_compilers(const fs::path & bin_dir)
+ {
+ fs::directory_iterator compiler_itr( bin_dir );
+ if ( specific_compiler.empty() )
+ std::clog << "Using " << bin_dir.string() << " to determine compilers\n";
+ for (; compiler_itr != end_itr; ++compiler_itr )
+ {
+ if ( fs::is_directory( *compiler_itr ) // check just to be sure
+ && compiler_itr->filename() != "test" ) // avoid strange directory (Jamfile bug?)
+ {
+ if ( specific_compiler.size() != 0
+ && specific_compiler != compiler_itr->filename() ) continue;
+ toolsets.push_back( compiler_itr->filename() );
+ string desc( compiler_desc( compiler_itr->filename() ) );
+ string vers( version_desc( compiler_itr->filename() ) );
+ report << "<td>"
+ << (desc.size() ? desc : compiler_itr->filename())
+ << (vers.size() ? (string( "<br>" ) + vers ) : string( "" ))
+ << "</td>\n";
+ error_count.push_back( 0 );
+ }
+ }
+ }
+
 // do_table_body -----------------------------------------------------------//
 
   void do_table_body( const fs::path & bin_dir )
@@ -746,30 +782,56 @@
     jamfile.clear();
     jamfile.seekg(0);
     string line;
+ bool run_tests = false;
+
     while( std::getline( jamfile, line ) )
     {
       bool v2(false);
- string::size_type pos( line.find( "subinclude" ) );
- if ( pos == string::npos ) {
- pos = line.find( "build-project" );
+ string::size_type sub_pos( line.find( "subinclude" ) );
+ if ( sub_pos == string::npos ) {
+ sub_pos = line.find( "build-project" );
         v2 = true;
       }
- if ( pos != string::npos
- && line.find( '#' ) > pos )
+ if ( sub_pos != string::npos
+ && line.find( '#' ) > sub_pos )
       {
         if (v2)
- pos = line.find_first_not_of( " \t./", pos+13 );
+ sub_pos = line.find_first_not_of( " \t./", sub_pos+13 );
         else
- pos = line.find_first_not_of( " \t./", pos+10 );
+ sub_pos = line.find_first_not_of( " \t./", sub_pos+10 );
       
- if ( pos == string::npos ) continue;
+ if ( sub_pos == string::npos ) continue;
         string subinclude_bin_dir(
- line.substr( pos, line.find_first_of( " \t", pos )-pos ) );
+ line.substr( sub_pos, line.find_first_of( " \t", sub_pos )-sub_pos ) );
 
         fs::path bin_path = find_bin_path(subinclude_bin_dir);
         if (!bin_path.empty())
           do_rows_for_sub_tree( bin_path, results );
       }
+ if ( ! run_tests )
+ {
+ string::size_type run_pos = line.find("run-tests");
+ if ( run_pos != string::npos && line.find_first_not_of(" \t") == run_pos )
+ run_tests = true;
+ }
+ else
+ {
+ if ( line.find(";") != string::npos )
+ run_tests = false;
+ else
+ {
+ string::size_type pos = line.find_first_not_of( " \t" );
+ if ( pos != string::npos && line[pos] != '#' )
+ {
+ string::size_type end_pos = line.find_first_of(" \t#", pos);
+ string::iterator end = end_pos != string::npos ? line.begin() + end_pos : line.end();
+ string run_tests_bin_dir(line.begin() + pos, end);
+ fs::path bin_path = find_bin_path("libs/" + run_tests_bin_dir);
+ if (!bin_path.empty())
+ do_rows_for_sub_tree( bin_path, results );
+ }
+ }
+ }
     }
 
 
@@ -789,7 +851,15 @@
     // - Boost.Build V2 location with top-lelve "build-dir"
     // - Boost.Build V1 location without ALL_LOCATE_TARGET
     string relative( fs::initial_path().string() );
- relative.erase( 0, boost_root.string().size()+1 );
+
+#ifdef BOOST_WINDOWS_API
+ if (relative.size() > 1 && relative[1] == ':') relative[0] = std::tolower(relative[0]);
+#endif
+
+ if ( relative.find(boost_root.string()) != string::npos )
+ relative.erase( 0, boost_root.string().size()+1 );
+ else if ( relative.find(locate_root.string()) != string::npos )
+ relative.erase( 0, locate_root.string().size()+1 );
     fs::path bin_path = find_bin_path(relative);
 
     report << "<table border=\"1\" cellspacing=\"0\" cellpadding=\"5\">\n";
@@ -799,32 +869,29 @@
     report << "<tr><td>Library</td><td>Test Name</td>\n"
       "<td><a href=\"compiler_status.html#test-type\">Test Type</a></td>\n";
 
- fs::directory_iterator itr( bin_path );
- while ( itr != end_itr
- && ((itr->string().find( ".test" ) != (itr->string().size()-5))
- || !fs::is_directory( *itr )))
- ++itr; // bypass chaff
- if ( itr != end_itr )
- {
- fs::directory_iterator compiler_itr( *itr );
- if ( specific_compiler.empty() )
- std::clog << "Using " << itr->string() << " to determine compilers\n";
- for (; compiler_itr != end_itr; ++compiler_itr )
+ if ( relative == "status" )
+ {
+ fs::recursive_directory_iterator ritr( bin_path );
+ fs::recursive_directory_iterator end_ritr;
+ while ( ritr != end_ritr
+ && ((ritr->string().find( ".test" ) != (ritr->string().size()-5))
+ || !fs::is_directory( *ritr )))
+ ++ritr; // bypass chaff
+ if ( ritr != end_ritr )
       {
- if ( fs::is_directory( *compiler_itr ) // check just to be sure
- && compiler_itr->leaf() != "test" ) // avoid strange directory (Jamfile bug?)
- {
- if ( specific_compiler.size() != 0
- && specific_compiler != compiler_itr->leaf() ) continue;
- toolsets.push_back( compiler_itr->leaf() );
- string desc( compiler_desc( compiler_itr->leaf() ) );
- string vers( version_desc( compiler_itr->leaf() ) );
- report << "<td>"
- << (desc.size() ? desc : compiler_itr->leaf())
- << (vers.size() ? (string( "<br>" ) + vers ) : string( "" ))
- << "</td>\n";
- error_count.push_back( 0 );
- }
+ find_compilers( *ritr );
+ }
+ }
+ else
+ {
+ fs::directory_iterator itr( bin_path );
+ while ( itr != end_itr
+ && ((itr->string().find( ".test" ) != (itr->string().size()-5))
+ || !fs::is_directory( *itr )))
+ ++itr; // bypass chaff
+ if ( itr != end_itr )
+ {
+ find_compilers( *itr );
       }
     }
 
@@ -943,7 +1010,7 @@
   if ( argc == 4 )
   {
     fs::path links_path( argv[3], fs::native );
- links_name = links_path.leaf();
+ links_name = links_path.filename();
     links_file.open( links_path );
     if ( !links_file )
     {

Modified: branches/proto/v4/tools/regression/src/library_status.cpp
==============================================================================
--- branches/proto/v4/tools/regression/src/library_status.cpp (original)
+++ branches/proto/v4/tools/regression/src/library_status.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -130,7 +130,7 @@
             if(fs::is_directory(*itr)){
                 std::pair<col_node::subcolumns_t::iterator, bool> result
                     = node.m_subcolumns.insert(
- std::make_pair(itr->leaf(), col_node())
+ std::make_pair(itr->filename(), col_node())
                     );
                 build_node_tree(*itr, result.first->second);
             }
@@ -629,7 +629,7 @@
             if(! fs::is_directory(*itr))
                 continue;
             
- string test_name = itr->leaf();
+ string test_name = itr->filename();
             // strip off the ".test" is there is one
             string::size_type s = test_name.find( ".test" );
             if(string::npos != s)
@@ -728,7 +728,7 @@
                 throw std::string("binary path not found");
             if(*leaf_itr != "libs")
                 --leaf_itr;
- test_lib_dir.remove_leaf();
+ test_lib_dir.remove_filename();
         }
 
         if(leaf_itr == fs::initial_path().end())
@@ -768,7 +768,7 @@
             }
             if(boost_root.empty())
                 throw std::string("boost root not found");
- boost_root.remove_leaf();
+ boost_root.remove_filename();
         }
 
         return boost_root;
@@ -888,7 +888,7 @@
     if ( argc == 3 )
     {
         fs::path links_path( argv[2], fs::native );
- links_name = links_path.leaf();
+ links_name = links_path.filename();
         links_file.open( links_path );
         if ( !links_file )
         {

Modified: branches/proto/v4/tools/regression/src/process_jam_log.cpp
==============================================================================
--- branches/proto/v4/tools/regression/src/process_jam_log.cpp (original)
+++ branches/proto/v4/tools/regression/src/process_jam_log.cpp 2008-08-05 01:39:57 EDT (Tue, 05 Aug 2008)
@@ -6,6 +6,8 @@
 
 // See http://www.boost.org/tools/regression for documentation.
 
+#include <boost/config/warning_disable.hpp>
+
 #include "detail/tiny_xml.hpp"
 #include "boost/filesystem/operations.hpp"
 #include "boost/filesystem/fstream.hpp"
@@ -555,57 +557,117 @@
   std::ios::sync_with_stdio(false);
 
   fs::initial_path();
+ std::istream* input = 0;
 
   if ( argc <= 1 )
- std::cout << "Usage: bjam [bjam-args] | process_jam_log [--echo] [--create-directories] [--v1|v2] [locate-root]\n"
- "locate-root - the same as the bjam ALL_LOCATE_TARGET\n"
- " parameter, if any. Default is boost-root.\n"
- "create-directories - if the directory for xml file doesn't exists - creates it.\n"
- " usually used for processing logfile on different machine\n"
- "v2 - bjam version 2 used (default).\n"
- "v1 - bjam version 1 used.\n"
- ;
-
- set_boost_root();
-
- boost_root.normalize();
-
- if ( argc > 1 && std::strcmp( argv[1], "--echo" ) == 0 )
   {
- echo = true;
- --argc; ++argv;
+ std::cout << "process_jam_log [--echo] [--create-directories] [--v1|--v2]\n"
+ " [--boost-root boost_root] [--locate-root locate_root]\n"
+ " [--input-file input_file]\n"
+ " [locate-root]\n"
+ "--echo - verbose diagnostic output.\n"
+ "--create-directories - if the directory for xml file doesn't exists - creates it.\n"
+ " usually used for processing logfile on different machine\n"
+ "--v2 - bjam version 2 used (default).\n"
+ "--v1 - bjam version 1 used.\n"
+ "--boost-root - the root of the boost installation being used. If not defined\n"
+ " assume to run from within it and discover it heuristically.\n"
+ "--locate-root - the same as the bjam ALL_LOCATE_TARGET\n"
+ " parameter, if any. Default is boost-root.\n"
+ "--input-file - the output of a bjam --dump-tests run. Default is std input.\n"
+ ;
+ return 1;
   }
 
-
- if (argc > 1 && std::strcmp( argv[1], "--create-directories" ) == 0 )
+ while ( argc > 1 )
   {
- create_dirs = true;
+ if ( std::strcmp( argv[1], "--echo" ) == 0 )
+ {
+ echo = true;
+ --argc; ++argv;
+ }
+ else if ( std::strcmp( argv[1], "--create-directories" ) == 0 )
+ {
+ create_dirs = true;
+ --argc; ++argv;
+ }
+ else if ( std::strcmp( argv[1], "--v2" ) == 0 )
+ {
+ boost_build_v2 = true;
+ --argc; ++argv;
+ }
+ else if ( std::strcmp( argv[1], "--v1" ) == 0 )
+ {
+ boost_build_v2 = false;
+ --argc; ++argv;
+ }
+ else if ( std::strcmp( argv[1], "--boost-root" ) == 0 )
+ {
+ --argc; ++argv;
+ if ( argc == 1 )
+ {
+ std::cout << "Abort: option --boost-root requires a directory argument\n";
+ std::exit(1);
+ }
+ boost_root = fs::path( argv[1], fs::native );
+ if ( !boost_root.is_complete() )
+ boost_root = ( fs::initial_path() / boost_root ).normalize();
+
+ --argc; ++argv;
+ }
+ else if ( std::strcmp( argv[1], "--locate-root" ) == 0 )
+ {
+ --argc; ++argv;
+ if ( argc == 1 )
+ {
+ std::cout << "Abort: option --locate-root requires a directory argument\n";
+ std::exit(1);
+ }
+ locate_root = fs::path( argv[1], fs::native );
       --argc; ++argv;
- }
+ }
+ else if ( std::strcmp( argv[1], "--input-file" ) == 0 )
+ {
+ --argc; ++argv;
+ if ( argc == 1 )
+ {
+ std::cout << "Abort: option --input-file requires a filename argument\n";
+ std::exit(1);
+ }
+ input = new std::ifstream(argv[1]);
+ --argc; ++argv;
+ }
+ else if ( *argv[1] == '-' )
+ {
+ std::cout << "Abort: unknown option; invoke with no arguments to see list of valid options\n";
+ return 1;
+ }
+ else
+ {
+ locate_root = fs::path( argv[1], fs::native );
+ --argc; ++argv;
+ }
+ }
 
- if ( argc > 1 && std::strcmp( argv[1], "--v2" ) == 0 )
+ if ( boost_root.empty() )
   {
- boost_build_v2 = true;
- --argc; ++argv;
+ set_boost_root();
+ boost_root.normalize();
   }
 
- if ( argc > 1 && std::strcmp( argv[1], "--v1" ) == 0 )
+
+ if ( locate_root.empty() )
   {
- boost_build_v2 = false;
- --argc; ++argv;
+ locate_root = boost_root;
   }
-
- if (argc > 1)
+ else if ( !locate_root.is_complete() )
   {
- locate_root = fs::path( argv[1], fs::native );
- if ( !locate_root.is_complete() )
- locate_root = ( fs::initial_path() / locate_root ).normalize();
-
- --argc; ++argv;
- }
- else
+ locate_root = ( fs::initial_path() / locate_root ).normalize();
+ }
+
+ if ( input == 0 )
   {
- locate_root = boost_root;
+ input = &std::cin;
   }
 
   std::cout << "boost_root: " << boost_root.string() << '\n'
@@ -617,16 +679,6 @@
   string content;
   bool capture_lines = false;
 
- std::istream* input;
- if (argc > 1)
- {
- input = new std::ifstream(argv[1]);
- }
- else
- {
- input = &std::cin;
- }
-
   // This loop looks at lines for certain signatures, and accordingly:
   // * Calls start_message() to start capturing lines. (start_message() will
   // automatically call stop_message() if needed.)


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk